- OSBoy notes.
- Принт-сервер p910nd на OpenWrt
- Настройка Принт-сервера на примере TL-WR842ND и HP LJ 1020 с использованием p910nd
- OpenWRT.su
- Принт-сервер p910nd OpenWRT на примере Samsung SCX-3400
- Устанавливаем необходимые пакеты
- Настройка Принт-сервера при помощи UCI
- Настройки межсетевого экрана OpenWRT в uCI для корректной работы Принт-сервера p910nd
- Настройка Принт-сервера при помощи веб-интерфейса LuCI
- Настройки межсетевого экрана OpenWRT в LuCI для корректной работы Принт-сервера p910nd
- Настройка сетевого принтера в Windows 10
- Комментарии
OSBoy notes.
Записки обо всём.
Принт-сервер p910nd на OpenWrt
Всё началось с того, что у нас в офисе во время грозы погорела куча сетевого оборудования, в том числе сдох принт-сервер D-Link DPR-1061, к которому у нас были подключены два usb-принтера: МФУ (А3 формата) Xerox WorkCentre 5020 и рулонный плоттер HP designjet 111 Roll. Произошло всё в моё отсутствие, пока я был в отпуске. Ну и заказали без разбору новый «принт-сервер». Эдакую коробочку «AGESTAR LB4-G», которая, как оказалось, мало того, что всего с одним USB-портом, так и вообще даже не принт сервер собственно. а, так называемый, USB-сервер или сетевой USB-адаптер, весьма глючный и неудобный в эксплуатации, в общем редкостная хрень, которую можно использовать разве что в качестве USB-удлинителя, если у Вас дома принтер и компьютер стоят в разных комнатах.
Тут я и вспомнил про свою старую-добрую коробочку TP-Link TL-MR3020, пылящуюся без дела на полке (с уже установленной OpenWrt). К слову сказать, если бы начальство не пожадничало, и вместо роутера TP-LINK TL-WR841N купило, скажем, модель TL-WR1043ND (с USB разъёмом), то можно было бы вообще использовать его же и в качестве принт-сервера.
Настройка сервера
Итак, для использования роутера в качестве принт-сервера, установим на него пакет p910nd — это маленький демон, не имеющий своей очереди печати, а направляющий задачи непосредственно на принтеры. Система печати клиентского компьютера подключается к нему по TCP порту 910n, где n=0,1,2. для принтеров lp0, lp1, lp2. соответственно.
Устанавливаем необходимые пакеты:
Подключаем наши принтеры через USB-хаб и проверяем, что они определились системой:
Посмотреть текущую конфигурацию p910nd можно с помощью команды:
Для настройки конфигурации принт-сервера открываем файл /etc/config/p910nd и приводим его примерно к такому содержанию:
Здесь мы настроили две секции: для принтеров lp0 и lp1 соответственно. Запускаем демона p910nd и добавляем его в автозапуск:
Для управления настройками демона из панели управления luci устанавливаем соответствующий пакет:
После чего в Luci станут доступны настройки конфигурации p910nd на вкладке: Services > p910nd — Printer Server.
Настройка фаервола
В фаерволе разрешаем входящие соединения на TCP порты 9100, 9101. Для этого в файл /etc/config/firewall добавляем строки:
Настройка правил udev
Всё вышеописанное хорошо работает, однако есть один нюанс: если подключить принтеры в другой последовательности, система определяет их уже под другими именами (lp0, lp1 и т.д.). Отсюда возникают неудобства: приходится включать принтеры строго в определённом порядке, чтобы они соответственно определились системой. Чтобы избавиться от этих неудобств, нужно как-то зафиксировать определённые имена устройств за каждым принтером. В моём случае, на версии прошивки 15.05 Chaos Calmer, используется менеджер процессов procd (в качестве замены hotplug2) — я пока не нашёл внятного описания его возможностей, в том числе, может ли он управлять именами устройств. Достаточно простым решением стало — установка пакета udev и настройка его правил.
Создаём файл с нашими правилами для udev:
Для того, чтобы узнать подробные параметры подключенных принтеров, воспользуемся командой udevadm info для принтеров lp0 и lp1 соответственно:
В выводе этих команд смотрим, какие параметры можно использовать как условия — в данном случае я буду использовать SUBSYSTEMS, DRIVERS, и самое главное: ATTRS
Где значения SUBSYSTEMS, DRIVERS и ATTRS
Поэтому, приводим файл /etc/config/p910nd к следующему виду:
Протестируем наши правила для udev. Для этого, сначала найдём путь к файлу устройства соответствующего принтера в директории /sys:
и затем выполним команду:
Среди многочисленного вывода команды видим строку:
Значит всё в порядке, ссылка на файл устройства принтера создалась. Можем в этом убедиться:
То же самое можно проделать для второго принтера.
Теперь создадим init-скрипт для udev:
И приведём его к следующему виду:
Запускаем udevd и добавляем его в автозапуск:
На этом с настройкой принт-сервера всё. Теперь нам всё равно, под каким именем определится принтер — lp0, lp1, или другим. Символические ссылки, созданные udev в любом случае будут указывать на нужное устройство.
- Открываем «Принтеры и факсы»;
- Жмём «Установка принтера»;
- В «Мастере установки» выбираем: «Локальный принтер», снимаем галку «Автоматическое определение и установка PnP принтера»;
- Далее выбираем: «Создать новый порт», тип порта: «Standard TCP/IP Port»;
- Вводим IP-адрес принт-сервера и имя порта (какое нам нравится);
- Выбираем тип устройства «Особое», жмём кнопку «Параметры»;
- Указываем номер порта, который слушает принт-сервер для данного принтера (9100, 9101 и т.д.), проверяем, что «ипользуемый протокол» выбран «Raw»;
- Далее устанавливаем драйвер принтера, либо выбираем ранее установленный.
- Открываем «Устройства и принтеры»;
- Жмём «Установка принтера»;
- Выбираем «Добавить локальный принтер»;
- Выбираем «создать новый порт», тип порта: «Standard TCP/IP Port»;
- Указываем IP-адрес принт-сервера, имя порта (на своё усмотрение), Снимаем галку «Опросить принтер и выбрать драйвер автоматически»;
- На следующем шаге компьютер попытается определить автоматически номер порта, это займёт некоторое время и, вероятнее всего, закончится неудачей (но можно не беспокоиться, это нормально);
- В появившемся следующем окне выбираем тип устройства «Особое» и жмём «Параметры»;
- Указываем номер порта, который слушает принт-сервер для данного принтера (9100, 9101 и т.д.), проверяем, что указан протокол: «Raw»;
- Далее устанавливаем драйвер принтера, либо выбираем ранее установленный.
Источник
Настройка Принт-сервера на примере TL-WR842ND и HP LJ 1020 с использованием p910nd
Версия прошивки OpenWrt: OpenWrt Attitude Adjustment 12.09-rc1 / LuCI 0.11 Branch (0.11+svn9425)
Устанавливаем необходимые для работы принт-сервера пакеты и редактор nano, для комфортного редактирования файлов конфигурации
Многие принтеры от Hewlett Packard для печати требуют особый набор команд (прошивку), которые необходимо загружать до начала печати. Всем известный Олег, выложил некоторые прошивки на своем сайте. Посмотреть названия файлов можно по ссылке http://oleg.wl500g.info/hplj Нам нужен драйвер от HP 1020 — выбираем sihp1020.dl (А для МФУ hp M1005, например нужен sihp1005.dl) Переходим в каталог, где будем хранить прошивку и загружаем ее
Для того чтобы загрузка прошивки происходила автоматически, при каждом подключении принтера создадим файл
В который добавим следующую информацию
Обратите внимание на запись 3f0/2b17 — это VID и PID принтера HP LJ 1020 (Первые нули удаляются 0 3f0). У другой модели, они будут другие. Узнать можно например из панели управления в Windows ну или подключив принтер к роутеру и набрав команду:
Откуда и получите эти данные:
Следующие две команды найдены на польском форуме, истинное значение мне пока не ясно. У меня пару раз без них не работало
Открываем файл конфигурации p910nd
где меняем один параметр — вместо /dev/lp0 пишем /dev/usb/lp0
Открываем в файрволе доступ к принтеру из сети по порту 9100, для этого редактирум файл конфигурации файрвола
В самый конец дописываем следующие строки
Настройка почти закончена… Осталось только включить демона принт-сервера в автозагрузку и перезагрузить роутер
- Last modified: 2013/02/22 05:18
- (external edit)
Self-registration in the wiki has been disabled.
If you want to contribute to the OpenWrt wiki, please post HERE in the forum or ask on IRC for access.
Except where otherwise noted, content on this wiki is licensed under the following license:
CC Attribution-Share Alike 4.0 International
Источник
OpenWRT.su
Open.Wireless.Super and LEDE
Принт-сервер p910nd OpenWRT на примере Samsung SCX-3400
До недавних пор нам хватало обычного USB подключенного принтера Samsung SCX 3400 для всех наших нужд. Но с ростом количества компьютеров, ноутбуков и даже смартфонов, которые им пользуются, было принято решение сделать из обычного USB принтера беспроводной, а на помощь нам как раз подоcпела одна из моих любимых коробочек TP-Link MR3020 с OpenWRT на борту. Тем самым отпала необходимость держать свой ноутбук, к которому был подключен принтер ранее, постоянно включенным, дабы другие участники сети имели к нему доступ. Ну и, конечно, освободил USB порт на ноутбуке для других задач.
Устанавливаем необходимые пакеты
opkg update
opkg install kmod-usb-printer
Пакет kmod-usb-printer собственно обеспечивает нам поддержку самого USB принтера в OpenWRT.
opkg install p910nd
А пакет p910nd представляет собой небольшой демон сервера печати, который копирует любую информацию, которая поступает через указанный порт на принтер, работая в фоновом режиме.
Если будите настраивать все используя веб-интерфейс LuCI, то нужно еще установить:
opkg install luci-app-p910nd
Ну а если еще ваша душа желает, чтобы все было в настройках по-русски:
opkg install luci-i18n-p910nd-ru
Если ваш OpenWRT роутер жалуется, что у вас не хватает дисковой памяти, то можете ее расширить имея под рукой флешку и немного времени.
Настройка Принт-сервера при помощи UCI
Настроить все можно из под встроенной командной оболочки BusyBox – Ash Shell. Актуально для тех, кто борется за размер прошивки и уже давно вырезал LuCI и настраивает все при помощи команд UCI. Сначала заходим по сетевому протоколу SSH на наш роутер при помощи, например, программы PuTTY. Вводим IP роутера, протокол SSH и жмем соединиться. Вводим логин root, пароль и получаем доступ к оболочке. Для начала втыкаем наш принтер в USB порт роутера и смотрим, определился ли он:
dmesg | grep printer
Если все хорошо, в ответ получаем что-нибудь типа этого:
usblp 1-1:1.1: usblp0: USB Bidirectional printer dev 4 if 1 alt proto 2 vid 0x04E8 pid 0x344F
Таким образом OpenWRT видит наш USB принтер и назначило ему устройство usblp0. Далее
uci show p910nd
Получим список конфигов нашего демона принт-сервера, что-то типа такого:
p910nd.@p910nd[0]=p910nd
p910nd.@p910nd[0].device=’/dev/usb/lp0′
p910nd.@p910nd[0].port=’0′
p910nd.@p910nd[0].bidirectional=’1′
p910nd.@p910nd[0].enabled=’0′
Вторая строка гласит, что устройство определил он верно usb/lp0. Третья строка с параметром port=’0’ устанавливает на какой порт нашего роутера нужно будет отсылать команду на печать. IP адрес моего роутера 192.168.0.1, если параметр port установлен в 0 то доступен принт-сервер будет по адресу http://192.168.1.1:9100. Если установите в 1, то по адресу http://192.168.1.1:9101 и так далее.
4й параметр bidirectional указывает на то, что принтер может обмениваться информацией с инициатором печати, а 5й параметр enabled собственно и включает всю нашу сборную солянку в работу. Таким образом, нам надо было только изменить последний параметр, а сделать это можно следующей командой:
uci set p910nd.@p910nd[0].enabled=1
и подтвердить изменение в конфигах
после чего запустить наш принт-сервер:
Ну и добавить его в автозагрузку:
Дальше открываем любой браузер, в адресной строке вводим 192.168.1.1:9100 и наблюдаем как Samsung SCX – 3400 моргает нам зеленым глазком состояния. Перегружаем роутер чтобы закрепить результат:
Настройки межсетевого экрана OpenWRT в uCI для корректной работы Принт-сервера p910nd
uci add firewall rule
uci show firewall
Смотрим порядковый номер правила, которое только что создалось:
У меня допустим это 10. Далее задаем собственно само правило, начнем с названия:
uci set firewall.@rule[10].name=’PrintServer’
Потом указываем зз каких интерфейсов чтобы был доступен принтер, * — из любых, lan — только локальная сеть, wwan — только wifi и т.д.
uci set firewall.@rule[10].src=’*’
Какой порт открыть для доступа
uci set firewall.@rule[10].dest_port=’9100′
uci set firewall.@rule[10].target=’ACCEPT’
Внести изменения в конфиги
Перезагрузить конфиги в фаерволл
Настройка Принт-сервера при помощи веб-интерфейса LuCI
После установки необходимых пакетов, указанных в начале статьи, у нас появится пункт меню Сервисы – p910nd сервер печати. Открываем его и переходим к настройке:
Если бывает, что вас принт-сервер не отвечает после одной печати, можно отключить двунаправленный режим, бывает спасает от забитого порта. Ну и конечно, можно выбрать интерфейс с какого можно будет отправлять вам на печать документы, у меня например он не определен — документы на печать прилетают и из локальной сети, так же от устройств подключенных к Wi-Fi сети. Но для этого нужно открыть порт принтера в межсетевом экране OpenWRT.
Настройки межсетевого экрана OpenWRT в LuCI для корректной работы Принт-сервера p910nd
Переходим в меню Сеть -> Межсетевой экран, вкладка Правила траффика и создаем правило:
Таким вот макаром отроем порт 9100 принтера всем из любой сети, кто захочет им воспользоваться. Незабываем сохраняться и применять правила межсетевого экрана.
Настройка сетевого принтера в Windows 10
Заходим в панель управления — > Оборудование и звук — > Устройства и принтеры — > Добавление принтера. Windows поищет-поищет но не найдет, после чего нужно нажать пункт «Необходимый принтер отсутствует в списке». Далее в списке выбрать «Добавить принтер по его TCP/IP-адресу или имени узла». Тип устройства — Устройство TCP/IP. Имя или IP-адрес — здесь указываем адрес нашего роутера в сети. у меня это 192.168.0.104. Имя порта он пишет автоматически не нужно его править. Затем начинается новый поиск порта нашего принтера. Опять выйдет сообщение что устройство не найдено. Далее ждем далее ничего не меняя, в следующем окне находим производителя и модель своего принтера или устанавливаем дрова с диска, далее использовать уже установленный драйвер, потом задаете имя принтера какое вашей душе угодно и пробуете печать пробной страницы.
Комментарии
#!/bin/sh
VID_PID=»3f0/3817″ # LaserJet P2015 series
SERVICE=»/etc/init.d/p910nd»
[ «$VID_PID» = «$(echo $PRODUCT | cut -d/ -f1-2)» ] || exit 0
[ «$ACTION» = add ] && «$SERVICE» start
[ «$ACTION» = remove ] && «$SERVICE» stop
Тут само словосочетание «по умолчанию в OpenWRT» уже некорректно — речь нужно вести о конфигурации по умолчанию для конкретного девайса: OpenWRT поддерживает огромное число девайсов, в т.ч. и без USB-порта, и с 4МБ flash — в таких аппаратах по очевидным причинам (бессмысленно — в первом случае, нехватка flash — во втором) не предустановлено упомянутых модулей. Но вот конфигурация без внесения каких-либо изменений из скачанного репозитория v. 18.06.02 :
Источник