Настройка сканера linux centos

Обновлено: 05.07.2024

Проверка распознавания системой сканера, как устройства.

Сначала нужно посмотреть, определяется ли сканер физически. Большинство сканеров сейчас подключается по USB, поэтому необходимо открыть Терминал и ввести команду, показывающую все подключенные USB-устройства:

Если среди них нет искомого сканера, то, скорее всего, проблема аппаратная. Стоит проверить, подключён ли сканер по USB, не переломился ли кабель и вообще, исправен ли сам сканер. Так же могут быть проблемы с распознаваем сканера в BIOS или UEFI компьютера. Часто помогает отключение XHCI в UEFI.
Если же в выводе Терминала есть строчка подобная этой:

то уже хорошо — система видит сканер как USB-устройство и можно двигаться дальше. Естественно, что все цифры и наименование сканера могут быть другими. Важно то, что такая строка есть в принципе.
Теперь нужно ввести в Терминале:

Если система не может выполнить команду, то, вероятно, не установлен пакет sane-backends. Установить этот пакет можно командой:
для РЕД ОС версии 7.1 или 7.2:

для РЕД ОС версии 7.3 и старше:

а затем повторить ввод:

Положительным ответом будет считаться строка, аналогичная этой:

Если же Терминал выдаёт отрицательный ответ примерно в таком виде:

то это может означать:
• аппаратную проблему;
• отсутствие прав на работу со сканером у активной в данный момент учётки пользователя;
• сканеру запрещено обращаться к ядру (где обычно и находятся драйвера).
Решать проблемы лучше в этом же порядке. Про решение аппаратных проблем уже было сказано выше, поэтому можно сразу перейти к настройке прав учётной записи пользователя.
Введённая в Терминал команда

покажет логин активного в данный момент пользователя.
Далее, нужно узнать, в каких группах состоит этот пользователь:

где <имя_пользователя> — логин, полученный по команде whoami.
Если в этом списке указаны не указана группа lp, необходимо добавить его:

где user1 — логин добавляемого пользователя.

Для тестирования сканера выполните команду:

Разрешение сканеру обращаться к ядру системы.

Данные от lsusb:

Остаётся только сохранить файл и закрыть его.
Теперь снова вводим в Терминале:

Теперь уже ответ должен быть положительным:

Если сканер так и не находит, тогда нужно объяснить, как SANE работает со сканером:
У SANE есть конфиг, который является обеспечивает доступ к драйверам. Находится он в каталоге /etc/sane.d/dll.conf.
Выглядит он как список из других конфигов, которые находятся в той же папке, что и dll.conf
Когда мы запускаем команду scanimage -L, а она в свою очередь обращается к конфигу dll.conf, который, в свою очередь, обращается к конфигам, отвечающие непосредственно за определенные модели сканера. Сами конфиги уже ведут драйверам, которые находятся в /usr/lib64/sane/

Решение проблемы, если сканер виден под root, но не виден под пользователем:

Тогда сканер будет виден под пользователем.

Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.

Тема стара как мир, но как птица феникс восстала из пепла, а точнее из необходимости прикрутить сканер МФУ Epson к Centos 6 (gnome).
Имеем цветной струйный МФУ Epson SX115. Ключевой момент, побудивший написать статью — скудность информации по поддержке относительно свежих устройств сканирования. Поиски в сети увенчались найденными крупицами информации, которые вскользь упоминали что это можно сделать. Как это быстро сделать и избежать подводных камней — прошу под кат.

Во первых, надо надо было выяснить vid и pid устройства, подключенного к usb порту:
$ lsusb
Bus 002 Device 005: ID 04b8:084d Seiko Epson Corp. PX-402A [Stylus SX115/Stylus NX110 Series]

Далее, как обычно ставим xsane и идем в папку /etc/sane.d/ находим файл epson2.conf и правим/добавляем строчку до вида:
usb 0x04b8 0x084d

Где значения vid и pid устройства были взяты из вывода команды lsusb.

После этого, при запуске xsane сканер находится программой и готов к работе в штатном режиме.

Далее была необходимость сделать работу с ним более удобной и обучить кнопку Scan с помощью также давно и хорошо известной утилиты scanbuttond (да да, она до сих пор компилируется на данной ос из исходников без проблем). В репозиториях для Centos его нет, поэтому собираем из исходников, предварительно добавив наше устройство в список наблюдаемых по признаку vid и pid:
в папке исходников scanbuttond-0.2.3/backends/ правим файл epson.c в двух местах добавляя наше устройство
static int supported_usb_devices[NUM_SUPPORTED_USB_DEVICES][3] = // vendor, product, num_buttons
< 0x04B8, 0x084d, 1 >, // Epson SX115

static char* usb_device_descriptions[NUM_SUPPORTED_USB_DEVICES][2] = < «Epson», «SX115»>,

А далее, согласно штатной документации, добавляем скрипты автоматизации с нужными плюшками по пути:
/usr/local/etc/scanbuttond/buttonpressed.sh

У меня поставлена команда сканирования в оттенках серого:
scanimage -d epson2 --format tiff --mode Gray --resolution 150 > scan.tiff

Это упрощенная версия моей команды, на самом деле стоит дополнительно скрипт автонумерации, что и делает удобным сканирование больших объёмов матреиала нажатием одной кнопки на устройстве в данной операционной системе.

p.s.
Если вытянуть картридж (или чип обозначил картридж пустым), то это не мешает функции сканирования никак.

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

Компьютер с современной версией Linux можно использовать не только в качестве интернет-сервера, но и как рабочую станцию для графических работ (например, с использованием Gimp). Для этого, в частности, необходима возможность получать изображения с помощью сканера (вы же не будете покупать отдельный компьютер и ставить на него MS Windows только для сканирования?).

  • Цена. Так как я не занимаюсь графикой профессионально, то я даже не смотрел в сторону профессиональных моделей. Кстати, существует громадный ценовой разрыв между любительскими и профессиональными моделями. Например, Seiko Epson продает сканеры либо дешевле $500, либо дороже $2000. Так что купить модель неподходящего уровня вам просто не дадут ;)
  • Область сканирования - A4.
  • Тип датчика. Какой датчик выбрать: CIS, ПЗС (CCD) или ФЭУ? На ФЭУ денег нет (см. выше), про CIS достаточно вспомнить, что там нет оптики. Так что выбор очевиден - CCD.
  • Тип кинематического механизма: ручной, роликовый, планшетный, проекционный или барабанный (в них используется ФЭУ, так что отбрасываем сразу). Ручные и проекционные сканеры я уже имел несчастье пробовать, так что также отбросим их. Роликовый сканер, конечно, лучше ручного, но доверия все же не внушает. Итого - планшетный сканер.
  • Тип оригинала: прозрачный или непрозрачный. Хотелось бы иметь универсальное устройство, которое могло бы сканировать как бумажные носители, так и слайды, а в идеале и негативы. Для слайд адаптера нужна функция фокусировки.
  • Аппаратный интерфейс: параллельный порт (устарел и слишком медленный), SCSI или USB. Вы где нибудь видели дешевый SCSI сканер? Вот и я тоже. Устаревшие модели не предлагать!
  • Драйвера. Большинство (все ?) изготовители сканеров не предоставляют драйверов под Linux. К счастью, драйвера ко многим моделям можно получить от энтузиастов. Поэтому перед покупкой сканера необходимо убедиться, что кем-нибудь написан драйвер именно для этой модели сканера. Отличие одной буквы в имени приведет к тому, что сканером вы воспользоваться не сможете. Убедитесь также, что драйвер достаточно отлажен, и не верьте обещаниям, что все будет работать буквально на следующей неделе (в крайнем случае, можно отложить покупку на неделю ;). Информацию о поддерживаемых сканерах можно найти:
      (отзывы счастливых или несчастных владельцев) (обобщенный драйвер USB сканера обеспечивает только транспортный уровень!) (технически говоря, это не драйвера, а библиотека, исполняемая в userspace, но именно она обеспечивает интерпретацию данных, получаемых от обобщенного драйвера USB сканеров в зависимости от конкретной модели сканера)

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

    • Изготовитель: Seiko Epson (сайт поддержки, российский сайт Seiko Epson, российский сайт поддержки).
    • Цена: около $250.
    • Область сканирования: A4 (216x297mm).
    • Датчик: CCD (2 линии на цвет).
    • Планшетный со съемной крышкой, 4 кнопки.
    • Встроенный пассивный адаптер (EU-54) для сканировная 35мм пленок (вертикально расположенная лампа с матовым стеклом). Область сканирования 48.26x231.1mm (? 36x226mm). Пленку надо класть блестящей стороной вниз. Две точки фокусировки: на стекло и 2 mm над ним (пленка в держателе).
    • Аппаратный интерфейс: USB 1.1, гнездо типа B (глубокое, так что USB кабель с ограничителем глубины не подошел), Full Speed mode (12Mbits/sec), подключать к корневому концентратору или концентратору первого уровня с блоком питания. Выдает о себе следующую информацию (надо бы добавить в modules.usbmap, в ядре 2.4.18 - RH 8.0 - уже есть):
      • string description: manufacturer: "EPSON", product: "EPSON Scanner"
      • Device Class: ff
      • Device Subclass: ff
      • Device Protocol: ff
      • Vendor Id: 0x04b8
      • Product Id: 0x0110
      • Revision Number: 1.10
      • preview 8 бит - 10 секунд
      • preview 16 бит - 15 секунд
      • scanimage --mode Color --depth 8 --resolution 50 (10.5 секунд)
      • scanimage --mode Color --depth 16 --resolution 50 (10.5 секунд)
      • scanimage --mode Color --depth 8 --resolution 100 (10.5 секунд)
      • scanimage --mode Color --depth 16 --resolution 100 (13.5 секунд)
      • scanimage --mode Color --depth 8 --resolution 200 (21 секунда)
      • scanimage --mode Color --depth 16 --resolution 200 (37.5 секунд)
      • scanimage --mode Color --depth 8 --resolution 400 (71 секунда)
      • scanimage --mode Color --depth 16 --resolution 400 (159 секунд)
      • scanimage --mode Color --depth 8 --resolution 600 (150 секунд)
      • scanimage --mode Color --depth 16 --resolution 600 (300 секунд)
      • scanimage --mode Color --depth 8 --resolution 800 (293 секунды)
      • scanimage --mode Color --depth 16 --resolution 800 -x 172.7 (413 секунд, PNM создается с ошибкой, а в TIFF нет последней строки)
      • scanimage --mode Color --depth 8 --resolution 1600 -x 172.7 (833 секунды)
      • command level: ESC/I-B8, FS
      • 7 уровней яркости (реализовано программно, а не увеличением яркости лампы)
      • line art: fixed threshold, text enhancement technology
      • halftone: auto area segmentation, 3 режима error diffusion, 4 шаблона dither, 2 загружаемых шаблона (bi-level и quad-level)
      • гамма коррекция: 2 типа для CRT, 3 типа для печати, 1 загружаемый
      • цветокоррекция: 1 для CRT, 3 для принтера, 1 загружаемая
      • Источник питания: DC 24V, 0.8A (15W/6W)

      Я использую Red Hat 7.2 с ядром 2.4.9-13. USB-контроллер: UHCI (chipset Intel BX).

      Так как ядро 2.4.9 ничего не знает о Epson Perfection 1650 (в 2.4.18 всё в порядке), то надо добавить в /etc/modules.conf строку:

      Может возникнуть проблема со слишком маленьким временем ожидания подтверждения в драйвере. Стандартное время ожидания (в /usr/src/linux/drivers/usb/scanner.h) равно 10 секундам. Для Epson этого мало, особенно в режиме TPU и в больших разрешениях. В старом ядре приходилось менять scanner.h и пересобирать ядро. Затем у модуля scanner появился параметр read_timeout (только задавать его надо не в секундах, как написано в документации, а в тиках - 1/100 секунды). Сейчас драйвер сканера самостоятельно увеличивает этот параметр до 40 секунд для сканеров Epson. В новой версии драйвера также убран эффект "тормознутости" - приложение нельзя было снять в течении этих самых 40 секунд.

      Oops! Ядро 2.4.9 (в 2.4.18 всё в порядке) ничего не знает об этом устройстве. Берем подходящую строчку из /etc/hotplug/usb.distmap от другого сканера Epson:

      То же самое можно сделать вручную:

      Осталось убедиться, что права к устройству /dev/usb/scanner0 достаточны для пользователя, который будет сканировать.

      Если сканер долго не использовать, то он отключается, а модуль выгружается из памяти. В результате автоматический поиск устройства не работает. Можно или передернуть устройство, перезагрузить драйвер вручную или указывать имя устройства явно.

      Убедившись, что при подсоединении сканера автоматически загружается модуль scanner, переходим к следующему этапу. Дело в том, что USB драйвер Linux обеспечивает только транспортный уровень протокола, т.е. он умеет передавать/принимать байты, но не понимает их значения. Для работы с конкретной моделью сканера (или серией сканеров, если они используют общий командный язык) необходима программа, умеющая общаться именно с данной моделью сканера. Наиболее популярным комплектом таких программ является SANE.

      SANE представляет собой API, который обеспечивает доступ к сканирующему оборудованию стандартизованным образом и библиотеку модулей для конкретных моделей сканеров. Поддерживаются не только USB сканеры, но SCSI-сканеры, устройства, подключаемые к параллельному порту, цифровые камеры из комплекта gphoto2 и другие устройства. Обеспечивается сетевая работа (я не пробовал).

      В дополнение к библиотеке (backends), в состав пакета входят программы для сканирования (frontends): scanimage, xcam, xscanimage. scanimage - это консольная программа и пользоваться ею можно, но неудобно. xcam и xscanimage - убогие и глючные, так что лучше пользоваться xsane.

      • вместе с Red Hat 7.2: пакеты sane-frontends-1.0.5, sane-backends-1.0.5 и sane-backends-devel-1.0.5
      • переустановив (rpm -Uvh) новые версии (1.0.6) с RawHide (они тянут за собой libusb-0.1.4-1.i386.rpm)
      • собрав их самостоятельно (удалив предварительно старую версию и пакеты, которые от нее зависят):
        • ./configure
        • make
        • make install
        • добавить в /etc/ld.so.conf директории /usr/local/lib, /usr/local/lib/sane и запустить /sbin/ldconfig (т.к. самосборный SANE (устанавливается в /usr/local, вместо /usr)

        Редактируем список устройств в файле /etc/sane.d/dll.conf (/usr/local/etc/sane.d/dll.conf, если собирали SANE самостоятельно): все лишние устройства надо закоментировать - автопроба неправильного драйвера может привести устройство или всю систему в неработоспособное состояние.

        В /etc/sane.d/epson.conf добавить:

        Тестируем список доступных устройств:

        Среди распознанных устройств должно быть:

        Тестируем работоспособность получившейся системы (весьма поверхностно):

        Посмотрим какие возможности сканера доступны с помощью SANE:

        • --mode Binary|Gray|Color
        • --depth 8|16
        • --halftoning (все что обещано аппаратурой)
        • --dropout None|Red|Green|Blue
        • --brightness -4..3 (не совместим с гаммакоррекцией)
        • --sharpness -2..2
        • --gamma-correction аппаратная гаммакоррекция, в т.ч. загружаемые кривые отдельно по каждому цвету
        • --color-correction (эти параметры вручную точно не задашь ;)
        • --resolution 50|60|72|75|80|90|100|120|133|144|150|160|175|180|200|216|240|266|300|320|350|360|400|480|600|720|800|900|1200|1600|1800|2400|3200
        • --threshold 0..255
        • --mirror[=(yes|no)]
        • --speed[=(yes|no)]
        • --auto-area-segmentation[=(yes|no)] (картинки halftoned, текст наоборот)
        • --zoom 50..200
        • --wait-for-button (1.0.8)
        • --preview[=(yes|no)]
        • --preview-speed[=(yes|no)]
        • геометрия: -l, -t, -x, -y (mm)
        • --source Flatbed|Transparency Unit
        • --film-type Positive Film|Negative Film
        • --focus-position Focus on glass|Focus 2.5mm above glass

        При попытке сканирования более 32 КБ на строку выдает ошибку "out of memory". Это не недостаток оперативной памяти (памяти я закупил достаточно по случаю снижения цен ;), а проблемы с адресацией командного языка (на самом деле ограничение равняется 64 КБ на строку - Epson Twain 5 позволяет такое, но sane-epson ошибается вдвое).

        Установив переменную окружения SANE_DEBUG_EPSON (от 1 до 128) можно получить отладочную печать в случае затруднений. Вот что устройство сообщает о себе:

        Кстати, в комплекте есть модуль для захвата изображений с video4linux (например, v4l:/dev/video0), который работает с моей AverMedia TVPhone98.

        scanimage позволяет отсканировать изображение с нужными параметрами и сохранить его в формате TIFF или PNM. Но пользоваться им можно разве что для тестирования. Поможет нам xsane - графическая оболочка к SANE. Также используется как plugin для GIMP, что позволяет сканировать изображения прямо из графического редактора.

        • вместе с Red Hat 7.2: пакеты xsane-0.77-4 и xsane-gimp-0.77-4 (но это очень старая версию с огромным количеством ошибок, например в некоторых режимах PNG сохраняется с ошибками)
        • переустановив (rpm -Uvh) новые версии (0.82-3) с RawHide (почему-то нет русских меню)
        • собрав их самостоятельно (удалив предварительно старую версию и пакеты, которые от нее зависят; не забудьте о plugin для GIMP:

        • ./configure (иногда приходится давать --disable-sanetest)
        • make
          • в RH 7.1 ошибка gcc-2.96-81 при компиляции xsane.c:4501(xsane_mail_dialog), о чем честно предупреждается в xsane.INSTALL (видимо силенок не хватает скомпилировать 260КБ с -O2). Уменьшение уровня оптимизации позволяют завершить сборку.
          • в RH 7.2 потребовалось установить пакет libusb-devel в дополнение к libusb, который потребовался обновленному sane
          • /usr/local/share/sane/xsane
          • /usr/local/share/locale
          • /usr/local/man/man1
          • /usr/local/share/sane

          Вот и все: запускаем командой xsane или xsane epson:/dev/usb/scanner0, если не срабатывает автоматическое распознавание. После этого надо обязательно включить отображение всех окон и погулять по конфигурации.

          Гаммакоррекция похоже в xsane-0.82 только программная.

          Заменяет libsane-epson.so в /usr/lib/sane на свою реализацию libsane-epsonkw.so (является модификацией одной из ранних версий libsane-epson). Единственное замеченное мной различие - появилась гаммакоррекция - 1.8. Устанавливается библиотека libesmod.so в /usr/lib и графический интерфейс к SANE - iscan. Его также можно использовать как plugin для gimp.

          Интерфейс проще, чем xsane. Появились кривые гамма- и цветокоррекции, но нет возможности управлять аппаратными функциями, белой и черной точек, гистограммы, 16 битных цветов, как в xsane. В общем, я не понял зачем это нужно.

          Ограничение на размер строки сканирования в 32 КБ осталось :(

          VueScan - библиотека драйверов сотни сканеров и графическая оболочка в одной программе. Нет исходных текстов. Shareware (изображения не сохраняются, пока не заплатишь автору). Ориентирована на слайдсканеры: поддержка инфракрасного канала, фокусировки, установки времени экспозиции, пакетной обработки, многократного сканирования (гм, Floating point exception); специальные фильтры обработки изображений для пленки: удаление зерна, восстановление "увядших" цветов (рекомендуется нажать кнопку "advanced options"). При попытке сканировать весь лист 1600x1600x16 получаем Segmentation fault (видимо та же проблема с ограничением размера изображения). Перед запуском надо установить переменные окружения, описывающие сканер:

          Сканирование 3200 dpi. Заметна явная полосатость изображения - либо кто-то путает четные и нечетные строки, либо CCD не успевает "отдохнуть" за полшага.

          Попытка многократного сканирования одной фотографии (c идеей дальнейшего усреднения с помощью convert -depth 16 -average) и последующее сравнение их (composite -depth 16 -compose difference) наводит на мысль, что младшие 8 бит на цвет генерируются датчиком случайных чисел (а на границе светлого и темного - все 10 ;).

          Сканировании в linux это процесс сканирования изображений или оцифровки документов в операционной среде Linux. Настоящая статья даёт общее представление о процессе сканирования, о программах используемых при этом и о сканерах, установка которых в Linux была осуществлена успешно.

          Программы для работы со сканерами

          В таблице приведёны ссылки на статьи о программах для работы со сканерами и их краткое описание

          ссылка описание
          sane пакет программ для сканирования
          simple-scan простая утилита для сканирования
          skanlite простая графическая программа сканирования из проекта KDE, бывшая kooka
          xsane графическая программа сканирования
          scanimage консольная утилита для сканирования из пакета sane-utils
          scanbuttond демон для отработки нажатий клавиш Copy/Scan на сканере

          Настройка локального сканирования

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

          Для осуществления Локального сканирования с помощью консольной утилиты scanimage

          • сканер подключается к USB-порту компьютера и включается
          • устанавливается пакет sane-utils
          • осуществляется сканирование

          Для осуществления Локального сканирования с помощью графической программы xsane

          • устанавливается программа xsane
          • запускается программа сканирования

          Локальное сканирование может быть также осуществлено с помощью браузера. Для этого следует скачать и установить PHP-скрипт phpSANE.

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

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

          Для настройки Сканер-сервера для осуществления Сетевого сканирования

          • осуществляется подключение сканера и установка пакета sane-utils как описано в разделе Настройка локального сканирования
          • в файл /etc/sane.d/saned.conf добавляется строка с указанием локальной сети имеющей право доступа к сканеру
          • уточняется способ запуска SANE - как демона или через супер-сервер openbsd-inetd

          Для настройки Сканер-клиента для осуществления Сетевого сканирования

          Читайте также: