|
Когда-то мамонты были
маленькими, а баобабы были водорослями...
Во времена ASPLinux 12 очень радовал фокус:
сканер подключается и работает что
называется «из коробки». Вот так сила
СПО. На дворе декабрь 2007, база дистрибутива
Fedora 7.
2010-й год, Fedora 12. Сканер тот же, но теперь
xsane выдаёт сюрприз:  
Как всегда, если что-то не работает,
запускаем из терминала. Ибо графические
программы любят сообщать в него много
интересного. 
На ошибки UTF-8 внимание не обращаем,
это вечная проблема. А вот «Couldn't open...»
уже гораздо интереснее. Фактически это
есть и проблема, и её решение.
Сканирование в Линукс завязано на
SANE. Scanner Access Now Easy (SANE) — интерфейс
прикладного программирования (API),
который предоставляет стандартизированный
доступ к устройствам сканирования
растровых изображений. Аналогами для
Уиндоуз являются такие API как TWAIN, WIA,
ISIS. Этот интерфейс является посредником
между драйвером сканера и приложением,
которое осуществляет сканирование.
Драйвер сканера для Уиндоуз поставляется
производителем сканера в двоичном виде
и является его собственностью. Для
Линукс производители сканеров (даже
члены Линукс Фаундэйшн такие как HP)
драйверы делать не спешат. Равно как и
открывать протоколы работы со сканером.
Сканеры (как и вебкамеры) подобно
материнским платам строятся на основе
«чипсетов». Устройства разных
производителей могут строится на
одинаковых чипсетах. Поэтому драйвер
работает не с абстрактным «сканером»,
а со вполне реальной микросхемой по
вполне реальным протоколам. Почему же
производители сканеров не открывают
протоколов работы с их устройствами?
Да потому что это не их собственность,
а производителя чипсета.
Как же в Линукс сканеры вообще работают?
Во-первых не все чипмейкеры «зажимают»
техническую документацию, а некоторые
даже наоборот очень подробно всё
прописывают. Во-вторых, есть такое
понятие — обра́тная разрабо́тка
(обратный инжиниринг, реверс-инжиниринг).
Для сканеров это выглядит так: вся
информация, передаваемая через интерфейс
подключения перехватывается и
анализируется. Из этого выделяются
команды управления сканером. Процесс
трудоёмкий, но позволяет всё же написать
драйвер. От сюда вывод: драйвер пишется
не для сканера а для чипсета.
Драйвер для SANE называются бакэнд
(backend). В состав практически любого
дистрибутива Линукс вместе с SANE входят
все известные бакэнды. Теоретически
это означает, что если сканер числится
в списке поддерживаемых на странице
SANE (http://www.sane-project.org/sane-mfgs.html), то достаточно
его подключить и он будет работать.
Вернёмся к нашему сканеру. SANE сканер
опознала, да и в списке поддерживаемых
он числится (Mustek BearPaw 2400 CU Plus).

Значит он должен работать. Но не
работает. В самом начале мы выяснили,
что xsane выдала в консоль «[gt68xx] Couldn't open
firmware file (`/usr/share/sane/gt68xx/PS2Dfw.usb'): Нет такого
файла или каталога». gt68xx это бакенд для
сканера. А вот что ещё за firmware file
PS2Dfw.usb?
Сканер, как и любое современное
устройство (жесткий диск, дивиди плеер),
работает под управлением специальной
микропрограммы (прошивки). Эта прошивка
создаётся производителем устройства
и отвечает за алгоритм его работы. Обычно
эта микропрограмма записывается в ПЗУ
устройства. В сканерах же часто ПЗУ нет,
а firmware записывается драйвером при
инициализации устройства в специальный
буфер. Вот нам бакенд и сообщил, что
прошивки для сканера на указанном месте
нет.
Где взять прошивку? Некоторые
производители сканеров выкладывают их
на своём сайте. Но это редкость. Проще
всего найти этот файл на диске с драйверами
для Уиндоуз, либо в каталоге Windows\drivers
(зависит от версии оной). Можно поискать
на просторах интернета. В моём случае
на сайте бакенда gt68xx
(http://www.meier-geinitz.de/sane/gt68xx-backend/) есть прямая
ссылка для скачки.
Создаём каталог /usr/share/sane/gt68xx и помещаем
туда файл PS2Dfw.usb. Запускаем xsane и вуаля!
Всё работает. Да, есть по крайней мере
две версии прошивки, одна из них с
бакендом не корректно работает. Она мне
попалась в драйвере для висты. А вторя
с сайта бакенда работает прекрасно.
Так почему же сканер одичал? Под
ASPLinux 12 на 7-й федоре работал, а на 12-й
федоре уже нет. Дело в том, что firmware
являются собственностью производителей
сканеров, и распространять их отдельно
во многих странах (в том числе и США)
является нарушением закона. У нас в
России пока на это не смотрят. Вот
создатели АСПэшки и поместили на свой
диск сразу все доступные прошивки на
радость юзерам. А в Russian Fedora 12 об этом то
ли не подумали, то ли побоялись. 4 мая 2010 П. В. Скребнев
|