Mit dem iPhone im Linux Netzwerk drucken

Tjfontaine hat in seinem Blog schon 2010 ein Python Skript vorgestellt [W], dass aus einer vorhandenen Cups [W] Konfiguration die nötigen Informationen ausliest und daraus von jedem im Linux Netzwerk freigegebenen Cups-Drucker eine AirPrint [W] Konfigurationsdatei für den Avahi [W] Daemon erzeugt.
Mit diesen Dateien kann jeder im Netzwek freigegebene Cups-Drucker über das lokale WLAN via AirPrint verfügbar gemacht werden.

Erstaunlicherweise schwand das Interesse an sein Blog Eintrag aber recht schnell, in meinen Augen wurde hier eine echte Perle übersehen.

Vielen Dank an Rune Smistad für die Lösung, um iOS 6.0 zu unterstützen und an Sven Verhaegen für die Unterstützung von iOS 6.0.1.
Unter iOS 7.0 funktioniert diese Lösung auch noch.



Mini Howto:

System-Voraussetzungen:
Linux
installierter Python-Interpreter
laufender Avahi Deamon
unter Cups eingerichtete und im Netzwerk freigegebene Drucker

Am schnellsten läßt sich AirPrint von der Konsole aus installieren.

In das "src" (Source) Verzeichnis wechseln.

cd src

Das Zip-Archiv von der Website herunterladen.

wget https://github.com/tjfontaine/airprint-generate/zipball/master

Das Archiv entpacken.

unzip master

Den unaussprechlichen Verzeichnisnamen ändern.

mv tjfontaine-airprint-generate-fb98c1d AirPrint

In das neu erstellte Verzeichnis wechseln.

cd AirPrint

Den Inhalt des Verzeichnises anzeigen.

ls -l

Das Skript ausführen.

./airprint-generate.py

Den Inhalt des Verzeichnises anzeigen.

ls -l

Wenn bis jetzt alles geklappt hat sollte es in etwa so aussehen.

Der Drucker wurde korrekt erkannt und die AirPrint-Deskjet_6940.service Datei entsprechend benannt.
Der Name der neu erzeugten "*.service" Datei(en) ist abhängig von der Cups-Konfiguration.
Der in diesem Beispiel verwendete "AirPrint-Deskjet_6940" ist nur ein Beispiel und in den weiteren Schritten entsprechend anzupassen.

Die neu erstellte "*.service" Datei anzeigen.

cat AirPrint-Deskjet_6940.service

Root Rechte bekommen.

su

Die Datei kopieren.

cp AirPrint-Deskjet_6940.service /etc/avahi/services

Nach "/usr/share/cups/mime" wechseln.

cd /usr/share/cups/mime

Die Datei apple.types herunterladen.

wget www.christianmarkgraf.de/download/apple.types

Die Datei local.convs herunterladen.

wget www.christianmarkgraf.de/download/local.convs

Nun den Avahi daemon neu starten.

/etc/init.d/avahi-daemon restart

Jetzt muss nur noch der Cups Server neu gestartet werden.

/etc/init.d/cups restart

Die Konsolenausgabe davon sah so aus:

In /var/log/messages stand danach:

Nov 25 06:57:31 tuxomat avahi-daemon[7153]: Service "AirPrint Deskjet_6940 @ tuxomat"
(/etc/avahi/services/AirPrint-Deskjet_6940.service) successfully established.

Der Drucker ist jetzt im WLAN als "AirPrint Deskjet_6940" für das iPhone verfügbar.



Druckeroptionen

Nun auf dem iPhone die Druckeroptionen aufrufen um den Drucker einzurichten.



Drucker auswählen

Den eben konfigurierten "AirPrint Deskjet_6940" Drucker auswählen.



Drucken

Und sich darüber freuen, dass bedrucktes Papier aus dem Drucker kommt.



Mein Fazit

Pro:
Auf einer frisch aufgesetzten openSUSE 12.1 war mein alter Drucker problemlos in ein paar Minuten um die AirPrint Funktion erweitert.
Es läuft auch unter iOS 7.0.
Es ist kostenlos, nutzt vorhandene Resourcen, hat einen hohen Nutzwert und macht es das iPhone zu Hause deutlich wertiger.
Contra:
Ein ständig laufender Cups-Server und Drucker in einem Linux Netzwerk sind notwendig, um einen echten AirPrint-Drucker zu ersetzen.


Weitere Informationen