Подключение USB-сканера в Linux
Данная статья посвящена подключению и настройке сканера в ОС GNU/Linux через USB (Universal Serial Bus).
Подготовка ядра
Т.к. сканер работает через USB, логичным ходом будет включение поддержки USB в ядре:
$ cd /usr/src/linux
# make menuconfig
Нужно включить (модульно или монолитно) следующие параметры:
General setup --->
[*] Support for hot-pluggable devices
(поддержка устройств, которые могут быть подключены/отключены в любой момент времени, а не только перед загрузкой системы)
USB support --->
<*> Support for USB
(поддержка USB вообще)
[*] Preliminary USB device filesystem
(файловая система для USB-устройств)
<*> UHCI (Intel PIIX4, VIA, ...) support
(т.н. Host Controller, который будет связующим между устройствами и компьютером)
<M> USB Scanner support
(поддержка USB-сканеров)
Последнюю опцию рекомендуется подключать модульно тем, кто не часто использует сканер, или тем, кто очень дорожит своими компьютерными ресурсами. При модульном подключении поддержка драйвера будет включаться только при нужде (командой "modprobe scanner").
После проделанных изменений в конфиге ядра:
# make dep
# make bzImage
И если что-то было подключено модульно, то:
# make modules
# make modules_install
Теперь ядро из "/usr/src/linux/arch/i386/boot/bzImage" надо добавить в конфиг загрузчика (для LILO - /etc/lilo.conf; потом перезапустить сам LILO командой "/sbin/lilo").
В /etc/fstab полезно добавить строку:
none /proc/bus/usb usbdevfs defaults 0 0
Теперь USBDEVFS будет при загрузке монтировать в /proc/bus/usb.
Reboot.
Настройка /dev
Файл устройства для USB-сканера создается командой:
# mknod /dev/usbscanner0 c 180 48
(Для второго сканера - "mknod /dev/usbscanner1 c 180 49" и т.д.)
Установка прав для того, чтобы все пользователи могли пользоваться сканером:
# chmod a+rw /dev/usbscanner0
Однако, вполне возможно, что это уже предусмотрено разработчиками Linux-дистрибутива (так, например, в Debian GNU/Linux 3.0), и в каталоге /dev/usb лежат файлы для 16 сканеров:
localhost:~# ls -l /dev/usb/scanner*
crw-rw-rw- 1 root root 180, 48 Мар 15 2002 /dev/usb/scanner0
...
crw-rw-rw- 1 root root 180, 63 Мар 15 2002 /dev/usb/scanner15
...
crw-rw-rw- 1 root root 180, 57 Мар 15 2002 /dev/usb/scanner9
Подключение сканера
После перезагрузки проверяем наличие USB-контроллера:
# lspci |grep USB
00:1f.2 USB Controller: Intel Corp. 82820 820 (Camino 2) Chipset USB (Hub A) (rev 01)
00:1f.4 USB Controller: Intel Corp. 82820 820 (Camino 2) Chipset USB (Hub B) (rev 01)
Если он не найден, то, возможно, UHCI подключен модульно, и поможет команда:
# modprobe usb-uhci
(В "dmesg" появится что-то вроде usb-uhci.c: v1.275:USB Universal Host Controller Interface driver.)
Теперь при включении сканера в консоли должны появиться подобные строки (см. "dmesg"):
hub.c: USB new device connect on bus1/1, assigned device number 2
usb.c: USB device 2 (vend/prod 0x4b8/0x11e) is not claimed by any active driver.
scanner.c: probe_scanner: User specified USB scanner -- Vendor:Product - 4b8:11e
scanner.c: 0.4.6:USB Scanner Driver
(Про scanner.c см. ниже.)
В /proc/bus/usb/devices появится запись о подключенном устройстве:
# cat /proc/bus/usb/devices
...
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=ff(vend.) Sub=ff Prot=ff MxPS=64 #Cfgs= 1
P: Vendor=04b8 ProdID=011e Rev= 1.00
S: Manufacturer=EPSON
S: Product=EPSON Scanner
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA
I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
...
Если сообщения от scanner.c не появились, то поддержка USB-сканера была включена модульно, загружается он так:
# modprobe scanner
Можно добавить информацию о производителе и модели сканера, если модуль их определять не хочет:
# modprobe vendor=XXXXX product=XXXXX
Для сканеров Epson:
- vendor=0x04b8;
- модели сканеров:
Perfection 636U: product=0x0101
Perfection 610: product=0x0103
Perfection 1200U: product=0x0104
Stylus Scan 2500: product=0x0106
Espression 1600: product=0x0107
Perfection 1640: product=0x010a
Perfection 1240U: product=0x010b
Perfection 640: product=0x010c
Espression 1680: product=0x010e
Perfection 1650: product=0x0110
Perfection 1660: product=0x011e
Perfection 2400: product=0x011b
Perfection 2450: product=0x0112
Значения vendor и product можно также увидеть в /proc/bus/usb/devices и "dmesg" (в строках от usb.c при включении сканера).
Эти данные полезно добавить в /etc/modules.conf:
# echo "options scanner vendor=0x04b8 product=0x011e">>/etc/modules.conf
(X)SANE
Когда сканер нормально распознается системой, можно приступать к работе с ним. Проверим, видит ли SANE:
# sane-find-scanner
...
sane-find-scanner: found USB scanner (vendor = 0x04b8, product = 0x011e) at device /dev/usb/scanner0
Файл устройства для сканера пропишем в конфиг sane. Для этого в конфигурационный файл для сканера от вашего производителя (для Epson - /etc/sane.d/epson.conf) добавить строку "usb /dev/usb/scanner0":
# echo "usb /dev/usb/scanner0">>/etc/sane.d/epson.conf
Где /dev/usb/scanner0 - файл устройства для сканера (он будет показан в выводе "sane-find-scanner").
Все, теперь можно запускать xsane:
$ xsane
И начинать сканировать.
Дмитрий Шурупов aka SHuRuP оригинал