Ein Apple freundliches Linux – CUPS


Ich habe schon seit fast 20 Jahren Linux auf meinem Desktop. Seit 1995 SuSE Linux und das leistet mir auch ordentliche Dienste. Einen Mac und Windows NT gab es natürlich im Büro, habe ich selbst privat aber nicht wirklich gebaucht.
2006 kam dann mit den Intel Macbooks ein tragbarer Rechenknecht in meiner Preis-, Leistungs- und Gewichtsklasse den ich eigentlich mit Windows betreiben wollte. Vielleicht Linux im Dualboot wie auf den anderen Laptops davor.
Nun ja, ich bin bei OS X geblieben und hatte Windows in VMWare Fusion, war für meine Zwecke unterwegs ausreichend schnell und OS X machte mir richtig Spass.

Allerdings kam da der Wunsch auf, über den Desktop zu drucken. Der Umweg über Samba erschien mir überflüssig, es läuft ja auf beiden Systemen CUPS.
Der nächste Schritt war dann logischerweise netatalk für Netzwerklaufwerke und mit dem iPad und iOS 4 kam dann Airprint.
Jetzt ist es an der Zeit, das was ich so im Internet zusammengesucht habe in möglichst einfachem Deutsch zusammenzufassen.


CUPS

Von Haus aus ist CUPS bei OpenSUSE eher restriktiv eingerichtet, da ich mir zuhause wenig Sorgen um böse Hacker mache, hab ich das sehr offen eingestellt.
Dazu muss man /etc/cups/cupsd.conf ein bisschen bearbeiten um später mit der Weboberfläche bequemer arbeiten zu können.

ACHTUNG! Das ist eine gewaltige Sicherheitslücke, das sollte man nur tun, wenn man sicherstellen kann, dass im eigenen Netz keine bösen Jungs unterwegs sind.
Das sollte dann etwa so aussehen:

ServerAlias *
LogLevel warn
SystemGroup sys root

# Allow remote access
Port 631
Listen /var/run/cups/cups.sock
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseLocalProtocols CUPS
BrowseAddress @LOCAL

DefaultAuthType Basic

# Verwaltung aus dem Netz…
Order allow,deny
Allow all

# Verwaltung aus dem Netz…
Order allow,deny
Allow all

AuthType Default
Require user @SYSTEM
# Netzwerkzugang zu den Konfigurationsdateien …
Order allow,deny
Allow all

Nachdem der cupsd mit rccups neu gestartet wurde, kann man mit einem Webbrowser

auf http://localhost:631 die Verwaltungsoberfläche von CUPS aufrufen. Da ist dann eigentlich nur noch wichtig ob in Verwaltung unter  Servereigenschaften

Jetzt sollte der Printserver vom Mac aus im Browser mit:631 sichtbar sein, in meinem Fall heißt der Desktop maxdata und ich kann die CUPS Verwaltungsseite unter der URL maxdata:631 aufrufen.
Auf dem Mac kann man dann die ans Linux angeschlossenen Drucker als Netzwerkdrucker benutzen. In der Systemsteuerung Drucker öffnen und einen neuen Drucker hinzufügen.

Unter „Drucken mit“ kann man einen passenden Druckertreiber auswählen. Die original Canon Treiber funktionieren leider nicht und ich habe daher den Gutenprint Treiber benutzt.

Damit geht drucken schon mal ohne Umwege über Samba, hat mir viel Haare raufen erspart 🙂
Aber es geht noch besser, mit Bonjour und Avahi.

Avahi ist die Linux Implementation von Zeroconf und Bonjour die von OS X. Die Idee dahinter ist, dass alle Geräte die Dienste im Netz anbieten ohne großen Aufwand vom Anwender auch benutzt werden können. Also nicht wie oben beschrieben den Netzwerkdrucker von Hand eintragen. Statt dessen soll er automatisch gefunden werden.
Es gibt natürlich noch einen zweiten Grund, ich bin zu faul Avahi wegen einem Drucker von Hand einzurichten, aber das iPad findet Drucker ausschließlich über Bonjour, da kann man nichts selbst machen, der Drucker muss über Bonjour gefunden werden.

Zum Glück ist das alles schon da und man muss „nur“ dem Avahi Dämon einen neuen Service bekannt machen damit der dann im Netz gefunden werden kann.
Ryan Finnie hat sich die Mühe gemacht herauszufinden wie iOS 4 Geräte Airprint Drucker suchen und das auf seinem Blog gut beschrieben.
Kurz zusammengefasst, braucht man unter /etc/avahi/services eine Datei die alles beschreibt was das iPhone oder iPad braucht um mit dem Drucker zu reden. Bei mir heißt die AirPrint-Canon_iP4000.service und sieht so aus:
<?xml version=’1.0′ encoding=’UTF-8′?>
<!DOCTYPE service-group SYSTEM „avahi-service.dtd“>
<service-group>
<name replace-wildcards=“yes“>AirPrint Canon_iP4000 @ %h</name>
<service>
<type>_ipp._tcp</type>
<subtype>_universal._sub._ipp._tcp</subtype>
<port>631</port>
<txt-record>txtvers=1</txt-record>
<txt-record>qtotal=1</txt-record>
<txt-record>Transparent=T</txt-record>
<txt-record>URF=none</txt-record>
<txt-record>rp=printers/Canon_iP4000</txt-record>
<txt-record>note=Canon iP4000</txt-record>
<txt-record>product=(GPL Ghostscript)</txt-record>
<txt-record>printer-state=3</txt-record>
<txt-record>printer-type=0xb01c</txt-record>
<txt-record>pdl=application/octet-stream,application/pdf,application/postscript,application/vnd.cups-raster,image/gif,image/jpeg,image/png,image/tiff,text/html,text/plain,application/tpog-ps,application/vnd.cups-banner,application/vnd.cups-pdf</txt-record>
</service>
</service-group>

Das kann man so übernehmen, muss aber die Namen etwas anpassen. Ganz wichtig ist der Name der Cups Warteschlange, hier „<txt-record>rp=printers/Canon_iP4000</txt-record>“.

Alternativ gibt es ein Script von T.J. Fontaine das einem die Tiparbeit abnimmt.  Wenn dieses Script keine Datei erzeugt, dann stimmt was mit dem Cups Server nicht!

Wenn die Datei an der richtigen Stelle ist, einmal den  avahi-daemon neu starten und dann  kann man am iDings mal schauen, ob eine App einen Drucker findet. Im allgemeinen über Drucken -> Drucker auswählen und da sollte der Netzwerkdrucker zu finden sein.

Airprint iPad

Und auf dem Mac sieht das dann so aus:

Schreibe einen Kommentar