Подключение и настройка сканера

Поддержка сканеров в Linux

В MOPSLinux поддержка сканеров обеспечивается при помощи общего программного интерфейса под названием SANE (Scanner Access Now Easy — «доступ к сканерам теперь прост»), который обеспечивает доступ к драйверам (backends) для сканеров.

SANE представляет собой универсальный интерфейс между сканером и программой сканирования и предоставляет возможность использовать различные программы для сканирования или эксплуатировать одновременно несколько сканеров через одинаковый интерфейс, что, важно при наличии широкого перечня программ сканирования от различных производителей сканеров.

В состав SANE входят три программы сканирования:

scanimage— консольная утилита, для первоначальной настройки сканера и для создания различных сценариев;

sane-find-scanner— программа конфигурирования и настройки сканера;

saned— сетевой сервер сканирования, обеспечивающий доступ к сканеру в сети.

Для настройки сканера в системе вначале нужно убедиться в том, что он поддерживается SANE. Информацию об этом можно найти в Internet на сайте разработчиков пакета (http://www.sane-project.org/sane-mfgs.html).

Настройка системы сканирования

Общие сведения по интерфейсам сканеров

Сканеры могут подключаться к компьютерам по следующим типовым интерфейсам: параллельный, последовательный, USB, SCSI или IEEE-1394. Существуют также сканеры, которые имеют свой оригинальный интерфейс и соответствующую интерфейсную плату, которая устанавливается в компьютер. Подключение и настройку встроенного устройства, выполняющего функции сканера, принтера и/или факса, можно выполнить по приведенным ниже рекомендациям и используя соответствующий интерфейс как для обычного сканера. Обладателям офисной техники фирмы Hewlett-Packard желательно будет обратиться к сайту проекта «Драйверы под ОС Linux для офисной техники» (the HP Officejet Linux Driver project site) в сети Internet на http://hpoj.sourceforge.net, где детально описывается использование выпускаемых фирмой устройств при работе под ОС Linux.

SCSI-сканер управляется контроллером SCSI. Список контроллеров SCSI поддерживаемых в Linux можно найти в сети Internet на http://tldp.org/HOWTO/Hardware-HOWTO/scsi.html. Если контроллер поставлялся в комплекте со сканером, существует вероятность, того, что он не поддерживается системой или поддерживается частично, поскольку может не выполнять функции полноценного контроллера SCSI.

При возникновении трудностей во время конфигурирования SCSI-сканера следует обратиться к руководству man sane-scsi.

При использовании USB-сканера особых проблем возникнуть не должно, поскольку этот интерфейс поддерживается практически во всех современных Linux-системах.

Сканеры с параллельными портами можно использовать, если есть работающий с ними буфер, однако, если устройство имеет функционирующий буфер и интерфейс USB, то настоятельно рекомендуется использовать порт USB, так как его значительно легче конфигурировать.

Интерфейс IEEE 1394 (Firewire™, i.Link™) поддерживается в Linux, начиная с серии ядра 2.4-. Для работы сканерам с интерфейсом IEEE 1394 в компьютере необходимо наличие PCI-адаптера IEEE 1394 или же наличие порта IEEE 1394 в системной плате, а также поддержка IEEE 1394 в ядре или в качестве подгружаемого модуля. При этом следует проверить поддержку устройств интерфейсом SANE и прочитать руководство по использованию устройства.

Поддержка сканеров

Поддержка интерфейса SCSI

При работе с интерфейсом SCSI, кроме поддержки определенного SCSI адаптера, потребуется также поддержка общих SCSI устройств. Эти устройства обычно называются /dev/sg0, /dev/sg1.... Для поддержки конкретного устройства SCSI необходимо загрузить соответствующий модуль на правах пользователя root:

# modprobe CARD_MODULE_NAME

Желательно создать символическую ссылку /dev/scanner на существующее устройство. Например, если сканер соединен с первой шиной scsi (scsi-bus) устройства SCSI, необходимо связать его с соответствующим устройством:

# ln -s /dev/sg0 /dev/scanner

Поддержка интерфейса USB

Чтобы реализовать поддержку USB-сканеров, ядро должно поддерживать USB-подсистему с использованием протоколов usb-ohci или usb-ehci. USB сканерам соответствуют файлы устройств /dev/usb/scanner*.

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

В файле /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 ...

Информацию о производителе (Vendor) и модели сканера (ProdID) полезно добавить в файл /etc/modules.conf:

# echo "options scanner vendor=0x04b8 product=0x011e" >> /etc/modules.conf

Поддержка параллельного порта

Поддержка параллельного порта в ядре может быть организована статически или в качестве модуля. Чтобы убедиться, что модуль parport (параллельный порт) загружен, необходимо проверить файл /var/log/dmesg или воспользоваться командой lsmod. При использовании dmesg | less, помимо прочего, должна появиться следующая запись:

Mar 3 08:00:25 K7 kernel: parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE] Mar 3 08:00:25 K7 kernel: parport0: irq 7 detected

Для поддержки параллельного порта необходимо также присвоить права на выполнение файлу /etc/rc.d/rc.serial

chmod +x /etc/rc.d/rc.serial

И перезагрузить компьютер.

Параллельный порт желательно использовать в режиме "EPP" или, в качестве альтернативы, ECP/EPP. В «двунаправленном» ("bidirectional", т.е. "BPP" или "PS/2") режиме порт работать будет, хотя и значительно медленнее. «Однонаправленный» ("unidirectional") режим для сканирования не используется. Все указанные настройки доступны в меню BIOS.

Группы и права

Пользователю удобно знать, что его учетная запись может получить доступ к устройству. Самым безопасным способом осуществить это, является добавление возможности доступа к сканеру определенной группе. Так, члены группы 'scanner' имеют право доступа к сканеру. Например, добавить пользователя 'jhs' в группу ‘scanner’ можно следующим образом:

# adduser jhs scanner

SANE

Последним шагом реализации доступа к сканеру является программа (backend) SANE и соответствующий интерфейс SANE (frontend). Первая представляет собой драйверы и средства доступа низкого уровня, которые взаимодействуют со сканером, а интерфейс – это графические приложения для работы со сканером в среде X. Для доступа к сканеру требуется только выходной буфер, хотя и интерфейс настоятельно рекомендуется для управления изображениями, а также для возможности их просмотра в оконной среде перед выводом на печать. Конфигурирование SANE Работа по сети

Чтобы сделать сканер доступным для удаленного компьютера по сети, необходимо выполнить следующие действия:

  1. отредактировать файл saned.conf в конфигурационном каталоге сервера (компьютер со сканером) /etc/sane.d. Обычно в файле есть запись 'scan-client.somedomain.firm', которую следует заменить именем хоста клиента, для которого необходимо сделать сканер доступным. При желании можно использовать IP-адрес клиента;
  2. на сервере, кроме демона inetd, также следует запустить демон saned. Чтобы уточнить, какие изменения необходимо внести в файл inetd.conf, необходимо обратиться к руководству man saned;
  3. в файл /etc/services добавить порт 6566:

sane 6566/tcp

  1. в файл net.conf клиента (компьютер без сканера) добавить запись об имени серверного компьютера, т.е. 'scan-server.somedomain.firm'.
  2. убедиться, что в файле dll.conf клиента не закомментирована запись «net».

Использование SANE с устройством Video4linux

Устройства Video4linux (видео для Linux) включают в себя веб-камеры (webcams), стационарные камеры (still cameras) и устройства фиксации изображения (video capture devices). SANE также позволяет получить к ним доступ. Для этого файл v4l.conf необходимо поместить в конфигурационный каталог (/etc/sane.d). Содержание файла будет примерно следующим:

# In order to use the v4linux backend you have to give the device # You can enable multiple lines if # you really have multible [sic] v4l devices. # /dev/bttv0 /dev/video0 /dev/video1 /dev/video2 /dev/video3

В первой строке файла указано, что для использования средств v4linux необходимо указать имя устройства. Помните об этом, начиная тестирование сканера. При этом необходимо убедиться, что устройство, в качестве которого ядро идентифицирует камеру или другие устройства v4l, не закомментированы (т.е. впереди нет символа #). Естественно все эти действия необходимо выполнять на правах root. К тому же убедитесь, что в файле dll.conf не закомментирована строка 'v4l'.

Тестирование сканера

Если сканер подключен к компьютеру через соответствующий интерфейс и включен, то можно приступить к тестированию оборудования. При использовании сканера SCSI или USB в командной строке необходимо ввести следующую команду, которая должна найти и идентифицировать сканер из списка возможных устройств:

$ sane-find-scanner ... sane-find-scanner: found USB scanner (vendor = 0x04b8, product = 0x011e) at device /dev/usb/scanner0

Если сканер не обнаруживается, то на правах root можно указать команду scanimage --list-devices, которая выдаст информацию обо всех подключенных устройствах. Например, в результате можно получить следующую информацию:

device `v4l:/dev/video0' is a Noname BT878 video (Hauppauge (bt878)) virtual device device `epson:/dev/scanner0' is a Epson Perfection1240 flatbed scanner

Обратите внимание на информацию 'backend:device'; это будет имя устройства для получения доступа к сканеру из командной строки.

Файл устройства для сканера рекомендуется прописать в конфигурационный файл sane. Для этого в конфигурационный файл для сканера от соответсвующего производителя (для Epson - /etc/sane.d/epson.conf) необходимо добавить строку "usb /dev/usb/scanner0":

# echo "usb /dev/usb/scanner0">>/etc/sane.d/epson.conf

где /dev/usb/scanner0 - файл устройства для сканера.

Теперь необходимо проверить способность сканера захватывать изображение. Можно использовать одну из утилит (интерфейсов), или же работать из командной строки следующим образом:

$ scanimage -d backend:/dev/scanner --format pnm > outfile.pnm

Таким образом, например, при использовании модулей Epson необходимо указать:

$ scanimage -d epson:/dev/scanner --format pnm > outfile.pnm

Для выбора одного из нескольких сканеров потребуется лишь опция -d. Например, если есть сканер Epson и сканер Mustek, достаточно указать "-d epson" или "-d mustek". Указание полного пути необходимо только тогда, когда есть несколько сканеров с одним названием. В поле /dev/scanner должно быть указано сконфигурированное сканирующее устройство (например, указать /dev/video0 в случае использования устройства v4l или же libusb, как было показано в примере sane-find-scanner). Значение --format может быть pnm или tiff (по умолчанию pnm). Формат '.pnm' означает 'portable anymap'. Это стандартный формат графических файлов в Linux, который можно преобразовать к любому другому формату изображений с помощью Imagemagick (см. http://www.imagemagick.org/script/index.php) или netpbm (см. http://netpbm.sourceforge.net/).

Интерфейсы (frontends) SANE

MOPSLinux предоставляет следующие графические интерфейсы SANE:

Более полный список интерфейсов SANE приводится на странице интерфейсов SANE (the SANE frontends page) по адресу: