Site Tools


software:openwrt:printserver

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
software:openwrt:printserver [2021/01/16 00:06]
root
software:openwrt:printserver [2021/02/28 01:59]
root
Line 2: Line 2:
 Эта инструкция по созданию сервера печати на базе OpenWRT.\\ Эта инструкция по созданию сервера печати на базе OpenWRT.\\
 Имеющиеся в продаже готовые решения примитивны и неоправданно дорого стоят.\\ Имеющиеся в продаже готовые решения примитивны и неоправданно дорого стоят.\\
 +Из всех имеющихся на рынке готовых решений только Zyxel Keenetic на старой прошивке версии 1 (возможно на новых тоже) может автоматически загружать прошивку в принтер, но это не сервер печати а WiFi роутер.\\
  
  
 ===== Features ===== ===== Features =====
-  * возможность получить и установить свежую прошивку +  * Возможность получить и установить свежую прошивку 
-  * широкий выбор аппаратной платформы +  * Широкий выбор аппаратной платформы 
-  * поддержка IPv6, DHCPv6 и тп +  * Поддержка IPv6, DHCPv6 и тп 
-  * поддержка USB хабов +  * Поддержка USB хабов 
-  * поддержка WiFi (встроенного или через дополнительный PCI/USB адаптера) +  * Поддержка WiFi (встроенного или через дополнительный PCI/USB адаптера) 
-  * возможность одновременной работы с несколькими принтерами +  * Возможность одновременной работы с несколькими принтерами 
-  * автоматическая загрузка прошивки в принтер при включении сервера печати или принтера+  * Автоматическая загрузка прошивки в принтер при включении сервера печати или принтера
  
  
Line 19: Line 19:
 Лучше посмотреть инструкции по установки для выбранного устройства на сайте openwrt.\\ Лучше посмотреть инструкции по установки для выбранного устройства на сайте openwrt.\\
 На [[http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO|NanoPi NEO]] установка сводится к: На [[http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO|NanoPi NEO]] установка сводится к:
-  - скачать [[https://downloads.openwrt.org/releases/19.07.5/targets/sunxi/cortexa7/openwrt-19.07.5-sunxi-cortexa7-sun8i-h3-nanopi-neo-squashfs-sdcard.img.gz|squashfs]] образ+  - скачать [[https://downloads.openwrt.org/releases/19.07.7/targets/sunxi/cortexa7/openwrt-19.07.5-sunxi-cortexa7-sun8i-h3-nanopi-neo-ext4-sdcard.img.gz|ext4]] образ
   - с помощью dd залить его на MicroSD флешку   - с помощью dd залить его на MicroSD флешку
   - вставить флешку в [[http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO|NanoPi NEO]]   - вставить флешку в [[http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO|NanoPi NEO]]
Line 27: Line 27:
 ====== Настройка ====== ====== Настройка ======
 Заходим в веб интерфейс, адрес по умолчанию: [[http://192.168.1.1/cgi-bin/luci/|192.168.1.1]], логин root, пароля нет.\\ Заходим в веб интерфейс, адрес по умолчанию: [[http://192.168.1.1/cgi-bin/luci/|192.168.1.1]], логин root, пароля нет.\\
 +
  
  
Line 37: Line 38:
   - Вкладка **General Settings**, **Protocol**: выбираем **DHCP Client** и **Switch protocol**, **Save**, **Save & Apply**   - Вкладка **General Settings**, **Protocol**: выбираем **DHCP Client** и **Switch protocol**, **Save**, **Save & Apply**
   - Переходим в вебгуй на новом адресе чтобы примерились настройки, иначе через 90 секунд настройки откатяся   - Переходим в вебгуй на новом адресе чтобы примерились настройки, иначе через 90 секунд настройки откатяся
 +
  
  
Line 48: Line 50:
  
  
-===== Установка скрипта 10-prnt-helper =====+ 
 +===== Устанавливаем необходимые компоненты ===== 
 +  - Переходим в [[http://192.168.1.1/cgi-bin/luci/admin/system/opkg|System->Software]] 
 +  - **Update lists...** (интернет должен быть уже настроен), 
 +  - В появившемся окне: **Dismiss** 
 +  - Устанавливаем: p910nd, luci-app-p910nd, kmod-usb-printer, kmod-lp 
 + 
 +Либо через SSH вводим 
 +<code>opkg update 
 +opkg install p910nd luci-app-p910nd kmod-usb-printer kmod-lp</code> 
 + 
 + 
 + 
 + 
 +===== Скрипт 10-prnt-helper ===== 
 + 
 ==== Функционал ==== ==== Функционал ====
-При подключении принтера скрипт автоматически+При подключении принтера [[http://www.netlab.linkpc.net/download/software/openwrt/print_server/10-prnt-helper|скрипт]] автоматически
   - создаёт symlink /dev/PRINTER_SERIAL_NUMBER на /dev/usb/lpX - это нужно чтобы при наличии двух одинаковых принтеров они всегда получали один и тот же TCP порт, не зависимо от порядка включения/загрузки   - создаёт symlink /dev/PRINTER_SERIAL_NUMBER на /dev/usb/lpX - это нужно чтобы при наличии двух одинаковых принтеров они всегда получали один и тот же TCP порт, не зависимо от порядка включения/загрузки
-  - загружает прошивку с именем fw-${DEV_VID}-${DEV_PID}.dl из /etc/fw в принтер +  - загружает прошивку с именем ${DEV_VID}-${DEV_PID}.dl из /etc/fw в принтер 
-  - выводит информацию о своих действиях в [[http://172.16.0.165/cgi-bin/luci/admin/status/syslog|системный лог]]+  - выводит информацию о своих действиях в [[http://192.168.1.1/cgi-bin/luci/admin/status/syslog|Status->System Log]] 
 + 
 + 
 + 
 +==== Установка ==== 
 +  - Подключаемся по ssh: <code>ssh root@192.168.1.1</code> 
 +  - Создаём папку: <code>mkdir -p /etc/hotplug.d/usbmisc/</code> 
 +  - Скачиваем скрипт: <code>wget -O /etc/hotplug.d/usbmisc/10-prnt-helper http://www.netlab.linkpc.net/download/software/openwrt/print_server/10-prnt-helper</code> 
 +  - Устанавливаем права: <code>chmod 0755 /etc/hotplug.d/usbmisc/10-prnt-helper</code> 
 +  - Устанавливаем владельца: <code>chown root:root /etc/hotplug.d/usbmisc/10-prnt-helper</code> 
 + 
 + 
 + 
 +==== Установка прошивок ==== 
 +  - Переходим в [[http://192.168.1.1/cgi-bin/luci/admin/status/syslog|Status->System Log]] и ищем строчки содержащие **prnt-helper**, если принтер подключён и всё сделано правильно они обязательно будут, как пример для HP 1018 будет примерно так:<code>Sat Jan 16 00:26:07 2021 user.notice prnt-helper: Device /dev/usb/lp0 linked to /dev/DF32CGE 
 +Sat Jan 16 00:26:07 2021 user.notice prnt-helper: Attempt to load /etc/fw/03f0-4117.dl to /dev/usb/lp0</code> 
 +  - Создаём папку: <code>mkdir -p /etc/fw/</code> 
 +  - Скачиваем прошивку для HP 1018: <code>wget -O /etc/fw/03f0-4117.dl http://www.netlab.linkpc.net/download/software/openwrt/print_server/20051028_hp1018.dl</code> 
 + 
 +**DF32CGE** - Уникальный серийный номер принтера.\\ 
 +**03f0-4117.dl** - VID-PID для HP 1018.\\ 
 +**20051028_hp1018.dl** - прошивка к которой уже добавлены нужные заголовки.\\ 
 +Подробнее про прошивки и где/как их добывать можно прочитать тут [[ru:software:win:print:fw_uploader|Printer firmware uploder / converter]] 
 + 
 + 
 + 
 +==== Автозапуск ==== 
 +На случай если принтер и принт сервер были обесточены а потом включены одновременно требуется чтобы при загрузке 10-prnt-helper запускался из стартовых скриптов, поскольку hotplug событие не отрабатывает такие ситуации.\\ 
 + 
 +  - Переходим в [[http://192.168.1.1/cgi-bin/luci/admin/system/startup|System->Startup]], вкладка **Local Startup** 
 +  - перед "exit 0" добавляем:<code> 
 +for _UMDIR in `find /sys/devices/platform/ -type d -name 'usbmisc'`; do 
 + _LPDIR_PATH=`find "${_UMDIR}" -maxdepth 1 -type d -name 'lp*'
 + [ -z "${_LPDIR_PATH}" ] && continue; 
 + _LPNAME=`basename "${_LPDIR_PATH}"
 + [ ! -c "/dev/usb/${_LPNAME}" ] && continue; 
 + _DEVPATH=`echo "${_LPDIR_PATH}" | sed -e 's|/sys||'
 + echo "Force hotplug for: DEVNAME=usb/${_LPNAME}" 
 + ACTION=add DEVNAME="usb/${_LPNAME}" DEVPATH="${_DEVPATH}" /etc/hotplug.d/usbmisc/10-prnt-helper 
 +done</code> 
 +  - **Save** 
 + 
 + 
 + 
 +==== Персистентность ==== 
 +Чтобы скрипт и файлы прошивок сохранялись в бэкапах конфигурации а так же при обновлении нужно проделать следующее: 
 +  - Переходим в [[http://192.168.1.1/cgi-bin/luci/admin/system/flash|System->Backup / Flash Firmware]], вкладка **Configuration** 
 +  - Добавляем текст: <code>/etc/hotplug.d/usbmisc/10-prnt-helper 
 +/etc/fw/*</code> 
 +  - **Save** 
 + 
 + 
 + 
 +===== p910nd ===== 
 +  - Переходим в [[http://192.168.1.1/cgi-bin/luci/admin/services/p910nd|Services->p910nd - Printer server]] 
 +  - Включаем **enable** 
 +  - В поле **Device** вместо **/dev/usb/lp0** можно прописать **/dev/DF32CGE** (то что было в [[http://192.168.1.1/cgi-bin/luci/admin/status/syslog|Status->System Log]]) 
 +  - Остальное на своё усмотрение 
 +  - **Save & Apply** 
 + 
 + 
 + 
 +====== Обновление ====== 
 +  - Через WebUI загрузить ext4 образ (для NanoPi NEO) 
 +  - Заново установить компоненты 
 +  - Перезагрузить
  
  
  
 +====== Заключение ======
 +Не рассмотрена настройка фаервола, безопасности и прочих базовых возможностей OpenWRT.\\
 +Расширенные функции, такие как автоматическое обнаружение тоже не настраивались, возможно это будет сделано позже и данная заметка будет дополнена.\\
 +\\
 +Ретроспективно, это четвёртая реализация сервера печати для HP 1018 за последние 14 лет:
 +  - Сервер печати TL-PS110U + [[ru:software:win:print:fw_uploader|Printer firmware uploder / converter]]
 +  - FreeBSD 9 на Equeleus 8132, самописный демон dprint и скрипт под devd для загрузки прошивки (почти не использовалось)
 +  - Zyxel Keenetic Giga - проработал долго, пока роутер не вышел из строя, после него использовался опять первый вариант
 +\\
 +Основная причина создания этого решения - необходимость автоматической загрузки прошивки в принтер, при этом более качественных и компактных принтеров, не прихотливых в обслуживании сейчас на рынке нет.\\
 +Возможности заменить плату на аналогичную с флешкой под прошивку и сетью - теоретически есть, но времени на реализацию уйдёт больше при не гарантированном результате.\\
 +\\
 +В планах на будущее:
 +  * Добавить автоматическое обнаружение
 +  * Установить NanoPi NEO в металлический корпус
 +  * Подключить к NanoPi NEO сканер и настроить кнопки на нём для сканирования на сервер и копирования
 +====== Источники ======
  
 +[[https://openwrt.org/docs/guide-user/services/print_server/p910nd.server|p910nd Printer Server]]\\
 +[[https://openwrt.org/docs/guide-user/base-system/hotplug|Hotplug]]\\
 +[[http://osboy.ru/blog/openwrt/openwrt-hotplug.html|Настройка Hotplug на OpenWRT]]\\
 +[[ru:software:win:print:fw_uploader|Printer firmware uploder / converter]]\\
 +[[ru:hardware:printer:gdi|GDI printer and net print server]]\\
 +[[http://manpages.ubuntu.com/manpages/trusty/man1/usb_printerid.1.html|usb_printerid]]
  
  
  
software/openwrt/printserver.txt · Last modified: 2022/02/05 05:29 by root