Raspberry Pi: Print-Server mit CUPS und AirPrint einrichten

Mit Raspbian Buster geprüft.

CUPS (Common Unix Printing System) ist ein auf mehreren Standards basierendes Open-Source-Drucksystem, welches für Unix-artige Betriebssysteme entwickelt wurde und von Apple für das Betriebssystem macOS verwendet wird.

Mit CUPS kann man einen Drucker-Server (Print-Server) im Netzwerk betreiben, an dem einer oder mehrere USB-Drucker angeschlossen und dann im Netzwerk erreichbar sind. Als Hardware für den Print-Server eignet sich ein stromsparender Raspberry Pi besonders gut. Der muss dazu mit dem Netzwerk verbunden sein, in dem die Drucker verwendet werden sollen. Hierfür muss man gegebenenfalls auf den lokalen PCs im Netzwerk die Drucker „einrichten“. Die entsprechende Funktion befindet sich in jedem Betriebssystem in den Systemeinstellungen.

CUPS ermöglicht ab Version 2.2 den treiberlosen Druck auf Druckern, die IPP Everywhere oder Apple Airprint beherrschen. Man kann auf einem solchen Drucker sofort drucken, ohne sich mit der Treiberinstallation auf dem Client abmühen zu müssen. CUPS berücksichtigt dabei auch die Besonderheiten von Windows- und Apple-Netzwerken. So ist Apple AirPrint in CUPS integriert und funktioniert automatisch. Dadurch können auch iPhones und iPads im Netzwerk drucken. Für Windows-Clients wird ein Samba-Client verwendet.

Richtig interessant wird CUPS dann, wenn ein Drucker NICHT über die Airprint-Unterstützung verfügt. Dann kann man den Drucker lokal oder über das Netzwerk an CUPS anbinden. "Über das Netzwerk" bedeutet, dass die jeweiligen Drucker nicht direkt am Raspberry Pi angeschlossen sein müssen. CUPS kann sich mit den Druckern auch über das Netzwerk verbinden. So kann man die Airprint-Unterstützung ganz einfach nachrüsten, in dem man den entsprechend mit CUPS konfigurierten Raspberry Pi ins Netzwerk hängt.
CUPS unterhält eine Drucker-Warteschlange für die eingerichteten Drucker und bietet die Drucker per Airprint im Netzwerk an. Das hat den Vorteil, das Netzwerk-Drucker ohne Apple Airplay nachträglich per CUPS im Netzwerk erreichbar gemacht werden kann.

Fast alle Drucker werden von CUPS unterstützt. Insbesondere Drucker von HP werden optimal unterstützt. Aber auch mit Drucker von Samsung, Epson und Brother gibt es in der Regel keine Probleme. Für Modelle, die nicht unterstützt werden, gibt es generische Treiber, die Grundfunktionen zur Verfügung stellen. Nur spezielle Funktionen benötigen einen Treiber des Herstellers.

Aufgaben

  1. Installieren Sie CUPS und richten es anschließend ein.
  2. Installieren Sie den Drucker-Treiber, falls notwendig.
  3. Richten Sie den Drucker unter CUPS ein.
  4. Drucken Sie eine Datei auf der Kommandozeile aus.

Lösung: Installation und Einrichtung von CUPS

Zuerst führen wir ein Update der Paketlisten und ein Upgrade des Systems durch.

sudo apt update
sudo apt upgrade

Dann installieren wir CUPS.

sudo apt install cups

Je nach System kann der Installationsprozess mehrere Pakete mit über 150 MByte umfassen. So werden neben CUPS auch Teile von Samba, Avahi, Perl und verschiedene Bibliotheken installiert. Bis alles herunterladen und anschließend installiert ist, kann es einige Zeit dauern.

Nach dem alles installiert ist, müssen an der CUPS-Konfiguration einige Änderungen vorgenommen werden.

Zuerst erlauben wir die Administration über das Netzwerk. Später können wir den CUPS-Server von einem beliebigen Client im Netzwerk in einem Webbrowser administrieren.

sudo cupsctl --remote-admin

Die nächste Einstellung ermöglicht es, dass die lokal eingerichteten Drucker im Netzwerk geteilt werden (Drucker-Freigabe).

sudo cupsctl --share-printers

Die folgende Einstellung ermöglicht das Drucken von einem beliebigen Computer im Netzwerk.

sudo cupsctl --remote-any

Dann müssen wir noch einen Benutzer der Benutzergruppe "lpadmin" hinzufügen. Das kann der Standard-Benutzer "pi" sein. Man kann dafür auch einen neuen Benutzer anlegen, sofern man das möchte. Das ist aber nicht zwingend erforderlich.

sudo usermod -aG lpadmin pi

Danach ist ein Restart des CUPS-Servers notwendig.

sudo systemctl restart cups

Das ist immer dann notwendig, wenn die Konfigurationsdatei von CUPS geändert wurde.

Drucker-Unterstützung für Linux

Je nach Hersteller und Drucker-Modell ist die Installation von Drucker-Treibern mal mehr oder weniger einfach. Für gängige Modelle bringt CUPS bereits Drucker-Treiber mit. Aber eben nicht für alle. Am besten funktioniert es immer noch mit HP-Druckern. Aber auch für Samsung und Epson gibt es Drucker-Unterstützung für Linux-Betriebssysteme. Andere Hersteller sind hier nicht so freigiebig, weshalb man hier mehr Aufwand hat. Hier bedarf es anderer Vorgehensweisen, die sich von Modell zu Modell unterscheiden. Es empfiehlt sich für das entsprechende Drucker-Modell den richtigen Weg zu suchen.

Lösung: Drucker-Treiber installieren

HP stellt für seine Drucker Open-Source-Treiber zur Verfügung, die sich leicht installieren lassen. Das heißt, einen HP-Drucker bekommt man mit CUPS in der Regel immer zum Laufen.

Bei manchen HP-Druckern braucht man ein zusätzliches Paket. Den entsprechenden Hinweis bekommt man in CUPS, wenn man sich die Drucker anzeigen lässt: "requires proprietary plugin".

Die HP Linux Imaging and Printing Software (HPLIP) kann über apt-get installiert werden:

sudo apt install hplip

Anschließend kann die entsprechende Erweiterung für den Drucker installiert werden. Es empfiehlt sich, den Drucker vorher in CUPS einzurichten.

sudo hp-setup -i

Für manche Samsung-Modelle gibt es offene Drucker-Treiber, die in einem Paket zusammengefasst sind.

sudo apt install printer-driver-splix

Auch für Epson-Drucker gibt es Unterstützung.

sudo apt install printer-driver-escpr

Hinweis: Das Herunterladen und die Installation der Pakete kann etwas länger dauern. Also hier etwas Geduld mitbringen. Nachdem man Pakete oder Drucker-Treiber installiert hat, empfiehlt sich ein Restart von CUPS.

sudo systemctl restart cups

Manchmal ist auch ein Reboot des Systems erforderlich.

Lösung: Drucker unter CUPS einrichten und verwalten

Hinweis: Man tut sich beim Einrichten von Druckern unter CUPS leichter, wenn die notwendigen Drucker-Treiber installiert sind.

Jetzt geht es darum, Drucker unter CUPS einzurichten. Dazu muss man den oder die Drucker am USB des Raspberry Pi jetzt anschließen.
Anschließend konfigurieren wir CUPS. Zu diesem Zweck bringt CUPS seinen eigenen Webserver mit und lässt sich bequem über ein Web-Interface konfigurieren. Dazu benötigen wir die IP-Adresse des Raspberry Pi, die zusammen mit der Portnummer "631" in die Browser-Adresszeile eingegeben werden muss.

https://raspberrypi:631

Es erwartet einen das Web-Interface. Für die Einrichtung eines Druckers geht man wie folgt vor:

Unter dem Menüpunkt "Verwaltung" klickt man auf den Button "Drucker hinzufügen". In der Regel wird man nach Benutzername und Passwort gefragt. Und zwar von dem Benutzer, den man der Gruppe "lpadmin" hinzugefügt hat.

Drucker hinzufügen (Schritt 1/5)

Danach werden die angeschlossenen und erkannten Drucker aufgelistet (Lokale Drucker), aus der man den Drucker auswählt, den man einrichten möchte.
Achtung, hier werden alle erkannten Drucker aufgelistet, auch die, die man schon eingerichtet hat.

Drucker hinzufügen (Schritt 2/5)

Schritt 2 kann unter Umständen übergangen werden, wenn die Auswahl des Druckers eindeutig war.

Drucker hinzufügen (Schritt 3/5)

Hier kann man den Drucker-Namen und die Beschreibung den eigenen Wünschen anpassen. Das muss man aber nicht. Im Prinzip kann man die Vorgabe so lassen, weil diese Bezeichnung meist korrekt ist und später auch auf den Client-Systemen verwendet wird.
Wichtig ist hier nur, einen Haken unter "Freigabe" zu setzen. Denn nur so wird dieser Drucker im Netzwerk verfügbar gemacht. Ist der Haken nicht gesetzt, dann ist der Drucker nur lokal nutzbar.

Drucker hinzufügen (Schritt 4/5)

Schritt 4 kann unter Umständen übergangen werden.

Drucker hinzufügen (Schritt 5/5)

Hier muss man den Hersteller bzw. die Marke auswählen und anschließend möglichst genau die Modellbezeichnung.
An dieser Stelle ist es hilfreich, wenn der Druckertreiber vorher installiert wurde. Wenn nicht, dann kann man das jetzt tun, CUPS neu starten und den Hersteller erneut auswählen. Dann wird die Liste mit den Modell-Bezeichnungen aktualisiert.

Nach dem wir das richtige Modell ausgewählt haben, müssen noch die Standard-Einstellungen festgelegt werden. Wobei man da in der Regel nichts ändern muss. Die Vorgaben sind zum Drucker-Modell schon passend vorausgewählt.

Nach dem der Drucker eingerichtet ist, kann man noch eine Testseite drucken. Dazu wählt man im Feld "Wartung" einfach "Testseite drucken" aus. Der Testdruck startet dann automatisch.

Lösung: Netzwerkdrucker auf einem Client einrichten

Grundsätzlich stehen die eingerichteten Drucker per AirPrint zum Beispiel für macOS, auf dem iPhone und iPad zur Verfügung. Unter Linux und Windows muss man die Drucker jeweils noch als Netzwerk-Drucker einrichten. Die Einrichtungsdialoge sind hier meist selbsterklärend.

Lösung: Drucken von der Konsole

Grundsätzlich kann man auch direkt von der Konsole aus einen Druckauftrag abschicken. Dafür braucht man den Druckernamen. Wenn man das nicht auswendig weiß, dann kann man in der Druckerliste nachsehen.

lpstat -a

Dort wählen wir für das folgende Kommando den Druckernamen aus und geben noch den Pfad einer Text-Datei an, die ausgedruckt werden soll.

lp –d <Druckernamen> </Pfad/zur/Textdatei>

Den Status für den aktuellen Druckauftrag, sofern das Dokument noch nicht fertig gedruckt ist, bekommt man so:

lpstat -p

Troubleshooting

Das Einrichten eines Druckers gelingt in der Regel ohne Probleme. Doch manchmal, je nach Hersteller und Druckermodell, hakt es dann doch. Um das Problem zu lösen empfiehlt sich eine Schritt-für-Schritt-Vorgehensweise, auch wenn das Problem vielleicht irgendwo dazwischen liegt.

Manchmal gibt auch die CUPS-Weboberfläche einen Hinweis. So braucht mancher HP-Drucker einen propritären Treiber, der sich über das hplix-Paket nachinstallieren lässt.

Zuerst klären wir, ob der oder die Drucker überhaupt am USB erkannt werden. Dazu benötigen wir die "usbutils", die eventuell nachinstalliert werden müssen.

sudo apt install usbutils

Ist das Paket "usbutils" installiert, dann prüfen wir, ob der oder die Drucker am USB erkannt wurden.

lsusb

Dieses Kommando ist mal mehr, mal weniger auskunftsfreudig. Typischerweise werden die Drucker mit dem Hersteller-Namen, vielleicht sogar mit der Modell-Bezeichnung ausgewiesen.
Es ist ein gutes Zeichen, wenn der oder die Drucker am USB erkannt werden. Wenn nicht, dann gibt es andere systembedingte Probleme. Eventuell hilft ein Blick in "dmesg".

dmesg

Die dort verzeichneten Fehlermeldung deuten auf Probleme hin, die Einzelfälle sind. Die können wir hier leider nicht auflösen. Eventuell hilft die Suche mit der Fehlermeldung bei der bevorzugten Suchmaschine.

Troubleshooting: Fehlermeldung „Aktualisierung erforderlich“

Beim Hinzufügen eines Druckers kann die Fehlermeldung „Aktualisierung erforderlich“ auftreten. Das hat mit der voreingestellten Verschlüsselung von CUPS zu tun. Eine Lösung ist die Verschlüsselung zu deaktivieren. Hierzu muss man die CUPS-Konfiguration ändern.

sudo nano /etc/cups/cupsd.conf

Hier trägt man folgende Zeile ein:

DefaultEncryption Never

Speichern und schließen nicht vergessen.

Troubleshooting: Nach einer längeren Zeit druckt der Drucker über CUPS nicht mehr

CUPS hält den Drucker irgendwann an, wenn es zu diesem keinen Kontakt halten kann. Zum Beispiel, weil der Drucker längere Zeit ausgeschaltet ist, weil das USB-Kabel ausgesteckt wurde oder irgendetwas anderes mit dem USB ist.
Um das Problem zu lösen, geht man auf die CUPS-Weboberfläche. Hier klickt man im Bereich "Drucker" auf das betreffende Druckermodell und wählt im Auswahlfeld "Wartung" den Eintrag "Drucker starten". Damit das gelingt muss der Drucker eingeschaltet und mit dem Raspberry Pi verbunden sein.

Auf der Kommandozeile kann man sich zusätzlich noch den Drucker-Status anzeigen lassen.

lpstat -p -d

Status aller Drucker anzeigen:

lpstat -p

Druckaufträge anzeigen:

lpstat -o

Troubleshooting: Mehrere Drucker drucken nicht mehr

Nach dem Anschließen und der Einrichtung der Drucker kommt es zu Ausfällen. Das heißt, die eingerichteten Drucker drucken nicht mehr. Wenn die einzelnen Drucker über CUPS schon mal gedruckt haben und auch lokal angeschlossen funktionieren, hat das vermutlich mit dem Raspberry Pi zu tun. Dessen USB ist elektrisch gesehen leider mit der heisen Nadel gestrickt. Wenn mehrere USB-Geräte über jeweils eine lange Leitung mit dem Raspberry Pi verbunden sind, dann kommt es zu sporadischen Ausfällen, wobei der USB grundsätzlich zu funktionieren scheint. Nur die Geräte, die über ein längeres USB-Kabel verbunden sind, scheinen Probleme zu haben. Testweise kann man versuchen die einzelnen Drucker alleine zu betreiben.

In der Praxis ist keine Problemlösung bekannt. Kürzerere und besser geschirmte Kabel können das Problem lösen. Das muss aber nicht die Lösung sein.

Troubleshooting: Netzwerk-Drucker einbinden geht nicht

Um einen Netzwerk-Drucker (per Ethernet mit dem Netzwerk verbunden) in CUPS einzubinden muss dieser bei der Einrichtung mit dem Raspberry Pi per USB verbunden werden. Dabei wird der Drucker eingerichtet und die Treiber installiert. Danach kann man den Drucker vom USB abziehen und als Netzwerk-Drucker einbinden.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Netzwerktechnik-Fibel

Alles was Sie über Netzwerke wissen müssen.

Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.

Das will ich haben!

Elektronik-Set Raspberry Pi Edition
Elektronik-Set Raspberry Pi Edition

Elektronik erleben mit dem Raspberry Pi mit Python und GPIO Zero

  • Leichter Einstieg ins Hardware-nahe Programmieren mit Python und GPIO Zero
  • Experimentieren und Programmieren ohne Vorkenntnisse
  • Sofort Loslegen mit All-in-one-Set

Elektronik-Set jetzt bestellen

Netzwerktechnik-Fibel

Alles was Sie über Netzwerke wissen müssen.

Die Netzwerktechnik-Fibel ist ein Buch über die Grundlagen der Netzwerktechnik, Übertragungstechnik, TCP/IP, Dienste, Anwendungen und Netzwerk-Sicherheit.

Das will ich haben!