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 aus als Netzwerkdrucker anspricht. Ich habe diese Lösung mit meinem Laserdrucker HL5140 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 dies bei mir nicht der Fall ist: 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 - der kann nur schneller auf Druckaufträge warten.

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 Print-Server - und ob es WLAN-fähige USB-Print-Server 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 samba-Paket
  • auf dem eisfair-Server ein lprng-Paket
  • einen Drucker mit USB-Anschluss
  • auf den Clients einen eingerichteten Druckertreiber
  • einen Raspberry pi mit Raspbian und eine Stromversorgung
  • auf dem Raspberry pi ein lprng-Paket
  • falls wir über WLAN drucken wollen, einen USB-WLAN-Adapter für den Raspberry pi

Wie oben geschrieben, habe ich dies mit meinem HL5140 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 einem lokal (also auch auf dem eisfair-Server) installierten lprng drucken kann, nehmen die Druckaufträge später folgenden Weg:

druckender ClientLAN/WLANsamba auf eisfair → lprng auf eisfair → LAN/WLANlprng auf Raspberry pi → USBDrucker 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 sogenanntes Raspbian-Lite vollkommen aus. Ausserdem startet ein schlankes System recht schnell. Wenn der Raspberry pi zusammen mit dem Drucker eingeschaltet wird, ist der Systemstart schneller erledigt als der Drucker sich zum Drucken aufgewärmt hat.

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 grober 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 dafür 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.

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 konfiguriert:

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 in IP ein (deswegen feste IP-Adresse) - 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 (MÜLLER != MUELLER).
  • Das Feld PORT muss (!!!) unbedingt leer bleiben.
  • NOTIFY setzt man auf no.

Die Konfiguration von lprng auf eisfair muss nun gespeichert und übernommen werden. Dabei warnt er, dass nun noch die samba-Konfiguration entsprechend angepasst werden muss.

Einrichtung von samba auf eisfair

Ich gehe davon aus, dass das Paket samba auf eisfair schon benutzt wird, und daher nur die Einrichtung eines (zusätzlichen) Druckers angepasst werden muss:

setup → Service administration → Samba → Samba Configuration Handling → Edit Samba Configuration

Wichtig sind folgende Einstellungen:

SAMBA_PRINTER_N                   =  1 
...
SAMBA_PRINTER_1_ACTIVE            =  yes
SAMBA_PRINTER_1_NAME              =  HL5140
SAMBA_PRINTER_1_TYPE              =  printcap
SAMBA_PRINTER_1_CAPNAME           =  repr1
SAMBA_PRINTER_1_CLIENTDRIVER      =  yes
SAMBA_PRINTER_1_BROWSE            =  yes
SAMBA_PRINTER_1_USER              =
SAMBA_PRINTER_1_PUBLIC            =  yes      
  • Man benötigt mindestens einen Drucker - logisch.
  • Dieser muss auch ACTIVE sein.
  • Als NAME bekommt er wieder den Druckernamen - so erscheint er später im samba.
  • Als TYPE bekommt er printcap.
  • Als CAPNAME bekommt er 'repr' gefolgt von einer Ziffer: Die Ziffer finden wir im lprng auf eisfair hinter LPRNG_REMOTE_PRINTER_ - das ist also meist die 1.
  • CLIENTDRIVER setzt man auf yes denn alle Clients haben einen passenden Druckertreiber installiert oder bekommen dies noch.
  • BROWSE setzt man auf yes, damit der samba-Drucker auch im Netz gefunden werden kann.
  • USER kann leer bleiben.
  • PUBLIC setzt man auf yes.

Die Konfiguration von samba auf eisfair muss nun gespeichert und übernommen werden.

Nun kann der Drucker am Raspberry pi von allen samba-Usern auch übers LAN bzw. WLAN genutzt werden.

Viel Spass beim Drucken

Bei Fragen wendet Euch bitte an die Newsgroup - da werdet Ihr geholfen.

Stefan Puschek - Anfang September 2018