Pull to refresh

Печать из Mac OS по WiFi на GDI-принтер

Reading time 2 min
Views 3.2K
Чудные win-принтеры вообще железки капризные при попытках их использовать под *NIX и по сети, а тут возникла необходимость подключить HP LaserJet 1000 к конструктору D-Link DIR-320 для печати без проводов. Принт-сервер из коробочки вроде эту возможность не поддерживает, комплект от йота-самоделкиных не проверял.
Мой рецепт под катом.

Общая концепция


Принтер требует загрузки прошивки, это можно осуществить на рутере при подключении принтера к USB. Сервер печати нужно выбрать такой, который выставит наружу RAW-интерфейс, по которому с клиентов будут приходить полностью подготовленные задания. Для поддержки загрузки прошивки и запуска принт-сервера необходима прошивка рутера с поддержкой USB, а также включение поддежки USB, дополнительной памяти и печати в его настройках.

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

Конкретика


  1. Установка прошивки рутера. В данном случае, dd-wrt.v24-13577_NEWD_mini_usb.bin от eko. Инструкции можно посмотреть тут
  2. Настройка рутера. Не забываем устанавливать пароль и настраивать mac-адрес, выход в интернет и маршрутизацию. После чего включаем на вкладке Администрирование в разделе USB поддержку JFFS2, Core USB Support, USB 1.1 Support, USB 2.0 Support, USP Printer Support. Затем включаем сервис SSHd в разделе сервисов и опцию доступа к рутеру по SSH.
  3. Принтер и сервер печати. Подключаем принтер к рутеру, ребутим рутер, заходим на него рутом по ssh (192.168.1.1). Готовим прошивку:
    mkdir -p /jffs/usr/share/foo2zjs/firmware
    cd /jffs/usr/share/foo2zjs/firmware
    wget oleg.wl500g.info/hplj/sihp1000.dl
    Устанавливаем принт-сервер для печати по протоколу JetDirect:
    ipkg update
    ipkg install p910nd
    По идее, в правильной прошивке рутера уже должны быть модули kmod-usb-core, kmod-usb-uhci, kmod-usb-ohci, kmod-usb2, kmod-usb-printer, которые мы включали в настройках для загрузки.
    Модифицируем (с помощью vi или cat) скрипт для подключения:
    Файл /jffs/etc/config/usb.startup должен содержать загрузку прошивки и старт сервера
    cat /jffs/usr/share/foo2zjs/firmware/sihp1000.dl > /dev/usb/lp0<br>
    /jffs/usr/sbin/p910nd -b -f /dev/usb/lp0 0

    Он также должен быть исполняемым — делаем права с +x и запускаем. В принципе, просто выполнения этих комманд вручную достаточно, если не планируется отключать ни рутер, ни принтер. Проверить статус подключения принтера можно dmesg | grep USB, сервер на порту 9100 netstat -na. Всё можно сделать и без ssh выполнением комманд через веб-админку, но это неудобно, особенно для редактирования файлов.
  4. Настройка клиентов. В Linux просто ставим foo2zjs и gplgs из пакетов. В Mac OS ставим dmg
    foo2zjs
    foomatic + ghostscript

    При создании принтера выбираем сетевой принтер HP LaserJet 1000 с драйвером foo2zjs по протоколу JetDirect по адресу 192.168.1.1 на порту 9100.

Заключение, открытые вопросы


Возможно, будет работать и с виндового клиента. Для Mac видимо работа и установка проще, чем локальное подключение. Минус такой, что по факту драйвер foo2zjs хуже, чем драйвера hplip (опыт использования на локальной машине под Ubuntu 9.x). Возможно, можно установить hplips + cups, но далеко не факт.
Tags:
Hubs:
+9
Comments 6
Comments Comments 6

Articles