Mit der hier gezeigten Vorgehensweise ist es möglich einen beliebigen Drucker Airprintfähig zu machen.
Meine Voraussetzungen:
- NAS/Server 24/7 mit Debian Squeeze
- Canon MX700 über Lan angeschlossen
- iPhone/iPad
Ziel soll es sein, das wir von jedem Gerät im Netzwerk auf den Drucker zugreifen können. Zusätzlich wird ein PDF-Drucker bereitgestellt, um aus Dokumenten PDF’s zu erstellen.
Dazu werden die folgenden Schritte nötig sein.
- per apt-get oder aptitude die nötigen Pakete installieren
- Gutenprint Treiber aus den Quellen compilieren
- bjnp-cups aus dem svn compilieren
- Airprint funktionalität herstellen
1. Die benötigten Pakete installieren
Jetzt wird cups(1.4.4) mit den nötigen Abhänigkeiten installiert und auch gleich die Dev-Pakete, um später den Gutenprint Treiber(5.2.9) zu bauen.
2. Gutenprint Treiber compilieren
Bei Debian Squeeze ist der Gutenprint Treiber bis jetzt via Paketmanager nur in Version 5.2.6 erhältlich. Deshalb müssen wir ihn von Hand bauen.
Zuerst wird die aktuelle Version heruntergeladen und in ~/Downloads gespeichert. Link zur aktuellen Version
Jetzt wird das File nach /usr/local/src entpackt und in den neuen Ordner gewechselt.
cd /usr/local/src/gutenprint-*
Jetzt wird mit dem Dreisatz das Paket gebaut. Zwischen den einzelnen Befehlen hat es bei meinem NAS schon mal 30min gedauert. Wenn ihr allerdings mehr Power habt, gehts schneller.
make clean && make
make install
3. bjnp-cups compilieren
Bei mir war es notwendig die Sourcen aus dem svn zu holen, weil der Entwickler kurzfristig einige wichtige Änderungen für den Canon MX700 eingeflegt hatte. Ohne diese, funktionierte der Drucker nicht. Dieses Tool findet den über Lan angeschlossenen Drucker und stellt ein entsprechendes Protokoll zur Verfügung. Sollte euer Drucker über USB angeschlossen sein, kann dieser Schritt übersprungen werden.
svn co svn://svn.code.sf.net/p/cups-bjnp/code/trunk bjnp-cups
cd bjnp-cups
autoreconf -if
./configure
make
Jetzt testen wir mit ./bjnp, ob der Netzwerkdrucker gefunden wird.
Ausgabe:
Jetzt kann der Drucker über das Webinterface konfiguriert und eingestellt werden. Nicht vergessen den PDF-Drucker gleich mit einzurichten. Wenn alles läuft, sollte auch eine Testseite gedruckt werden können. Bei der Konfiguration ist zu beachten, das der Drucker freigegeben werden sollte.
4. Airprint funktionalität herstellen
Die erforderlichen Dienste/Pakete installieren. (Python, Avahi und python-cups)
Ein Script, das von tjfontaine erstellt wurde herunterladen, was aus dem Cups-Drucker automatisch das Servicefile für Avahi erstellt. Jetzt sollte das Script gestartet werden und danach im Ordner die Avahi-Service-Datei(en) auftauchen.
cd /tmp/avahi-script
wget --no-check-certificate https://github.com/tjfontaine/airprint-generate/raw/master/airprint-generate.py
Anschließend muß das Script an die richtige stelle kopiert werden.
cp ./*.service /etc/avahi/services/
Dienste noch neustarten
/etc/init.d/avahi-daemon restart
/etc/init.d/cups restart
So, im iDevice sollten jetzt ein oder mehrere Drucker gefunden werden.
Update iOS6.xx
Ab iOS 6.0 ist von Apple wieder etwas an den Aiprintprotokollen geändert worden. Hier muß einiges angepasst werden.
In den *.service Datei(en) nach pdl= suchen und einen Eintrag ,image/urf einfügen. Die Zeile sollte dann so wie die untere aussehen.
Eine Datei /usr/share/cups/mime/apple.types mit folgendem Inhalt erstellen.
Zum Schluss noch die Datei /usr/share/cups/mime/local.convs anlegen und diesen Inhalt einfügen.
Viel Spaß beim ausprobieren.