Найти тему
Электроника, ESP32, Arduino

Как сделать из Raspberry Pi сервер печати (Ubuntu Server 22.04.1 LTS)

Оглавление

Сервер печати CUPS в Linux. Подключение и настройка принтера HP LaserJet P1102 к Raspberry Pi. Настройка общего доступа к принтеру. Настройка печати из Windows.

Для превращения "одноплатника" Raspberry Pi в принт-сервер даже не обязательно подключать к нему мыши, клавы, мониторы - все можно сделать с рабочей станции или ноутбука под управлением Windows. Потребуется только сетевой кабель - да и с ним дело пойдет гораздо быстрее. Wi-Fi на Малине можно будет до настроить попозже.

1. Скачиваем дистрибутив Ubuntu Server 22.04.1 LTS

Install Ubuntu on a Raspberry Pi | Ubuntu

2. Скачиваем Raspberry Pi Imager

Raspberry Pi OS – Raspberry Pi

3. Устанавливаем OS на карту памяти - объем (от 8Гб)

Raspberry Pi Imager
Raspberry Pi Imager

4. Карту памяти вставляем в Raspberry, саму плату подключаем "шнурком" к домашней сети.

Подаем питание.

-2

Открываем WEB интерфейс домашнего роутера и смотрим какой IP получила "малина".

Список клиентов на домашнем роутере.
Список клиентов на домашнем роутере.

5. Скачиваем и устанавливаем приложение MobaXterm Home Edition

Версия для домашнего использования бесплатна - "кряки" не нужны.

MobaXterm free Xserver and tabbed SSH client for Windows
Меню Sessionns/New Sessionns
Меню Sessionns/New Sessionns
-5
Появляется окно терминала - вводим "дефолтный" пароль "ubuntu" и меняем на свой
Появляется окно терминала - вводим "дефолтный" пароль "ubuntu" и меняем на свой
В отличии от винды в Linux нет даже звездочек
В отличии от винды в Linux нет даже звездочек
Мы на "Малине"
Мы на "Малине"

6. Устанавливаем обновления

sudo apt update
sudo apt upgrade

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

7. Установка CUPS на компьютер с Ubuntu

Основным механизмом печати и служб печати Ubuntu является Common UNIX Printing System (CUPS). Эта система печати является свободно доступным переносимым уровнем печати, который стал новым стандартом печати в большинстве дистрибутивов Linux.

CUPS управляет заданиями на печать и очередями и обеспечивает сетевую печать с использованием стандартного протокола интернет-печати (IPP), а также поддерживает очень широкий спектр принтеров, от матричных до лазерных и многих других. CUPS также поддерживает PostScript (PPD) и автоматическое определение сетевых принтеров, а также имеет простой веб-инструмент для настройки и администрирования.

Для установки CUPS в терминале необходимо ввести команду:

sudo apt install cups

По завершении установки сервер CUPS будет запущен автоматически!

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

Поведение сервера Common UNIX Printing System настраивается с помощью директив, содержащихся в файле /etc/cups/cupsd.conf

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

Копируем /etc/cups/cupsd.conf файл и защищаем его от записи с помощью следующих команд:

sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original
sudo chmod a-w /etc/cups/cupsd.conf.original
Копия исходного файла конфигурации службы CUPS
Копия исходного файла конфигурации службы CUPS

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

Сделать это можно с помощью команды:

sudo cupsctl --remote-admin --remote-any --share-printers

Или отредактировать вручную файл cupsd.conf:

sudo nano /etc/cups/cupsd.conf

Меняем строки:

-10

на

-11

И добавляем Allow all в секции:

-12

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

sudo /etc/init.d/cups restart

Последнее, что необходимо сделать - закинуть пользователя (в моем случае единственный дефолтный пользователь с именем "ubuntu") в группу админов "чашек". Без этого действа WEB интерфейс сервера CUPS будет доступен, но производить каких-либо изменений не разрешит.

sudo usermod -a -G lpadmin ubuntu

Открываем браузер и вбиваем в адресную строку:

https://IP_МАЛИНЫ:631/admin

WEB Интерфейс сервера печати CUPS.
WEB Интерфейс сервера печати CUPS.

При попытке выполнить любые административные изменения, система запросит пароль.

Потребуется пароль от учетной записи
Потребуется пароль от учетной записи

9. Установка пакета драйверов для принтера

Сетевым я буду делать вот этот домашний принтер:

-15

Подключаем принтер по USB к Малине

-16
-17
-18

И как видим подходящего драйвера в системе нет!

Драйвера присутствующие по умолчанию в UBUNTU Server
Драйвера присутствующие по умолчанию в UBUNTU Server

Конкретно моя модель принтера работает по протоколу QPDL. Для этого протокола необходимо установить драйвер foo2qpdl.

foo2qpdl — это драйвер принтера с открытым исходным кодом для принтеров, которые используют проводной протокол QPDL для своих данных печати, таких как Samsung CLP-300 или Samsung CLP-600. Эти принтеры часто ошибочно называют winprinters или GDI-принтерами. Однако Microsoft GDI требует только API между приложением и драйвером принтера, а не протокол на проводе между драйвером принтера и принтером. На самом деле принтеры QPDL — это растровые принтеры, которые используют очень эффективный проводной протокол. QPDL — это всего лишь один из многих используемых сегодня проводных протоколов, таких как Postscript, PCL, Epson, ZjStream и т. д.

Этот драйвер использует Ghostscript для выполнения всей тяжелой работы (обработки изображений). Драйвер принтера foo2qpdl состоит из пяти основных компонентов.

  • foo2qpdl - образ страницы в движок преобразования протокола драйвера.
  • foo2qpdl-wrapper - скрипт оболочки (совместимый с foomatic), который запускает ghostscript и foo2qpdl в конвейере.
  • icc2ps - преобразовывает цветовой профиль ICM в CRD Postscript, который затем загружается в Ghostscript перед программой Postscript пользователя.
  • foomatic-db - записи базы данных foomatic, которые описывают поддерживаемые принтеры и их параметры, чтобы спулеры принтеров знали, как получить доступ к принтеру с помощью -
  • foo2qpdl-wrapper. - qpdldecode - инструмент для разработчиков, позволяющий проверять потоки QPDL.

Раньше это драйвер можно было также установить с сайта:

http://foo2zjs.rkkda.com/foo2zjs.tar.gz

Но! теперь этот ресурс недоступен. Впрочем копию этого пакета можно найти на GitHUB, скачать и установить оттуда:

GitHub - koenkooi/foo2zjs: A linux printer driver for QPDL protocol - copy of http://foo2zjs.rkkda.com/

Но самый простой способ решить данную задачу - использовать deb-пакет из официального репозитория,

https://packages.ubuntu.com/source/bionic/foo2zjs

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

sudo apt-get install printer-driver-foo2zjs
Драйвер появился в списке
Драйвер появился в списке

После добавления принтера переходим в "Управление принтерами"

Запоминаем название которое дали принтеру - оно пригодится для установки его на  машины с Windows
Запоминаем название которое дали принтеру - оно пригодится для установки его на машины с Windows

Клацаем по ссылке наименование, а там переходим в левый выпадающий список:

-22

И там выбираем печать пробной страницы:

Принтер успешно установился в Linux
Принтер успешно установился в Linux

11. Настройка Wi-Fi на Raspberry Pi

Теперь пришло самое время сделать наш будущий принт-сервер беспроводным.

Ищем имя карты WiFi:

ls /sys/class/net
-24

Редактируем файл:

sudo nano /etc/netplan/50-cloud-init.yaml
-25
Необходимо добавить следующие строки - используем только пробелы! Табуляцию использовать нельзя!!!
Необходимо добавить следующие строки - используем только пробелы! Табуляцию использовать нельзя!!!

перезагружаемся

sudo reboot

и снова удаленно входим в систему:

-27

Малина поймала адрес 192.168.0.12. Его необходимо будет зарезервировать на домашнем маршрутизаторе.

192.168.0.11 проводное / 192.168.0.12 wi-fi
192.168.0.11 проводное / 192.168.0.12 wi-fi
Резервируем на домашнем роутере - я зарезервировал оба
Резервируем на домашнем роутере - я зарезервировал оба

Сетевой кабель теперь можно отключить.

12. Установка принтера в Windows 7

-30
Выбираем общий принтер по имени
Выбираем общий принтер по имени
http://192.168.0.12:631/printers/HP_P1102
Выбираем драйвер
Выбираем драйвер
-33
-34
-35

Тестовая страница печати:

-36

13. Установка принтера в Windows 10

Windows 10 в домашней сети нашла принтер подключенный к Raspberry Pi самостоятельно.

-37
-38
-39
-40
-41
Тестовая страница печати Windows 10
Тестовая страница печати Windows 10

14. Итоги

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

Конечно, помимо версии Ubuntu Server есть еще версия Ubuntu Desktop с полноценным графическим интерфейсом, и установить в ней принтер можно вообще без танцев с бубном работы в терминале используя исключительно мышь, но там есть пара минусов

  • она более требовательна к ресурсам - следовательно придется купить Raspberry Pi подороже, а смысла в этом для организации только принт-сервера нет ни какого;
  • для работы с Ubuntu Desktop потребуется монитор, клавиатура и эта самая мышь - при работе с Ubuntu Server можно обойтись сетевым кабелем и ноутбуком с любой ОС.

Системные требования к Raspberry Pi в зависимости от версии Ubuntu можно посмотреть тут:

Install Ubuntu on a Raspberry Pi | Ubuntu

Конечно, можно купить и готовый принт-сервер, однако он всегда останется только принт-сервером. Используя ресурсы Raspberry Pi и внешние GPIO доступные на плате можно сделать принтер с часами помимо управления принтером, можно установить ПО для управления умным домом, или подключить какие либо исполнительные механизмы или датчики.

Оглавление канала доступно тут:

Список всех статей канала ESP32 и Arduino

Всем удачи!