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 располагается в меню "Приложения->Графика->Программа для сканирования изображения". К сканеру также можно организовать доступ по сети, как это сделать можно почитать здесь.

Также можно почитать:

29 коммент.:

Almaz 13 сентября 2009 г., 10:16  

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

linux0id 21 сентября 2009 г., 16:05  

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

Михаил 24 октября 2009 г., 20:22  

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

linux0id 29 октября 2009 г., 17:36  

Михаил, а какую модель сканер используешь?

Mikalai 10 ноября 2009 г., 6:44  

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

Mikalai 10 ноября 2009 г., 6:51  

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

linux0id 10 ноября 2009 г., 9:58  

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

Mikalai 20 ноября 2009 г., 13:37  

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

gmurik 22 марта 2010 г., 23:06  

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

ua9jbo 13 мая 2010 г., 3:30  

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

Renaissance 16 мая 2010 г., 2:38  

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

Рамиль 7 июля 2010 г., 13:04  

Спасибо заработало

278939163 7 сентября 2010 г., 23:57  

У меня ваще грабли с самого начала появились:
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 сразу. что нить можнопредположить? где можно посмотреть логи?

Андрей 4 апреля 2011 г., 0:33  
Этот комментарий был удален автором.
Андрей 4 апреля 2011 г., 0:39  

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

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

Сергей Афонькин 4 апреля 2011 г., 15:10  

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

cyber-punk 23 августа 2011 г., 1:12  

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

emi 14 сентября 2011 г., 13:41  

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

amour 18 сентября 2011 г., 7:58  

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

pastor_k 21 сентября 2011 г., 20:54  

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

Pagan 27 сентября 2011 г., 3:30  

После выполнения комманды: 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

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

Сергей Афонькин 28 сентября 2011 г., 22:12  

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

Александр Поляков 13 ноября 2011 г., 23:57  

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

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

Сергей Афонькин 14 ноября 2011 г., 23:14  

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

Александр Поляков 16 ноября 2011 г., 6:24  

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

Сергей Афонькин 18 ноября 2011 г., 22:29  

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

Андрей Федорак 30 января 2012 г., 21:59  

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

Владислав Матвеев 24 января 2014 г., 5:35  

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

Unknown 11 июня 2017 г., 22:45  

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

Отправить комментарий

  © Blogger template Blue Surfing by Ourblogtemplates.com 2008

Наверх