11/23/2006

Сканер в Linux и настройка SANE: scanner in linux

Задача: установить сканер в Linux и настроить его.
Решение: для работы со сканнерами в Linux нужно установить SANE [?] и связанные с ним утилиты.

Установка сканера
Всё очень и очень просто: для установки сканера в линукс нужно поставить подсистему
SANE [?]. Для того, чтобы сканировать в консоли (или скриптами), нам нужен только пакет sane, а если хочется ещё и в графических программах сканировать, то ставим ещё и xsane. Итак, ставим:
aptitude install sane xsane
Всё должно поставиться и настроиться - теперь можно поискать сканер. Включаем его в сеть и в соответствующий порт, после чего от рута пишем:
# sane-find-scanner
Эта утилита должна выдать что-то вроде:
# sane-find-scanner will now attempt to detect your scanner. If the
# result is different from what you expected, first make sure your
# scanner is powered up and properly connected to your computer.

# No SCSI scanners found. If you expected something different, make sure that
# you have loaded a SCSI driver for your SCSI adapter.

found USB scanner (vendor=0x04b8 [EPSON], product=0x011b [EPSON Scanner]) at libusb:001:089
# Your USB scanner was (probably) detected. It may or may not be supported by
# SANE. Try scanimage -L and read the backend's manpage.

# Not checking for parallel port scanners.

# Most Scanners connected to the parallel port or other proprietary ports
# can't be detected by this program.
Полужирным выделено искомое - наш сканер опознан, нашёлся и готов радовать нас отличными изображениями. Если сканер не нашёлся, то о
статусе его поддержки можно узнать на официальной странице проекта SANE.

Сканировать может только root?
Есть такая неприятность: по умолчанию только root имеет доступ к сканеру, но это легко исправить. Для этого нужно внести пользователя, под которым хочется сканировать, в группу scanner. Делается это (с рутовыми привилегиями) так:
# gpasswd -a имя_пользователя scanner
заменяя имя_пользователя на логин пользователя. Для того, чтобы изменения вступили в силу, нужно перелогиниться. После этого в консольке (от имени того пользователя, которому хочется сканировать) для проверки пишем:
$ groups
При этом будет выдан список всех групп, в которых пользователь состоит. Например, вот что пишет эта утилита для меня
penta4 dialout cdrom floppy audio video plugdev scanner
Последняя строчка говорит о том, что пользователь penta4 имет право сканировать. Всё, теперь можно запускать GiMP или любую другую программу и сканировать там.

Махмуд, зажигай!

Теперь можно легко и просто сканировать в Gimp. Идём в меню Файл - Захватить - Xsane и видим простой интерфейс сканирования.

Можно так же запустить его отдельно, просто набрав в консольке (или добавив в меню своей графической оболочки) xsane. Полупрозрачным показано первое окно выбора устройства, а дальше появляется окно с параметрами сканирования. В нём масса интересных и нужных настроек. Например, если вы вместо режима "Просмотр" выберете "Файл", то можно сканировать в файлы с постоянно меняющимися названиями: например, file0001.tif, file0002.tif и так далее. Можно прибавлять или отнимать по 1 или 2. И ничего при этом не надо делать руками.

Так же особо обратите внимание на меню "Окна" в XSANE. Там можно вызывать или убирать окна предварительного сканирования, задавать параметры пакетного сканирования, дополнительные настройки (битность изображения, права доступа на сканируемые файлы и прочее).

Примечание:
Некоторые сканеры по умолчанию выставляют размер сканируемой области равной 0, в частности, Umax Astra 2200U. Поэтому
бывает полезно посмотреть доступные параметры сканирования их значения по умолчанию для конкретного сканера (например, --resolution, -x, -y, --gray, --lamp-off ) командой
scanimage --help -d DEVICE
где DEVICE - название сканера, или группы сканеров, поддерживаемых sane. Найти подходящий DEVICE (e.g. umax1220u) можно в разделе BACKENDS FOR SCANNERS руководства $ man sane.

Ссылки:
Про то, как дать возможность сканировать в Linux другим пользователям (кроме рута), сказано здесь и здесь.
Поддержка моделей сканеров в Linux постоянно улучшается, и статус поддержки сканеров можно узнать на официальной странице проекта SANE.

30 комментариев:

  1. Помню, что в старых дистрибутивах проблема была с подключением сканера (хотплаг, что-то типа libusb, libsane, уже сейчас и не вспомню), теперь (когда хотплаг и колдплаг умерли) всё с этим в порядке, udev справляется.
    На www.sane-project.org много полезной информации по сканерам. Также бывает полезно читать конфигурационные файлы прошивок (где-то в /etc/sane.d/ или что-то такое).
    Ещё не надо пугаться, что сканер долго запрягает :), у меня он разогревается где-то минуты три, поэтому около года я считал, что он у меня не работает =)))
    Поправка:
    Access вместо Acess

    ОтветитьУдалить
  2. 2 igor:

    На www.sane-project.org много полезной информации по сканерам.
    Но изложена очень уж коряво. Вцедить оттуда что-то полезное - требуется умение и много времени. Куда-то задевали доку по разрешению сканировать всем остальным...

    Ещё не надо пугаться, что сканер долго запрягает :),
    У меня Epson Perfection 2400, разогревается за 5-10 секунд. SANE его поддерживает превосходно.

    Кстати, в статье надо будет потом про backends написать. Кстати, как это слово переводится на русский?


    Поправка: Access вместо Acess Спасибо, багфикс учтён :-)

    ОтветитьУдалить
  3. Кстати, в статье надо будет потом про backends написать. Кстати, как это слово переводится на русский?

    Может быть, кому-то прийдет более удачная мысль. Мой вариант: Подсистема (или программный модуль) взаимодействия с пользователем или оборудованием, или (нужное вписать).

    В sane "backend" получается "модуль взаимодействия со сканером". Слово "драйвер" можно применить, наверное.

    ОтветитьУдалить
  4. "Куда-то задевали доку по разрешению сканировать всем остальным..."
    ИМХО правильно, это задача исключительно дистрибутивозависима.
    А у меня Epson 1260 :)

    ОтветитьУдалить
  5. 2 Zubok
    В sane "backend" получается "модуль взаимодействия со сканером". Слово "драйвер" можно применить, наверное.
    Да, наверное что-то из этого. Типа "дополнительный драйвер". А то ко мне на блог повадились ходить Анонимусы - большие и ярые поборники чистоты и красоты переводов. Бдят, так сказать. Закидают тухлыми помидорами при любом удобном случае :-)

    2 Igor
    ИМХО правильно, это задача исключительно дистрибутивозависима.
    Добавление пользователя в группу сканера!? В Слаке, Генту и Дебиане во всяком случае всё именно так. Ну ладно, может где не так...

    ОтветитьУдалить
  6. Ну теперь группа сканирующих зависит просто не от sane, а от udev. На сайте www.sane-project.org в разделе Документация нашёл FAQ, но он, кажется, устарел.
    Аналогия со звуком: в большинстве современных дистрибутивов надо добавить пользователя в группу audio (или sound), но это задача дистрибутива, написать это сообщение при установке соответствующего пакета. Так и здесь. В ArchLinux при установке sane пишется, что нужно добавить пользователя в соответствующую группу.

    ОтветитьУдалить
  7. Да, наверное что-то из этого. Типа "дополнительный драйвер".

    В голову пришел еще вариант. Обычно, когда говорят о backend, разумеются еще frontend. То есть речь идет о двух уровнях: высоком и низком. то есть "модуль низкого уровня", "модуль высокого уровня". Что-то в этом роде.

    ОтветитьУдалить
  8. Спасибо за статью!
    Попробовал настроить свой сканер, все доступно изложено. Вот только у меня почему-то не заработало.
    Установил xsane, включил пользователя в группу scanner. Но вот при запуске xsane выдает "нет доступных устройств". sane-find-scanner мой сканер находит HP ScanJet 4370. Может это вин-сканер? Такие бывают? Вот принтер у меня так и не заработал, сказали менять...

    ОтветитьУдалить
  9. 2 paveless
    Спасибо за статью!
    Попробовал настроить свой сканер, все доступно изложено.

    Пожалуйста. Рад, что она помогла хоть в чём-то.

    sane-find-scanner мой сканер находит HP ScanJet 4370.
    Нужно скачать backend. В гугле он должен быть, а ещё на сайте проекта SANE хорошо посмотреть, есть ли поддержка (хотя должна быть, HP сканеры поддерживаются нормально).

    Вот принтер у меня так и не заработал, сказали менять...
    Пиши в личку, если смогу - помогу. Название сканера, принтера, дистрибутив и своё железо.

    ОтветитьУдалить
  10. Проблема возникла со сканером Epson Perfection 4180. Выполняя выши инструкции и почитав мануалы не удалось поднять сканер. Хотя sane-find-scanner находит found USB scanner (vendor=0x04b8 [EPSON], product=0x0118 [EPSON Scanner]) at libusb:003:00.
    Может у вас есть какие нибудь мысли по этому поводу !!!
    Advanced: kernel - 2.6.17-2-k7
    motherboard asus A7N8X-E Deluxe

    ОтветитьУдалить
  11. cvat, твоего сканера даже нет в списке sane. Не знаю как он, но мой Perfection 1270 требует, чтобы в него загружалась прошивка (её нужно выдрать из виндового драйвера и немного подправить конфиг)

    ОтветитьУдалить
  12. > Проблема возникла со сканером Epson Perfection 4180.
    Решена ли проблема и есть ли папка /dev/scanner и нужна ли она в принципе, если нет то как восоздать:). Много вопросов:)

    ОтветитьУдалить
  13. Список поддерживаемых сканеров смотрим здесь: http://www.sane-project.org/sane-mfgs.html
    Я, например, своего там не нашёл. Отправил багрепорт. Через пару дней со мной связался разработчик одного из backend'ов, попросил доп. сведения. Обещает альфа-версию драйвера через несколько дней сделать. Мож и правда, получится? :)

    DimkaS

    ОтветитьУдалить
  14. 2 Акув комментирует...
    Решена ли проблема и есть ли папка /dev/scanner и нужна ли она в принципе, если нет то как восоздать:)
    Это не папка, а файл устройства. И было это, насколько я помню, давно, при devfs. Сейчас такого устройства быть не должно.

    2 Dimka комментирует...
    Отправил багрепорт. Через пару дней со мной связался разработчик одного из backend'ов, попросил доп. сведения. Обещает альфа-версию драйвера через несколько дней сделать. Мож и правда, получится? :)
    А почему бы и нет!? Ведь разработчики - как правило сами пользуются либо таким же устройством, либо близким по марке, либо просто энтузиасты и любители поломать всякие железяки. Так что если уж разработчик откликнулся - снабжайте его таким количеством полезных сведений о своей железяке, как только сможете.
    Очень может быть, что, вопреки жлобу-производителю, вам удастся воспользоваться возможностями устройства.

    ОтветитьУдалить
  15. USB Сканер Acer 3300U
    в мандриве работает нормально
    в debian etch даже lsusb его не показывает
    подскажите куда ткнуться.

    ОтветитьУдалить
  16. Сикока не долбился- от обычного юсера не запускается sane стабильной ветки.Segmentation fault и до свидания. Победить удалось только скачкой и компиляцией последних sane-xsane

    ОтветитьУдалить
  17. USB Epson perfection 660
    Настраивал как указано выше, не поднялся.
    Была проблема
    #scanimage > image.pnm
    [snapscan] Cannot open firmware file /usr/share/sane/snapscan/your-firmwarefile.bin.
    [snapscan] Edit the firmware file entry in snapscan.conf.
    scanimage: open of device snapscan:libusb:001:002 failed: Invalid argument

    Порыскал на форумах
    http://www.mepis.org/node/9595
    нашел лечение.
    Есть список сканеров которым нужен bin фаил из win драйверов
    http://snapscan.sourceforge.net/

    Из списка скачал нужный фаил в
    usr/share/sane/snapscan/your-firmwarefile.bin

    настроил ссылку на bin фаил в
    etc/sane.d/snapscan.conf

    ОтветитьУдалить
  18. народ скажите решилась ли проблема со сканером HP scanjet 4370 если да то как?

    ОтветитьУдалить
  19. Уважаемый Михаил, ввожу команду aptitude install sane xsane, терминал "шуршит" и выдаёт предупреждение о том, что энное количество пакетов не используется и будет стёрто. Не приведи Бог согласиться! А если ставить пакеты sane и xsane из Synaptik-а, то после введения # sane-find-scanner следует что-то типа "comand not found". Так что, до заветного "Махмуд, зажигай!" добраться никак не могу :((
    У меня Дебиан и Mustek 1200 UB Plus.
    Как "пришить" сканер к моей ОС?
    Спасибо. Т.Б.

    ОтветитьУдалить
  20. как настроить так, чтобы сканер сканировал автоматически по нажатию кнопки без всяких запросов? в списке поддерживаемых сканеров моего нету у "A scanner button daemon for Linux".
    пользую genius sf600. вручную работает через xsane нормально

    ОтветитьУдалить
  21. Уважаемый Михаил.... "Махмуд, зажигай!" - в моем случае тоже не выходит.
    пишет:
    found USB scanner (vendor=0x055f, product=0x021a [USB Scanner], chip=GT-6816) at libusb:001:003
    # Your USB scanner was (probably) detected. It may or may not be supported by
    # SANE. Try scanimage -L and read the backend's manpage.


    Сканер Usb: Mustek 2448 CS Plus.
    OC: Debian

    ОтветитьУдалить
  22. + ко всему.......... когда я вхожу в интерфейс xsane она выдает, что не может открыть устройство с вышеуказанным адресом (((

    Подскажите, пожалуйста, что делать!

    ОтветитьУдалить
  23. По поводу USB Epson perfection 660,
    на сайте sane написано что нужен firmware файл tail_058.bin, но в офф дровах лежит tail_061.bin, что вызвало некоторую панику на некоторых форумах.
    Этот файл отлично подпихивается и работает, ищущие - не парьтесь X)

    ОтветитьУдалить
  24. Добрый день! У меня сканер Epson 1260, во первых долго готовится к сканированию (минуты 2) во вторых сканирует не всё изображение, а только область в правом верхнем углу.

    Я так понимаю что всё это настраивается, для того чтобы задать область сканирования я пишу scanimage -x 215 -y 297 -d тут само устройство > /dev/bus/usb/003/002 в результате ничего не меняется, что делаю не так?

    ОтветитьУдалить
  25. у меня стоит Ubuntu 10.10 и сканер Epson Perfection 4180.
    не могу добиться чтоб работал. если кто решил проблему отпишите пожалуйста на kos.mik@mail.ru очень нужно.

    ОтветитьУдалить
  26. Здравствуйте! У меня проблема со сканированием. Сканирую объект размером 50 мм, а после сохранения и импорта в графическую программу он получается в 5-6 раз больше. Подскажите в чем проблема? Может у меня настройки неверно стоят? мой адрес abk@inbox.lv

    ОтветитьУдалить
  27. > у меня стоит Ubuntu 10.10 и сканер Epson Perfection 4180.
    > не могу добиться чтоб работал. если кто решил проблему отпишите
    > пожалуйста на kos.mik@mail.ru очень нужно.

    у меня дебиан и сканер Epson Perfection 4180.
    xsane запускает сканер ток из под root terminal...8-(

    ОтветитьУдалить
  28. как избавиться от фиолетового фона при сканировании,сканер hp scanjet g3010 , дров нигде нет именно на линукс,он распознается,но видимо драйвер не подходит,кто что посоветует. так нихотел покидать эту ось но видимо прийдется,очень нелегко с дровами на линукс!

    ОтветитьУдалить
  29. Как изменить каталог для сохранения сканов по умолчанию?

    ОтветитьУдалить
  30. Дебиан Wheeze видит МФУ Canon MP 235 только в руте, пользователь создан balaban@192-168-0-100:~$ id
    uid=1000(balaban) gid=1000(balaban) группы=1000(balaban),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),105(scanner),110(bluetooth),111(netdev)
    balaban@192-168-0-100:~$
    , но без рута вместо сканера определяется веб камера и сканер не находит

    ОтветитьУдалить