Print-Server mit CUPS und AirPrint auf dem Raspberry Pi einrichten

sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo apt-get install cups cups-client
sudo nano /etc/cups/cupsd.conf >>> Zeilen einfügen
sudo service cups stop
sudo service cups start
sudo apt-get install samba

sudo apt-get install openssh-server (optional)

http://server-name-or-ip-address:631/printers/printername bzw. über Netzwerk / IP-Adresse im Windowsnetzwerk den Drucker suchen und mit Doppelklick installieren.

 

 

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 Mac OS X unterstützt wird.
Mit CUPS kann man einen Drucker-Server (Print-Server) im Netzwerk betreiben, an dem einer oder mehrere USB-Drucker angeschlossen und somit im Netzwerk erreichbar sind. Dafür eignet sich ein stromsparender Raspberry Pi besonders gut. CUPS berücksichtigt dabei auch die Besonderheiten von Windows- und Apple-Netzwerken. So ist zum Beispiel auch Apples 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.

Fast alle Drucker werden von CUPS unterstützt. Für die 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.
Da Hewlett Packard ein eigenes Open-Source-Projekt betreibt, werden HP-Drucker besonders gut von CUPS unterstützt.

 

 

 

Installation und Einrichtung von CUPS

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

sudo apt-get update
sudo apt-get upgrade

Dann installieren wir CUPS.

sudo apt-get install cups

Je nach System kann der Installationsprozess mehrere Pakete mit über 100 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-Konfigurationsdatei einige Änderungen vorgenommen werden.

sudo nano /etc/cups/cupsd.conf

CUPS lauscht standardmäßig auf Port 631, allerdings nur auf dem Localhost. Wenn man über das Netzwerk darauf zugreifen möchte, muss man das zuerst freigeben.

Die Zeile:

Listen localhost:631

ändern in:

Port 631

Dann soll der Print-Server alle angeschlossenen Drucker im Netzwerk bekannt machen. Dazu fügen wir noch folgende Zeile ein:

BrowseAddress @LOCAL

Der Wert „BrowseAddress“ gibt an, an welche Hosts Druckerinformationen „gebroadcastet“ werden. „@LOCAL“ steht in dem Fall für „alle“ Hosts im lokal angeschlossenen Netzwerk.

[sta_anchor id=“cupsconfig“ /]Dann suchen Sie nach folgenden Zeilen und fügen jeweils ein „Allow @Local“ ein.

# Restrict access to the server...
<Location />
Order allow,deny
Allow @LOCAL
</Location>
# Restrict access to the admin pages...
<Location /admin>
Order allow,deny
Allow @LOCAL
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow @LOCAL
</Location>

„@LOCAL“ steht für alle lokal am Druckserver angeschlossenen Netze. Davon ausgenommen sind Dial-Up-Verbindungen.

Nach den Änderungen muss man die Datei speichern und schließen: Strg + O, Return, Strg + X.

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 service cups restart

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

Lösung: Drucker-Treiber installieren

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. Ohne Werbung zu machen, HP stellt für seine Drucker Open-Source-Drucker-Treiber zur Verfügung. Das heißt, einen HP-Drucker bekommt man mit CUPS in der Regel immer zum Laufen. Andere Hersteller sind hier nicht so freigiebig, weshalb man hier mehr Aufwand hat. Manchmal kommt man um das Kompilieren des Treibers nicht herum.

Für HP-Drucker gibt es eine große Auswahl an Drucker-Treibern, die sich leicht installieren lässt.

sudo apt-get install hplip

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

sudo apt-get install splix

Das Herunterladen und die Installation der Pakete kann etwas länger dauern. Also hier etwas Geduld mitbringen.

Bei anderen Herstellern 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.

Nachdem man Pakete oder Drucker-Treiber installiert hat, empfiehlt sich ein Restart von CUPS.

sudo service cups restart

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://192.168.1.2: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 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 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 Mac OS, 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.


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.

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-get 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




CUPS Drucker reaktivieren

Es gibt eine Möglichkeit, wie ihr Druckaufträge an einen ausgeschalteten Drucker schicken könnt. D.h. Ihr startet den Druckauftrag, und geht dann erst zum Drucker, um ihn einzuschalten.

Ihr müsst dazu zwei Anpassungen (am Pi) treffen:

  1. In der /etc/cups/cupsd.conf die folgenden Zeilen anfügen:
1
2
JobRetryInterval 15
JobRetryLimit 40

Das probiert den Auftrag alle 15 Sekunden, maximal 40 Mal zu wiederholen. Man hat also rund 10 Minuten Zeit, den Drucker zu starten.

  1. In der /etc/cups/printers.conf die folgende Option setzen:

Zunächst aber cups stoppen mit

sudo /etc/init.d/cups stop

Und danach die Option

ErrorPolicy retry-job

setzen.

Danach cups einfach wieder neustarten:

sudo /etc/init.d/cups start

Nun könnt ihr den Drucker testweise mal ausschalten. Einen Druckauftrag aufgeben, und nach einer Weile den Drucker starten.

Die Seite sollte dann wenige Sekunden später gedruckt werden.

 

 

 

Cups-Drucker mit Windows nutzen

Viele preisgünstige USB-Drucker arbeiten tadellos mit Cups zusammen. Dazu braucht es einzig eine zum Gerät passende PPD-Datei. Diese Datei im ASCII-Format beschreibt, wie das System die Hardware anspricht und welche Optionen es bereitstellt. Haben Sie einen Drucker im Cups-Server konfiguriert, steht er mit all seinen Features im Netzwerk bereit.

Wer eben mal schnell von Windows aus über Cups drucken will, erlebt bei der Installation des originalen Druckertreibers oft eine böse Überraschung: Gerade Treiber von USB-Geräten verlangen zwingend, dass Sie den Drucker lokal anschließen. Ausdrucke über das Netzwerk – und damit über den Cups-Server – klappen so erstmal nicht.

Abhilfe schafft der generische Postscript-Treiber von Adobe für Windows XP, der in verschiedenen Sprachversionen im Web [1] bereit steht. Die deutschsprachige Version findet sich unter »Adobe Universal PostScript Windows Driver Installer 1.0.6 - German« . Dieser Druckertreiber unterstützt von Haus aus das Drucken im Netzwerk und erlaubt den Einsatz beliebiger PPD-Dateien.

TIPP

Der Adobe-Treiber taugt nicht für Windows Vista: Selbst im Kompatibilitätsmodus »Windows XP (Service Pack 2)« scheitern Installationsversuche bei der Eingabe des Netzwerkpfades.

Bei der Installation dieses Treibers geben Sie den Netzwerkpfad des Druckers an – im Beispiel »https://hermes:631/printers/EPSON_Stylus_Office_BX300F_USB_1« . Falls Sie diesen nicht genau wissen, öffnen Sie die Webseite des eigenen Cups-Servers in einem Browser und navigieren zum gewünschten Drucker. Die vollständige URL-Zeile des Browsers übernehmen Sie dann per Copy & Paste in das Installationsfenster.

Im nächsten Fenster bestätigen Sie, dass Sie einen eigenen Treiber verwenden möchten. Anschließend wählen Sie die passende PPD-Datei aus. Statt hier die von Adobe mitgelieferte »defprtr2.ppd« zu verwenden, laden Sie aus dem Web [2] die zum Drucker passende PPD-Datei herunter und wählen sie im Dialog aus.

Haben Sie Lesezugriff auf das Verzeichnis »/etc/cups/ppd/« auf dem Cups-Server, steht Ihnen noch ein anderer Weg offen: Übertragen Sie die zum Drucker passende PPD-Datei zum Beispiel via USB-Stick auf den Windows-Rechner und wählen diese dann im Installationsdialog des Adobe-Treibers aus.

Verfügt der Drucker über zusätzliche Papiereinzüge oder einen größeren Speicher, so konfigurieren Sie dies im letzten Schritt des Dialogs. Nach Abschluss der Installation stehen sofort alle Feature des Druckers bereit.

>>> http://www.adobe.com/support/downloads/product.jsp?product=44&platform=Windows <<<

 

Cups-Drucker unter Windows 7 einrichten

 

Heute bin ich nach immerhin drei Jahren endlich mal dazu gekommen, meinen „Windows 7“-Rechner über meinen CUPS-Server an unseren gemeinsamen Drucker anzubinden. Bisher war nur der Rechner meiner Frau (ein gutes altes Windows XP) dazu in der Lage, den Drucker zu bedienen. Schnell wurde mir bewusst, warum ich das Problem so lange vor mich hergeschoben habe: Scheinbar hat es Microsoft nicht versäumt, eine kleine gar nicht feine Hürde einzubauen, um das Anbinden eines Netzwerkdruckers mittels Cups deutlich zu erschweren. Hier nun meine kleine aber feine Anleitung, wie es dennoch funktioniert:

Start -> in das Durchsuchen-Feld regedit.exe eingeben, Enter
Links im Baum „HKEY_CURRENT_USER\Printers\Settings“ wählen
Rechte Maustaste,  Neu, DWORD
PreferredConnection als Name angeben

Nun sollte man über die bekannte Methode den Drucker hinzufügen können.

Drucker hinzufügen
Einen Netzwerk-, Drahtlos- oder Bluetoothdrucker hinzufügen
Klicken auf „Der gesuchte Drucker ist nicht aufgeführt“
Im Durchsuchen-Feld http://IP-Adresse/printers/Druckername angeben
Weiter -> Treiber auswählen -> fertig

Cups Drucker unter Windows 10

 Unter CUPS-Verwaltung muss „Drucker dieses Systems im Netz freigeben“ und „Erlaube den Druck aus dem Internet“ aktiviert sein.

I could successfully manage my USB printer which is connected to a raspberry pi 3 CUPS dedicated print server, but I could not figure out how to set the printer up on my Windows 10 laptop.

1) Find the IP address of the print server on the network by accessing connected device report on the network router. I made the print server a dedicated IP address so even if the power cycles, these settings are static. The IP address of the print server is 10.0.0.132

2) I assumed that the port was 631 (common printer port), so I added that to an HTTP string that I was constructing on Notepad.
http://10.0.0.132:631/

3) I pasted that IP address into a browser on the Windows laptop (the laptop was on the same network as the pi print server) and CUPS admin panel came up.

Click on Printers, then you should see your printer. Click on your printer. Pay attention to the full URL once you’ve clicked on your printer. This URL is your connection string that you’ll need in Windows. This was my connection string: http://10.0.0.132:631/printers/Canon_MG6100_series

Click the arrow next to the word Maintenance and select Print test page. From here I was able to manage the printer and execute printing a test page – which worked! I made adjustments to the config file of the printer but I don’t think they were necessary.

4) On the Windows laptop, I opened the printers panel in the control panel and clicked Add Printer, then chose „The printer I want isn’t listed‘. I selected the second radio button then added the full string from the CUPS admin browser in the previous step. http://10.0.0.132:631/printers/Canon_MG6100_series

5) I clicked Next, then Finish – skip printing the test page at this step! You’ll have to select a printer driver to complete the set up of the new printer on Windows.

6) Right click on the newly made printer thumbnail and select Printer Properties. The properties panel will open.

Click the Ports tab at the top. Make sure that the selected port is highlighted, then click Configure Port.

In the box that pops up, in the „Use the specified user account“, under User Name and Password, I typed „pi“ and „raspberry“ which if you recall is the default username and password of a default Raspbian OS install on a Raspberry Pi. Click ok and that window will close.

Make sure you click Apply (not close) when you’re done on the Ports tab. Click the General tab at the top of the properties window and go ahead and click the Print Test Page.