Заметочки
Внимание: в этом блоге могут описываться события, явления и факты при помощи ненормативной лексики.
Убедитесь, что Вы готовы к этому.
понедельник, 15 ноября 2010 г.
Решение проблемы с /usr/lib/cups/backend/hp failed
Имеется у меня МФУ Hewlett-Packard LaserJet M1005 MFP. Работал исправно со своими hplip-дровами в archlinux. Но, случилась беда — неожиданно отказался печатать. В веб-интерфейсе CUPS меня ждала надпись, что принтер приостановлен и задание в очереди со статусом «/usr/lib/cups/backend/hp failed». Поиски решения, загрузки-перезагрузки, проверки, переустановки hplip, другие драйверы ничего не дали. Обратился на линуксфорум и поискал аналогичные проблемы на официальном форуме archlinux — ничего мне подходящего. Поставил рядом «стабильный» дебиан — и там то же самое. Поставил ubuntu 9.10 — всё работает. Долго потрошил интернет — ничего путного не нашёл.
Не помню где, но видел мысль в очень давних мэйлинг-листах англоязычных, что, возможно, сей баг связан с разрешениями / правилами udev. Я — человек от заумных слов далёкий. Решил попробовать дать права «принтеру». А где у нас принтер? В usb!
Недолго думая, в консоли:
lsusb
получаю среди прочего строчку:
отлично, вот он где. теперь нужно дать права на этот адресок (от рута пишем):
chmod 777 /dev/bus/usb/001/002
захожу в веб-интерфейс капса, перевожу принтер из состояния «приостановлен» в рабочее посредством пункта «возобновить печать». перезапускаю задание.
Ура, печатается! Дело за малым — настроить исполнение этой команды при загрузке (не писать же каждый раз перед печатью, если перезагружалась система)
Вписываю её в /etc/rc.local и сохраняю изменённый файл.
Всё, проблема решена 🙂
Надеюсь, кому-нибудь это поможет, т.к. сам в своё время прибил много времени на поиск и решение оной — с арча уходить не хотелось, а без рабочей печати не совсем удобно. Держать систему рядом или в виртуалке только для печати — совсем не хотелось.
Остановка печати на принтер
Загляните в настройки принтеров и посмотрите, в каком состоянии находится принтер.
Дорогие ученые. У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит
система > админ. > печать Там? Если там, то он там имеется. Доступ разрешен, общий доступ. А вот печатать не желает
Что у него в графе «статус»?
Если HP, то в hp-toolbox нажми «Start Printer», он скажет чего не хватает для работы.
hp-toolbox а это где не подскажите, а то я не в курсе)
Кстати, там у меня еще и PDF какой-то. Может его удалить?
PDF — виртуальный принтер, создающий PDF’ы и складывающий их в ~/PDF/. Можете удалить, если хотите.
А вот еще такую надпись вижу «HP-LaserJet-Professional-P1566 (в ожидании, принимает задания, нет совместного доступа)»
Нажмите «возобновить печать».
«возобновить печать» чет не вижу. «повторить печать» не то?
Должен быть в составе пакета hplip, где драйверы к принтерам HP. Там на вкладке «Printer Control».
Пока еще только разбираюсь с Linux поэтому не все пункты знаю, где находятся. Гляну позднее если найду. Спасибо)
CUPS пишет «Filter failed»
Надо заглянуть в /var/log/cups/error_log и посмотреть подробности ошибок.
да там немного непонятно, что он хочет то вообще.
ну вот он запускает:
D [25/May/2022:07:39:18 +0300] [Job 8] Started filter /usr/lib/cups/filter/bannertopdf (PID 260205) D [25/May/2022:07:39:18 +0300] [Job 8] Started filter /usr/lib/cups/filter/pdftopdf (PID 260206) D [25/May/2022:07:39:18 +0300] [Job 8] Started filter /usr/lib/cups/filter/brother_lpdwrapper_HL1210W (PID 260207) D [25/May/2022:07:39:18 +0300] [Job 8] Started backend /usr/lib/cups/backend/dnssd (PID 260208)
D [25/May/2022:07:39:18 +0300] [Job 8] cp: -r not specified; omitting directory \'/opt/brother/Printers/HL1210W//inf/brHL1210Wrc\' D [25/May/2022:07:39:18 +0300] [Job 8] rm: cannot remove \'/tmp/brHL1210Wrc_260207\': No such file or directory D [25/May/2022:07:39:18 +0300] [Job 8] PID 260207 (/usr/lib/cups/filter/brother_lpdwrapper_HL1210W) stopped with status 1. D [25/May/2022:07:39:18 +0300] [Job 8] Hint: Try setting the LogLevel to "debug" to find out more.
brother_lpdwrapper_HL1210W — чё с ним делать?
tip78 ( 25.05.22 08:43:06 MSK )
Последнее исправление: tip78 25.05.22 09:01:17 MSK (всего исправлений: 3)
LogLevel debug в /etc/cups/cupsd.conf
Хотя он, судя по этому разделу, уже должен быть прописан, D в начале строки в логах означают отладочную информацию.
он там насыпал инфы на 100500 экранов
вот то что про фильтр:
D [25/May/2022:09:06:04 +0300] [Client 14] Writing IPP response, ipp_state=IPP_STATE_DATA, old wused=0, new wused=0 D [25/May/2022:09:06:04 +0300] [Client 14] bytes=0, http_state=0, data_remaining=593 D [25/May/2022:09:06:04 +0300] [Client 14] Flushing write buffer. D [25/May/2022:09:06:04 +0300] [Client 14] New state is HTTP_STATE_WAITING D [25/May/2022:09:06:04 +0300] [Client 14] Waiting for request. D [25/May/2022:09:06:04 +0300] cupsdSetBusyState: newbusy="Dirty files", busy="Active clients and dirty files" D [25/May/2022:09:06:04 +0300] [Client 14] POST / HTTP/1.1 D [25/May/2022:09:06:04 +0300] cupsdSetBusyState: newbusy="Active clients and dirty files", busy="Dirty files" D [25/May/2022:09:06:04 +0300] [Client 14] Read: status=200, state=6 D [25/May/2022:09:06:04 +0300] [Client 14] No authentication data provided. D [25/May/2022:09:06:04 +0300] [Client 14] 2.0 Get-Printer-Attributes 25 D [25/May/2022:09:06:04 +0300] Get-Printer-Attributes ipp://@localhost:631/printers/Brother_HL-1210W_series D [25/May/2022:09:06:04 +0300] [Client 14] Returning IPP successful-ok for Get-Printer-Attributes (ipp://@localhost:631/printers/Brother_HL-1210W_series) from localhost. D [25/May/2022:09:06:04 +0300] [Client 14] Content-Length: 593 D [25/May/2022:09:06:04 +0300] [Client 14] cupsdSendHeader: code=200, type="application/ipp", auth_type=0 D [25/May/2022:09:06:04 +0300] [Client 14] con->http=0x55c1f6cf8320 D [25/May/2022:09:06:04 +0300] [Client 14] cupsdWriteClient error=0, used=0, state=HTTP_STATE_POST_SEND, data_encoding=HTTP_ENCODING_LENGTH, data_remaining=593, response=0x55c1f6c58890(IPP_ST ATE_DATA), pipe_pid=0, file=-1 D [25/May/2022:09:06:04 +0300] [Client 14] Writing IPP response, ipp_state=IPP_STATE_DATA, old wused=0, new wused=0 D [25/May/2022:09:06:04 +0300] [Client 14] bytes=0, http_state=0, data_remaining=593 D [25/May/2022:09:06:04 +0300] [Client 14] Flushing write buffer. D [25/May/2022:09:06:04 +0300] [Client 14] New state is HTTP_STATE_WAITING D [25/May/2022:09:06:04 +0300] [Client 14] Waiting for request. D [25/May/2022:09:06:04 +0300] cupsdSetBusyState: newbusy="Dirty files", busy="Active clients and dirty files" D [25/May/2022:09:06:04 +0300] [Job 12] PID 262644 (/usr/lib/cups/filter/brother_lpdwrapper_HL1210W) stopped with status 1.
На что-то сетевое похоже, поиск результаты размазывает тонким разношёрстным слоем возможных причин. Через шнур есть возможность проверить печать?
Весь файл можно на https://pastebin.com/ залить.
Я бы от безысходности погрепал файл на типичные маркеры ошибок, вроде «error», «fail», «could not».
у меня, к примеру, Filter failed происходит всегда при первой печати.
Но чтобы такого не было, я просто еще раз выключаю и включаю принтер и о, чудо, все работает.
Кстати вопрос, как вручную запустить этот, да и любой другой фильтр?
подключил, переустановил локальный, пробовал вкл/выкл — не помогает
D [25/May/2022:13:50:44 +0300] [Client 4] cupsdWriteClient error=0, used=0, state=HTTP_STATE_POST_SEND, data_encoding=HTTP_ENCODING_LENGTH, data_remaining=459, response=0x55d41f3b71e0(IPP_STATE_DATA), pipe_pid=0, file=-1
D [25/May/2022:13:50:44 +0300] [Job 19] printer-state-message="Filter failed"
Это был хороший вопрос, потому что я кое-что нагуглил ТСу.
Если я понял верно, по этой же ссылке есть и про ручной запуск.
P.S. я думаю это заметно по треду, что я с CUPS не дружу. С принтерами немного возился по мелочам, поэтому по специфике CUPS могу лишь в поиск сходить.
по-моему Brother этот вместо драйвера подсунул кусок говна.
вот /usr/lib/cups/filter/brother_lpdwrapper_HL1210W:
LOGFILE="/dev/null" LOGCLEVEL="7" DEBUG=0 LOG_LATESTONLY=1 PRINTER=HL1210W BASEDIR=/opt/brother/Printers/$PRINTER/ LATESTINFO=/tmp/HL1210W_latest_print_info rm -f $LATESTINFO touch $LATESTINFO options="$5" if [ "$(echo $options | grep 'force-debug=1')" != '' ];then DEBUG=1 elif [ "$(echo $options | grep 'force-debug=2')" != '' ];then DEBUG=2 elif [ "$(echo $options | grep 'force-debug=3')" != '' ];then DEBUG=3 elif [ "$(echo $options | grep 'force-debug=4')" != '' ];then DEBUG=4 fi errorcode=0 set +o noclobber if [ $DEBUG != 0 ]; then LOGFILE=/tmp/br_cupsfilter_debug_log fi if [ "$PPD" = "" ]; then PPD="/usr/share/cups/model/$PRINTER.ppd" fi if [ $LOGFILE != "/dev/null" ]; then if [ $LOG_LATESTONLY = "1" ]; then rm -f $LOGFILE date >$LOGFILE else if [ -e $LOGFILE ]; then date >>$LOGFILE else date >$LOGFILE fi fi echo "arg0 = $0" >>$LOGFILE echo "arg1 = $1" >>$LOGFILE echo "arg2 = $2" >>$LOGFILE echo "arg3 = $3" >>$LOGFILE echo "arg4 = $4" >>$LOGFILE echo "arg5 = $5" >>$LOGFILE echo "arg6 = $6" >>$LOGFILE echo "PPD = $PPD" >>$LOGFILE fi TMP_RC=/tmp/brHL1210Wrc_$$ cp /opt/brother/Printers/$PRINTER//inf/brHL1210Wrc $TMP_RC export BRPRINTERRCFILE=$TMP_RC if [ $DEBUG != 0 ]; then echo BRPRINTERRCFILE=$BRPRINTERRCFILE >>$LOGFILE fi if [ -e "/$BASEDIR/lpd/filter_"$"" ]; then : else echo "ERROR: /$BASEDIR/lpd/filter_"$PRINTER" does not exist" >>$LOGFILE echo "ERROR: /$BASEDIR/lpd/filter_"$PRINTER" does not exist" >> $LATESTINFO errorcode=2 rm $TMP_RC exit fi if [ -e "/opt/brother/Printers/$PRINTER//cupswrapper/brcupsconfig4" ]; then if [ $DEBUG = 0 ]; then /opt/brother/Printers/$PRINTER//cupswrapper/brcupsconfig4 $PRINTER $PPD 0 "$options" >> /dev/null else /opt/brother/Printers/$PRINTER//cupswrapper/brcupsconfig4 $PRINTER $PPD $LOGCLEVEL "$options" >>$LOGFILE fi fi if [ $DEBUG = 0 ]; then if [ $# -ge 7 ]; then cat $6 | /$BASEDIR/lpd/filter_"$PRINTER" else cat | /$BASEDIR/lpd/filter_"$PRINTER" fi echo brHL1210Wrc_$$ >> $LATESTINFO cat $TMP_RC >> $LATESTINFO rm $TMP_RC exit $errorcode else ## ---------------- for debug echo --------------------------- >>$LOGFILE cat $BRPRINTERRCFILE >>$LOGFILE echo --------------------------- >>$LOGFILE INPUT_TEMP_PS=`mktemp /tmp/br_input_ps.XXXXXX` if [ $# -ge 7 ]; then cat $6 > $INPUT_TEMP_PS else cat > $INPUT_TEMP_PS fi case $DEBUG in 1) export LPD_DEBUG=1 cat $INPUT_TEMP_PS | /$BASEDIR/lpd/filter_"$PRINTER" ;; 2) export LPD_DEBUG=2 echo "" >>$LOGFILE echo " ------PostScript Data-------" >>$LOGFILE cat $INPUT_TEMP_PS >>$LOGFILE cat $INPUT_TEMP_PS | /$BASEDIR/lpd/filter_"$PRINTER" ;; 3) export LPD_DEBUG=3 echo "" >>$LOGFILE echo " ------PostScript Data-------" >>$LOGFILE cat $INPUT_TEMP_PS >>$LOGFILE ;; 4) export LPD_DEBUG=4 echo "" >>$LOGFILE echo " ------PostScript Data-------" >>$LOGFILE cat $INPUT_TEMP_PS >>$LOGFILE echo " ------Print Data-------" >>$LOGFILE cat $INPUT_TEMP_PS | /$BASEDIR/lpd/filter_"$PRINTER" | hexdump -C >>$LOGFILE ;; esac rm echo brHL1210Wrc_$$ >> $LATESTINFO cat $TMP_RC >> $LATESTINFO rm $TMP_RC fi exit
ошибки, которые я выше показывал:
D [25/May/2022:07:39:18 +0300] [Job 8] cp: -r not specified; omitting directory \'/opt/brother/Printers/HL1210W//inf/brHL1210Wrc\' D [25/May/2022:07:39:18 +0300] [Job 8] rm: cannot remove \'/tmp/brHL1210Wrc_260207\': No such file or directory
ERROR: //opt/brother/Printers/HL1210W//lpd/filter_HL1210W does not exist
дира «/opt/brother/Printers/HL1210W/inf/brHL1210Wrc» — пустая.
чё он блин ищет того, чего нет, и почему после этих двух строк он отваливается с кодом 1 ?!