Стал счастливым обладателем RT-N10U в черном корпусе. Прошил 1.9.2.7-rtn-r5066 от энтузиастов. Имеется HP LJ 1000. Решил их "подружить". Потрачено 2 дня. По факту обнаружил, что роутер не видит принтера, т.е. подсоединение/отсоединение, включение/выключение принтера никак не отражается в логах роутера (флешки и модемы роутер видит).
Вопрос: сталкивался кто с такой проблемой и есть ли решение?
Каждые пять минут в логах появляется
версия прошивки 1.9.2.7-rtn-r5536Code:l 29 08:27:43 p9100d[272]: /dev/lp0: No such file or directory, will try opening later
Помогите пожалуйста решить проблему.
Принтер подключен к usb порту роутера.
Всем доброго дня!
Два дня бьюсь с принтером LaserJet 1020, не хочет работать на RT-N15U в черном корпусе...
Перепробовал все варианты скрипта hotplug.sh из этой темы - никаких результатов.
Посмотрите, может что то не так делаю - в unix не силен.
Что делал:
1. Создал директорию mkdir /usr/local/sbin
2. Скопировал файлы в нее:
wget http://oleg.wl500g.info/hplj/usb_printerid
wget http://oleg.wl500g.info/hplj/sihp1020.dl
3. Создал /usr/local/sbin/hotplug.sh
4. Создал /usr/local/sbin/post-bootCode:#h!/bin/sh ad the firmware to the printer PROD=3f0/2b17/100 PRINTERID=/usr/local/sbin/usb_printerid FIRMWARE=/usr/local/sbin/sihp1020.dl DEVICE=/dev/lp0 if [ "$PRODUCT" = "$PROD" ] && [ "$ACTION" = "add" ]; then ${PRINTERID} ${DEVICE} | grep -q FWVER || cat ${FIRMWARE} > ${DEVICE} echo "`date` Firmware loaded for HP LaserJet 1020 device ${DEVICE}" >> /tmp/syslog.log fi /sbin/hotplug $*
5. Создал /usr/local/sbin/pre-bootCode:#!/bin/sh if [ -w "/dev/lp0" ]; then PRINTERID=/usr/local/sbin/usb_printerid FIRMWARE=/usr/local/sbin/sihp1020.dl DEVICE=/dev/lp0 ${PRINTERID} ${DEVICE} | grep -q FWVER || cat ${FIRMWARE} > ${DEVICE} fi echo "/usr/local/sbin/hotplug.sh" > /proc/sys/kernel/hotplug
в /sbin пять файлов: hotplug.sh, post-boot, pre-boot, sihp1020.dl и usb_printeridCode:#!/bin/sh /bin/echo /usr/local/sbin/hotplug.sh >> /proc/sys/kernel/hotplug
сделал исполняемыми командой:
chmod +x /usr/local/sbin/*
ввел flashfs save && flashfs commit && flashfs enable && reboot
После перезагрузки роутера в логах:
После того, как включаю питание принтера, появляется:Code:Sep 9 13:26:02 kernel: usb 1-1: USB disconnect, address 2 Sep 9 13:26:05 kernel: usb 1-1: new high speed USB device using ehci_hcd and address 3 Sep 9 13:26:05 kernel: usb 1-1: configuration #1 chosen from 1 choice Sep 9 13:26:05 kernel: usblp0: USB Bidirectional printer dev 3 if 0 alt 0 proto 2 vid 0x03F0 pid 0x2B17 Sep 9 13:26:05 kernel: drivers/usb/class/usblp.c: usblp0 Device ID string [84]='MFG:Hewlett-Packard;MDL:HP LaserJet 1020;CMD:ACL;CLS:PRINTER;DES:HP LaserJet 1020;'
после этого "тишина" - задания на печать уходят на принтер и пропадают, принтер "молчит", лампочка на роутере о подключении USB не горит...Code:Sep 9 13:27:04 p9100d[240]: Connection from ::ffff:192.168.1.243 port 50223 accepted Sep 9 13:27:04 p9100d[240]: /dev/lp0: No such file or directory, will try opening later
Прошивка от энтузиастов 1.9.2.7-rtn-r5450
Посмотрите, может что-то не так со скриптом, если можно то пошагово, что сделать и где исправить, повторюсь в unix я полный "чайник"
Заранее всем спасибо за ответы.
в начале темы речь идет об устройстве /dev/usb/lp0
в вашем логе идет речь о подключении usblp0
прежде чем отправлять в принтер firmware надо все же определится каким он числится устройством:
/dev/lp0
/dev/usb/lp0
/dev/usblp0
это раз
два - в скрипте hotplug.sh у вас по крайней мере лишний символ в самом начале!!
#h!/bin/sh (что говорит о том, чт оваш скрипт вообще-то НЕ работает совсем) и проверьте на всякий случай - вы дали скрипту разрешение на исполнение командой chmod +x?
три - строка ad the firmware to the printer должна быть закомментирована
# ad the firmware to the printer или иметь оператор echo "ad the firmware to the printer" или logger "ad the firmware to the printer"
четыре: два раза писать одно и тоже echo "/usr/local/sbin/hotplug.sh" > /proc/sys/kernel/hotplug из двух мест - не очень надо
Спасибо за помощь AndreyPopov
Исправил ошибку в скрипте hotplug.sh на #!/bin/sh, и закомментировал строку # ad the firmware to the printer принтер "зашуршал" и распечатал пробную сраницу
Но теперь принтер работает до его выключения. Т.е. если выключить питание принтера и снова включить - принтер "молчит" печать не проходит.
Если перезагрузить роутер при включенном принтере - то все "ок", печатает. Выключишь-включишь принтер - печать уходит в "никуда".
Подскажите чтоделать, куда рыть? Может дописать какую-то команду в pre-boot?
Заранее благодарю за ответ.
вот эта строка:
/sbin/hotplug $*
она должна быть в hotplug.sh ?
hotplug по идее и так должен быть запущен. зачем его еще раз запускать из hotplug.sh?
Last edited by AndreyPopov; 09-09-2014 at 15:44.
Да эта строчка есть в hotplug.sh
причем он обрабатывается корректно, в логах никаких ошибок нет.Code:#!/bin/sh # ad the firmware to te printer PROD=3f0/2b17/100 PRINTERID=/usr/local/sbin/usb_printerid FIRMWARE=/usr/local/sbin/sihp1020.dl DEVICE=/dev/lp0 if [ "$PRODUCT" = "$PROD" ] && [ "$ACTION" = "add" ]; then ${PRINTERID} ${DEVICE} | grep -q FWVER || cat ${FIRMWARE} > ${DEVICE} echo "`date` Firmware loaded for HP LaserJet 1020 device ${DEVICE}" >> /tm fi /sbin/hotplug $*
Но принтер работает если не выключать его питание. Если его выключить и снова включить - принтер не работает.
Стоит только роутер перезагрузить с включенным принтером - все "ок", печать идет.
Возможно нужно добавить какую-то команду в pre-boot, чтобы принтер повторно инициализировался в системе при включении?
Сейчас pre-boot у меня такой:
Code:#!/bin/sh # Printer /bin/echo "/usr/local/sbin/hotplug.sh >> /proc/sys/kernel/hotplug
hotplug и есть то, что должно определять, что принтер подключился(включился) и соответственно каждый раз при включении принтера посылать firmware.
в скриптах на первой странице я /sbin/hotplug $* не вижу.
я бы вообще не заморачивался c hotplug , а воспользовался бы услугами cron(планировщик).
поставьте запуск скрипта скажем каждый час - если у вас неизвестно когда включается принтер. или скажем на 10 и 11 утра - начало рабочего дня.
Дело в том, что принтер домашний, включается раз в одну-две недели, чтобы распечатать какой-нибудь документ.
Поэтому хотел сделать чтобы при работающем 24/7 роутере можно было включить принтер - распечатать - выключить.
А сейчас принтер печатает только если роутер ребутнуть.
Я попробовал перенести строку /sbin/hotplug $* из hotplug.sh в post-boot, не помогло...
Может есть еще какие варианты?
для домашнего принтера есть несколько вариантов:
1. на рабочем столе в винде сделать ярлык с запуском команды copy /b <firmware> <port>
2. зайти в роутер по телнет/ссш и руками запустить скрипт с содержимым
#!/bin/sh
if [ -w "/dev/lp0" ]; then
PRINTERID=/usr/local/sbin/usb_printerid
FIRMWARE=/usr/local/sbin/sihp1020.dl
DEVICE=/dev/lp0
${PRINTERID} ${DEVICE} | grep -q FWVER || cat ${FIRMWARE} > ${DEVICE}
fi
3. как и писал в cron прописать скажем запуск того же скрипта каждые полчаса.
и роутер перегружать вообще НЕ НАДО!