MyTetra Share
Делитесь знаниями!
Как заставить работать принтер HP LaserJet 1020 под Linux Debian 9 (правильная установка драйвера)
04.03.2018
23:29
Автор: xintrea
Текстовые метки: linux, hp, драйвер, принтер
Раздел: Компьютер - Linux - Принтер

Похоже, что за двенадцать лет использования принтера HP LaserJet 1020 я наконец-то нащупал способ заставить его нормально работать в Linux.


Здесь записываю последовательность действий.



Как заставить работать принтер HP LaserJet 1020 под Linux Debian 9


Итак, главное что нужно знать - по неизвестным причинам сборки драйверов из стандартного репозитария и сборки hplip самой компанией HP неработоспособны. И за долгие годы ничего толком майнтейнерами сделано небыло: как не работал и отваливался принтер, так и поныне. Поэтому нужно расчитывать только на сомого себя и собирать драйвера самостоятельно, и самостоятельно их устанавливать.


Принтеры серии LaserJet 1xxx требуют заливки в себя прошивки при каждом включении. Видимо, так производитель удешевил стоимость, пожадничав на микросхему флешки чуть большего размера (обычное дело в гавноэнтерпрайзе). Таким образом компьютер с Linux должен вначале залить прошивку в принтер в момент, когда принтер обнаружен системой, а уже потом печатать.



Итак, что нужно сделать.


Заходим на сайт http://foo2zjs.rkkda.com/ и ознакамливаемся с информацией на нем.


Качаем следующий архив в отдельную директорию:


wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz


Распаковываем архив:


tar zxf foo2zjs.tar.gz


Заходим в подкаталог foo2zjs и собираем под обычным пользователем:


make


В случае необходимости (появления ошибок) доустанавливаем нужные пакеты, это особое искуство, и действия в каждом конкретном случае нетривиальны. По выхлопу ошибок надо догадаться, какого dev-пакета или какой библиотеки не хватает, доустановить их, и снова запустить команду make, и так несколько раз.


После сборки запускаем команду в каталоге сборки:


./getweb 1020


Этой командой будет загружена прошивка, которая будет заливаться на принтер при каждом его подключении к компьютеру с Linux. На официальном сайте есть прошивки и для других схожих моделей USB-принтеров: HP LaserJet 1000, 1005, 1018, 1020, 1025.


Внимание! Команды ниже выполняются под рутом. Так же надо проверить, чтобы не были запущены synaptic или aptitude, которые блокируют пакетную базу данных.


Теперь можно установить пакет. Команда checkinstall -D, которую обычно запускают вместо make install, чтобы не просто распихать файлы по каталогам, а сделать deb-пакет, и установить его, традиционно обосрется и скажет что не может создать файл/каталог. Гуру в таких случаях рекомендуют сначала таки сделать make install, а потом запустить checkinstall -D. Именно так и нужно поступить. Но произойдет следующее:


Команда make install отработает нормально. А программа checkinstall -D заткнется на этапе установки deb-пакета. В логе будет ошибка:


Чтение базы данных … на данный момент установлено 259268 файлов и каталогов.)

Подготовка к распаковке …/foo2zjs_20180304-1_amd64.deb …

Распаковывается foo2zjs (20180304-1) …

dpkg: ошибка при обработке архива /home/xi/work/develop/cpp/foo2zjs/foo2zjs/foo2zjs_20180304-1_amd64.deb (--install):

попытка перезаписать «/usr/bin/arm2hpdl», который уже имеется в пакете printer-driver-foo2zjs 20160902dfsg0-2+b1

dpkg-deb: ошибка: подпроцесс вставка уничтожен по сигналу (Обрыв канала)

При обработке следующих пакетов произошли ошибки:

/home/xi/work/develop/cpp/foo2zjs/foo2zjs/foo2zjs_20180304-1_amd64.deb


Да, здесь получается конфликт по файлам с пакетом printer-driver-foo2zjs версии 20160902dfsg0-2+b1. Причем дублирующихся файлов будет много (затыкается на самом первом), и эти файлы явно разные между тем что находятся в файловой системе, и теми, что находятся внутри самосборного DEB-пакета. Можно попробовать удалить пакет printer-driver-foo2zjs, но у него есть зависимости. Поэтому самосборный DEB-пакет придется установить принудительно руками.


В каталоге сборке надо найти файл:


foo2zjs_20180304-1_amd64.deb


Это и есть самосборный пакет. Принудительно с перезаписью конфликтующих файлов, его можно установить такой командой:


dpkg --force-all -i foo2zjs_20180304-1_amd64.deb


Далее надо установить правила UDEV, чтобы прошивка заливалась в принтер при его подключении к Linux-компьютеру. Надо дать команду:


make install-hotplug


В ответ будет выдана ошибка и рекомендации как ошибку исправить:


# Hotplug Installation Dependencies...

#

     ***

     *** Error: system-config-printer-udev is installed!

     ***

     *** Remove it with: (Fedora)

     ***       # yum remove system-config-printer-udev

     *** OR

     ***       # rpm -e --nodeps system-config-printer-udev

     *** OR (Ubuntu, Debian)

     ***       $ sudo apt-get remove system-config-printer-udev

     *** OR (SUSE)

     ***       # zypper rm udev-configure-printer

     *** OR (generic linux)

     ***       # rm -f /lib/udev/rules.d/*-printers.rules

     ***

Makefile:978: ошибка выполнения рецепта для цели «install-hotplug-test»

make: *** [install-hotplug-test] Ошибка 1


Придется воспользоваться рекомендацией. Неизвестно, что случится с другими принтерами, но предплагается, что в быту у пользователя подключается к компьютеру один принтер. Надо выполнить команду:


apt-get remove system-config-printer-udev


После чего снова дать команду:


make install-hotplug


Установка завершится такими сообщениями:


install -c -m 755 hplj1000 /etc/hotplug/usb/

ln -sf /etc/hotplug/usb/hplj1000 /etc/hotplug/usb/hplj1005

ln -sf /etc/hotplug/usb/hplj1000 /etc/hotplug/usb/hplj1018

ln -sf /etc/hotplug/usb/hplj1000 /etc/hotplug/usb/hplj1020

ln -sf /etc/hotplug/usb/hplj1000 /etc/hotplug/usb/hpljP1005

ln -sf /etc/hotplug/usb/hplj1000 /etc/hotplug/usb/hpljP1006

ln -sf /etc/hotplug/usb/hplj1000 /etc/hotplug/usb/hpljP1007

ln -sf /etc/hotplug/usb/hplj1000 /etc/hotplug/usb/hpljP1008

ln -sf /etc/hotplug/usb/hplj1000 /etc/hotplug/usb/hpljP1505

/etc/hotplug/usb/hplj1000 install-usermap

/etc/hotplug/usb/hplj1005 install-usermap

/etc/hotplug/usb/hplj1018 install-usermap

/etc/hotplug/usb/hplj1020 install-usermap

/etc/hotplug/usb/hpljP1005 install-usermap

/etc/hotplug/usb/hpljP1006 install-usermap

/etc/hotplug/usb/hpljP1007 install-usermap

/etc/hotplug/usb/hpljP1008 install-usermap

/etc/hotplug/usb/hpljP1505 install-usermap

# modprobe usblp

/etc/hotplug/usb/hplj1000 install-usblp


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


Можно запустить какую-нибудь программу типа "Настройки принтера", и распечатать через нее пробную страницу.



Принтер заработал. Можно ли расчитывать на то, что дальше он продолжит работать?


Конечно, нет. При установке обновлений могут снова накатиться нерабочие файлы, и принтер снова перестанет работать. Выглядеть это будет так: в какой-то прекрасный момент принтер будет виден в системе, у него будет работать очередь, но отправляться в него ничего не будет. При включении принтера, он будет гудеть только один раз. То есть, прошивка в него перестанет заливаться.


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


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


dpkg --force-all -i foo2zjs_20180304-1_amd64.deb
apt-get remove system-config-printer-udev
make install-hotplug


После чего принтер снова заработает.



 
MyTetra Share v.0.52
Яндекс индекс цитирования