Pull to refresh

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

Reading time4 min
Views48K

image


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


Исходим из того, что у нас есть набор из RPI, флешки с Raspbian, Wi-Fi адаптера, принтера HP LaserJet Pro 1102, МФУ 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 1102


Для этого зверя в стандартной поставке подходящих драйверов не нашлось. Пришлось поставить драйвер от 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 Deskjet F2180 сканера вы, скорее всего, не увидите.
Ставим драйвера от 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.


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


upd praeivis xsane есть под Windows


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


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

Tags:
Hubs:
Total votes 20: ↑17 and ↓3+14
Comments17

Articles