Принт-сервер на RaspberryPI
Долго меня мучала идея из старенького RPI сделать принт-сервер (удаленная печать и сканирование) и наконец я до этого добрался.
Исходим из того, что у нас есть набор из RPI, флешки с Raspbian, Wi-Fi адаптера, принтера HP LaserJet Pro 1102, МФУ HP Deskjet F2180 и usb-хаба. Основная машина (ББ), которая будет использовать принт-сервер живет на Linux (впрочем, отличия в использовании для Windows будут минимальны).
ssh (пустой) — включает ssh;
wpa_supplicant.conf, который содержит данные для подключения к нашему wi-fi:
Он стал печатать, но очень медленно и иногда тупо пропуская мои команды.
Я оставил конфигурацию с этим драйвером, поскольку она позволяет печатать с любого устройства без установки драйверов, хоть и долго и в основном одностранично. Для больших же объемов пришлось настроить другую конфигурацию того же принтера в CUPS.
Мы воспользуемся xinetd, чтоб сэмулировать HP-jetdirect-принтер. Для начала установим xinetd:
Запустим:
Всё, теперь главное установить драйвер на ту машину, с которой печатаем и вуаля — большие объемы печатаются с нормальной скоростью.
Для сканирования нам нужен sane
sudo sane-find-scanner
В случае с HP Deskjet F2180 сканера вы, скорее всего, не увидите.
Ставим драйвера от hp:
Далее на удаленном линухе установливаем sane и sane-utils и лезем в /etc/sane.d/net.conf, чтобы в самом низу добавить адрес RPI
К сожалению, на удаленной машине sudo scanimage -L выдал.
Исходим из того, что у нас есть набор из 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Затем установим CUPSsudo apt-get install cupsЧтобы можно было управлять принтерами в CUPS надо добавить какого-нибудь юзера в группу lpadmin. Исходим из того, что мы работаем под дефолтным юзера — pi. Вот его и добавим:sudo usermod -a -G lpadmin piПоскольку принт-сервер находится в домашней сети, разрешаем ему быть доступным для всех, а затем рестартим:sudo cupsctl --remote-any
sudo /etc/init.d/cups restartВ принципе у нас есть готовый CUPS, который доступен по адресу 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. В итоге наш принтер будет иметь сетевую ссылку 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 закрыт. Что ж, еще немного поконфигурируем xinetdsudo 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.
Похожие публикации
WSL: обновление до WSL --version 2
ProxMox: Расширяем диск LVM.
Нет комментариев