Руководство FreeBSD
Пред. | Глава 7. Мультимедиа | След.

# 7.6. Сканеры

Написана Marc Fonvieille. Перевод на русский язык: Дмитрий Морозовский.

## 7.6.1. Введение

В FreeBSD доступ к сканерам обеспечивается программой SANE (Scanner Access Now Easy), обеспечивающей универсальный интерфейс (API) и доступной в коллекции портов FreeBSD. Для общения со сканерами SANE использует некоторые драйвера устройств FreeBSD.

FreeBSD поддерживает сканеры с интерфейсом как SCSI, так и USB. Убедитесь, что ваш сканер поддерживается SANE перед тем, как приступить к конфигурации. Для SANE существует список поддерживаемых устройств где находится информация о поддержке сканера и статусе этой поддержки. Кроме того, страница справочника uscanner(4) также перечисляет поддерживаемые устройства.

## 7.6.2. Конфигурация ядра

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

### 7.6.2.1. 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`.

### 7.6.2.2. SCSI

Если ваш сканер имеет интерфейс 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).

## 7.6.3. Конфигурация SANE

Система 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.

## 7.6.4. Доступ к сканеру для других пользователей

Все описанные операции выполнялись нами с привилегиями суперпользователя (`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`.

Пред. | Начало | След.
Настройка ТВ тюнеров | Уровень выше | Настройка ядра FreeBSD

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.