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
- 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)
- Pi booten, per SSH verbinden:
ssh pi@airprintpi.local
- (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)
- (Optional) alte Queue entfernen:
sudo lpadmin -x BrotherHL2030 2>/dev/null || true
- 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"
- Als Standard setzen:
sudo lpoptions -d BrotherHL2030
- 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.
- 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
- Dienste neu starten:
sudo systemctl restart avahi-daemon sudo systemctl restart cups
- 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)
- Auf dem Pi sicherstellen:
sudo lpadmin -p BrotherHL2030 -o auth-info-required=none sudo cupsctl --share-printers --remote-any
- 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
