Принтер HP LaserJet 1000 и CUPS 1.4 (можно ли загрузить firmware без usblp?)
Модератор: Модераторы разделов
-
- Сообщения: 152
- Статус: Пингвинофил
- ОС: ArchLinux, Calculate, Gentoo
Принтер HP LaserJet 1000 и CUPS 1.4
Собственно, проблема в том, что CUPS 1.4 требует отсутствия модуля usblp, а загрузка firmware скриптом из foo2zjs использует именно этот модуль, как написано вот здесь. В этой же ветке описан "костыль" - загружать usblp и выгружать его сразу как загрузится firmware. К сожалению, остальные сотрудники, кое-как смирившись с отсутствием Винды на компе, до таких страшных действий не доросли. До последнего момента спасался даунгрейдом до CUPS 1.3, но сейчас потянулась куча зависимостей. Если кто-нибудь представляет, как оформить загрузку этого firmware доступно для простого смертного, помогите пожалуйста! Вариант грузить usblp, а потом выгружать через rc.local не прошёл, очевидно, по времени не совпадает.
-
- Сообщения: 1923
Re: Принтер HP LaserJet 1000 и CUPS 1.4
Danhuu писал(а): ↑14.01.2010 18:31Собственно, проблема в том, что CUPS 1.4 требует отсутствия модуля usblp, а загрузка firmware скриптом из foo2zjs использует именно этот модуль, как написано вот здесь. В этой же ветке описан "костыль" - загружать usblp и выгружать его сразу как загрузится firmware. К сожалению, остальные сотрудники, кое-как смирившись с отсутствием Винды на компе, до таких страшных действий не доросли. До последнего момента спасался даунгрейдом до CUPS 1.3, но сейчас потянулась куча зависимостей. Если кто-нибудь представляет, как оформить загрузку этого firmware доступно для простого смертного, помогите пожалуйста! Вариант грузить usblp, а потом выгружать через rc.local не прошёл, очевидно, по времени не совпадает.
Легко . cp <firmware_file_name> > <printerport>
Другое дело, что труднее отследить статус этой заливки, перезаливать, когда это необходимо автоматически, статусы принтера и его порта...
-
- Сообщения: 152
- Статус: Пингвинофил
- ОС: ArchLinux, Calculate, Gentoo
Re: Принтер HP LaserJet 1000 и CUPS 1.4
А можно поподробнее насчёт "cp <firmware_file_name> > <printerport>":
1) ">" это потому что на порт?
2) Что есть <printerport>? /dev/usb/... ?
-
- Сообщения: 339
- ОС: Debian GNU/Linux
-
- Сообщения: 1923
Re: Принтер HP LaserJet 1000 и CUPS 1.4
На предмет metacharacter рекомендую почитать man bash. Ну, судя по зарактеру вопроса рекомендую почитать как делать основные операция средствами CLI (проще говоря консоли)
2) Что есть <printerport>? /dev/usb/... ?
вот еще бы знать, ку да вы воткнули свой принтер. Зачем задавать вопрос, ответ на который знать можете только вы?
-
- Сообщения: 152
- Статус: Пингвинофил
- ОС: ArchLinux, Calculate, Gentoo
Re: Принтер HP LaserJet 1000 и CUPS 1.4
BIgAndy писал(а): ↑15.01.2010 14:29
На предмет metacharacter рекомендую почитать man bash. Ну, судя по зарактеру вопроса рекомендую почитать как делать основные операция средствами CLI (проще говоря консоли)
2) Что есть <printerport>? /dev/usb/... ?
вот еще бы знать, ку да вы воткнули свой принтер. Зачем задавать вопрос, ответ на который знать можете только вы?
Ну вот, типа наехали

Уважаемый BIgAndy, я знаю, что ">" означает перенаправление stout, мне непонятно его значение в контексте cp. Возможно, это просто пробел моих знаний.
Вообще, foo2zjs создаёт такое правило udev:
Код: Выделить всё
[alex@ipee200 ~]$ cat /lib/udev/rules.d/11-hplj10xx.rules
ACTION=="add", KERNEL=="lp*", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", \
ATTRS{idProduct}=="0517", RUN+="/sbin/foo2zjs-loadfw 1000 $tempnode"
ACTION=="add", KERNEL=="lp*", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", \
ATTRS{idProduct}=="1317", RUN+="/sbin/foo2zjs-loadfw 1005 $tempnode"
ACTION=="add", KERNEL=="lp*", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", \
ATTRS{idProduct}=="4117", RUN+="/sbin/foo2zjs-loadfw 1018 $tempnode"
ACTION=="add", KERNEL=="lp*", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", \
ATTRS{idProduct}=="2b17", RUN+="/sbin/foo2zjs-loadfw 1020 $tempnode"
Вопрос, откуда берётся $tempnode?
Смотрим, шо за foo2zjs-loadfw:
Код: Выделить всё
[alex@ipee200 ~]$ cat /sbin/foo2zjs-loadfw
#!/bin/sh
# foo2zjs-loadfw:
#
# Hotplug script for HP1000/1005/1020 USB laser printers. The model number
# that this script deals with is determined from the udev env.
#
# Used to download firmware automatically into the printer when it
# is powered up or plugged into the USB port.
#
# The inspiration fo this script is from:
# Oscar Santacreu. Alicante-Spain (2002)
# Mike Morgan (2004)
# Modified by Stefan Schweizer (2005) to work as a udev-RUN-script
#
# Directory to find downloadable HP firmware files sihpMMMM.dl
#
FWDIR=/lib/firmware
#
# Program used to determine USB id information
#
USBID=/bin/usb_printerid
#
# Timeout to load firmware
#
TIMEOUT=6
#
# Figure out how to log our messages
#
if [ -t 1 ]; then
# Running from a tty...
log() {
echo "$0: $@"
}
elif [ -x /usr/bin/logger ]; then
# Have logger...
log() {
logger -t "$0" -- "$@"
}
else
# No logger...
log() {
echo "$0: $@" >> /var/log/messages
}
fi
#
# Figure out the model number from the name of this script
#
case "$1" in
1000)
MODEL=1000
MODELNAME="hp LaserJet $MODEL"
;;
1005)
MODEL=1005
MODELNAME="hp LaserJet $MODEL"
;;
1018)
MODEL=1018
MODELNAME="HP LaserJet $MODEL"
;;
1020)
MODEL=1020
MODELNAME="HP LaserJet $MODEL"
;;
*)
log "Only HP LaserJet 1000, 1005, 1018 and 1020 are supported"
log "You need to supply one of these on the cmdline: $0 10**"
exit
;;
esac
if [ -n "$2" ]; then
DEVNAME=$2
elif [ -n "$DEVNAME" ]; then
log 'using $DEVNAME'
else
log "You need to either have $DEVNAME set in the environment or supply it on the cmdline, like:"
log "$0 10** /dev/usb/lp0"
exit 1
fi
#
# Procedure to load a single device with firmware
#
load1() {
fw="$FWDIR/sihp$MODEL.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 $DEVNAME ..."
if cat $fw > $DEVNAME; then
sleep $TIMEOUT
log "... download successful."
else
log "... download failed."
fi
return 0
}
#
# OK, now download firmware to any printers that need it
#
if [ -x $USBID ]; then
if $USBID $DEVNAME | grep "$MODELNAME" 2> /dev/null; then
# This is a LaserJet 100x
if $USBID $DEVNAME | grep 'FWVER' 2> /dev/null; then
log "HP LaserJet $MODEL firmware already loaded into $DEVNAME"
else
# Firmware is not yet loaded
load1 "$DEVNAME"
fi
else
log "No supported printer found."
fi
else
log "HP LaserJet $MODEL firmware was not downloaded..."
log "...couldn't find $USBID"
fi
Здесь фигня в том, как я понял, что $2=/dev/usb/lp0, (из логов), а без usblp принтер садится на /dev/bus/usb/001/xxx, причём ххх меняется каждый раз при включении принтера (было 003, потом 010, потом 012...). Кстати, в этом скрипте для загрузки используется "cat <firmware> > <printerport>" и тогда ">" вполне логично.
PS: попробовал вручную
Код: Выделить всё
[alex@ipee200 ~]$ cat /lib/firmware/sihp1000.dl > /dev/bus/usb/001/012
cat: ошибка записи: Недопустимый аргумент
[alex@ipee200 ~]$ cp /lib/firmware/sihp1000.dl /dev/bus/usb/001/012
cp: запись «/dev/bus/usb/001/012»: Недопустимый аргумент
И на всякий случай, по Вашей рекомендации:
Код: Выделить всё
[alex@ipee200 ~]$ cp /lib/firmware/sihp1000.dl > /dev/bus/usb/001/012
cp: после «/lib/firmware/sihp1000.dl» пропущен операнд, задающий целевой файл
Попробуйте `cp --help' для получения более подробного описания.
Сработало только modprobe/rmmod usblp

А вы говорите "учи матчасть". Если ваших знаний хватает на то, чтобы понять, как с этим бороться (и можно ли вообще), то посоветуйте, пожалуйста! Мне пока пришло в голову только разрешить запуск usblp, а в /sbin/foo2zjs-loadfw добавить rmmod usblp после успешной загрузки прошивки.
-
- Сообщения: 152
- Статус: Пингвинофил
- ОС: ArchLinux, Calculate, Gentoo
Re: Принтер HP LaserJet 1000 и CUPS 1.4
Вот это вот работает (кусок /sbin/foo2zjs-loadfw):
# Procedure to load a single device with firmware
#
load1() {
fw="$FWDIR/sihp$MODEL.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 $DEVNAME ..."
if cat $fw > $DEVNAME; then
sleep $TIMEOUT
log "... download successful."
/sbin/rmmod usblp
else
log "... download failed."
fi
return 0
}
При старте системы модуль usblp грузится (мне он сам по себе не иешает), опосля загрузки принтерного firmware (напр., когда принтер включил), он выгружается, купс нормально работает, а принтер уже с мозгами. Извращение, конечно, но лучше никто не придумал. Авось со временем автор foo2zjs откроет для себя CUPS 1.4, и родит что-то удобоваримое.
# Procedure to load a single device with firmware
#
load1() {
fw="$FWDIR/sihp$MODEL.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 $DEVNAME ..."
if cat $fw > $DEVNAME; then
sleep $TIMEOUT
log "... download successful."
/sbin/rmmod usblp
else
log "... download failed."
fi
return 0
}
При старте системы модуль usblp грузится (мне он сам по себе не иешает), опосля загрузки принтерного firmware (напр., когда принтер включил), он выгружается, купс нормально работает, а принтер уже с мозгами. Извращение, конечно, но лучше никто не придумал. Авось со временем автор foo2zjs откроет для себя CUPS 1.4, и родит что-то удобоваримое.
-
- Сообщения: 729
- Статус: Самовлюблённый сноб
- ОС: archlinux i686-current
Re: Принтер HP LaserJet 1000 и CUPS 1.4
Danhuu:
автор уже открыл для себя cups 1.4, но у него всё работает и он на этом настаивает. так что я не думаю, что что-то изменится в ближайшее время. ещё нашел такую ссылку: http://yxyc.livejournal.com/10380.html
автор уже открыл для себя cups 1.4, но у него всё работает и он на этом настаивает. так что я не думаю, что что-то изменится в ближайшее время. ещё нашел такую ссылку: http://yxyc.livejournal.com/10380.html