LINUX.ORG.RU

Печать из Windows на принтере, который подключен к CUPS

 , ,


0

1

Всем привет!

У меня возникла необходимость сделать общий доступ к принтеру, который подключается только по сети и не имеет драйверов для Linux.

Что у меня есть:

  1. Raspberry Pi (ОС — Raspbian Lite «Bookworm») с CUPS версии 2.4.2
  2. Принтер RICOH MP 2014AD — подключен к Raspberry Pi через USB (у принтера нет ни Wi-Fi, ни Ethernet).
  3. Принтер Samsung для тестирования, что CUPS работает.
  4. Компьютер с Windows.

Задача - распечатать что-нибудь с компа Windows на принтере Ricoh.

Raspberry Pi и Windows находятся в одной сети. CUPS вроде бы настроен правильно - я могу получить доступ к CUPS из браузера Windows через порт 631, могу управлять принтерами и всем остальным.
К этому же CUPS подключен другой принтер Samsung (он по WiFi подключен). Я могу из винды печатать документы на принтере Samsung, таким образом я делаю вывод, что и сам CUPS на Raspberry у меня работает, и связь между ним и виндой есть.

Дальше, что касается принтера Ricoh. Насколько я знаю, RICOH MP 2014AD не поддерживает IPP и все эти «бездрайверные» штуки. У него есть только драйверы для Windows (ну, на самом деле у него есть драйверы для Debian, но мне не нужно ничего печатать с компьютеров на Unix и вроде бы как эти драйверы устаревшие… короче я пока для себя считаю, что их нет).

Если я настраиваю этот принтер с драйвером «Raw» в интерфейсе CUPS, я не вижу этот принтер в списке принтеров на винде (имеется в виду через стандартное добавление принтеров «Добавить новый принтер» в разделе «Принтеры и сканеры» в Windows).

Но если я ставлю этот принтер с любым другим драйвером, например «Универсальный -> PCL 6…», то Windows видит этот принтер, но он ничего не печатает.

Но из того, что я узнал о системах печати за эти три дня, я решил, что мне нужен всё таки «Raw». То есть на винде будет драйвер принтера, который преобразует всё в нужный формат и отправит в CUPS, чтобы тот всё передал в принтер «как есть». Возможно я всё понял неправильно, конечно же…

Дальше, пытаясь заставить этот Ricoh обнаруживаться в сети с компа Windows, я узнал о сервисе «Samba». Значит, установил Samba на Raspberry. Сразу он не заработал, и я выяснил, что мне также нужен сервис «wsdd».

К слову замечу, что для меня эти samba и wsdd - практически бессмысленный набор букв, я просто по инструкциям из интернета вбивал команды в консоль и правил соответствующие конфиги, когда надо было.

Так вот, установил я этот WSDD, и тогда Raspberry появился в разделе «Сеть» в проводнике Windows. А принтер Ricoh появился как бы внутри Raspberry.

В Windows я попытался «подключить» этот принтер, выбрал для него официальные драйверы под Windows - в названии драйверов, кстати, есть аббревиатура DDST.

Но он всё равно не работает — когда я нажимаю «Пробная печать», ничего не происходит. CUPS не показывает никаких заданий в своём веб-интерфейсе для этого принтера — но я не уверен, что он должен что-то показывать.

И в общем на этом, дорогие друзья, у меня идеи закончились и я прошу вашей помощи.

Правильным ли я вообще иду путём? Может вообще это сделать невозможно? Или нужен не CUPS, а что-то другое? Или в целом всё верно но где-то недокрутил?

А то я даже не знаю, какие логи и как (ну «как» - это можно нагуглить) снять для дебага.

Всем заранее спасибо.


То есть на винде будет драйвер принтера, который преобразует всё в нужный формат и отправит в CUPS, чтобы тот всё передал в принтер «как есть».

И дальше ты идёшь на форумы специалистов по Windows, которые расскажут тебе, как это сделать. CUPS, судя по всему, настроен правильно, RAW принтер принимает задания по IPP и отправляет их на печать без преобразования.

Samba не обязательна, Windows поддерживает IPP из коробки, единственное — адрес принт-сервера придётся указать по IP. Но если хочется, то можно. К тому же, на принтер, обнаруженный по SMB, Windows может начать печатать по SMB, а не по IPP (я просто не знаю, как там сейчас в Windows), и это может стать проблемой для тебя.

Правильным ли я вообще иду путём? Может вообще это сделать невозможно? Или нужен не CUPS, а что-то другое? Или в целом всё верно но где-то недокрутил?

Ты идёшь очень, очень правильным путём. Сам разобрался, сам нормально сформулировал вопрос, сам сходил в гугл. Так держать, серьёзно.

Что касается технической стороны, то, повторюсь, надо как-то научить Windows передавать документ на печать из-под драйвера не в локальный порт, а по IPP на удалённый CUPS.

Aceler ★★★★★
()
Ответ на: комментарий от Morin

Я пробовал так делать - результат был такой: после установки драйверов CUPS их вроде видит и предлагает выбрать в качестве драйверов для принтера.

В таком случае Винда видит этот принтер, но при попытке что-то напечатать, ей (винде) кажется, что всё прошло хорошо, CUPS получает задание но тут же пишет «Задание отменено пользователем».

Но я таки решил проблему (да, через две минуты после написания этого поста) и сейчас расскажу.

Disona
() автор топика

Зависит из какой винды ты хочешь печатать, 7-10-11 немного разный uri. Если кратко, то заходи браузером на страничку своего принтера в cups, копируй адрес страницы и вставляй её в поле адреса настройки принтера, для вин 10+ надо поменять протокол на ipp, вместо http.

einhander ★★★★★
()
Ответ на: комментарий от Aceler

надо как-то научить Windows передавать документ на печать из-под драйвера не в локальный порт, а по IPP на удалённый CUPS.

Спасибо за совет про «IPP» - поизучаю, что это такое.

Но! Тем временем я решил проблему. Как хорошо, что перед тем как разместить этот пост форум любезно предложил мне погуглить по уже существующим вопросам.

Я, честно говоря, неделю почти провёл в гугле по этому вопросу, поэтому ни на что надеялся, но оказалось, что ответ на похожую проблему есть

Действительно, я пошёл в добавление принтеров в винде, нажал «Добавить принтер» -> «Добавить принтер вручную» -> «Добавить принтер, используя IP-адрес».

Там дальше ввёл адрес в виде «http://<raspberry_ip>:631/printers/<printer_name>» и поставил тип устройства «Автовыбор».

И, о чудо, винда что-то поняла, предложила выбрать драйвер из списка установленных и всё заработало!

Disona
() автор топика
Ответ на: комментарий от einhander

Да, я примерно так в итоге и сделал (запостил ниже) и заработало. Только не очень понял «поменять протокол на ipp» - вы имеете в виду выбрать тип устройства?

Disona
() автор топика
Ответ на: комментарий от Disona

Всё наврал, всё перепутал, потому что перебирал судорожно все варинты.

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

А дальше да - имя «http://<raspberry_ip>:631/printers/<printer_name>» и выбрать драйвер.

Disona
() автор топика

Все это одно большое извращение. Зачем ставить арм комп в качестве принт-сервера, если у него закрытые драйвера, которых точно нет по арм? Это спорт такой, бег по граблям?

Зачем ставить целый комп вместо простой затычки jetdirect, которая банально слушает порт 9100 и отправляет все в принтер? Она не требует настройки и стоит копейки. Собственно и из распери не нужен cups, достаточно эмулировать jetdirect. Как вариант, поставить cups на обычный комп и поставить туда драйвера принтера, а уже его направить на принтер на кассе расбери с очередью raw. В этом случае печать будет отовсюду и с любых компов. Как вариант, общий принтсервер может быть в виртуалке или в докере.

usermod
()
Ответ на: комментарий от usermod

https://www.avito.ru/moskva?q=%D0%BF%D1%80%D0%B8%D0%BD%D1%82-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80+hp+jetdirect

готовые серверы jetdirect по 1000-2000 руп. Включил и работает.

а полуфабрикаты расбери от 3000 и это без корпуса. Комплект будет тысяч 10 стоить и еще и настраивать его.

Я уж не говорю, что за такие деньги можно взять x86 полноценный микрокомп и поднять на нем все эти капсы с драйверами и прочим…

usermod
()

Было дело- приручал Линукс к виндовым принтерам . Если гугля спросить то покажет две программки для винды. «Как приручить винпринтеры к линуксу» Или не имеющие драйвера для Линукса. А дальше на машине разрешить доступ всем к этим удаленным принтерам.

anonymous
()
  1. Скачиваем драйвер под Ubuntu 12.04 с сайта: https://support.ricoh.com/bb/html/dr_ut_e/apc/model/mp2014/mp2014.htm
  2. Распаковываем .exe-файл с помощью 7zip, получаем mp-2014-series-Printer-1.01.deb
  3. Устанавливаем его на Raspberry:
apt install qemu-user qemu-user-binfmt
dpkg --add-architecture i386
apt update
apt -y install --no-install-recommends libgcc-s1:i386 libstdc++6:i386 libcups2:i386 libcupsimage2:i386
apt install ./mp-2014-series-Printer-1.01.deb
  1. Добавляем принтер, указав драйвер Ricoh → RICOH MP 2014AD
  2. При добавлении принтера ставим галочку «Разрешить совместный доступ к этому принтеру»
  3. На главной странице CUPS ставим галочку «Разрешить совместный доступ к принтерам, подключенным к этой системе»
  4. На Windows заходим в интерфейс добавления нового принтера в панели управления, ждем, пока он найдётся, устанавливаем
  5. Вы великолепны

Перечисляйте 300₽ за солюшон на https://printserver.ink/

ValdikSS ★★★★★
()

Просто зачем-то дежурно замечу, как по моему ценному мнению стоит решать такое. Берём САМЫЙ дюшманский длинк с юсб-портом и поддержкой принтера (обычно в районе тыщи рублей), подрубаем принтер, втыкаем сетевой шнурок, profit.

Dispetcher14 ★★★★★
()
Последнее исправление: Dispetcher14 (всего исправлений: 1)