Dem Drucker ein zweites Leben eingehaucht

Netzwerkfunktionalität nachrüsten/ersetzen mit Raspberry Pi

2. Dezember 2021 | #linux #hp #drucker #raspberrypi

Ich war schon drauf und dran, meinen Schrotthaufen von Drucker (ein HP Laserjet P1102w) auf den Werstoff­hof zu schleppen: die WLAN-Konfiguration verursacht körperliche Schmerzen und seit einiger Zeit verschluckt sich die Kiste regelmäßig an Druckaufträgen. Das hat zur Folge, dass der Drucker scheinbar ein Eigenleben entwickelt und 10 bis 100 Minuten nach dem Einschalten aus dem Nichts anspringt und eine halbe Seite mit irgendeinem alten Druckauftrag füllt.

Das Gerät auf Werkseinstellungen zurückzusetzen half nur kurz (zumal man sich anschließend wieder durch die WLAN-Konfiguration quälen muss). Also sollte das Ding mit halbvollem Toner auf den Schrott gehen … bis dann doch die Vernunft siegte. Nicht ganz unschuldig war übrigens eine recht augenöffnende Doku auf dem NDR. Porträtiert wird unter anderem der Inhaber der Blitzblume Ingelheim, ein echtes Original

Klar ist: der Drucker als solches funktioniert nach wie vor klasse. Nur der integrierte Rechenknecht, der den Druckerserver im Netwerk bereitstellt, taugt offenbar nichts. Aber den Teil kann doch ein oller Raspberry Pi mindestens genauso gut erledigen. Gesagt, getan!

Rasperry Pi als Drucker-Server

Die folgenden Punkte dienen wie immer auch als Merkzettel für mich. Nachmachen und bei Bedarf optimieren ist natürlich erlaubt!

Vorüberlegungen

Den „smarten“ Drucker machen wir dümmer, indem wir sämtliche Wifi-Funktionen deaktivieren. Anschlossen wird das Gerät stattdessen per USB an einem preiswerten Einplatinenrechner. Dieser wiederum hängt am Netzwerk und stellt eine Druckerfreigabe bereit. Ein Drucker, der von sich aus überhaupt keine Netzwerk­funktionalität mit sich bringt, lässt sich natürlich auf dieselbe Weise verwenden. Ob der Drucker mit CUPS kompatibel ist, sollte vorab unter OpenPrinting.org nachgeschlagen werden.

Konkret hab ich mich für einen Raspberry Pi Zero WH entschieden, der ist mit Zubehör momentan für rund 20 Tacken zu haben (Preisvergleich) – jeder andere Einplatinenrechner mit USB-Anschluss und Netzwerkfähigkeit eignet sich genau so.

Der rechner läuft headless, also ohne angeschlossene Eingabegeräte oder Bildschirme. Auch die Konfiguration soll bitteschön ohne Adapter erfolgen. Die Druckerverwaltung übernimmt CUPS, Linux-Anwender kennen das vermutlich schon.

Einkauf

Folgendes wird benötigt (gibt's in einschlägigen Shops auch als Set):

  • Einplatinenrechner (hier: Raspberry Pi Zero WH)
  • Netzteil mit genügend Power und passendem Kabel (hier: Micro-USB)
  • Micro-SD-Karte (mindestens 4 GB, je nach Anwendungszweck lieber gleich mehr)
  • Um den Drucker anzuschließen, einen Adapter von USB-A (weiblich) auf Micro-USB (männlich) – oder gleich ein Kabel von USB-B auf Micro-USB

Optional darf im Warenkorb landen:

  • Gehäuse für den Raspberry Pi
  • HDMI-Adapter, um doch mal einen Monitor anzuschließen
  • USB-Hub, falls noch mehr Geräte angeschlossen werden sollen (z.B. Tastatur, Maus)

Setup

Ich gehe im Folgenden davon aus, dass ein Linux-System zur Vorbereitung verwendet wird. Anleitungen für Windows-Nutzer finden sich aber problemlos im Netz.

Wer schonmal einen Raspi eingerichtet hat und sich unter Linux halbwegs zuhause fühlt, braucht vielleicht eine Stunde für alle folgenden Schritte. Einsteiger legen lieber noch eine Stunde drauf.

Den Raspberry Pi vorbereiten

  1. Betriebsystem-Image runterladen (die Lite-Variante wählen)
    • Wer einen anderen Einplatinenrechner verwendet, kann beispielsweise auf Armbian zurückgreifen. Die folgenden Schritte lassen sich weitgehend übernehmen.
  2. Image auf SD-Karte übertragen
    • SD-Karte in deinen Rechner oder Laptop stecken und Device-Namen im Terminal ausgeben lassen, z.B. mit blkid. Wir suchen den Eintrag /dev/mmcblkX, wobei X für eine Ziffer steht.
    • Das Image wird mit folgendem Befehl übertragen (X entsprechend ersetzen) (aufgepasst: Der Befehl dd stellt keine Rückfragen und du kannst ohne Weiteres die falsche Partition überschreiben):
      $ sudo dd if=/pfad/zum/image/raspios-buster-armhf-lite.img of=/dev/mmcblkX bs=1M conv=fsync status=progress
  3. WiFi vorbereiten (überspringen, wenn dein Raspi per Ethernet-Kabel am Router angeschlossen wird)
    • SD-Karte noch nicht entnehmen und auf der frisch angelegten boot-Partition die Datei wpa_supplicant.conf mit folgendem Inhalt anlegen (Details finden sich in der Dokumentation):
      ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
      update_config=1
      network={
      ssid="MeinWLAN"
      psk="meinpasswort123"
      key_mgmt=WPA-PSK
      }

Der erste Start

  1. SD-Karte in den Raspi stecken und booten
    • Der Raspberry Pi sollte hochfahren, sobald er ans Netzteil angeschlossen wird
    • Während der Rechner bootet, ins Admin-Panel des Routers einloggen und in der Netzwerkübersicht den Rasperry Pi suchen. IP-Adresse merken (und idealerweise gleich in den DHCP-Einstellungen festsetzen, damit er immer dieselbe kriegt)
    • Ein Terminal öffnen und mit dem Raspberry Pi verbinden (hier kommt die IP-Adresse zum tragen – IPv6 geht natürlich auch) – das Passwort lautet raspberry:
      $ ssh pi@192.168.178.xyz
  2. First things first: rufe mit Root-Rechten das bordeigene Konfigurations­programm auf (das Passwort lautet wieder raspberry):
    $ sudo raspi-config 
    1. Passwort ändern unter 1. System Options → S3 Password
    2. Speicher erweitern unter 6. Advanced Options → A1 Expand Filesystem (nach dem Übertragen des Images auf die SD-Karte steht noch nicht der gesamte Speicherplatz zu Verfügung. Dieser Befehl schafft Abhilfe.):
    3. System auf den neuesten Stand bringen unter 8. Update
    4. Optionale Schritte:
      • System-Sprache und/oder Tastaturlayout anpassen unter 5. Localisation Options
      • Wenn du keinen DHCP verwendest oder aus anderen Gründen die IP fest in den Netzwerk­einstellungen verankern willst:
        $ sudoedit /etc/dhcpcd.conf

        Netzwerkkonfiguration nach folgendem Muster eintragen (der korrekte Interface-Name lässt sich per ip link rauskriegen):

        interface wlan0
        static ip_address=192.168.0.4/24
        static routers=192.168.0.254
        static domain_name_servers=192.168.0.254 8.8.8.8
    5. Je nachdem wie umfangreich das erste System-Upgrade verlief, ist jetzt ein guter Zeitpunkt für einen Neustart:
      $ sudo reboot

Drucker-Server installieren und einrichten

  1. CUPS installieren und einrichten
    1. … wer einen HP-Drucker hat, installiert hplip gleich mit. Die Ubuntu-Users haben unter anderem auch Anleitungen für Brother und Canon, die sich mit hoher Wahrscheinlich ebenfalls fürs Debian-basierte Raspian OS eignen.
      $ sudo apt update && sudo apt install cups
      $ # oder für HP-Drucker:
      $ sudo apt update && sudo apt install cups hplip
    2. Benutzer pi zur Gruppe lpadmin hinzufügen:
      $ sudo sudo usermod -aG lpadmin pi
    3. CUPS-Konfiguration über das Netzwerk ermöglichen
      $ sudo cupsctl --remote-admin
      $ sudo cupsctl --remote-any
    4. CUPS neustarten
      $ sudo systemctl restart cups
    5. Wer einen HP-Drucker hat, sollte jetzt den proprietären Treiber für sein Gerät installieren. Der folgende Befehl startet einen Assistenten, der durch den Download und die Installation führt (mit Benutzer­rechten ausführen):
      $ hp-plugin -i
  2. Drucker anschließen und konfigurieren
    1. Drucker und Raspi mit USB-Kabel verbinden
    2. Auf dem PC einen Browser öffnen und das CUPS-Web-Interface unter der Adresse http://192.168.178.xyz:631aufrufen
    3. Unter Verwaltung den Drucker hinzufügen
      • Spätestens jetzt wirst du aufgefordert, per Mausklick von http auf https zu wechseln. Anschließend wird dich dein Browser vor einer potentiellen Sicherheitsbedrohung warnen. Die kannst du in diesem Fall ignorieren.
      • Wenn du dich authentifizieren sollst, gib pi als Benutzernamen und dein Passwort aus Schritt 5.1 ein
    4. Dein Drucker sollte unter Lokale Drucker auftauchen. Auswählen und Weiter klicken
    5. Das passende Modell aus der Liste wählen und im letzten Schritt den Drucker im Netzwerk freigeben
    6. Falls gewünscht kannst du zum Ausprobieren jetzt eine Testseite drucken

Fertig!

  1. Drucker benutzen
    • Der Drucker sollte von jedem Rechner oder Smartphone innerhalb des Netzwerks gefunden und ohne große zusätzliche Konfiguration benutzt werden können.
    • Wer noch nicht genug hat, kann über weitere Anwendungen des Raspberry Pi nachdenken. Netzwerkweit Werbung blocken als Pi-Hole bietet sich da etwa an.

Quellen und weiterführende Links

(Titelfoto von Jeff Loucks auf Unsplash)