Принт-сервер на RaspberryPI 1

в 11:18, , рубрики: cups, HP Deskjet F2180, HP LaserJet Pro 1022, Raspberry Pi, raspbian, sane, системное администрирование

image

Долго меня мучала идея из старенького RPI сделать принт-сервер (удаленная печать и сканирование) и наконец я до этого добрался.

Исходим из того, что у нас есть набор из RPI, флешки с Raspbian, Wi-Fi адаптера, принтера HP LaserJet Pro 1022, МФУ HP Deskjet F2180 и usb-хаба. Основная машина (ББ), которая будет использовать принт-сервер живет на Linux (впрочем, отличия в использовании для Windows будут минимальны).

Подготовка

Дабы не коннектиться к RPI по проводу, добавим автоподключение по wi-fi. Для этого вставим флешку с Raspbian в ББ и зайдем на /boot, где создадим 2 файла:

  • ssh (пустой) — включает ssh;
  • wpa_supplicant.conf, который содержит данные для подключения к нашему wi-fi:
    network={
       ssid="YOUR_SSID"
       psk="YOUR_PASSWORD"
       key_mgmt=WPA-PSK
    }

В RPI вставляем флешку, wi-fi адаптер (напрямую, а не в хаб — он для принтеров), подключаем питание. Через минуту залазим на wi-fi роутер, чтобы узнать адрес, что он выдал RPI, и заходим на него по SSH.

Выполним конфигурацию RPI запустив raspi-config.
Если вас не устраивает адресация по IP, то можно настроить имя хоста, чтоб работать через mDNS. Пишем имя в /etc/hostname и в /etc/hosts например, printserver.local, коммитим изменения sudo /etc/init.d/hostname.sh и уходим в reboot. После перезагрузки RPI через mDNS будет доступен по адресу printserver.local. Для Linux mDNS работает по умолчанию, а для Windows надо поставить службу печати Bonjour

Ставим CUPS

Вначале выполним

sudo apt-get update && sudo apt-get upgrade

Затем установим CUPS

sudo apt-get install cups

Чтобы можно было управлять принтерами в CUPS надо добавить какого-нибудь юзера в группу lpadmin. Исходим из того, что мы работаем под дефолтным юзера — pi. Вот его и добавим:

sudo usermod -a -G lpadmin pi

Поскольку принт-сервер находится в домашней сети, разрешаем ему быть доступным для всех, а затем рестартим:

sudo cupsctl --remote-any 
sudo /etc/init.d/cups restart

В принципе у нас есть готовый CUPS, который доступен по адресу https://printserver.local:631/ и, вероятно, для многих принтеров он подойдет и таким (но печать будет медленной). Правда, не в нашем случае.

Принтер HP LaserJet Pro 1022

Для этого зверя в стандартной поставке подходящих драйверов не нашлось. Пришлось поставить драйвер от foomatic:

sudo apt-get install printer-driver-foo2zjs-common printer-driver-foo2zjs

и выбрать другой драйвер для этого принтера в админке: HP LaserJet 1022 Foomatic/foo2zjs-z1

Он стал печатать, но очень медленно и иногда тупо пропуская мои команды.

Я оставил конфигурацию с этим драйвером, поскольку она позволяет печатать с любого устройства без установки драйверов, хоть и долго и в основном одностранично.
Для больших же объемов пришлось настроить другую конфигурацию того же принтера в CUPS.

Мы воспользуемся xinetd, чтоб сэмулировать HP-jetdirect-принтер. Для начала установим xinetd:

sudo apt-get install xinetd

Теперь сконфигурируем наш сервис для xinetd:

service hp-jetdirect
{
       socket_type = stream
       protocol = tcp
       wait = no
       user = pi #наш юзер здесь
       server = /usr/bin/lp
       server_args = -d HP_LaserJet_Professional_P1102_direct -o raw 
       groups = yes
       disable = no
}

HP_LaserJet_Professional_P1102_direct — то, как будет называться профиль jet-direct-принтера в CUPS.
Запустим:

/etc/rc.d/xinetd start

Теперь проходим в админку и создаем новый принтер с именем HP_LaserJet_Professional_P1102_direct. Главное выбрать вот этот драйвер: Local Raw Printer. В итоге наш принтер будет иметь сетевую ссылку https://printserver.local:631/printers/HP_LaserJet_Professional_P1102_direct, которую нужно использовать при настройке печати на ББ.

Всё, теперь главное установить драйвер на ту машину, с которой печатаем и вуаля — большие объемы печатаются с нормальной скоростью.

Сканер HP Deskjet F2180

Вообще-то, это не сканер, а МФУ, но я его используют только как сканер.
Для сканирования нам нужен sane

sudo apt-get install sane

Затем воспользуемся утилитой, что позволяет посмотреть, что у нас есть за сканеры

sudo sane-find-scanner

В моем случае сканеров не оказалось. Ок.
Ставим драйвера от hp:

sudo apt-get install hplip

Теперь повторим поиск:

found USB scanner (vendor=0x0424, product=0xec00) at libusb:001:003

Отлично, теперь попробуем глянуть может ли наш сканер принимать команды

pi@PrintServer:~ $ sudo scanimage -L 
device `hpaio:/usb/Deskjet_F2100_series?serial=CN78R4R3PB04TK' is a Hewlett-Packard Deskjet_F2100_series all-in-one

то есть, на RPI сканер работает.

Далее на удаленном линухе установливаем sane и sane-utils, а лезем в /etc/sane.d/net.conf, чтобы в самом низу добавить адрес RPI

К сожалению, на удаленной машине sudo scanimage -L выдал.

No scanners were identified. If you were expecting something different, check that the scanner is plugged in, turned on and detected by the sane-find-scanner tool (if appropriate). Please read the documentation which came with this software (README, FAQ, manpages).

Просканировав порты RPI увидел, что порт 6566 закрыт. Что ж, еще немного поконфигурируем xinetd

sudo nano /etc/xinetd.d/sane-port

Вставляем

service sane-port
{
       socket_type = stream
       port       = 6566
       wait       = no
       user       = root
       group      = root
       server     = /usr/sbin/saned
       disable    = no
}

Выходим, сохраняем и рестартим сервис:

sudo service xinetd restart

Повторяем на удаленной машине sudo scanimage -L и видим

device `net:printserver.local:hpaio:/usb/Deskjet_F2100_series?serial=CN78R4R3PB04TK' is a Hewlett-Packard Deskjet_F2100_series all-in-one

То что надо. Можно приступать к сканированию запустив xsane.

Спасибо за внимание.

Использовано

http://www.raspberry-pi-geek.com/Archive/2013/01/Converting-the-Raspberry-Pi-to-a-wireless-print-server

https://samhobbs.co.uk/2014/07/raspberry-pi-print-scanner-server

https://blog.johanv.org/posts/old/node-195.html

http://lib.ru/unixhelp/linuxset.txt

Автор: Василий

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js