,

Anleitung: Mit Brother HL-2030 per AirPrint im WLAN drucken (macOS Tahoe & iOS 26) – Raspberry Pi Zero W (Trixie)

Du hast einen Brother HL-2030 (USB, älter, kein echtes AirPrint/IPP-Everywhere) und willst trotzdem vom Mac (macOS Tahoe) und iPhone/iPad (iOS 26) problemlos im WLAN drucken – ohne Treiberzirkus, ohne “Auf Authentifizierung warten”, ohne doppelte Drucker, ohne Zufall.

Die Lösung: Der Raspberry Pi wird zu einem AirPrint-Proxy:

  • CUPS + brlaser druckt lokal per USB auf den HL-2030.
  • Avahi (Bonjour/mDNS) kündigt den Drucker als AirPrint-fähig an (inkl. _universal-Subtype + URF/PDL TXT-Records).
  • macOS/iOS sehen einen “AirPrint”-Drucker und senden kompatible Jobs, CUPS rendert und druckt.

Unten ist eine verlässliche Schritt-für-Schritt-Anleitung, die du jederzeit 1:1 nachbauen kannst.


Was typischerweise schiefgeht (und wie du es vermeidest)

1) “Auf Authentifizierung warten” (macOS/iOS hängt beim Drucken)

Ursache: CUPS verlangt (auch nur “preflight”) Auth für Druckoperationen (Create-Job/Send-Document). iOS kann das nicht sauber lösen, macOS Tahoe cached es extrem hart.

2) macOS zeigt “Treiber auswählen” statt “AirPrint”

Ursache: Der Bonjour-Advert ist nicht eindeutig AirPrint-konform (fehlender _universal Subtype oder fehlende/ungeeignete URF/PDL TXT-Records). Dann fällt macOS auf “klassisches Treibermodell” zurück.

3) Drucker erscheint doppelt in macOS

Ursache: CUPS kündigt selbst per DNS-SD an und Avahi kündigt zusätzlich an. Ergebnis: zwei Bonjour-Einträge.

4) LPD-Ansatz / cups-lpd

Unter aktuellen Debian/Raspberry Pi OS Releases ist LPD oft nicht verfügbar bzw. nicht der stabile Weg für AirPrint-Clients. Der robuste Weg ist IPP/AirPrint via Bonjour.

5) ipp-usb / “driverless über USB”

Nur sinnvoll für moderne Drucker, die IPP-over-USB wirklich unterstützen. Der HL-2030 tut das nicht – ipp-usb kann hier eher Chaos (Phantom-Queues) erzeugen.


Zielbild (so muss es am Ende aussehen)

  • Der Pi hat eine CUPS-Queue: BrotherHL2030
  • Avahi kündigt einen AirPrint-Dienst an, der auf Port 631 zeigt und rp=printers/BrotherHL2030 enthält.
  • Auf dem Pi liefern diese Tests ein positives Signal:
    • lpstat -p -d zeigt die Queue und “idle”
    • avahi-browse -rt _universal._sub._ipp._tcp zeigt den AirPrint-Advert
  • In macOS Tahoe erscheint der Drucker im “Standard”-Tab als Bonjour-Drucker und wird als AirPrint akzeptiert (kein Treiberdialog, kein Auth-Warten).
  • In iOS 26 erscheint der Drucker direkt in der Druckerauswahl.

Voraussetzungen

  • Raspberry Pi Zero W (oder anderer Pi) im WLAN
  • Brother HL-2030 per USB am Pi
  • Frische Raspberry Pi OS Lite (32-bit, Trixie) Installation
  • Idealerweise: statische IP oder DHCP-Reservation im Router (empfohlen)

Schritt 1 – Raspberry Pi OS Lite installieren

  1. Mit Raspberry Pi Imager flashen:
    • OS: Raspberry Pi OS Lite (32-bit) (Trixie)
    • Hostname: airprintpi (Beispiel)
    • WLAN SSID/Passwort eintragen
    • SSH aktivieren
    • Zeitzone/Locale setzen (z. B. Europe/Berlin)
  2. Pi booten, per SSH verbinden:
ssh pi@airprintpi.local
  1. (oder per IP)

Schritt 2 – System aktualisieren

sudo apt update
sudo apt full-upgrade -y
sudo reboot

Nach dem Reboot erneut verbinden.


Schritt 3 – Benötigte Pakete installieren

sudo apt update
sudo apt install -y --no-install-recommends \
  cups cups-client cups-bsd cups-filters \
  printer-driver-brlaser \
  avahi-daemon avahi-utils

User in die CUPS-Admin-Gruppe:

sudo usermod -aG lpadmin $USER
newgrp lpadmin

Dienste aktivieren:

sudo systemctl enable --now cups avahi-daemon

Schritt 4 – Drucker per USB prüfen

Drucker anschließen und prüfen:

lsusb

Erwartung: Ein Eintrag wie “Brother Industries … HL-2030 …”.

USB-Backends prüfen:

lpinfo -v | grep -i usb

Erwartung: Eine URI wie:

usb://Brother/HL-2030%20series?serial=…


Schritt 5 – CUPS-Queue mit brlaser anlegen (HL-2030)

  1. (Optional) alte Queue entfernen:
sudo lpadmin -x BrotherHL2030 2>/dev/null || true
  1. Queue erstellen:
USBURI="$(lpinfo -v | awk '/usb:\/\/Brother\/HL-2030/ {print $2; exit}')"
echo "$USBURI"

sudo lpadmin -p BrotherHL2030 -E \
  -v "$USBURI" \
  -m "drv:///brlaser.drv/br2030.ppd"
  1. Als Standard setzen:
sudo lpoptions -d BrotherHL2030
  1. Schnelltest lokal vom Pi:
lp -d BrotherHL2030 /etc/hosts

Erwartung: Papier kommt raus.

Wenn nicht: zuerst dieses lokale Problem lösen (USB/Queue/PPD), bevor du AirPrint angehst.


Schritt 6 – CUPS für LAN freigeben (ohne Auth-Hänger)

Wir stellen sicher:

  • CUPS ist im LAN erreichbar
  • Druckjobs erfordern keine Auth
  • Admin bleibt geschützt (optional)

6.1 CUPS Sharing aktivieren

sudo cupsctl --share-printers --remote-any
sudo lpadmin -p BrotherHL2030 -o printer-is-shared=true
sudo lpadmin -p BrotherHL2030 -o auth-info-required=none

6.2 Port 631 prüfen

sudo ss -lntp | grep 631

Erwartung: LISTEN 0.0.0.0:631 (oder ähnlich).


Schritt 7 – AirPrint “bulletproof” announcen

Der entscheidende Schritt für macOS Tahoe/iOS 26:

Wir kündigen die Queue als AirPrint-fähig an, inkl. _universal-Subtype und minimalen AirPrint-TXT-Records.

  1. Service-Datei erstellen:
sudo tee /etc/avahi/services/airprint-brotherhl2030.service >/dev/null <<'EOF'
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name replace-wildcards="yes">BrotherHL2030 @ %h</name>

  <service>
    <type>_ipp._tcp</type>
    <subtype>_universal._sub._ipp._tcp</subtype>
    <port>631</port>

    <txt-record>txtvers=1</txt-record>
    <txt-record>qtotal=1</txt-record>
    <txt-record>rp=printers/BrotherHL2030</txt-record>

    <!-- AirPrint essentials -->
    <txt-record>pdl=application/pdf,image/urf</txt-record>
    <txt-record>URF=DM3</txt-record>

    <txt-record>ty=Brother HL-2030 (via CUPS)</txt-record>
    <txt-record>product=(Brother HL-2030)</txt-record>
    <txt-record>note=USB on Raspberry Pi</txt-record>
  </service>
</service-group>
EOF
  1. Dienste neu starten:
sudo systemctl restart avahi-daemon
sudo systemctl restart cups
  1. Prüfen, ob AirPrint-Discovery korrekt ist:
avahi-browse -rt _universal._sub._ipp._tcp | sed -n '1,220p'

Erwartung: Ein Eintrag “BrotherHL2030 @ airprintpi … port 631 … rp=printers/BrotherHL2030 … pdl=…pdf…image/urf … URF=DM3”.


Schritt 8 – Doppelte Drucker-Einträge in macOS verhindern

Wenn macOS zwei Einträge anzeigt, liegt das oft daran, dass CUPS selbst zusätzlich per DNS-SD announced und Avahi auch.

Wir behalten für “bulletproof” Setup nur Avahi als AirPrint-Advert und schalten CUPS-DNS-SD-Advertising aus:

sudo sed -i 's/^BrowseLocalProtocols .*/BrowseLocalProtocols none/' /etc/cups/cupsd.conf
sudo systemctl restart cups
sudo systemctl restart avahi-daemon

Optional prüfen:

avahi-browse -rt _ipp._tcp | sed -n '1,120p'
avahi-browse -rt _universal._sub._ipp._tcp | sed -n '1,120p'

Schritt 9 – macOS Tahoe: Drucker sauber hinzufügen (ohne Cache-Fallen)

Tahoe cached Drucker-Fähigkeiten und ggf. Auth sehr aggressiv. Für “bulletproof” einmal sauber bereinigen.

9.1 Alte Drucker entfernen & Drucksystem zurücksetzen

  • Systemeinstellungen ? Drucker & Scanner
  • Alle Einträge löschen, die airprintpi/BrotherHL2030 betreffen
  • Rechtsklick in die Liste ? Drucksystem zurücksetzen…

9.2 Keychain bereinigen

  • Schlüsselbundverwaltung öffnen
  • Suche nach: airprintpi, BrotherHL2030, ipp://, ipps://, 631
  • Drucker-/IPP-Passwörter löschen (falls vorhanden)

9.3 Bonjour Cache refresh

Terminal am Mac:

sudo killall -HUP mDNSResponder

WLAN kurz aus/an.

9.4 Drucker hinzufügen

  • Systemeinstellungen ? Drucker & Scanner ? +
  • Tab Standard
  • Wähle: BrotherHL2030 @ airprintpi (Bonjour)
  • Hinzufügen

Erwartung: Keine Treiberauswahl nötig, kein Auth-Dialog, Drucker wird akzeptiert.


Schritt 10 – iOS 26: AirPrint Test

Auf iPhone/iPad (gleiches WLAN):

  • “Teilen” ? “Drucken” ? Drucker auswählen
  • BrotherHL2030 @ airprintpi sollte erscheinen
  • Testseite drucken

Verifikation & Health-Checks (für später)

Druckerstatus

lpstat -p -d
lpstat -o

AirPrint/Bonjour Sichtbarkeit

avahi-browse -rt _universal._sub._ipp._tcp | sed -n '1,220p'

CUPS Logs (bei Problemen nach einem Druckversuch)

sudo tail -n 120 /var/log/cups/error_log

Troubleshooting (kurz & zielgenau)

Problem: “Auf Authentifizierung warten” (macOS/iOS)

  1. Auf dem Pi sicherstellen:
sudo lpadmin -p BrotherHL2030 -o auth-info-required=none
sudo cupsctl --share-printers --remote-any
  1. Auf dem Mac: Drucksystem zurücksetzen + Keychain löschen + mDNSResponder reload (wie oben).

Problem: macOS zeigt “Treiber auswählen” statt AirPrint

  • Prüfe, ob _universal wirklich angezeigt wird:
avahi-browse -rt _universal._sub._ipp._tcp | sed -n '1,120p'

Wenn nicht: Avahi-Servicefile prüfen (rp=printers/BrotherHL2030) und avahi-daemon neu starten.

Problem: Drucker erscheint doppelt

  • CUPS-Advertising deaktivieren:
sudo sed -i 's/^BrowseLocalProtocols .*/BrowseLocalProtocols none/' /etc/cups/cupsd.conf
sudo systemctl restart cups
sudo systemctl restart avahi-daemon

Problem: Lokaler Druck vom Pi klappt nicht

Erst USB/Queue lösen:

lpinfo -v | grep -i usb
lp -d BrotherHL2030 /etc/hosts

Wenn das lokal nicht druckt, wird AirPrint das nicht “magisch” reparieren.


Ergebnis

Mit diesem Setup hast du einen stabilen AirPrint-Proxy für den Brother HL-2030:

  • Ein sauberer AirPrint-Eintrag in macOS Tahoe
  • Kein Auth-Warten
  • iOS 26 druckt direkt im WLAN
  • Rendering passiert zuverlässig auf dem Pi via brlaser
  • Die Konfiguration ist nachvollziehbar, wiederholbar und blogpost-tauglich