Der alte Drucker heißt nun Burkhard

Wie es nun mal so ist nach einem Device Upgrade gabe es nun Schwierigkeiten den in die Jahre gekommenen, altbekannte und liebgewonnen Drucker weiter zu verwenden. Nun druckt der Drucker sehr sporadisch irgendwelche Kleinigkeiten noch so ca. fünfmal im Jahr. Also was tun einen neuen Drucker anschaffen, nein Danke. Hier lag noch ein ungenutzter Raspberry Pi Model B Rev 2 herum, reicht denke ich für einen im Netzwerk zu erreichenden cups Drucker Server.

Kurzum das folgende soll eine schnelle Copy & Paste Anleitung sein die hilft den gelegentlichen Druckauftrag über eine Raspi cups Kombination zu erledigen. Als Wichtiger Hinweis! In meinem Setup sind weder der Drucker noch der Raspberry Pi dauerhaft mit Strom versorgt. Daher wurde in dieser Anleitung auf Sicherheitsaspekte der Installation und des Betriebs keinerlei Wert gelegt. Solltet ihr den Druckerserver dauerhaft betreiben wollen, müsst ihr zusätzliche Überlegungen anstellen, die hier nicht behandelt werden.

Per Raspberry Pi Imager eine SD-Karte erstellen. Solltet Ihr einen anderen Raspi zur Hand haben müsst Ihr den Pi und das OS entsprechend auswählen. In meinem Fall Raspi 2 mit einem Raspberry Pi OS Lite (32-bit) Bookworm. Eine Grafische Oberfläche im Pi selbst wird nicht benötigt. Stellt in den erweiterten Einstellungen des Pi Imager gleich den Hostname (in meinem Fall: blue) ein.
Erstellt direkt einen Benutzer und ein Passwort, um den Pi später problemlos im Netzwerk erreichen zu können.

Nach dem ersten Booten sucht ihr im Router die IP-Adresse des Raspberry Pi.
Um spätere Verbindungsprobleme zu vermeiden, weist dem Pi in der Router-Konfiguration über die MAC-Adresse eine feste IP zu. Per ssh <IP des Raspis> könnt Ihr den Raspi erreichen. Um sicherzustellen, dass das Betriebssystem auf dem neuesten Stand ist führt direkt ein apt-get update && apt-get update dist-upgrade aus.

Der Drucker in meinem Beispiel ist ein HP LaserJet Professional P1102, der per USB angeschlossen wird. Nach dem Anstecken des Druckers sollte dieser automatisch im System angezeigt werden und zeigt sich auf der Komandozeile mit folgenden Ausgaben.

:~# lsusb
Bus 001 Device 005: ID 03f0:002a HP, Inc LaserJet P1102
:~# dmesg
[...]
[ 829.229319] usb 1-1.3: new high-speed USB device number 4 using dwc_otg
[ 829.370384] usb 1-1.3: New USB device found, idVendor=03f0, idProduct=002a, bcdDevice= 1.00
[ 829.370451] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 829.370481] usb 1-1.3: Product: HP LaserJet Professional P1102
[ 829.370505] usb 1-1.3: Manufacturer: Hewlett-Packard
[ 829.370528] usb 1-1.3: SerialNumber: 000000000Q80VNMCSI1c
[ 829.376713] usb-storage 1-1.3:1.0: USB Mass Storage device detected
[ 829.379318] scsi host0: usb-storage 1-1.3:1.0
[ 831.209376] usb 1-1.3: USB disconnect, device number 4
[ 831.789395] usb 1-1.3: new high-speed USB device number 5 using dwc_otg
[ 831.920896] usb 1-1.3: New USB device found, idVendor=03f0, idProduct=002a, bcdDevice= 1.00
[ 831.920961] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 831.920993] usb 1-1.3: Product: HP LaserJet Professional P1102
[ 831.921017] usb 1-1.3: Manufacturer: Hewlett-Packard
[ 831.921038] usb 1-1.3: SerialNumber: 000000000Q80VNMCPR1a
[ 834.279730] usbcore: registered new interface driver uas
[ 841.519766] usblp 1-1.3:1.0: usblp0: USB Bidirectional printer dev 5 if 0 alt 0 proto 2 vid 0x03F0 pid 0x002A
[ 841.520232] usbcore: registered new interface driver usblp

Die für die Einrichtung benötigten Pakete installieren. vim als Editor wird dabei als obligatorisch angesehen.

:~# apt-get install cups hplip vim

Der oben erstellte Raspberry Pi Benutzer der Gruppe lpadmin hinzugefügt, damit er sich später über den Browser an dem cups GUI anmelden kann

:~# usermod -a -G lpadmin <angelegter Benutzer>

Nachdem die Paketinstallation abgeschlossen ist, erfolgt die Konfiguration von cups. Die relevanten Änderungen sind im Screenshot zur besseren Übersicht markiert. Im Wesentlichen müssen nur die IP-Adresse des Raspberry Pi eingetragen und entsprechende Allow Regeln für den Zugriff auf das cups Webinterface festgelegt werden.

:~# vim /etc/cups/cupsd.conf
Screenshot cupsd.conf

Anschließend den cups Service neu starten.

:~# systemctl restart cups.service

Der Zugriff auf das cups Webinterface sollte bereits mit der IP-Adresse des Raspis funktionieren.

https://<IP des Raspis>:631/

Der Zugriff erfordert möglicherweise einen Login. Dieser erfolgt mit dem oben angegebenen Benutzer, der zur entsprechenden Gruppe gehört, sowie dem Passwort, das beim Einrichten des Raspberry Pi festgelegt wurde. Es wird eine SSL-Fehlermeldung angezeigt, da cups bei der Installation ein selbstsigniertes Zertifikat erstellt. Dieses muss einmalig im Browser akzeptiert werden.

Auf der Kommandozeile kann bereits überprüft werden, ob der Drucker erkannt wurde.

:~# lpinfo -v
file cups-brf:/
network beh
network lpd
network ipp
direct hp:/usb/HP_LaserJet_Professional_P1102?serial=000000000Q80VNMCPR1a
network http
network https
network socket
network ipps
direct usb://HP/LaserJet%20Professional%20P1102?serial=000000000Q80VNMCPR1a
direct hpfax

Nun sollte der Drucker zur cups Druckerwarteschlange hinzugefügt werden. Mit dem cups Webinterface hat dies in meinem Fall nicht funktioniert. Stattdessen konnte der Drucker erfolgreich mit dem Tool hp-setup hinzugefügt werden. Trotz der Warnung, das Tool nicht als Root auszuführen, hat es bei meinem Versuch nur funktioniert, als ich es als Root Benutzer verwendet habe, da der Drucker beim Ausführen mit einem normalen Benutzer nicht erkannt wurde.

:~# hp-setup -i

Am Ende folgen ASCII-Text Abfragen, die vollständige Ausgabe habe ich hier als .pdf zur Verfügung gestellt, mit markierten Stellen, an denen Eingaben erwartet werden. Das Verfahren sollte im Prinzip selbsterklärend sein. Hier jedoch eine kurze Zusammenfassung der Abfragen. Zunächst wird abgefragt, um welchen Druckertyp es sich handelt (USB). Es wird überprüft, ob der Drucker korrekt erkannt wurde (dies kann mit der oben ausgegebenen lpinfo Ausgabe verglichen werden). Das Plugin bzw. die entsprechende .ppd-Datei wird aus dem Internet heruntergeladen, wobei den Lizenzbestimmungen zugestimmt werden muss. Anschließend wird der Name des Druckers vergeben (Burkhard). Es kann eine Testseite ausgedruckt werden.

Wenn dies geklappt hat wird der Drucker ebenfalls im cups Webinterface unter

https://<IP des Raspis>:631/printers

angezeigt.

Screenshot cups Drucker

Der nun über das Netzwerk bereitgestellte Drucker wird von allen gängigen Betriebssystemen automatisch in den entsprechenden Drucker-/Scanner-Einstellungen erkannt und kann problemlos hinzugefügt werden. Anbei einige Screenshots von Linux, macOS und Windows. Wie man sieht, wird der Drucker im Netzwerk unter der Kombination aus Druckername und Hostname (Burkard@blue) erkannt.