Не печатает принтер openwrt
Опишу собственно процесс перепрошивки на OpenWRT и настройки принт-сервера на карманной точке MR3020 от TP-Link.
- Перепрошивка на OpenWRT.
- Качаем последнюю сборку.
- Подключаемся к точке кабелем и перепрошиваем стандартно через веб-морду. (Подробнее о прошивке)
- Настройка подключения по WiFi.
- Заходим в веб-морду прошивки OpenWRT.
- Идем Network => WiFi.
- Жмем Scan на WiFi интерфейсе.
- Выбираем из списка свою WiFi сеть, жмем Join Network.
- Вводим пароль и жмем Submit.
- Проверяем наличие интернета.
- Теперь собстно доустановка нужных нам пакетов на точку, можно устанавливать как в веб-морде, так и по SSH(в конце поста).
- Идем в System => Software.
- Жмем Update lists.
- Переходим Available packages.
- В строке Download and install package устанавливаем пакеты kmod-usb-printer, kmod-usb2, luci-app-p910nd и p910nd
- В появившемся меню Services настраиваем принтер, в строку Devices ставим /dev/usb/lp0, также можно изменить порт.
- Сохраняемся и перезагружаемся. (Подробнее о установке принт-сервера p910nd)
- Добавление правила в фаерволле.
- Идем в Network => Firewall => Traffic Rules и жмем Add в секции Open ports on router.
- Настраиваем правило согласно скрину.
После перепрошивки и настройки интернета по WiFi коннектимся по SSH.
Добавляем правило в /etc/config/firewall
Также правим /etc/config/p910nd
config p910nd
option device /dev/usb/lp0
option port 0
option bidirectional 1
option enabled
Принт-сервер 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'
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
Устанавливаем необходимые для работы принт-сервера пакеты:
В Luci заходим Сервисы -> p910nd – сервер печати и ставим галочку на «включить» и перезагружаем роутер.
Или выполняем следующую команду:
Включаем принтер, и подключаем его к маршрутизатору. В консоли мы должны увидеть что-то похожее:
Далее устанавливаем драйвера нашего принтера в Windows.
После этого идем в Панель управления – Устройства и принтеры и нажимаем «Добавление принтера»:
Выбираем «Нужный принтер отсутствует в списке»:
Вводим IP адрес нашего маршрутизатора:
Начнется поиск порта, дожидаемся окончания:
Появится новое окно, где надо выбрать «Особые», и нажать на кнопку «Параметры»:
В появившемся окне нужно убедится что имя порта и ip принтера соответствуют адресу нашего маршрутизатора, протокол установлен в «Raw», а номер порта Raw установлен «9100»:
Жмем «ОК» и «Далее», в появившемся окне выбираем недавно установленный драйвер, в моем случае это Canon MP280:
Нажимаем «Далее», оставляем выбранным «Использовать уже установленный драйвер»:
Далее указываем название принтера:
Разрешаем общий доступ, если это необходимо:
Принтер установлен, можно произвести тестовую печать:
Принтер настроен и готов к работе.
Настройка сетевого принтера в OpenWrt: 2 комментария
А если у меня локально подключенный к W7 принтер не хочет печатать по причине отсутствия дров (на 64 бита не нашлись для Canin 810), то сетевой принтер меня не спасёт?
Не хочу всякие виртуал боксы и тд ковырять, да и принтер менять то же. Не на 32 бита же винду вертать.
Собственно имеем LJ 1018 и много любителей попечатать. При всех моих проектах денег на новый принтер не предвидится, поэтому пришлось выкручиваться. Тем более картридж только поменял.
Старый роутер ASUS имел кастомную прошивку с поддержкой этих "тупых" принтеров от HP — у них прошивка лежит в файле драйвера и работать отдельно от ПК они изначально не предназначены. В связи с переходом на новый роутер появилась потребность в принтсервере.
В ТЗ было: чтобы мало жрал электричества и чтобы недорого. Конечно в хозяйстве найдутся "ДРОВИШКИ" чтобы системник собрать, но жрать он будет все же не мало, поэтому я стал рыть в сторону openWRT для роутеров. Линукс в эмбедах всему голова. А в качестве подопытного приглянулся TP-LINK 3020 — низкая цена, мизерное потребление, неплохие возможности и КУЧА готовых прошивок, а это позволит сэкономить драгоценное время.
Постараюсь покороче и по делу.
Я ничего не изобретал, просто пристроил готовенькое как мне удобно.
Постараюсь изложить так, чтобы было легко повторить.
Нам требуется превратить наш TP LINK 3020 в принтсервер — для этого нам нужно поставить на него openWRT. Я выбрал самый простой вариант — CyberWRT — сборка напичкана кучей модулей и главное — графическим интерфейсом. Из удобного — есть веб терминалка и веб файлменеджер — можно настраивать хоть с тапка. Для элегантных решений не очень подходит — слишком громоздко, но повторюсь, я выбирал САМЫЙ ПРОСТОЙ ПУТЬ.
Скачиваем прошивку для MR3020
Прошиваемся по инструкции
!ОБРАТИТЕ ВНИМАНИЕ!
Можно выбрать один из режимов: «Точка доступа» и «Клиент Wi-Fi сети». Для настройки режима Клиента:
— выберите режим «Клиент Wi-Fi сети»
— IP адрес Вашего устройства (по этому адресу будет доступно Ваше устройство. Постарайтесь выбрать незанятый IP. Например: 192.168.1.100)
— Маска подсети (255.255.255.0)
— Шлюз (например, IP Вашего домашнего роутера или шлюза — 192.168.1.1)
— Тип шифрования (тип шифрования, используемый в Вашей домашней сети)
— Пароль (пароль, для доступа к Вашей домашней сети)
ВНИМАНИЕ! ЧЕРЕЗ WI-FI У ВАС ЕСТЬ ТОЛЬКО ОДНА ПОПЫТКА ПРАВИЛЬНО НАСТРОИТЬ РЕЖИМ КЛИЕНТ. ЕСЛИ ВЫ ГДЕ-ТО ОШИБЛИСЬ, ПРИДЕТСЯ НАСТРАИВАТЬ ЧЕРЕЗ LAN.
— Еще раз все проверьте и нажмите кнопку сохранить.
— Обязательно проверьте какой канал у Вас выбран на шлюзе(основном домашнем роутере) в CyberWrt для WiFi доступны каналы с 1 по 11
— Дождитесь полной загрузки страницы, и после этого ваше устройство будет доступно по адресу, выбранному после настройки.
Если Ваше устройство оказалось недоступно, подключите Ваше устройство к ПК через сетевой кабель. В настройках сетевой карты, укажите IP адрес 192.168.100.хх
Ставим принтсервер p910nd
Заходим в роутер по IP 192.168.1.X(то, как Вы его настроили)
Устанавливаем на нем модуль "Файловый менеджер" и "Terminal" или подключится к роутеру по telnet/ssh
принтер пока не включаем в USB!
вводим в терминале команды
ждем обновления репозитория
opkg install kmod-usb-printer
ждем 1-2 минуты пока установятся все дрова
opkg install p910nd
и лезем в /etc/config/ ищем p910nd и рядом с ним жмем карандашик.
откроется редактор и в нем меняем
option enabled 0
НА
option enabled 1
ДОЛЖНО БЫТЬ ТАК
____________________________
config p910nd
option device /dev/usb/lp0
option port 0
option bidirectional 1
option enabled 1
____________________________
if ls -la /dev/usb/lp0 | grep 129143
then
echo "`date` : shit script — deleting file /dev/usb/lp0" >> /tmp/hp1018.log
rm /dev/usb/lp0
echo "`date` : shit script — replug the printer to use it" >> /tmp/hp1018.log
fi
Этот скрипт пишет ЛОГ в TMP/hp1018.log — Это помогло мне разобраться с одним из ноутов, который делал мозги мне.
ИЗНАЧАЛЬНАЯ ИНСТРУКЦИЯ
ФАЙЛЫ ПРОШИВОК ДЛЯ ПРИНТЕРОВ HP
В нашем случае нужен 1018
Файл прошивки кладем сюда: /usr/lib/sihp1018.dl
ДАЛЕЕ В терминале(можно открыть во второй вкладке)
пишем: /etc/init.d/p910nd enable
потом пишем reboot
Втыкаем принтер как роутер прогрузится — он должен инициализироваться со знакомыми звуками.
Firewall в CyberWRT нет — он у нас работает как клиент — он не нужен, эти шаги можно опустить.
С роутером все, далее надо настроить принтер на каждом ПК.
Принтеры и факсы > Установка принтера > Локальный принтер > Создать новый порт (Standard TCP/IP Port) > IP адрес: 192,168,1, XXX, порт: 9100 > Установка драйверов принтера ВРУЧНУЮ!
Если Ваш принтер будет как дэбил печатать одну страницу без остановки — в свойствах порта принтера снимаем чекбокс "Разрешить двусторонний обмен данными"
НЕ ПРЕТЕНДУЮ НА АВТОРСТВО.
ВАЖНО — кабель роутер — принтер должен быть хорошего качества и небольшой длины!
Все, старичок нам теперь еще послужит, а если разобраться, то к этому роутеру можно еще много чего прикрутить.
Читайте также: