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.
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.
Nun auf dem iPhone die Druckeroptionen aufrufen um den Drucker einzurichten.
Den eben konfigurierten "AirPrint Deskjet_6940" Drucker auswählen.
Und sich darüber freuen, dass bedrucktes Papier aus dem Drucker kommt.