Принтер Openwrt не печатает

Обновлено: 01.07.2024

CUPS для Openwrt/LEDE

Если вы хотите установить cups на свой маршрутизатор openwrt/openwrt-LEDE, чтобы совместно использовать USB-принтер по сети или включить AirPrint на вашем USB/сетевом принтере, выполните следующие действия. Если вы выполните этот шаг, вы сможете печатать через устройства iOS, Android, macOS, Linux и Windows.

Вам также необходимо знать, работает ли на вашем маршрутизаторе openwrt версия LEDE или нет.

Если на вашем маршрутизаторе установлена ​​прошивка LEDE, выполните следующие действия, чтобы скомпилировать пакет cups. Для выполнения этих шагов у вас должен быть компьютер с Linux.

убедитесь, что установлены все зависимости для компиляции пакета

(настройте целевую систему на "Платформу" вашего маршрутизатора и установите Network->Printing->cups как "M")

Этот шаг займет некоторое время, так что идите выпейте кофе!

Если вы попытаетесь скомпилировать с пользователем root, вы получите ошибки. Чтобы иметь возможность скомпилировать, вы должны ввести эту команду:

скопируйте следующие пакеты на маршрутизатор с помощью команды scp:

вы также можете обновить libjpg, если хотите

Пакет scp root@192.168.1.1:/DESTINATION/ИМЯ ПАКЕТА

Если IP-адрес вашего маршрутизатора не 192.168.1.1, измените его! если у вас есть крепление USB-устройства на маршрутизаторе, загрузите пакет на USB-устройство

установите пакеты с помощью:

если на вашем маршрутизаторе не установлена ​​версия LEDE, просто запустите:

opkg установить чашки

Если у вас есть скомпилированная версия cups (LEDE), запустите это:

opkg установить **package.ipk**

Вы можете установить несколько пакетов одновременно.

Вам также необходимо установить avahi-demon.

opkg установить avahi-daemon

chmod 700 /usr/lib/cups/backend/usb

Измените конфигурацию чашек, чтобы иметь возможность изменять конфигурацию чашек по сети!

Порядок Разрешить, Запретить Разрешить От 127.0.0.1 Разрешить От 192.168.1.0/24 AuthType Basic AuthClass Система Порядок Разрешить, Запретить Разрешить От 127.0.0.1 Разрешить От 192.168.1.0/24 ">

Настройте принтер в чашках.

Добавьте свой принтер. Если ваш принтер подключен через USB, вы должны увидеть это на экране. Если ваш принтер является сетевым принтером, вам придется настроить его вручную. Вы выберете протокол, совместимый с вашим принтером. Лично я настроил свой с протоколом сокета.

Вы можете найти файл ppd вашего принтера, но у airprint могут возникнуть проблемы.

Запишите имя и описание принтера, поскольку они понадобятся вам для настройки Airprint

создайте следующий файл

И вставьте это. Замените все "YOUR_PRINTER" именем, указанным в конфигурации чашек.

Альтернативы p910nd можно найти в обзоре сервера печати.

Требования

USB-порт

Теперь подключите принтер, запустите dmesg и найдите строки, похожие на следующие:

В более старых версиях создается устройство /dev/usb/usblp0. Более поздние версии создают обычное устройство /dev/lp0 даже для USB-принтеров. (Attitude Adjustment 12.09 фактически создает /dev/usb/lp0).

СОВЕТ: сообщается, что p910nd работает с некоторыми безымянными адаптерами/преобразователями USB-to-Parport

Параллельный порт

Проверьте вывод dmesg . Если есть узел устройства /dev/printers/0, установка прошла успешно.

СОВЕТ: сообщается, что p910nd работает с некоторыми безымянными адаптерами/преобразователями USB-to-Parport

Установка

Командная строка

или через luci.essentials: выберите «Просмотр администрирования» и «Система» → «Программное обеспечение» ). В случае ошибки попробуйте обновить список пакетов.

Установите пакеты: luci-app-p910nd и p910nd. Конфигурация выполняется (представление Администрирование) через Службы → p910nd - Сервер печати.

Настройка, часть 1 — сервер

Мы рекомендуем настраивать вручную. Но для ленивых могут быть инструкции по настройке сети с нулевой конфигурацией для использования автоматического программного обеспечения.

Подавлять буферные задания, когда принтер включен

Если ваш принтер (мой hl-2030) выдает мусор после включения питания, причиной может быть p910nd. Добавьте это в /etc/hotplug.d/usb/20-printer

Где «$PRODUCT» = «4f9/27/100» — ваши принтеры VendorId/ProductId/BcdVersion (1,00 = 100). Получите это с помощью lsusb -v

Возможно, вам потребуется добавить «-INT» к команде kill в /etc/init.d/p910nd, чтобы остановить работу.

Объявлять принтер с помощью записей TXT (необязательно)

Чтобы не устанавливать принтер на несколько клиентов, его можно объявить с помощью txt-записей, чтобы клиенты с поддержкой ZeroConf могли его автоматически использовать.

С dnsmasq

ZeroConf использует txt-записи для рекламы услуг в локальной сети. Из-за большого количества раздражающих параметров конфигурации мы можем использовать dnsmasq, который по умолчанию включен в OpenWrt, для достижения этой цели.

Создайте или отредактируйте файл /etc/dnsmasq.conf и добавьте следующие строки.

Ключевое слово lan в записи txt относится к имени локального домена OpenWrt по умолчанию — вам необходимо изменить его, если вы используете другой локальный домен.

0.1.Ключевое слово 168.192 в записи ptr относится к сетевому диапазону OpenWrt по умолчанию, октеты перевернуты — вам нужно изменить его, если вы используете другой диапазон.

MIME-тип _pdl-datastream сопоставляется с типом службы «HP JetDirect». другие параметры: _printer и _ipp (но тогда эти принтеры обычно имеют встроенный Ethernet)

Вы можете разделить txt-запись, но я обнаружил, что большинство клиентов bonjour ожидают получить всю информацию в одной записи (мне хотелось бы, чтобы меня опровергли).

С Zeroconf

Подобно варианту dnsmasq выше, то же самое можно сделать с помощью Avahi.

В спецификации Apple Bonjour Printing в значительной степени обсуждается, что необходимо сделать для рекламы принтера в сети.

Например, Brother HL-2030, «программный принтер» (не поддерживает Postscript или PCL, вся обработка выполняется на клиенте), совместно используемый через p910nd:

Создайте файл /etc/avahi/services/printer.service :

Требуются записи usb_MFG и usb_MDL TXT. продукт используется в качестве запасного варианта на случай, если два других не существуют.

Записи txt с именами Color , Duplex , Bind , Collate , Sort , Staple и Punch принимают значения F = False, T = True и U = unknown. Установленный драйвер принтера должен заменить эти значения правильными значениями по умолчанию.

Теперь принтер будет отображаться в любом клиенте Zeroconf (протестировано с OS X 10.4.10 и Ubuntu 12.04).

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

Настройка, часть 2. Клиенты

ПРИМЕЧАНИЕ. По умолчанию p910nd использует порт TCP 9100 на устройстве /dev/usb/lp0 .

Вы можете проверить, какие порты прослушивает p910nd, с помощью команды

Клиенты Linux

Затем вы можете использовать новый принтер так же, как и локальный.

кпринтер (KDE)

Гном

С помощью dnssd (zeroconf)

Версия с 10.4.6 по 10.10.2

Обратите внимание, что многие струйные принтеры Epson и Canon (и, возможно, других производителей) не имеют действительно полного драйвера CUPS. Если вы ничего не печатаете, попробуйте установить драйверы Gutenprint и выбрать их.

Клиенты Windows

Windows 7

На странице «Требуется дополнительная информация о порте» установите тип устройства «Пользовательский» и нажмите «Настройки…»

Выберите правильный драйвер принтера и нажмите «Далее». Возможно, вам потребуется установить драйверы, если они еще не доступны.

При необходимости выполните оставшиеся шаги мастера установки принтера. Теперь принтер должен быть установлен и работать!

Windows 2000/XP/Vista

Следующие инструкции должны работать на всех версиях Windows, начиная с 2000, и были протестированы как в Windows 2000, так и в Windows Vista.

Завершите работу мастера настроек и закройте окно "Добавить порт". Теперь должен быть выбран только что созданный порт.

Теперь ваш принтер должен быть настроен. Убедитесь, что ваш брандмауэр разрешает подключение к выбранному порту.

Устранение неполадок

Решение: убедитесь, что на вашем устройстве OpenWRT достаточно свободного места на диске, чтобы можно было временно хранить задания на печать

Решение. Установите флажок Включить дополнительные функции печати на вкладке «Дополнительно» свойств принтера в Windows. Решение было найдено здесь

Неподдерживаемые принтеры

Некоторые принтеры Canon не работают в двунаправленном режиме в сочетании с ОС на базе Windows NT. Сообщенные принтеры, которые правильно работают только в однонаправленном режиме:

p910nd обрабатывает стандартный вывод в системный журнал

Предупреждение. Это добавит/может добавить значительное количество сообщений в системный журнал, который представляет собой буфер фиксированного размера в памяти, по умолчанию состоящий из символов в кодировке utf-8/ASCII размером до 16 КБ.

Вы можете ретранслировать сообщения процесса p910nd, изменив сценарий p910nd init.d, добавив пару служебных параметров.

примечание: вам потребуется перезапустить службу, чтобы это вступило в силу

В разделе Luci → Статус → Системный журнал мы сможем увидеть информацию об отладке: например. печать пустой страницы

Это также можно прочитать через ssh с помощью команды logread

"Идеи"

Чтобы запустить HP LaserJet 1005/1018/1020/1022 на OpenWrt Backfire 10.03.1-RC5, выполните следующие действия:

Подготовка на клиентском компьютере:

Нажмите на ссылку или вырежьте и вставьте всю командную строку ниже, чтобы загрузить драйвер.

Скомпилируйте и установите его. Файл INSTALL содержит более подробные инструкции.

Получить дополнительные файлы из Интернета, например профили .ICM для цветокоррекции и встроенного ПО. Выберите номер модели вашего принтера:

Установите драйвер, XML-файлы foomatic и дополнительные файлы:

(Необязательно) Настройка горячего подключения (USB; HP LJ 1000/1005/1018/1020):

Совет. Сценарий горячего подключения используется для передачи файла встроенного ПО принтера (например, «sihp1020.dl») на принтер.Если вы не используете принтер, подключенный напрямую к клиентскому компьютеру, а только через ваш маршрутизатор с p910nd, то эта установка горячего подключения здесь не нужна (см. маршрутизатор).

(Необязательно) Если вы используете CUPS, перезапустите спулер:

Подготовка маршрутизатора:

Затем вам нужно перенести файл sihp1020.dl на компьютер Asus.

На устройстве Asus необходимо установить следующие пакеты:

Наконец, вам нужно создать сценарий, который загружает прошивку на ваш принтер после того, как вы его подключите.

Для быстрого теста вы можете просто использовать netcat для ручной загрузки прошивки на принтер (с клиентского компьютера, через маршрутизатор с установленным p910nd). Введите следующую команду на клиентском компьютере:

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

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

Создайте новый файл /etc/hotplug.d/usb/20-hplj1020:

Параметр 3f0/2b17/100 необходимо изменить, чтобы он соответствовал вашему принтеру.

Некоторые принтеры, например HP LaserJet 1005, перестают работать должным образом, если прошивка загружается более одного раза. Проверить наличие прошивки в принтере лучше всего с помощью команды usb_printerid. Вам нужно кросс-компилировать эту команду для себя. Это часть проекта foo2zjs. Кроме того, сценарий горячего подключения вызывается дважды для ДЕЙСТВИЯ «добавить» для одного и того же значения PRODUCT: сначала для DEVTYPE='usb_device', затем для DEVTYPE='usb_interface'. Поэтому следующий сценарий работает с HP LaserJet 1005:

Использовать драйвер hplip

Альтернативой описанному выше методу является «симуляция» устройства JetDirect. Я проверил это на своем HP LaserJet 1020, но должно быть применимо и к другим принтерам HP, для работы которых требуется драйвер hplip.

Короче говоря, вам нужно объявить с помощью zeroconf и ответить на один SNMP oid.

Установка и настройка p910nd

Установите приложение, настройте, запустите и включите его

Zeroconf с демоном avahi

Установите и настройте avahi-daemon, как описано в разделе «С Zeroconf» выше. Я использовал следующий файл print.service.

mini_snmpd

Программа hp-setup (от hplip) выполнит получение SNMP для oid 1.3.6.1.4.1.11.2.3.9.1.1.7.0 (gdStatusId). Я не знаю точно, какой формат должна иметь строка, но я использовал это руководство по устранению неполадок в качестве основы для информации.

Вам необходимо скомпилировать собственный пакет mini-snmpd. Дополнительные сведения об использовании SDK см. в разделе Использование SDK.

Загрузите исходный код на mini_snmpd, измените следующий патч и примените его.

Вам необходимо изменить длинную строку и заменить XXXXXXX своим серийным номером. Серийный номер можно найти с помощью следующих команд.

Это должно предоставить информацию, необходимую для MFG:, MDL: и SN: в патче выше.

Еще один способ получить эту строку — подключить ее к другому компьютеру с установленными приложениями cups и hplip. Вы можете использовать /usr/lib/cups/backend/hp, чтобы получить аналогичную строку. Я предположил, что они должны совпадать с данными, предоставляемыми через SNMP.

При перекомпиляции измените PKG_RELEASE в Makefile, чтобы он отличался от исходной версии. В противном случае вы не сможете установить только что собранный пакет.

Тестировать mini_snmpd

После того как вы установили и запустили mini_snmpd, вы можете проверить, работает ли он, с помощью следующей команды.

Завершить

Если это сработает, вы сможете использовать hp-setup для добавления сетевого принтера. Если он не отображается в списке сетевых принтеров, у вас что-то не так с частью zeroconf.

  • Последнее изменение: 15.10.2021, 04:36.
  • от bobafetthotmail

Самостоятельная регистрация на вики отключена.
Если вы хотите внести свой вклад в вики OpenWrt, отправьте сообщение ЗДЕСЬ на форуме или запросите доступ в IRC.

Если не указано иное, содержимое этой вики предоставляется по следующей лицензии:
CC Attribution-Share Alike 4.0 International

Рекомендуется использовать сервер печати p910nd без буферизации вместо CUPS на маршрутизаторе.

Это руководство содержит информацию об установке и настройке общей системы печати Unix на OpenWrt.

Установка на прошивку LEDE/OpenWrt 17+

Для LEDE/OpenWrt 17+ нет готового пакета CUPS

Основные инструкции по компиляции CUPS

Получите и настройте рабочий поддерживаемый в настоящее время buildroot

При желании скопируйте ipk на маршрутизатор и установите с помощью opkg.

(дополнительные ресурсы см. внизу)

Методы Opkg ниже предназначены для сборок до 17 и/или после компиляции ваших собственных пакетов.

Подготовка

Предпосылки

CUPS обязательно использует буферизацию, что означает, что все данные задания на печать сохраняются в буфере (на жестком диске или в ОЗУ) еще до начала печати. В зависимости от того, что вы хотите напечатать, ваши ресурсы, вероятно, настолько ограничены, что вам не следует использовать CUPS. Но, конечно, вы можете добавить ресурсы к своему оборудованию, например, подключить жесткий диск через USB.

вы не можете монтировать SWAP по сети, но вы можете монтировать любую другую файловую систему по сети и размещать там данные, см. файловая система

Необходимые пакеты

Сервер (OpenWrt)

Установка

Конфигурация

Конфигурация CUPSD

Альтернативой графическому веб-интерфейсу является конфигурация текстового файла: настройте /etc/cups/cups.conf в соответствии с man cupsd.conf. Обратите внимание, что некоторые файлы конфигурации (такие как /etc/cups/printers.conf) нельзя редактировать во время работы cups. Многие текстовые файлы cups предназначены для изменения с помощью команды lpadmin.

Проблемы с разрешениями

Если у вас проблемы с разрешениями, попробуйте изменить файл /etc/cups/cupsd.conf так, чтобы он соответствовал вашей локальной сети TCP/IP:

Устранение неполадок: требуется загрузка драйверов при включении питания?

У вас есть принтер HP Laserjet или аналогичное устройство, требующее загрузки драйвера на принтер при каждом включении? Смотрите этот пост здесь

Добавление принтеров

Обратите внимание, что вы не можете распечатать тестовую страницу на локальных чашках, потому что для этого потребуется установить ghostscript в вашей встроенной системе.

Примечания и устранение неполадок, связанных с USB-принтерами

Есть проблема с разрешениями для USB-принтеров, недоступными для записи никем, чего и ожидает CUPS. Альтернативой является создание серверной части-оболочки, которая выполняет сценарий sudo, который находит /proc/bus/usb -type f -exec chmod +rw <> \; . Дело в том, что существует проблема с разрешением между USB/udev и CUPS, препятствующая работе USB-принтеров. Кроме того, CUPS прекращает поддержку или в настоящее время имеет много проблем с поддержкой usblp.

Принтеры должны быть общими

Чтобы использовать принтеры других клиентов в вашей сети, принтеры должны быть общими. В графическом веб-интерфейсе при добавлении принтера необходимо установить флажок «Общий доступ к этому принтеру».

Добавление драйверов/файлов PPD

На самом деле у вас есть две альтернативы:

используйте принтер с очередью необработанных данных и установите драйверы (например, PPD) на своем компьютере/ноутбуке. В этом случае преобразование и подготовка файла будет производиться на вашем компьютере/ноутбуке (а не на роутере)

добавьте драйверы печати на маршрутизатор. Обратите внимание, что обычный стек «драйверов/фильтров печати в Linux» требует больше места, чем обычный маршрутизатор. Если вы расширили свое корневое пространство и хотите выполнить кросс-компиляцию, вы можете попробовать эти неофициальные пакеты openwrt-printing-packages

Совет по MacOS X

Настройте расширенные параметры принтера. Если вы используете стандартные настройки принтера и добавляете IPP-принтер, MacOS X добавит его после адреса сервера /ipp . Но этот класс и т. д. не существует на вашем cupsd.

Конфигурация клиента

На этой странице есть полезные сведения о настройке клиентов для Linux, Windows и Mac OSX:

Суть в том, что если вы добавили принтеры и пометили их как общие, все эти операционные системы должны найти его как сетевой принтер.


У меня есть Wi-Fi-принтер cannon mg3500, и он работал нормально до того, как я перепрошил свой archer c7 на openwrt. Теперь, когда я пытаюсь использовать его, принтер не найден. Есть ли какой-то сценарий сервера печати, который мне нужно установить, чтобы снова запустить его через Wi-Fi?


Нет, принтер должен работать нормально, если вы не настроили маршрутизатор иначе. Возможно, вы пытаетесь найти принтер по тому же IP-адресу, что и раньше?

Находится ли принтер в той же сети, что и клиент, с которого вы пытаетесь его использовать?

Да, в той же сети. Принтер даже не подключается к моему ssid..

Какую версию OpenWRT вы прошивали? У меня есть Archer C7 v2 и принтер Canon MX920, и у меня не было проблем с печатью или обнаружением принтера через WiFi. В прошлом у меня были старые падения OpenWRT/LEDE, но 19.07 RC2 кажется довольно стабильным, и у меня не было проблем с многоадресной рассылкой SSDP.

Уменьшите пропускную способность канала до меньшего блока. Например, с каналов 80 МГц на каналы 40 МГц или 20 МГц.

Проверьте спецификации Wi-Fi вашего принтера, на моем старом беспроводном принтере Brother это 2,4 ГГц B, мне нужно было убедиться, что моя конфигурация OpenWRT поддерживает устаревшие спецификации.

Характеристики принтера следующие: порт LAN:

Беспроводная сеть: IEEE802.11n/IEEE802.11g/IEEE802.11b

Сегодня я достаточно долго возился с этим. Завтра постараюсь получше, спасибо за все советы.

Ну, я чувствую себя очень глупо. У меня не был включен ssid 2,4 ГГц в моей основной защищенной локальной сети. У меня была включена 2.4 в моем vlan IOT вместе с включенной 5ghz. моя безопасная локальная сеть с моими телефонами, основным компьютером и ноутбуком, к которой подключались, была 5 ГГц только потому, что у меня не было подключенных устройств 2,4 Гц, или я так думал. Спасибо за все советы и извините, если я потратил чье-то время вместе со своим.

Читайте также: