Все о Linux. LinuxRSP.Ru


Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

Подключение 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 оригинал


      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2017 LinuxRSP