Wer Mac OS X in einem Netzwerk einsetzt, in dem sich ein etwas teurerer Netzwerkdrucker befindet, wird es längst wissen: Die Dinger preisen sich im Druckdialog unter „Bonjour Printers“ automatisch an. Die von Apple (mit?)entwickelte Technologie ist unter vielen Namen bekannt: Rendezvous, Bonjour, mDNS, Zeroconf.
Hier zu Hause betreibe ich einen HP Laserjet 1300 (der kann Postscript, was in heterogenen Umgebungen mit Linux und Mac OS X von Vorteil ist), der am LPT-Port eines Debian GNU/Linux Servers hängt. Druckaufträge aus dem Netzwerk nimmt lprng mit dem LPD/LPR-Protokoll entgegen (CUPS wäre in diesem Fall Overkill).
Als meine Freundin vor Kurzem bei mir zu Besuch war und von ihrem Laptop etwas ausdrucken wollte, erinnerte ich mich an die Einfachheit der Drucker-Installation mit Bonjour. Irgendwie sollte es doch möglich sein, die Funktionalität mit Linux nachzubauen?
Tatsächlich habe ich es nach einigem Pröbeln hingekriegt. Als erstes installiert man den avahi-daemon, der im Hintergrund die ganze mDNS-Geschichte abhandelt:
# apt-get install avahi-daemon
Anschliessend erstellen wir eine XML-Datei unter /etc/avahi/services mit folgendem Inhalt:
$ cat /etc/avahi/services/printer.service <service-group> <name replace-wildcards="yes">HP Laserjet 1300 on ALPHA</name> <service> <type>_printer._tcp</type> <host-name>mad4you.homeip.net</host-name> <port>515</port> <txt-record>txtvers=1</txt-record> <txt-record>rp=Laserdrucker</txt-record> <txt-record>ty=HP Laserjet 1300</txt-record> <txt-record>product=(HP Laserjet 1300)</txt-record> </service> </service-group>
Erläuterung der Anweisungen
- type: _printer._tcp Es wird das LPD/LPR-Protokoll verwendet
- hostname: IP-Adresse oder Domain-Name des Druckservers
- port: 515 Die Portnummer, auf der LPD lauscht
- txt-record: rp=Laserdrucker Sehr wichtig: Der Queue-Name des Druckers auf dem LPD-Server. Stimmt dieser nicht, wird der Druckauftrag nicht angenommen. Wie die definierten LPD-Queues heissen, erfährt man aus /etc/printcap
- ty, product Die Angaben hier sind nicht zwingend nötig – Mac OS X erkennt den Drucker dank diesen Angaben vollautomatisch und richtet die entsprechenden Drucker-Treiber ein (sofern bereits installiert).
Einen gründlichen Einblick liefert die offizielle Dokumentation von Apple: Bonjour Printing Specification
Vielfältige Anwendungsarten
Dieses Protokoll beschränkt sich überhaupt nicht nur auf die Bekanntmachung von Druckern im Netzwerk. Genauso kann man SSH-Server oder Web-Site URLs in den Äther hinaus funken.