Linux в Красноярске

24 мая 2009

Настройка сканера в Ubuntu

Организовать работу сканера в Linux можно используя SANE, предварительно убедившись, что ваша модель сканера им поддерживается. Часто при подключении сканера возникает ситуация когда сканер работает из под root и не работает под обычным пользователем. В данном посте пойдет речь о подключении сканера Mustek BearPaw 2448 TA Plus и организации его работы под обычным пользователем.

Для начала установим необходимые пакеты:
aptitude install libsane sane-utils xsane xsane-common
Сканер Mustek BearPaw 2448 TA Plus подключается к компьютеру через USB интерфейс. После подключения сканера к компьютеру, его можно "увидеть" в списке USB-устройств выполнив в командной строке:
lsusb
...
Bus 002 Device 003: ID 055f:021a Mustek Systems, Inc. BearPaw 2448 TA Plus
...
Теперь воспользуемся утилитой sane-find-scanner для поиска сканера и определения его файла устройства:
sane-find-scanner -q
...
found USB scanner (vendor=0x055f, product=0x021a [USB Scanner], chip=GT-6816) at libusb:002:003
...
Утилита scanimage поможет убедится в том, что сканер функционирует корректно. Для начала убедимся, что сканер доступен и отображается в списке доступных устройств, выполнив с правами root следующую команду:
sudo scanimage -L
...
device `gt68xx:libusb:002:003' is a Mustek BearPaw 2448 TA Plus flatbed scanner
...
Теперь надо выполнить тестирование сканера выполнив в командной строке:
sudo scanimage --test -d 'gt68xx:libusb:002:003'
...
[gt68xx] Couldn't open firmware file (`/usr/share/sane/gt68xx/A2Nfw.usb'): No such file or directory
scanimage: open of device gt68xx:libusb:002:003 failed: Invalid argument
...
Если вы получили такой-же вывод, то вам необходимо скачать файл A2Nfw.usb здесь. Это firmware, необходимое для работы сканера. Файл A2Nfw.usb надо расположить в директории /usr/share/sane/gt68xx/ с правами доступа 0644, для этого вам понадобятся права root.

После того как firmware установлено, вывод тестирования сканера в правами root выглядит следующим образом:
sudo scanimage --test -d 'gt68xx:libusb:002:003'
...
[gt68xx] Please wait for lamp warm-up
scanimage: scanning image of size 2555x3514 pixels at 8 bits/pixel
scanimage: acquiring gray frame, 8 bits/sample
scanimage: reading one scanline, 2555 bytes... PASS
scanimage: reading one byte... PASS
scanimage: stepped read, 2 bytes... PASS
scanimage: stepped read, 4 bytes... PASS
scanimage: stepped read, 8 bytes... PASS
scanimage: stepped read, 16 bytes... PASS
scanimage: stepped read, 32 bytes... PASS
scanimage: stepped read, 64 bytes... PASS
scanimage: stepped read, 128 bytes... PASS
scanimage: stepped read, 256 bytes... PASS
scanimage: stepped read, 512 bytes... PASS
scanimage: stepped read, 1024 bytes... PASS
scanimage: stepped read, 2048 bytes... PASS
scanimage: stepped read, 4096 bytes... PASS
scanimage: stepped read, 4095 bytes... PASS
scanimage: stepped read, 2047 bytes... PASS
scanimage: stepped read, 1023 bytes... PASS
scanimage: stepped read, 511 bytes... PASS
scanimage: stepped read, 255 bytes... PASS
scanimage: stepped read, 127 bytes... PASS
scanimage: stepped read, 63 bytes... PASS
scanimage: stepped read, 31 bytes... PASS
scanimage: stepped read, 15 bytes... PASS
scanimage: stepped read, 7 bytes... PASS
scanimage: stepped read, 3 bytes... PASS
...
Теперь надо воспользоваться утилитой scanimage с правами обычного пользователя, выполнив в командной строке:
scanimage -L
Если вы получите пустой вывод, надо посмотреть права доступа в файлу устройства (файл устройства можно узнать из вывода команд lsusb и sane-find-scanner). В нашем случае права к файлу устройства следующие:
ls -la /dev/bus/usb/002/003
...
crw-rw-r-- 1 root root 189, 130 2009-05-24 15:43 /dev/bus/usb/002/003
...
Файлы устройств в Linux динамически создаются при помощи утилиты udev по правилам описанным в файлах, расположенных в директории /etc/udev/rules.d. Для того чтобы файл устройства сканера создавался с корректными правами доступа необходимо в директории /etc/udev/rules.d создать файл 45-libsane.rules со следующим содержанием:
ACTION!="add", SUBSYSTEM!="usb", DRIVER!="usb", GOTO="libsane_rules_end"

#Mustek Systems, Inc. BearPaw 2448 TA Plus
ATTR{idVendor}=="055f", ATTR{idProduct}=="021a", ATTR{product}=="USB Scanner", MODE="664", GROUP="scanner"

LABEL="libsane_rules_end"
Атрибуты для написания правила можно взять из вывода команды udevinfo следующего вида:
udevinfo -a -n /dev/bus/usb/002/003
Как писать правила для udev можно почитать здесь. После того как правила прописаны, необходимо пререзагрузить компьютер и убедиться, что права к файлу устройства установленны корректно.
ls -la /dev/bus/usb/002/003
...
crw-rw-r-- 1 root scanner 189, 130 2009-05-24 16:26 /dev/bus/usb/002/003
...
Теперь надо внести пользователя в группу scanner. Это можно сделать следующим образом:
sudo usermod -aG scanner
После вненсения пользователя в группу надо перелогинится. Теперь вывод команды scanimage -L с правами пользователя должен быть аналогичным выводу этой команды с правами root.

После того как сканер подключен и протестирован отсканировать документ можно при помощи программы xsane, которая в Ubuntu располагается в меню "Приложения->Графика->Программа для сканирования изображения". К сканеру также можно организовать доступ по сети, как это сделать можно почитать здесь.

31 комментарий:

  1. После установки файла A2Nfw.usb в директории /usr/share/sane/gt68xx/ с правами доступа 100644, изменений не последовало (open of device gt68xx:libusb:002:003 failed: Invalid argument).
    В чем может быть дело?

    ОтветитьУдалить
  2. Almaz, надо посмотреть на твой вывод lsusb, возможно что сканер у тебя подключен не на Bus 002 Device 003.

    ОтветитьУдалить
  3. Статья очень помогла, так из-за прав на /dev/bus/usb/002/002 (у меня так) xsane запускался только от root-а. При запуске от пользователя выдавал сообщение об ошибке, хотя пользователь был добавлен в группу scanner. Debian Lenny , Intell Xenon.

    ОтветитьУдалить
  4. Михаил, а какую модель сканер используешь?

    ОтветитьУдалить
  5. Нифига не получается. Все стопориться на процессе копирования фирмвара. Несмотря на то, что работаю с правами рут, папка даже не хочет открываться:(. жаль, долблюсь уже неделю. Наверное не судьба и придется сканить в винде. Там это попроще как-то. Неужели сложно было сделать так же, как и остальными ЮСБ устройствами, типа принтера.

    ОтветитьУдалить
  6. Я не технарь и копаться в кодах - увольте, нету времени на непрофильную фигню. Неужели трудно написать драйвер как пакет, например? Почему в той же саксевой винде это занимает у меня 3 минуты, а здесь уже неделю и без просвета. Извините, накипело...

    ОтветитьУдалить
  7. Mikalai,о какой папке идет речь? /usr/share/sane/gt68xx/? Как Вы копируете? Из командной строки или при помощи файлового менеджера? Порядок Ваших действий?

    ОтветитьУдалить
  8. Порядок действий указан выше Вами. Ему и следую

    ОтветитьУдалить
  9. Все круто в блоге, но только не выбранный шрифт...
    АААААА как его можно было выбрать ))
    gmurik@gmurik.ru

    ОтветитьУдалить
  10. Отличная статья! настроил HP Scanjet 2300c в Linux Mint 5. Спасибо!

    ОтветитьУдалить
  11. Зачем столько мучений?
    Копируем USB-прошивку, запускаем от рута simple-scan и все.

    ОтветитьУдалить
  12. У меня ваще грабли с самого начала появились:
    Hp3500c
    simple-scan сканирует страницу, но каретку сканера не уводит в стартовую пизицию, т.е. оставляет на другом краю стекла. второе сканирование уже не делается.
    после выполнения всех инструкций xsane аылетает после сканирования, т.е. получет изображение, ведет каретку в обратную сторону и вылетает. запускал и от рута, и от юзера - толку ноль, в терминал только следующие сообщени выходят:
    (xsane:1497): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

    (xsane:1497): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated

    штук 20 сразу. что нить можнопредположить? где можно посмотреть логи?

    ОтветитьУдалить
  13. Этот комментарий был удален автором.

    ОтветитьУдалить
  14. Не получается сканировать через xsane, только "простое сканирование". Сканер такой же, подключен по на Bus 006 Device 005. При попытке скана через xsane получаю сообщение "Невозможно инициализировать сканирование: Неверный Аргумент".
    В чём может быть проблема, и какого решение?

    И да, работа останавливается на этапе добавления пользователя в группу "scanner" поскольку такая группа отсутствует. В чём мой промах, и является ли это проблемой?

    ОтветитьУдалить
  15. Андрей, какой Linux у тебя? От рута scanimage видит сканер? Возможно группа scanner не создается по-умолчанию. В принципе можно посмотреть в каких группах состоит пользователь и в правилах udev указать какую-либо из этих групп вместо группы scanner. Посмотреть в каких группах пользователь можно выполнив команду id, от имени пользователя.

    ОтветитьУдалить
  16. Рекомендую пользователя в группу добавлять командой:
    sudo usermod -aG scanner `whoami` проверено на ubuntu 10.04

    ОтветитьУдалить
  17. А у меня ваще сканит пол страницивдоль и растягивает до а4
    и что бы из железа не подключал к ubunte всё работает через попу и рота в ней суке нет!

    ОтветитьУдалить
  18. Спасибо за статью!!! Под 7кой мой сканер (той же модели, что в статье) не ставится, приходилось нетбук включать с ХРшкой, чтоб просканировать... А тут всё стало - прелесть)))

    ОтветитьУдалить
  19. Первоначально всё получилось на "ура"! Сканер работал без претензий. После перезагрузки вначале были сбои в работе, не сплошной звук каретки при поступательном движении, а прерывистый, как у струйных принтеров. Стал проверять, оказалось скачал фирмварь на CA вместо TA. Переустановил. Вначале - результат тот же. При движении каретки были слышны стуки в конечных точках и прокрутка зубчатой лентопротяжки (подозреваю наличие именно такого устройства). После этого сканер перестал реагировать на вызов. Из списка usb-устройств не исчез. Утилита поиска его определяет. После команды sudo scanimage -L - мёртвая тишина. Никаких данных не выводится, кроме нового приглашения... Что случилось?
    В хрюше проверил - всё нормально.

    ОтветитьУдалить
  20. После выполнения комманды: sudo scanimage --test -d 'snapscan:libusb:006:002'
    система выдала следующее:
    [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:006:002 failed: Invalid argument

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

    ОтветитьУдалить
  21. Pagan, какая модель сканера у тебя? Тебе нужно в /usr/share/sane/snapscan/ положить firmware для твоего сканера.

    ОтветитьУдалить
  22. Надеюсь на помощь толковых
    Начнем с самого начала, порядок действий
    У меня сканер Mustek 1200 UB Plus
    Выполнил все до команды sudo scanimage --test -d 'gt68xx:libusb:006:003'
    scanimage: sane_start: Device busy

    В ответ мне пишет
    scanimage: sane_start: Device busy
    Что мне делать? остановить службу или устройство?
    не пойму, как же все тяжко в ubuntu дается

    ОтветитьУдалить
  23. Александр, сложно однозначно сказать почему занято устройство. Возможно запущена программа, использующая сканер. Выяснить, какой программой или процессом занято устройство можно командой fuser. Например: fuser -v /dev/bus/usb/006/003

    ОтветитьУдалить
  24. спасибо за попытку помочь, но после ввода команды ничего не произошло, строка ввода появилась снова без изменений, могу переставить убунту и выложить скрины этапов настройки, просто действительно эта система порадовала своими возможностями и еще даже при значительном снижении головной боли со стороны пользователя (за исключением настройки сканера), вообщем не нужна эта похвала, нужна помощь, может есть конкретный пример настройки на конкретной версии убунту с конкретным сканером, дело в том что я и раньнше в коментах видел беспомощность с этой моделью сканера

    ОтветитьУдалить
  25. Александр, на Ubuntu свежего примера нет. Есть свежий пример для Debian, хотя это не сильно принципиально. Какая модель сканера? Нужен вывод команд: lsusb -v и scanimage -L.

    ОтветитьУдалить
  26. Спасибо, браточик, за пост. Бреду по просторам Никсов вслепую и подробное описание пригодилось, как для чукчи в Париже. Но во время "прошивки" файл не хотел копироваться в папку. Надо было использовать:
    sudo chmod 0777 /usr/share/sane/gt68xx/
    Осталось звук сделать. Буду искать как...

    ОтветитьУдалить
  27. А как получить права root и вставить 0644???? По-подробнее плиз. Открывать какой-то командер или в файловом менеджере (там я не нашел системных папок). Очень благодарен, до этого пункта ваша статья очень помогла.

    ОтветитьУдалить
  28. у меня выходит вот такое сообщение
    ~ $ sudo scanimage --test -d genesys:libusb:001:007
    scanimage: sane_start: Error during device I/O

    ОтветитьУдалить
  29. Прошу совета. Система Linux Mint 18.2, сканер Genius Colorpage Vivid4x. Закинул прошивку ccd548.fw в /usr/share/sane/gt68xx. При подключении сканера к USB команда lsub выводит: Bus 003 Device 015: ID 0458:201b KYE Systems Corp. (Mouse Systems) ColorPage-Vivid4x
    команда scanimage -L выводит device `gt68xx:libusb:003:015' is a Genius Colorpage Vivid4x flatbed scanner
    команда sane-find-scanner выводит found USB scanner (vendor=0x0458, product=0x201b [600DPI USB Scanner], chip=GT-6816) at libusb:003:015
    НО при попытке открыть xsane выводит ошибку: Невозможно открыть устройство dt68xx:libusb:003:015 Неверный аргумент. После этой ошибки lsub, scanimage -L и sane-find-scanner не выводят информацию о сканере. Переподключив сканер, снова появляется информация, но с другим номером libusb:003:020 и снова ошибка. По вашей методике я пробовал, тоже ничего не получается. Ранее сканер работал, перестал работать после переустановки Linux Mint. Подскажи, в чем дело?

    ОтветитьУдалить
  30. may end up paying more based on the currency exchange rate. Then, in a time regarding their 2017 launch, we got hijacked Fortnite accounts being hawked on Instagram: what Kotaku assembled a “thriving industry”. salsaroc.com

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