Статей по подключению принтеров через роутеры в сети много, суть большинства сводится к общему алгоритму — установить на роутер альтенативную прошивку (например OpenWrt), установить поддержку USB, принтеров и демон p910nd, после чего прописать конфиги демона и дополнительные настройки.
Особенность софт-принтеров HP моделей 1000, 1005, 1006, 1007, 1007, 1018, 1020, 1505 в том, что на «борту» у них нет полноценной управляющей микропрограммы, она загружается драйвером при каждом включении принтера. Данная статья должна подойти для любого из перечисленных принтеров, однако проверена только на HP LJ1000.
Основная сложность при подключении такого принтера через роутер — загрузить в него «прошивку», чего не умеет делать практически ни один роутер с поддержкой принтеров «из коробки», а также специализированные «принтсерверы», хотя допускаю что существуют модели, которые это умеют, однако мне не удалось их найти вживую.
Усиленное изучение вопроса дало два метода решения задачи загрузки прошивки в роутер — на стороне клиента, либо на стороне роутера. В первом варианте роутер настраивается как для обычного принтера, «прошивку» нужно засылать на печать перед первым использованием принтера с компьютера:
1. Пуск-Выполнить-CMD
2. В окне консоли COPY ДИСК:\Путь_к_файлу\ИмяФайла.prn \\dnsXXXX\lp
(пример: COPY c:\tmp\sihp1020.prn \\dns323\lp)
Считаю этот способ несостоятельным, ибо неудобно. Принтер должен работать без дополнительных телодвижений.
Второй метод решения задачи — заливка прошивки самим роутером. Причем, желательно чтобы прошивка загружалась не только по включению роутера, но и по хотплагу принтера.
Теперь опишу процесс настройки на имеющемся у меня железе. В моем случае используется роутер D-Link DIR-620 Rev A1. С этим роутером я уже пробовал множество прошивок, очень удобной оказалась Zyxel Keenetic v1, однако именно HP LJ1000 с Keenetic не работает, танцы с бубнами не помогли. Что подтверждается техподдержкой Zyxel: http://ift.tt/1KiByOW
Я использовал последнюю доступную версию OpenWrt: 14.07.
В качестве основы для настройки я использовал статью в вики OpenWrt. Скрипт переделан для нормального хотплага и устойчивого старта демона p910nd.
После перепрошивки роутера меняем дефолтный пароль, активируем работу по SSH, настраиваем сетевые интерфейсы. Все дальнейшие настройки удобнее всего делать через терминальный клиент, я использовал Putty. Настройки предполагают, что роутер имеет доступ в Интернет.
Итак, поехали:
- Установить нужные для работы принтера пакеты, плюс простой редактор:
opkg update opkg install kmod-usb-printer usbutils p910nd nano
- Записать в файловую систему роутера прошивку для нужного принтера. Проще всего скачать прошивку у Олега:http://ift.tt/1Lilv7W. В моем случае нужна прошивка для HP LJ1000 — ее и загружаем:
cd /usr/lib/ wget http://ift.tt/1KiByOZ
- Создаем скрипт обработки события hotplug, чтобы прошивка в принтер отправлялась при каждом его подключении:
nano /etc/hotplug.d/usb/20-printer
Код скрипта:#!/bin/sh FIRMWARE="/usr/lib/sihp1000.dl" DEVICE=/dev/usb/lp0 if [ "$PRODUCT" = "3f0/517/120" ] then case "$ACTION" in add) /etc/init.d/p910nd stop echo "`date`: Sending firmware to printer." >> /tmp/hl1000 cat $FIRMWARE > $DEVICE sleep 15 echo "`date`: hl1000 added" >> /tmp/hl1000 /etc/init.d/p910nd start echo "Done." >> /tmp/hl1000 ;; remove) echo "`date`: hl1000 removed" >> /tmp/hl1000 /etc/init.d/p910nd stop echo "Done." >> /tmp/hl1000 ;; esac fi
Немного о настройке скрипта: для начала нужно убедиться что ваш принтер находится именно по пути /dev/usb/lp0: команда ls /dev/usb должна дать список устройств, среди которых будет lp0. Некоторые прошивки могут создавать дексриптор принтера по адресу /dev/lp0.Далее нужно прописать путь к файлу «прошивки», и указать VID/PID принтера. Смотрим что есть на USB:
lsusb -v | grep "ID\|bcdUSB"
Ответ:
Bus 001 Device 004: ID 03а0:0517 Hewlett-Packard LaserJet 1000 bcdUSB 1.20
3f0/517 — это VID и PID принтера HP LJ 1000 (Первые нули удаляются03f0). 120 — это BCD версия без точки. - Открываем файл конфигурации p910nd:
nano /etc/config/p910nd
Если запись для принтера уже есть, то нужно убедиться что путь к дескриптору принтера верен. Если нет, то копируем этот текст:config p910nd option device /dev/usb/lp0 option port 0 option bidirectional 0 option enabled 1
Если с роутером используется только один принтер, то оставляем этот текст как есть, но можно исопльзовать несколько принтеров. Тогда для каждого из них нужно будет указать свой порт (по умолчанию 9100). - В моем случае демон печати стартуется скриптом после загрузки прошивки в принтер, поэтому убедимся что он не стартует сам при включении роутера:
/etc/init.d/p910nd disable
Иначе запущенный слишком рано демон падал со следующей ошибкой:Tue Feb 4 02:29:43 2014 lpr.err p9100d[1207]: bind: Cannot assign requested address Tue Feb 4 02:29:43 2014 lpr.err p9100d[1207]: accept: Bad file descriptor
Перезагружаем роутер. Если все настроено правильно, то с загрузкой роутера переинициализируется принтер (слышно как он перезапускается). На всякий случай убеждаемся что в System Log нет ошибок, связанных с p9100, подключаемся по SSH, проверяем работу скрипта hotplug:
nano /tmp/hl1000
Должен быть такой лог:
Sending firmware to printer.
hl1000 added
Done.
Проверяем что демон стартовал:
ps | grep p910nd
В списке процессов по команде должен быть p910nd:
root@OpenWrt:~# ps | grep p910nd
1597 root 780 S {p910nd} /usr/sbin/p9100d -b -f /dev/usb/lp0 0
1849 root 1492 S grep p910nd
На этом настройку на стороне роутера можно считать законченной.
Дальше настраиваем подключение со стороны клиентов. В моем случае это были компьютеры с Windows XP, где уже были установлены драйвера нужного принтера.
Открываем свойства принтера:
Добавляем новый порт -> Standard TCP/IP Port -> Новый порт -> Далее -> вводим IP адрес роутера -> generic Network Card-> Готово.
Обязательно нужно снять галочку «двунаправленный обмен». Об этом мало где пишут. Другие модели принтеров кроме 1000 нормально работают с установленной, но именно с моим 1000 печать не работала, пока я не снял галку и не перезагрузился (важно, без перезагрузки не будет работать).
Точно также настраивается печать из Windows 7, тоже обязательно нужно снять галочку «двунаправленный обмен». На более новых не проверял, но не вижу препятствий, чтобы не заработало.
PS: Настройка двунаправленного обмена в p910nd (bidirectional) на работу не влияет, в отличии от настройки двунаправленного обмена на стороне клиента. Я пробовал и с включенным и с выключенным флагом, поведение принтера не менялось. Поэтому важно соблюдать отключенность только на стороне клиента.
This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий