LinuxBegin.ru - offline-версия от 26.04.2004
Главная | Все темы | Все статьи | Ссылки | Аналоги Windows-программ в Linux | Top 20

Подключение USB-сканера в Linux
(Аппаратное обеспечение / Драйвера)


- Дмитрий Шурупов aka SHuRuP, 19.11.2003, Nixp.ru, оригинал -

Данная статья посвящена подключению и настройке сканера в ОС 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

И начинать сканировать.

Просмотров: 1521  |  Рейтинг статьи: 2.57 (Голосов: 7).
2.57
Дата размещения статьи: 2003-12-05 10:11:35



5 последних поступлений в раздел Аппаратное обеспечение / Драйвера:

26.02.04: Настройка модема ZyXEL Omni 56K Plus в Linux через USB (В ядре Linux нет драйвера для модема ZyXEL Omni 56K Plus, но зато есть драйвер для ZyXEL Omninet, кот...)
20.02.04: Настройка мультимедийной клавиатуры (Необходимо ассоциировать имена с кодами клавиш. Преимущество данного метода заключается в том, что ва...)
07.02.04: USB ADSL модем. Часть 2 - Руководство по установке EciAdsl драйвера (EciAdsl - это свободно распространяемый Linux драйвер для подключения вашего компьютера к сети интерн...)
22.01.04: Переход на Linux 2.6 (Я потратил целый день, переводя свой Red Hat 9 на ядро 2.6. Этот документ не претендует на полноценно...)
22.01.04: Горячая замена IDE дисков в Linux (hot swap) (В IDE-дисках ATA-стандарта не предусмотрено горячее подключение, поэтому вся отвественность за порчу ...)

Комментарии:

Re: Подключение USB-сканера в Linux (Оценка: 1, Интересно)
от Anonymous на 05.12.03
Нормальные люди не занимаются геммороем с кернельной поддержкой сканеров, а настраивают sane на работу с libusb. Все делается намного проще и сканеров поддерживается больше и безглючнее.

-- Anonymous


Re: Подключение USB-сканера в Linux (Оценка: 0)
от Anonymous на 07.12.03
Нормальные люди не занимаются геммороем с кернельной поддержкой сканеров, а настраивают sane на работу с libusb. Все делается намного проще и сканеров поддерживается больше и безглючнее.


Значит ждём твою статью о настройке сканеров "нормальным способом"

kitov

-- Anonymous


Re: Подключение USB-сканера в Linux (Оценка: 0)
от Anonymous на 20.03.04
геморрой пишется с одной "м" и двумя "р"

-- Anonymous


LinuxBegin.ru © 2003-2004 Valery V. Kachurov | Условия использования материалов | О проекте