Принтеры Hp Laserjet 10xx (1000 1005 1018 1020) в Linux (почему эти принтеры не работают в Linux и как это исправить)

Всё о принтерах, сканерах и многофункциональных устройствах. Подключение, настройка, проблемы.

Модератор: Модераторы разделов

Закрыто
Аватара пользователя
Juliette
Сообщения: 5058
Статус: ROSA Lab
ОС: Ubuntu LTS, Mandriva 2011

Принтеры Hp Laserjet 10xx (1000 1005 1018 1020) в Linux

Сообщение Juliette »

Уважаемый giner продолжает нас радовать своими полезностями. На этот раз речь про принтеры.

Преамбула
Принтеры HP LaserJet 1000, 1005, 1018 и 1020 сразу после включения питания не имеют в себе прошивку (firmware, arm binary). Операционная система при обнаружении принтера должна "залить" в него необходимую прошивку и после этого работать как с обычным принтером. (Именно этим объясняется тот факт, что если не выключая принтер перезагрузиться из известной нам операционной системы от MS в Linux, принтер будет работать).

Как происходит "заливка" прошивки?
В современном Linux события о появлении новых устройств обрабатывает специальная служба udev. Правила обработки событий, т.е. что будет происходить при обнаружении новой железки, находятся в /etc/udev/rules.d/. В Ubuntu правила для принтеров обсуждаемых в данной статье находятся в файле /etc/udev/rules.d/85-hplj10xx.rules (пример для Ubuntu Gutsy).

Если правила в udev есть, почему принтер не работает?
Дело в том, что правила есть, а самих прошивок нет. Причины этого не понятны, но и не особо интересны. Мы можем скачать их сами и положить туда, где udev, в соответствии с правилами, их найдёт.

Как скачать прошивки?
В Ubuntu по умолчанию установлен пакет foo2zjs, которые содержит необходимые нам утилиты:

* getweb - утилита которая "сливает" прошивки с foo2zjs.rkkda.com (вызывается следующим образом: getweb 1020 - скачает прошивку для HP LaserJet 1020)
* arm2hpdl - утилита, которая добавляет необходимые заголовки для принтера HP к бинарному файлу arm (смотрите man arm2hpdl), после добавления заголовков прошивку можно заливать в принтер (этим и занимается udev)

Для проверки можно залить прошивку вручную следующим образом:

Код: Выделить всё

cat sihp1020.dl > /dev/usb/lp0
, где /dev/usb/lp0 нода устройства принтера. Нода может быть и другой, например /dev/usblp0, чтобы узнать наверняка, можно посмотреть

Код: Выделить всё

dmesg|tail -20
после включения принтера.

Куда их положить?
Положить нужно в /usr/share/foo2zjs/firmware/

А теперь готовое решение в виде скрипта
Проверено в Ubuntu 7.04 и 7.10

Код: Выделить всё

#!/bin/bash
printers="1000 1005 1018 1020"
cd /tmp
for prn in $printers; do
    img="sihp${prn}.img"
    dl="sihp${prn}.dl"
    getweb $prn
    if [ -f $img ]; then
        arm2hpdl $img > $dl
        sudo cp $dl /usr/share/foo2zjs/firmware/$dl
        rm $img $dl
    fi;
done
Чем данное решение лучше других, которые можно найти в интернет?
Другие решения помимо основной задачи, а именно, установки прошивок, выполняют другие лишние действия, например, заново устанавливают foo2zjs (который уже есть в системе), но не из deb-пакета, а из исходных кодов. Это не даёт преимуществ, но может создать проблемы при обновлении системы.



Оригинальная ссылочка:
http://www.helplinux.ru/hp-laserjet-10xx
Последний раз редактировалось Bizdelnick 25.03.2019 19:16, всего редактировалось 2 раза.
Причина: заменил нерабочую ссылку ссылкой на архив
Спасибо сказали:
Закрыто