Montag, 13. Dezember 2010

AirPrint für iDevices unter Ubuntu

Hallo zusammen,
Heute möchte ich euch zeigen, wie man das neue iOS Feature "AirPrint" auch ohne AirPrint fähigen Drucker unter Ubuntu nutzen kann. Dazu wird lediglich eine kleine avahi Service Datei erstellt und einige Änderungen an cups vorgenommen. Folgt einfach meiner, kleinen Anleitung und ihr könnt mit AirPrint drucken:
  1. Zuerst erstellt ihr die avahi Service Datei mittels
    sudo gedit /etc/avahi/services/printer.service
  2. In dieser Datei fügt ihr nun folgendes ein:
    <?xml version="1.0" standalone='no'?><!--*-nxml-*-->
    <!DOCTYPE service-group SYSTEM "avahi-service.dtd">
    <service-group>
      <name>My Printer</name>
      <service>
        <type>_ipp._tcp</type>
        <subtype>_universal._sub._ipp._tcp</subtype>
        <port>631</port>
        <txt-record>txtver=1</txt-record>
        <txt-record>qtotal=1</txt-record>
        <txt-record>rp=printers/My-Printer-CUPS-Name</txt-record>
        <txt-record>ty=My Printer</txt-record>
        <txt-record>adminurl=http://198.168.1.4:631/printers/My-Printer-CUPS-Name</txt-record>
        <txt-record>note=My Printer</txt-record>
        <txt-record>priority=0</txt-record>
        <txt-record>product=virtual Printer</txt-record>
        <txt-record>printer-state=3</txt-record>
        <txt-record>printer-type=0x801046</txt-record>
        <txt-record>Transparent=T</txt-record>
        <txt-record>Binary=T</txt-record>
        <txt-record>Fax=F</txt-record>
        <txt-record>Color=T</txt-record>
        <txt-record>Duplex=T</txt-record>
        <txt-record>Staple=F</txt-record>
        <txt-record>Copies=T</txt-record>
        <txt-record>Collate=F</txt-record>
        <txt-record>Punch=F</txt-record>
        <txt-record>Bind=F</txt-record>
        <txt-record>Sort=F</txt-record>
        <txt-record>Scan=F</txt-record>
        <txt-record>pdl=application/octet-stream,application/pdf,application/postscript,image/jpeg,image/png,image/urf</txt-record>
        <txt-record>URF=W8,SRGB24,CP1,RS600</txt-record>
      </service>
    </service-group>
    Ersetzt "My Printer" durch den Namen eures Druckers, z.B. "AirPrinter". "My-Printer-CUPS-Name" muss der Name des CUPS Druckers sein, wie der drucker unter Ubuntu heißt. Meist ist das hier das Drucker Modell. Meines z.B. ist der EPSON_Stylus_S20. Es steht euch auch frei, die anderen Werte anzupassen. Diese könnt ihr in
    man cups
    nachschlagen.
  3. Nun stellt sicher, das sich in eurer cupsd.conf
    sudo gedit /etc/cups/cupsd.conf
    folgender Eintrag befindet:
    ServerAlias *
    Port 631
    Listen /var/run/cups/cups.sock 
    Solte dies nicht der Fall sein, so fügt es am Anfang der Datei hinzu.
  4. Nun geht ihr mit eurem Ubuntu Rechner auf http://localhost:631. Dort befindet sich euer CUPS Druckersystem. Dort wählt ihr dann im oberen Tab "Verwaltung" und markiert dort das Kästchen "Freigeben von Druckern welche mit diesem System verbunden sind". Anschließend klickt ihr auf "Einstellungen ändern" und gebt das Root-Passwort ein (Benutzername: euer User, Passwort: Root-Passwort). Anschließend startet cups neu.
  5. Nachdem CUPS neugestartet ist, könnt ihr mit AirPrint drucken :)

U P D A T E:

Mit folgenden schritten, lässt sich das ganze etwas automatisieren:

  1. Auf der Konsole
    git clone https://github.com/tjfontaine/airprint-generate.git
    ausführen
  2. Danach mit
    cd airprint-generate
    in das Verzeichnis airprint-generate wechseln
  3. dort
    python airprint-generate.py
    ausführen
  4. Die nun erzeugte *.service Datei in das avahi Verzeichnis kopieren
    sudo cp *.service /etc/avahi/services/
  5. noch oben ab Schritt 3 folgen
  6. Mit AirPrint drucken :)

Keine Kommentare:

Kommentar veröffentlichen