Worum geht es hier?
Hier werde ich zeigen, wie man einen Drucker mit USB-Anschluss über einen Raspberry pi netzwerkfähig macht und ihn dann vom eisfair als Netzwerkdrucker anspricht. Ich habe diese Lösung mit meinem Laserdrucker HL-5140 von Brother im Einsatz und bin sehr zufrieden damit.
Da einige Leute über teilweise recht lange Wartezeiten beim Drucken über samba berichteten, schreibe ich gleich dazu, dass das bei mir nicht auftritt: der Drucker fängt hier praktisch ohne Verzögerung an zu Lärmen, wenn man am Client den Druckauftrag abschickt.
Ich habe einen alten Raspberry pi (vermutlich -1b) im Einsatz - das Modell mit LAN und 2 USB-Ports. Ein Modell-2 mit 4-Kern-CPU ist meines Erachtens völlig überdimensioniert.
Warum braucht man das?
Wenn der Drucker nicht direkt neben dem eisfair-Server steht, hat man ein Problem: USB-Kabel lassen sich nicht beliebig verlängern - wie kommen also die Daten vom eisfair-Server zum Drucker? Man könnte jetzt einen netzwerkfähigen Drucker kaufen - oder einen Printserver - und ob es WLAN-fähige Printserver gibt, habe ich gar nicht erst recherchiert. Denn ein alter Raspberry pi lag noch in der Schublade, und Eigenbau macht (mir jedenfalls) Spass. Ausserdem ist mein Drucker zwar alt, druckt aber hervorragend und das seit vielen Jahren.
Was brauchen wir?
- einen eisfair-Server
- auf dem eisfair-Server ein eingerichtetes samba-Paket
- auf dem eisfair-Server ein eingerichtetes lprng-Paket
- einen Drucker mit USB-Anschluss
- auf allen Clients einen eingerichteten Druckertreiber
- einen Raspberry pi mit Raspbian und eine Stromversorgung
- auf dem Raspberry pi ein eingerichtetes lprng-Paket
- falls wir über WLAN drucken wollen, einen USB-WLAN-Adapter für den Raspberry pi
Wie oben geschrieben, habe ich dies nur mit meinem HL-5140 getestet - dieser 'spricht' PCL (Printer-Control-Language). Ob das Ganze auch mit den sogenannten GDI-Druckern funktioniert, kann ich nicht beurteilen. Und zu Tintendruckern kann ich auch nichts sagen - einfach ausprobieren.
Da das samba-Paket auf eisfair nur auf einen lokal (also auch auf dem eisfair-Server) installierten lprng drucken kann, nehmen die Druck-Daten später folgenden Weg:
druckender Client → LAN/WLAN → samba auf eisfair → lprng auf eisfair → LAN/WLAN → lprng auf Raspberry pi → USB → Drucker am Raspberry pi
Einrichtung des Raspberry pi
Wie man einen Raspberry pi grundsätzlich einrichtet, werde ich hier nicht beschreiben - dafür gibt es genügend Anleitungen im Netz. Benötigt wird nur ein sehr minimales System, daher reicht ein Raspbian-Lite vollkommen aus. Ausserdem startet ein schlankes System recht schnell.
Ich habe praktisch alle Pakete mit Hilfe von aptitude (Paketmanager im Raspbian) entfernt, bei denen er nicht gemeckert hat, dass die Entfernung ein nicht funktionierendes System verursacht. Nun meldet aptitude mir noch 165 installierte Pakete - diese Zahl nur als Anhaltspunkt. Als sinnvoll erachte ich folgende Konstellation:
- er sollte eine feste IP-Adresse haben (kein dhcp!), damit wir ihn später vom eisfair aus ansprechen können
- er sollte sich - falls man das braucht - selbst mit dem gewünschten WLAN verbinden
- er sollte über ssh ansprechbar sein, denn wir wollen ihn später auch aktualisieren können
- er braucht kein swap
- ein mc (midnight-commander) ist immer praktisch
- sein Dateisystem sollte nur ro (read-only) gemountet sein, dann kann man ihn einfach mit dem Drucker ein- und ausschalten
- für Wartungsarbeiten mountet man das Dateisystem rw - eine Anleitung gibt es unter https://www.mehr4u.de/raspberry-pi-mit-readonly-filesystem.html
Falls noch nicht geschehen, installiert man nun das lprng-Paket. Danach müssen noch 3 Konfigurations-Dateien bearbeitet werden: dabei sollte der Druckername - bei mir HL5140 - an die lokalen Gegebenheiten angepasst werden.
/etc/printcap erhält folgenden Inhalt (ACHTUNG - zweimal den Druckernamen ersetzen):
HL5140|localprinter:\ :lp=/dev/usb/lp0:\ :sd=/var/spool/lpd/HL5140:\ :mx#0:\ :sh:
/etc/lprng/lpd.conf erhält folgenden Inhalt:
lpd_listen_port = 515
/etc/lprng/lpd.perms erhält folgenden Inhalt:
DEFAULT ACCEPT
Nun startet man den lprng neu und der Raspberry pi ist fertig:
service lprng restart
Einrichtung des lprng auf eisfair
Da die Konfiguration von samba auf eisfair vom lprng-Paket (eisfair) abhängt, bearbeitet man nun zuerst die lprng-Konfiguration:
setup → Service administration → LPRng → LPRng Configuration Handling → Edit LPRng Configuration
Er warnt vorsichtshalber, dass während der Einrichtung nicht gedruckt werden kann - einfach bestätigen mit 'y' und <ENTER>
Er nennt uns die Adresse der parallelen Schnittstelle (falls eine vorhanden ist) und wartet auf <ENTER>
Wichtig sind folgende Einstellungen:
START_LPRNG = yes ... LPRNG_REMOTE_PRINTER_N = 1 LPRNG_REMOTE_PRINTER_1_ACTIVE = yes LPRNG_REMOTE_PRINTER_1_IP = 192.168.6.130 LPRNG_REMOTE_PRINTER_1_QUEUENAME = HL5140 LPRNG_REMOTE_PRINTER_1_PORT = LPRNG_REMOTE_PRINTER_1_NOTIFY = no
- Das Paket lprng (auf eisfair) muss gestartet werden - logisch.
- Direkt am eisfair-Server angeschlossene Parallel- und USB-Drucker konfiguriert man wie gewünscht - falls sie benötigt werden.
- Man benötigt mindestens einen REMOTE PRINTER denn der lprng auf eisfair druckt ab jetzt auf den lprng auf dem Raspberry pi (über LAN oder WLAN).
- Dieser muss ACTIVE sein - logisch.
- Man trägt die IP-Adresse des Raspberry pi ein (deswegen feste IP) - bei mir ist das 192.168.6.130 - bitte an die lokalen Gegebenheiten anpassen.
- Man trägt den Druckernamen in QUEUE ein - bitte an die lokalen Gegebenheiten anpassen und genau (!!!) den Namen aus der Konfiguration von lprng auf dem Raspberry pi verwenden. Unterschiedliche Schreibweisen des Druckernamen führen dazu. dass die Druckaufträge nicht am Drucker ankommen.
- Das Feld PORT muss (!!!) leer bleiben.
- NOTIFY setzt man auf no.
Die Konfiguration von lprng auf eisfair muss nun gespeichert und übernommen werden. Dabei warnt er wieder, dass nun auch die samba-Konfigurarion angepasst werden muss.