
Так..
localhost:~# sane-find-scanner
# sane-find-scanner will now attempt to detect your scanner. If the
# result is different from what you expected, first make sure your
# scanner is powered up and properly connected to your computer.
# No SCSI scanners found. If you expected something different, make sure that
# you have loaded a SCSI driver for your SCSI adapter.
# Also you need support for SCSI Generic (sg) in your operating system.
# If using Linux, try "modprobe sg".
found USB scanner (vendor=0x04b8 [EPSON], product=0x0120 [EPSON Scanner]) at libusb:001:007
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.
# Not checking for parallel port scanners.
# Most Scanners connected to the parallel port or other proprietary ports
# can't be detected by this program.
> machine# tools/find-scanner
Я не смог найти ``find-scanner''. Наверно, имелось в виду ``sane-find-scanner'', которое есть в архиве с исходниками sane-backends (libsane) tools/sane-find-scanner
Hotplug, судя по всему, выставляет нормальные права на сканнер:
localhost:~# ls -l /proc/bus/usb/001/007
-rw-rw---- 1 root scanner 57 2005-11-29 01:57 /proc/bus/usb/001/007
localhost:~# export SANE_DEBUG_SNAPSCAN=4
localhost:~# export SANE_DEBUG_DLL=4
localhost:~# scanimage -L
[sanei_debug] Setting debug level of dll to 4.
[dll] sane_init: SANE dll backend version 1.0.11 from sane-backends 1.0.16-cvs
[dll] add_backend: adding backend `snapscan'
[dll] sane_get_devices
[dll] load: searching backend `snapscan' in `/usr/lib/sane'
[dll] load: trying to load `/usr/lib/sane/libsane-snapscan.so.1'
[dll] load: dlopen()ing `/usr/lib/sane/libsane-snapscan.so.1'
[dll] init: initializing backend `snapscan'
[sanei_debug] Setting debug level of snapscan to 4.
[dll] init: backend `snapscan' is version 1.4.42
[dll] sane_get_devices: found 1 devices
device `snapscan:libusb:001:007' is a EPSON EPSON Scanner flatbed scanner
[dll] sane_exit: exiting
[dll] sane_exit: calling backend `snapscan's exit function
[dll] sane_exit: finished
localhost:~# scanimage > image.pnm
[sanei_debug] Setting debug level of dll to 4.
[dll] sane_init: SANE dll backend version 1.0.11 from sane-backends 1.0.16-cvs
[dll] add_backend: adding backend `snapscan'
[dll] sane_get_devices
[dll] load: searching backend `snapscan' in `/usr/lib/sane'
[dll] load: trying to load `/usr/lib/sane/libsane-snapscan.so.1'
[dll] load: dlopen()ing `/usr/lib/sane/libsane-snapscan.so.1'
[dll] init: initializing backend `snapscan'
[sanei_debug] Setting debug level of snapscan to 4.
[dll] init: backend `snapscan' is version 1.4.42
[dll] sane_get_devices: found 1 devices
[dll] sane_open: trying to open `snapscan:libusb:001:007'
[snapscan] test_unit_ready: snapscan_cmd command failed: Device busy
вот интересная штука ^^^^^^^^^^^^^^
[snapscan] Scanner warming up - waiting 10 seconds.
[snapscan] test_unit_ready: snapscan_cmd command failed: Device busy
[snapscan] Scanner warming up - waiting 35 seconds.
[dll] sane_open: open successful
[dll] sane_control_option(handle=0x80527b8,option=0,action=0,value=0xbfffe840,info=(nil))
[dll] sane_control_option(handle=0x80527b8,option=0,action=0,value=0xbfffe7a8,info=(nil))
[dll] sane_get_option_descriptor(handle=0x80527b8,option=0)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=1)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=2)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=3)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=4)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=5)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=6)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=7)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=8)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=9)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=10)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=11)
[dll] sane_control_option(handle=0x80527b8,option=11,action=0,value=0x8051438,info=(nil))
[dll] sane_get_option_descriptor(handle=0x80527b8,option=12)
[dll] sane_control_option(handle=0x80527b8,option=12,action=0,value=0x805143c,info=(nil))
[dll] sane_get_option_descriptor(handle=0x80527b8,option=13)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=14)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=15)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=16)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=17)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=18)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=19)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=20)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=21)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=22)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=23)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=24)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=25)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=26)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=27)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=28)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=29)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=30)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=31)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=32)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=33)
[dll] sane_get_option_descriptor(handle=0x80527b8,option=34)
[dll] sane_control_option(handle=0x80527b8,option=9,action=0,value=0xbfffe7a4,info=(nil))
[dll] sane_control_option(handle=0x80527b8,option=10,action=0,value=0xbfffe7a4,info=(nil))
[dll] sane_control_option(handle=0x80527b8,option=9,action=0,value=0xbfffe83c,info=(nil))
[dll] sane_get_option_descriptor(handle=0x80527b8,option=11)
[dll] sane_control_option(handle=0x80527b8,option=11,action=1,value=0xbfffe838,info=0xbfffe7a8)
[dll] sane_control_option(handle=0x80527b8,option=10,action=0,value=0xbfffe83c,info=(nil))
[dll] sane_get_option_descriptor(handle=0x80527b8,option=12)
[dll] sane_control_option(handle=0x80527b8,option=12,action=1,value=0xbfffe838,info=0xbfffe7a8)
[dll] sane_start(handle=0x80527b8)
[snapscan] calibrate: reading calibration data (3 lines)
[snapscan] read_calibration_data: snapscan_cmd command failed: Error during device I/O
[snapscan] calibrate: read_calibration_data command failed: Error during device I/O
[snapscan] sane_snapscan_start: calibration failed.
[snapscan] usb_write Only 0 bytes written
[snapscan] release_unit: scsi command error: Error during device I/O
а причем тут скази интерфейс?
scanimage: sane_start: Error during device I/O
[dll] sane_cancel(handle=0x80527b8)
[snapscan] usb_write Only 0 bytes written
[snapscan] release_unit: scsi command error: Error during device I/O
[snapscan] usb_write Only 0 bytes written
[dll] sane_close(handle=0x80527b8)
[dll] sane_exit: exiting
[dll] sane_exit: calling backend `snapscan's exit function
[dll] sane_exit: finished
> machine# ln -s /dev/XXXXX /dev/usbscanner
Кстати, я так и не понимаю, зачем делать /dev/XXXXX ?

Ядро дистрибутивное 2.6.8. На счет скомпилированных модулей я почти не чего не знаю..
localhost:/lib/modules/2.4.27-2-386# find ./ -iname "*scanner*"
./kernel/drivers/usb/scanner.o
localhost:/lib/modules/2.4.27-2-386# cd ../2.6.8-2-386/; find ./ -iname "*scanner*"
localhost:/lib/modules/2.6.8-2-386#
Можно тоже цитату?

(sane-faq)
With Linux 2.4.* you could either use the kernel scanner module or libusb to access USB scanners. In Linux 2.6.4 the kernel scanner module was removed. Therefore with this and later kernels libusb must be used. While SANE automatically uses libusb when the library and its header file were present during the build of sane-backends, setting permissions will require some attention.
The device files used by libusb are located in /proc/bus/usb/ (e.g. /proc/bus/usb/001/003). The exact file name can be found out by running sane-find-scanner which would print "libusb:001:003" in this case. While setting permissions with e.g. "chmod a+rw /proc/bus/usb/001/003" seems to work, this change is not permanent. The permissions will be reset when the scanner is replugged or Linux is rebooted.
Ладно, торопиться особо не куда, сделаю со временем. А сейчас надо поспать. Вообще, как-то нездорово чувствуешь себя, если спать по 4 часа в сутки..

Ложишься в три, встаешь пол восьмого, надо идти на поезд

Продолжим завтра?