Как уже отмечалось, поддерживаются как SCSI, так и USB сканеры. В зависимости от
интерфейса вашего сканера требуется поддержка разных драйверов устройств.
Стандартное ядро GENERIC включает в себя драйвера,
необходимые для поддержки USB сканеров. Если вы компилируете собственное ядро, убедитесь,
что в его конфигурации присутствуют строки
device usb
device uhci
device ohci
device uscanner
В зависимости от чипсета USB, встроенного в вашу материнскую плату, потребуется лишь
один из драйверов device uhci или device
ohci, однако, наличие обеих строк в конфигурации ядра никому не повредит.
Если вы не хотите перестраивать ядро, и при этом ваше ядро не является стандартным
(GENERIC), вы можете загрузить модуль драйвера поддержки
сканеров uscanner(4) при помощи
команды kldload(8):
# kldload uscanner
Для автоматической загрузки модуля при старте системы добавьте в файл /boot/loader.conf строку
uscanner_load="YES"
После перезагрузки с новым ядром или загрузки модуля подключите ваш USB сканер. В
буфере системных сообщений (dmesg(8)) должно
появиться сообщение о найденном устройстве, например:
uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2
В данном случае сканер будет использовать устройство /dev/uscanner0.
Если ваш сканер имеет интерфейс SCSI, важно знать, к какому контроллеру он подключен.
В зависимости от контроллера потребуются различные драйвера в файле конфигурации ядра.
Стандартное ядро GENERIC поддерживает большинство
распространенных SCSI-контроллеров. Внимательно прочитайте файл NOTES и добавьте необходимые строки в файл конфигурации вашего
ядра. Помимо строки для драйвера адаптера, вам потребуются следующие строки:
device scbus
device pass
После сборки и загрузки нового ядра, в буфере системных сообщений должны появиться
строки о вашем сканере, например:
pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfers
Если сканер не был включен в момент загрузки, его можно принудительно опознать,
выполнив сканирование SCSI шины при помощи команды camcontrol(8):
# camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successful
После этого сканер должен появиться в списке устройств:
# camcontrol devlist
<IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0)
Более подробная информация о устройствах SCSI доступна на страницах справочника scsi(4) и camcontrol(8).
Система SANE состоит из двух частей: аппаратной поддержки
(backend, graphics/sane-backends) и программной поддержки (frontend, graphics/sane-frontends). Первая часть обеспечивает собственно
доступ к сканеру. Список поддерживаемых устройств SANE
содержит информацию о необходимом вам аппаратном модуле. Вторая часть обеспечивает
графический интерфейс для сканирования (xscanimage).
В первую очередь следует установить порт или пакет graphics/sane-backends, после чего при помощи команды sane-find-scanner проверить поддержку сканера системой SANE:
# sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3
В выводе должны присутствовать интерфейс сканера и имя используемого устройства.
Производитель и модель сканера могут отсутствовать: это нормально.
Замечание: Некоторым USB сканерам может потребоваться загрузка прошивки.
Подробности смотрите в страницах справочника драйвера сканера,
sane-find-scanner(1) и
sane(7).
Теперь необходимо убедиться, что сканер опознан программой графического интерфейса. В
состав системы SANE входит утилита
scanimage(1),
позволяющая работать со сканером из командной строки. Опция -L используется для показа информации о сканере:
# scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner
Отсутствие сообщений или сообщение об отсутствии устройств означает, что утилита
scanimage(1) не
смогла идентифицировать сканер. В этом случае вам потребуется отредактировать файл
конфигурации аппаратного модуля и указать устройство, используемое сканером. Все файлы
настройки находятся в каталоге /usr/local/etc/sane.d/. Такие
проблемы присущи некоторым моделям USB сканеров.
Например, в случае USB сканера, описанного в Разд. 7.6.2.1, утилита sane-find-scanner выдаст следующую информацию:
# sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0
Сканер обнаружен корректно, он использует интерфейс USB и доступен через устройство
/dev/uscanner0. Теперь попробуем идентифицировать его:
# scanimage -L
No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).
Поскольку сканер не идентифицирован, нам потребуется изменить файл конфигурации /usr/local/etc/sane.d/epson.conf. В нашем примере использован
сканер EPSON Perfection® 1650, так что мы знаем, что
будет использоваться драйвер epson. Не забудьте прочитать
комментарии в файле конфигурации. Требуемые изменения весьма просты: закомментируйте все
строки, описывающие интерфейсы, не соответствующие интерфейсу вашего сканера (в нашем
случае, все строки, начинающиеся со scsi: наш сканер использует
интерфейс USB), и добавьте в конец файла строку, содержащую интерфейс и имя
использованного устройства. Мы добавим строку
usb /dev/uscanner0
Пожалуйста, прочтите комментарии в файле конфигурации, а также страницы справочника
для более полной информации. Теперь мы можем проверить, что наш сканер опознан:
# scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner
Наш USB сканер опознан. Не столь важно, что имя и номер модели не совпадают, главное,
что используются правильные имя устройства и драйвер: `epson:/dev/uscanner0'.
После того как команда scanimage -L опознала сканер,
конфигурация завершена. Все готово к сканированию.
Хотя утилита
scanimage(1)
позволяет производить сканирование из командной строки, как правило, для сканирования
предпочтительнее использовать графический интерфейс. Для этого в состав SANE входит простая, но эффективная утилита xscanimage (graphics/sane-frontends).
Другой популярной программой графического интерфейса к сканеру является Xsane (graphics/xsane). Эта программа поддерживает такие расширенные
возможности, как разные режимы сканирования (фотокопия, факс и т.п.), цветокоррекцию,
потоковое сканирование и другие. Оба приложения пригодны для использования в качестве
плагинов сканирования для GIMP.
Все описанные операции выполнялись нами с привилегиями суперпользователя (root). Вам может потребоваться дать доступ к сканеру другим
пользователям. Для этого необходимо разрешить доступ на чтение и запись к файлу
устройства, обслуживающему сканер. В нашем примере USB сканер использует устройство /dev/uscanner0, принадлежащее группе operator. Добавление пользователя joe в
группу operator разрешит ему использовать сканер:
# pw groupmod operator -m joe
За подробностями обращайтесь к странице справочника pw(8). Вам также
потребуется установить нужные права доступа (0660 или 0664) к устройству /dev/uscanner0, поскольку по умолчанию группа operator может лишь читать из него. Это достигается добавлением
следующей строки в файл /etc/devfs.rules:
[system=5]
add path uscanner0 mode 660
Затем добавьте в файл конфигурации системы /etc/rc.conf
такую строку (после чего перезагрузите систему):
devfs_system_ruleset="system"
Подробную информацию о правах на файлы устройств вы найдете на странице справочника devfs(8).
Замечание: Разумеется, по соображениям безопасности, вы должны как следует
подумать, прежде чем добавлять пользователя в другие группы, в особенности в группу operator.