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

Документация связанная с установкой, настройкой и работой пользовательского ПО
Ответить
Аватара пользователя
Raven
Бородатый сис
Бородатый сис
Сообщения: 2794
Зарегистрирован: 03 мар 2010, 15:12
ОС: RHEL 8
Откуда: Из серверной

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

Сообщение Raven » 06 сен 2010, 19:16

Принтеры 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).

Если правила в 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/
А теперь готовое решение в виде скрипта

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

#!/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
Я не злопамятный, я просто часто ковыряю логи
wass
Красноглазик
Красноглазик
Сообщения: 633
Зарегистрирован: 26 мар 2010, 11:43
ОС: MSDOS
Контактная информация:

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

Сообщение wass » 07 сен 2010, 14:43

ого какой бубен на такую безделицу как принтер %)
OS: Gentoo Linux 3.6.6, KDE 4.9.3/Fluxbox
Аватара пользователя
Infernal Flame
Злой Модер
Сообщения: 1796
Зарегистрирован: 03 мар 2010, 11:25
ОС: Centos 7
Контактная информация:

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

Сообщение Infernal Flame » 07 сен 2010, 14:47

а все от того что принтер - кака виндозная...

з.ы. кто знает как подобных зверей из самбовых шар прикручивать?
Изображение
Изображение
Work: Centos 7 х 'all Servers'
Ответить

Вернуться в «Документация *nix»