Подключение и настройка сетевого USB-принетра к dd-wrt на примере DIR-620 и Xerox Phaser 3140

Следующим шагом после установки на DIR-620 прошивки dd-wrt и создания из него сетевого хранилища и торрентокачалки стало подключение сетевого принтера по USB. В принципе задача совершенно не сложная, исходные данные следующие:

  • Роутер D-Link DIR-620 с прошивкой dd-wrt и подключенным к нему USB-хабом;
  • Лазерный принтер Xerox Phaser 3140 (имеется штатный драйвер под *nix);
  • Linux и Windows машины в локальной сети, которые должны печатать на сетевом принтере;
  • Ресурсы роутера ограничены, следовательно использование демона печати CUPS возможно, но может быть проблематично.

При таких исходных данных логичной выглядит схема связи машин из локальной сети с принтером, подключенным к роутеру, при которой вся обработка заданий печати будет выполняться на самих клиентах (там же должны быть установлены драйверы принтера), а роутер займется простой переадресацией готовых заданий печати на принтер. Наряду с плюсом этого решения — экономией ресурсов роутера, есть и минус, который я пока не знаю, как победить — для просмотра оставшегося уровня тонера нужно печатать тестовую страницу.

Подключение принтера к роутеру с dd-wrt через USB

Для связи роутера с принтером я использовал распространённый демон печати p910nd — маленький и легкий, рекомендуется в том числе и для использования в embedded linux системах, к которым можно отнести dd-wrt. Демон связывает usb/lp0 порты с ipp очередью печати клиентов (своего обработчика очереди печати он соответственно не имеет).

ВАЖНО! Если на роутере используется прошивка с поддержкой SWAP из заметки D-Link DIR-620 и dd-wrt – бюджетный NAS и торрентокачалка — в ней отсутствует поддержка USB-принтеров в ядре. Соответственно нужно либо пересобирать ядро и затем упаковывать и заново устанавливать саму прошивку, либо собрать поддержку принтеров в виде модуля ядра и загружать его при старте роутера. Я выбрал второй путь, можно скачать готовый модуль поддержки принетров для версии ядра 2.7.23 под DIR-620, сохранить его на подключенном к роутеру внешнем носителе (я положил в директорию /opt/lib) и дописать в скрипт автозагрузки insmod /opt/lib/usblp.ko (после монтирования ФС, на которой хранится модуль). Проверить, что модуль загружен, можно командой lsmod.

Затем необходимо проверить, что в веб-интерфейсе прошивки включена поддержка USB-принтеров: Services -> USB -> USB Printer Support -> Enabled.
dd wrt принтер - включение поддержки

Далее устанавливаем демон печати p910nd: ipkg-opt install p910nd. После установки в директории /opt/etc/init.d будет создан скрипт для автозапуска демона — S95p910nd (кому интересно — цифры вида SNN в именах означают порядок запуска скриптов из этой директории). На всякий случай, параметры запуска демона такие: p9100d -f /dev/lp0 0 -t 5.

Если все прошло успешно (модуль ядра загружен в память, демон печати запущен и работает), то при подключении к роутеру принтера в выводе dmesg должны быть примерно такие строки:

<6>usb 1-1.3: new full speed USB device using dwc_otg and address 6
<6>usb 1-1.3: configuration #1 chosen from 1 choice
<6>usblp0: USB Bidirectional printer dev 6 if 0 alt 0 proto 2 vid 0x0924 pid 0x3CF4

Установка/подключение сетевого принтера на клиентах

Теперь нужно подключить принтер к клиентским машинам (драйвера должны быть установлены на них или будут установлены в процессе подключения принтера).

Установка принтера с использованием CUPS

Систему печати CUPS удобней всего на мой взгляд конфигурировать через ее штатный веб-интерфейс, по умолчанию доступный по адресу http://localhost:631. После настройки веб-интефейс при отсутствии необходимости в нём можно отключить, изменив значение в строке WebInterface конфигурационного файла (который доступен там же через меню Администрирование -> Редактирование конфигурационного файла) с Yes на No. Если для внесения изменений запрашиватся логин и пароль и в конфиге CUPS выставлено DefaultAuthType Basic, то логин и пароль те же, что у текущего пользователя системы.
Итак, заходим в Администрирование -> Добавить принтер, там выбираем AppSocket/HP JetDirect, на следующем шаге вводим socket://192.168.0.1:9100 (где 192.168.0.1 — адрес роутера), затем потребуется задать название принтера (при желании — и описание). Если CUPS обнаружит драйвр принтера (который к этому моменту должен быть уже установлен) — принтер будет подключен, можно печатать пробную страницу. Пользователям Ubuntu и его производных проще использовать встроенную программу работы с CUPS, которая позволяет установить драйвер в процессе подключения.

Установка принтера в Windows

Под Windows сетевой принтер подключается следующим образом (замечу, что все это я проделывал в WinXP и не знаю, совпадут ли названия настроек полностью с другими версиями ОС): Управление принтерам (Принтеры и факсы) -> Добавить новый -> Локальный принтер -> Порт 9100 (стандартный TCP/IP порт, если его нет — создать там же во вкладке ниже), затем выбор нужного драйвера и его установка, принтер создан. Теперь нужно зайти в свойства принтера на вкладку Порты, на ней — Настройка порта, указать IP-адрес роутера и протокол Raw. Настройка закончена, можно распечатать тестовую страницу!
Настройка сетевого принтера WinXP

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *