Hp scanjet 3770 linux

Driver for Scanner HP Scanjet 3770

/ Bit / Description
Windows
Vista
32 / 64 05.03.2007 1.1 2.7 [MB] Download
Windows
XP
32 23.12.2004 4.1 300 [MB] Download
64 05.03.2007 1.1 2.7 [MB] Download
Mac OS X
10.5 – 10.3
HP Photosmart Studio 27.03.2008 1.0 93.9 [MB] Download
Mac OS X
10.4
HP Image Zone 28.07.2005 8.4 107 [MB] Download

Read the HP license for software usage rules.

Drivers and utilities for scanner HP Scanjet 3770 under Windows Vista / XP and software for Macintosh OS X 10.3 – 10.5 in English. For Windows 7 and higher, the Vista driver can be installed in compatibility mode.

Источник

Установка HP Scanjet 3770 под Linux /Scientific Linux/

Как-то не повезло сканеру HP Scanjet 3770 в плане поддержки под Linux. Причем не повезло даже по сравнению с его же собратьями, созданными на основе все того же чипа Realtek 8822. Тем не менее, если такой сканер вдруг попадет к вам в руки, то можно попробовать и пободаться. И даже вполне небезуспешно.

Итак, история эта началась еще в далеком 2004-м году, когда компания Hewlett-Packard представила данное изделие миру. Вероятно, его создатели сочли в ту пору Linux достаточно экзотической системой для того, чтобы обеспечить эту модель сканера соответствующей поддержкой. Тем не менее, бета-версия соответствующего backend’а (драйвера) все же была написана. И попала в руки человека по имени Jean Philippe Boulanger, который и выложил ее для всеобщего доступа по ссылке: http://ftp.cyberbaladeur.fr/3770.tar.gz
.
[ История вопроса. Если неинтересно, то можно не открывать ] В дальнейшем HP, похоже, потеряла всякий интерес к перспективе применения данного изделия под Linux’ом, сосредоточив свои усилия исключительно на обеспечении его работоспособности под управлением ОС «с дружественным графическим пользовательским интерфейсом». И преуспевала на этом поприще аж до 5 марта 2007 г., выпустив на прощанье «Базовый драйвер HP» версии 1.1 для ОС Microsoft Windows Vista (в 32- и 64-битном вариантах). На этом всякая поддержка данной модели сканера со стороны производителя завершилась окончательно и бесповоротно.

Что же касается Linux, то здесь тоже все складывалось достаточно непросто. Backend (драйвер), написанный ребятами с HP, и попавший в распоряжение Жана Филиппа Буланже (Jean Philippe Boulanger), представлял собой просто кусок проприетарного бинарного кода, скомпилированного только под архитектуру i386, и без исходного текста. По этой причине, разработчики проекта SANE не смогли включить его в состав официального дистрибутива своего продукта (обязательным условием для этого является наличие открытого исходного кода), но все же разместили ссылку на него на странице «SANE: External Backends (Drivers)»

Поначалу все шло вполне благополучно. Люди скачивали архив, действовали согласно инструкции, и при условии правильных и внимательных манипуляций, сканер поднимался и начинал нормально работать. Но где-то после 2007-го года одна за другой посыпались жалобы на то, что с новыми дистрибутивами Linux этот сканер работать отказывается. Пробовал несколько лет назад поднять его и я. Сначала под Ubuntu 10.04 LTS, потом — под Scientific Linux 6 (клон Red Hat Enterprise Linux 6). В обоих случаях безуспешно. По команде sane-find-scanner сканер обнаруживался, но backend hp3770 не работал: в ответ на команду scanimage -L выдавалось сообщение:

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).

В результате, после некоторого количества часов, потраченных на бесплодные усилия, вопрос со сканером был отложен, что называется, в долгий ящик. До тех пор, пока некоторое время назад я в конечном итоге не получил его в подарок. Соответственно, у меня появилось значительно бОльшее количество времени и вполне ощутимый стимул для возобновления экспериментов.

Что ж, попробуем разобраться, почему сканер отказывался работать.

[ Если не хочется читать много букв, то можно это пропустить ] В соответствии с инструкцией, чтобы поднять сабжевый сканер под Linux’ом, надлежало проделать следующее.

1. Скачать архив 3770.tar.gz по ссылке: http://ftp.cyberbaladeur.fr/3770.tar.gz.
2. Распаковать его, и далее действовать в соответствии с инструкцией в файле README_hp3770.txt :

Фактически, внутри архива 3770.tar.gz находятся 2 архива с именами hp3770.tgz и libsane.tgz

1. Первый из них ( hp3770.tgz ) содержит собственно файл драйвера сканера ( libsane-hp3770.so.1.0.13 ), 2 символическе ссылки на него под именами libsane-hp3770.so и libsane-hp3770.so.1 соответственно, а также файл Libtool-библиотеки libsane-hp3770.la . Все эти файлы надо распаковать в папку /usr/lib/sane , в дополнение к уже имеющимся там аналогичным файлам для поддержки других моделей сканеров (они появляются там в процессе установки SANE). «13» в имени файла libsane-hp3770.so.1.0.13 можно поменять на номер Вашей текущей версии SANE, но в этом случае придется заново создать символические ссылки на него под именами libsane-hp3770.so и libsane-hp3770.so.1 .

2. Второй архив, libsane.tgz , содержит модифицированную библиотеку libsane.so.1.0.13 , 2 символических ссылки на нее ( libsane.so.1 и libsane.so ), и Libtool-библиотеку libsane.la . Файл libsane.so.1.0.13 надо распаковать в папку /usr/lib , причем находившийся там файл libsane.so.1.0.хх , где xx — номер Вашей версии SANE, надо удалить, а libsane.so.1.0.13 переименовать в libsane.so.1.0.хх (например, libsane.so.1.0.21 ). Замена этого файла нужна потому, что исходная библиотека libsane.so собрана без модуля sanei_usb . В результате попытка запуска драйвера libsane-hp3770.so приведет к сообщению об ошибке:

symbol lookup error: /usr/lib/sane/libsane-hp3770.so.1: undefined symbol: sanei_usb_init

Модифицированная библиотека libsane.so , входящая в состав архива, и собранная с добавлением модуля sanei_usb.lo , призвана устранить эту ошибку.

3. Для правильного назначения прав доступа к сканеру, далее надо, в случае Ubuntu, отредактировать файл /etc/udev/rules.d/45-libsane.rules , дописав в него следующие строки:

4. Далее следовало открыть файл /etc/sane.d/dll.conf , и дописать в него строку:

Это необходимо для подключения драйвера libsane-hp3770.so при запуске SANE. Остальные строки, если соответствующие им сканеры в системе не используются, желетельно закомментировать, чтобы облегчить и ускорить поиск и загрузку нужного драйвера.

Эксперименты решено было начать с дистрибутива, о котором имеется подтвержденная информация, что сканер с ним работает. Поэтому первой была установлена Ubuntu 6.06 LTS Dapper Drake (ядро 2.6.15, SANE 1.0.17). После выполнения вышеописанных действий, сканер сразу запустился. Положительные результаты были получены также с Ubuntu 6.10 Edgy Eft (ядро 2.6.17, SANE 1.0.18) и Ubuntu 7.04 Feisty Fawn (ядро 2.6.20, SANE 1.0.18).

Но уже под Ubuntu 8.04 LTS Hardy Heron (ядро 2.6.24, SANE 1.0.19) сканер работать не захотел.

Далее я предположил, что сканер не работает, начиная с какой-то определенной версии ядра или SANE. Для проверки этой версии была снова уствновлена Ubuntu 6.06 LTS Dapper Drake. И далее последовательно обновлялась до следующего релиза, причем версии ядер и SANE при этом дополнительно варьировались в тех пределах, в которых удавалось удовлетворить зависимости и сохранить работоспособность системы.

В результате система была обновлена вплоть до версии Ubuntu 9.04 Jaunty Jackalope (ядро 2.6.28, SANE 1.0.19). При этом сканер продолжал работать. Значит, причина не в ядре, и не в версии SANE.

Дополнительную информацию решено было получить в процессе экспериментов с другим семейством дистрибутивов. Поскольку основным моим рабочим инструментом, в силу специфики нашей организации, является Scientific Linux (клон Red Hat Enterprise Linux), то в качестве объекта для дальнейших исследований был выбран его прототип — Fedora.

Для начала была установлена Fedora 11 Leonidas (ядро 2.6.29, SANE 1.0.19) — как крайний, который скомпилирован еще под архитектуру i586 (дело в том, что экспериментальный компьютер у меня был на базе процессора VIA Eden, который относится к семейству i586, а не i686, и поэтому установить на него последующие релизы без пересборки ядра не получилось бы). Сканер не работает. Что ж — возможно, это слишком «свежий» для данного сканера дистрибутив.

Далее установил Fedora 7 Moonshine (ядро 2.6.21, SANE 1.0.18). Сканер все равно не работает. Попробовал еще ядра 2.6.18 от Fedora Core 6 Zod и 2.6.15 от Fedora Core 5 Bordeaux (последнее пришлось ставить принудительно, игнорируя зависимости при установке, и ругань на ошибку, если мне не изменяет память, запуска HAL при загрузке). Бесполезно, сканер не работает.

С горя собрал из исходников совершенно ископаемый SANE версии аж 1.0.14. При этом, в полном соответствии с напутствием месье Буланже, добавил в libsane модуль sanei_usb. Все равно не работает. То есть, SANE стартует, sane-find-scanner сканер находит, а scanimage -L его в упор не видит!

Миг решающего просветления настал чуть позже, когда на одном из форумов я откопал, что scanimage -L можно запускать не просто так, а в режиме отладки. Вот таким образом:

SANE_DEBUG_DLL=255 scanimage -L

На что незамедлительно последовал ответ:

[sanei_debug] Setting debug level of dll to 255.
[dll] sane_init: SANE dll backend version 1.0.12 from sane-backends 1.0.21
[dll] sane_init/read_dlld: processing /etc/sane.d/dll.d .
[dll] sane_init/read_dlld: done.
[dll] sane_init/read_config: reading dll.conf
[dll] add_backend: adding backend `hp3770′
[dll] sane_get_devices
[dll] load: searching backend `hp3770′ in `/usr/lib/sane’
[dll] load: trying to load `/usr/lib/sane/libsane-hp3770.so.1′
[dll] load: dlopen()ing `/usr/lib/sane/libsane-hp3770.so.1′
[dll] load: dlopen() failed (libstdc++.so.5: cannot open shared object file: No such file or directory)
[dll] sane_get_devices: found 0 devices

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).
[dll] sane_exit: exiting
[dll] sane_exit: finished

Так вот оно что! Оказывается, нашему драйверу для запуска просто не хватает библиотеки libstdc++.so.5 . И libstdc++.so.6 , которая имеется в системе, ей не замена. Файл драйвера скомпилирован с языка C++ компилятором GCC версии еще 3.3. А в связи с переходом на GCC 4.x, Runtime-библиотеки, обеспечивающие совместимость со старыми версиями, в более поздних дистрибутивах устанавливать по умолчанию перестали. Вот и не захотел работать сканер в более новых системах.

В дистрибутивах Fedora, RHEL, CentOS, Scientific Linux и им подобных, недостающая библиотека устанавливается командой:

# yum install compat-libstdc++-33

Для Ubuntu, Debian и им подобных дистрибутивов это будет, предположительно:

sudo apt-get install libstdc++5

За достоверность последнего я не ручаюсь (на практике не проверял), но суть операции именно такова: надо установить пакет, содержащий 32-битную библиотеку libstdc++.so.5 .

Повторяем SANE_DEBUG_DLL=255 scanimage -L , и наблюдаем долгожданное чудо:

SANE_DEBUG_DLL=255 scanimage -L
[sanei_debug] Setting debug level of dll to 255.
[dll] sane_init: SANE dll backend version 1.0.12 from sane-backends 1.0.21
[dll] sane_init/read_dlld: processing /etc/sane.d/dll.d .
[dll] sane_init/read_dlld: done.
[dll] sane_init/read_config: reading dll.conf
[dll] add_backend: adding backend `hp3770′
[dll] sane_get_devices
[dll] load: searching backend `hp3770′ in `/usr/lib/sane’
[dll] load: trying to load `/usr/lib/sane/libsane-hp3770.so.1′
[dll] load: dlopen()ing `/usr/lib/sane/libsane-hp3770.so.1′
[dll] init: initializing backend `hp3770′
[dll] init: backend `hp3770′ is version 1.0.0
[dll] sane_get_devices: found 1 devices
device `hp3770:libusb:001:002′ is a Hewlett-Packard hp3770 flatbed scanner
[dll] sane_exit: exiting
[dll] sane_exit: calling backend `hp3770’s exit function
[dll] sane_exit: finished
[scanjet@scanjet

Итак, каким же образом нам следует устанавливать и запускать злополучный сканер, с учетом всего вышеизложенного? Рассмотрим 3 случая на примере Scientific Linux 6.x (в той же степени это касается и Red Hat Enterprise Linux 6.x, CentOS 6.x, Oracle Linux 6.x и т.п.).

1. 32-битная система.

3. Распаковать вложенный архив hp3770.tgz . Второй архив ( libsane.tgz ) нам не нужен: с библиотекой libsane.so в нашей системе уже все в порядке, и заменять ее не надо.

4. Скопировать файлы libsane-hp3770.so.1.0.13, libsane-hp3770.so.1 и libsane-hp3770.so в папку /usr/lib/sane . Если вас смущает номер версии, то можете, исключительно ради визуального единообразия, переименовать libsane-hp3770.so.1.0.13 в libsane-hp3770.so.1.0.21 . Но в этом случае символические ссылки на него libsane-hp3770.so.1 и libsane-hp3770.so придется создать заново. А можно и вообще ничего не переименовывать, все работает и так.

5. Открыть файл /etc/sane.d/dll.conf . Дописать в него строку:

Остальные строки, если других сканеров в системе нет, желательно закомментировать (поставить в начале строки знак # ).

6. Заходим в папку /etc/udev/rules.d , и создаем в ней файл следующего содержания:

# Hewlett-Packard|Scanjet 3770
SYSFS==»03f0″, SYSFS==»2505″, MODE=»664″,
GROUP=»scanner»

Сохраняем его под именем 70- libsane.rules .

7. Создаем группу scanner:

и добавляем в нее текущего пользователя:

# useradd -G scanner

8. Перезагружаемся и проверяем сканирование.

Возможные неполадки. Возможно, xsane при запуске от обычного пользователя будет сегфолтиться (аварийно завершаться с ошибкой сегментирования). При этом от root’а xsane будет работать нормально. Если это происходит, попробуйте в файле /etc/sane.d/dll.conf раскомментировать еще какой-нибудь драйвер. Например, net или hp3900 . Научного объяснения этому факту я пока что еще не придумал, но на практике помогло.

Примечание. Сканирование с этим драйвером возможно только со стекла. Слайд-модуль с верхним источником света и кнопки на крышке не работают.

2. 64-битная система.

К сожалению, драйвер данного сканера существует в природе только в виде 32-битной версии (бинарный код для архитектуры i386). Тем не менее, имеется (и проверена мною на практике) вполне реальная возможность заставить его работать и на 64-битной машине. Для этого достаточно просто заменить 64-битный SANE 32-битным:

1. Выковыриваем из системы 64-битный SANE:

# yum remove sane-backends

При этом крайне настоятельно рекомендую скопипастить куда-нибудь список удаляемых пакетов, чтобы относительно легко восстановить потери, если случайно удалится что-нибудь лишнее. Например, как-нибудь так:
[ Пример сохранения списка удаляемых пакетов ]

2. 32-битные пакеты берем отсюда:

64-битный пакет xsane-gimp ОБЯЗАТЕЛЬНО УДАЛЯЕМ, вместе с 64-битным sane-backends-libs !

3. После этого процедура установки сканера сводится к описанной выше для 32-битной системы

1. 64-битный GIMP не видит 32-битного плагина xsane-gimp (в меню «Файл»-«Создать»-. отсутствует пункт «XSane: Выбор устройства. «).
Для решения достаточно создать символическую ссылку на 32-битный файл /usr/lib/gimp/2.0/plug-ins/xsane из /usr/lib64/gimp/2.0/plug-ins :

# ln -s /usr/lib/gimp/2.0/plug-ins/xsane /usr/lib64/gimp/2.0/plug-ins/xsane

2. Графическая оболочка YAGF к программе для OCR Cuneiform: сканирование через xsane происходит нормально, файл

/.config/yagf/input.jpg сохраняется, но отсканированное изображение страницы в программу не передается.

Можно удалить целиком 64-битную версию программы YAGF, вместе с Cuneiform и словарями, и установить взамен 32-битные версии всего вышеперечисленного (руководство по установке см. здесь).

Попутно выяснился еще один неприятный нюанс: текущая версия пакета cuneiform-1.1.0-5.el6.nux.i686.rpm в репозитории nux-dextop требует в качестве зависимости при установке наличия ImageMagick — невзирая на то, что он уже установлен в системе. Можно потратить время и силы на выяснение причины, а можно просто воспользоваться предыдущей версией: cuneiform-1.1.0-4.el6.nux.i686.rpm , с которой эта проблема не возникает.

3. Сетевая установка.

Если ковырять подобным образом 64-битную систему жалко, по каким-либо причинам невозможно, или просто лень, или же если нужен доступ к сканеру с нескольких компьютеров, то имеет смысл расшарить наш сканер через сеть. Для этого нам понадобится компьютер, который можно использовать в качестве скан-сервера. Имеющие в последнее время хождение варианты с использованием в качестве скан-сервера роутера под управлением Linux в нашем случае неприемлемы, т.к. лично мне пока что неизвестны роутеры на базе архитектуры i386, а именно это является непременным условием успешной установки и работоспособности драйвера.

1. Устанавливаем на компьютер, который будет использоваться в качестве скан-сервера, практически любой дистрибутив Linux под архитектуру i386, i586, или i686. С целью экономии ресурсов можно без графической оболочки («иксов»). Причем этот дистрибутив совсем не обязательно должен совпадать с тем, который будет стоять на клиетских компьютерах.

Сам компьютер, выбранный в качестве скан-сервера, тоже может быть достаточно скромным по своим возможностям. Автор использовал для своих экспериментов компьютер на плате VIA EPIA ME6000 форм-фактора mini-ITX, с процессором VIA Eden 600 МГц — в силу ее компактности и экономичности. В дальнейшем эту плату можно будет поместить в компактный корпус и расположить в непосредственной близости от сканера — например, как подставку под него.

2. Устанавливаем на него xsane и драйвер нашего сканера. Для дистрибутивов Scientific Linux (Red Hat Enterprise Linux 6.x, CentOS 6.x, Oracle Linux 6.x и т.п.), а также Fedora см. раздел «32-битная система».

3. После того, как сканер успешно запустился локально на скан-сервере, устанавливаем сервер xinetd , обеспечивающий работу демона saned :

# yum install xinetd

4. Создаем файл /etc/xinetd.d/sane-port

service sane-port
<
disable = no
port = 6566
socket_type = stream
server = /usr/sbin/saned
protocol = tcp
user = root
group = root
wait = no
>

5. Открываем файл /etc/sane.d/saned.conf и вписываем в него диапазон адресов локальной сети, из которого возможен доступ к сканеру, например:

6. Перезапускаем службу xinetd :

# service xinetd restart

7. На этом настройка серверной части закончена.

8. На каждом из клиентских компьютеров в файле /etc/sane.d/net.conf указать IP адрес компьютера с подключенным сканером, например:

9. В файле /etc/sane.d/dll.conf , если не прописано, прописать или раскомментировать строчку:

10. Проверить доступность сканера можно выполнив команду (от root’a):

11. Чтобы дать доступ к сканеру пользователю, его необходимо внести в группу sсanner . Для этого создаем группу scanner :

и добавляем в нее текущего пользователя:

# useradd -G scanner

12. Чтобы изменения вступили в силу, надо пользователю выйти и войти в систему. После этого проверить доступ к сканеру, выполнив теперь уже от имени простого пользователя, в командной строке:

Нюансы, баги и странности в работе через сеть.

При сканировании через сеть с сабжевым сканером наблюдается следующее явление. Сканирование с разрешением по 300 dpi включительно проходит без каких-либо особенностей. А вот уже при 600 dpi процесс сканирования наглухо зависает, если длина строки по горизонтали превышает примерно половину ширины листа. Если быть точным, то до 2729 точек включительно по X сканируются нормально, а 2730 и больше — не сканируются вообще. В этой ситуации надо либо уменьшать ширину сканируемой поверхности, либо уменьшать разрешение, либо уменьшать глубину цвета (например, вместо 24-битного цвета использовать Greyscale).

Итак, в результате проведенных экспериментов получена вполне достаточная функциональность сабжевого сканера под управлением ОС Linux, причем как для 32-битных, так и для 64-битных систем. Функциональность сканера при работе через сеть имеет ограничение по разрешающей способности до 300 dpi для цветных изображений и до 600 dpi для монохромных, обусловленную аномалией в процессе передачи данных, природа которой пока не установлена. Если кто-то поможет решить этот ребус ко всеобщей пользе, я буду очень признателен.

P.S. Для линейки сканеров HP на основе чипа RTS8822 существует также драйвер (backend) с открытым исходным кодом. Он входит в стандартный состав дистрибутива SANE, и носит название sane-hp3900. Данный backend обеспечивает поддержку моделей HP ScanJet 3800, HP ScanJet 3970, HP ScanJet 4070 Photosmart, HP ScanJet 4370, HP ScanJet G3010, а также UMAX Astra 4900/4950. Но, несмотря на очевидное сходство аппаратной части, HP ScanJet 3770 в число поддерживаемых этим драйвером моделей не входит. В силу своей открытости, этот backend доступен для любой архитектуры, и теоретически может быть доработан с целью обеспечения поддержки также и модели HP ScanJet 3770. По крайней мере, если данный драйвер «обмануть», дописав в файл /etc/sane.d/hp3900.conf строки:

# HP Scanjet 3770
usb 0x03f0 0x2505

что соответствует сабжевому сканеру, и раскомментировав в файле /etc/sane.d/dll.conf строку:

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

Источник

Читайте также:  Itunes для windows softportal
Оцените статью