HP LaserJet1020 и Debian Squeezy

Воистину рабочая инструкция.

Задача:
— Загрузить модуль сразу после включения принтера
— Выгрузить модуль сразу после заливки filmware

Для этого делаем следующее:

1. Отключаем принтер
2. Установим необходимые пакеты

apt-get install cups gsfonts foomatic-filters foo2zjs

3. Скачаем требуемое filmware для принтера сконвертируем и разместим в соответствующих папках:

wget http://foo2zjs.rkkda.com/firmware/sihp1020.tar.gz
tar xvzf sihp1020.tar.gz
arm2hpdl sihp1020.img > sihp1020.dl
cp sihp1020.dl /usr/share/foo2zjs/firmware
cp sihp1020.img /usr/share/foo2zjs/firmware
cp sihp1020.dl /lib/firmware/hp
cp sihp1020.img /lib/firmware/hp


4. Создадим правило для диспетчера устройств udev для загрузки модуля при включении принтера.

vi /etc/udev/rules.d/11-hplj1020.rules

Указываем Vid и Pid своего принтера! Пример приведён для 1020.

#Own udev rule for HP Laserjet 1020
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="2b17", RUN+="modprobe usblp"

5. Перезагружаем диспетчер устройств udev

/etc/init.d/udev restart

6. Редактируем сценарий foo2zjs, выполняющийся при обнаружении принтера (отключаем модуль ядра usbpl сразу после загрузки firmware). Имя файла зависит от модели вашего принтера!(для 1000/1005/1018/1020 — /usr/sbin/hplj1020 )

vi /usr/sbin/hplj1020

ищем и корректируем процесс загрузки firmware

#
# Procedure to load a single device with firmware
#
load1() {
_dev="$1"
fw="$FWDIR/sihp$FWMODEL.dl"
if [ ! -f "$fw" ]; then
log "Missing HP LaserJet $MODEL firmware file $fw"
log "...read foo2zjs installation instructions and run ./getweb $MODEL"
return 1
fi

log "loading HP LaserJet $MODEL firmware $fw to $_dev ..."
# There is a timeout problem with udev and FC4, so spin it off.
(
if cat $fw > $_dev; then
log "... download successful."
sleep 15
rmmod usblp # Отключаем usblp
log " ... kernel module usblp disable now... "
else
log "... download failed."
fi
) &
return 0
}
#
# OK, now download firmware to any printers that need it
#
if [ "$DEV" != "" ]; then
#
# force downloading to a specific device
#
load1 "$DEV"
elif [ -x $PRINTERID ]; then
#
# Sniff around for printers that need a firmware download
#
usblps=`find /dev/usb -name 'lp*'`" "`find /dev -name 'usblp*'`
for dev in $usblps; do
status=`$PRINTERID $dev 2>/dev/null | grep -y "hp LaserJet $MODEL"`
if [ "$status" != "" ]; then
# This is a LaserJet 100x
chmod 0666 $dev
status=`$PRINTERID $dev | grep 'FWVER'`
if [ "$status" = "" ]; then
# Firmware is not yet loaded
load1 "$dev"
else
log "HP LaserJet $MODEL firmware already loaded into $dev"
sleep 15
rmmod usblp # Отключаем usblp
log " ... kernel module usblp disable now... "
fi
fi
done
else
log "HP LaserJet $MODEL firmware was not downloaded..."
log "...couldn't find $PRINTERID and DEV is not set"
fi


изменение сводится к добавлению строк

sleep 15
rmmod usblp
log " ... kernel module usblp disable now... "


7. Включаем принтер

Запись опубликована в рубрике How to, linux с метками , . Добавьте в закладки постоянную ссылку.