Seit nunmehr fast drei Jahren ist das Apple iPhone auf dem Markt, seit ungefähr zwei Jahren der iPod Touch und seit ungefähr einem Monat das iPad. So unterschiedlich diese Geräte auch alle sind, haben sie eines gemeinsam: Das Betriebssystem ist bei allen dreien das iPhone OS.Grundsätzlich sind diese Geräte kompatibel zu Mac OSX und mit Einschränkungen auch zu Microsoft Windows. Grund sind die geschlossenen Protokolle von Apple, die einen Zugriff auf das System ermöglichen.
Nun sind diese Geräte allerdings sehr populär, nicht nur unter OSX und Windows Benutzern, sondern auch unter Linuxbenutzern. Ich selber bin nun seit 2 Jahren meist glücklicher Besitzer eines iPhones. Es war also nur eine Frage der Zeit, bis sich die ersten Personen der Problematik annehmen und versuchen diese Geräte linuxkompatibel zu machen, so dass man beides unter einen Hut bringen kann.
Das war, gerade zu Anfangszeiten, nicht immer einfach und ich habe ein Menge geflucht und noch mehr probiert. (Man suche einfach in meinem Blog nach iPhone) Doch mittlerweile hat sich das Bild extrem zum positiven gewendet.
Anfangs brauchte man zwingend einen Jailbreak, um überhaupt irgendwas mit dem iPhone unter Linux anzustellen, ein SSH-Zugang zum Gerät war essentiell. Eigentlich nichts schlimmes, aber nicht jeder möchte, bzw. ist in der Lage dazu, sein iPhone zu jailbreaken. Auf Dauer konnte dies also keine akzeptable Lösung sein.
Wie sieht es den heute also aus? Sehr, sehr, und ich glaube man kann mit gutem Gewissen noch ein weiteres “sehr” hinzufügen, gut! Fangen wir mal an uns die Einzelheiten anzuschauen.
Die Software
Fangen wir mit der benötigten Software an: An erster Stelle wäre da die Bibliothek libimobiledevice, ehemals libiphone, zu nennen. Sie ist eines der wichtigsten Teile, damit die iPhone OS Geräte überhaupt unter Linux angesprochen werden können. Der zweite wichtige Teil ist die Bibliothek libgpod, welche sich um die Musik- und Podcastverwaltung kümmert. Selbstverständlich gibt es noch eine Reihe anderer Software, ohne die der Zugriff auf das iPhone OS nicht möglich wäre, wie zum Beispiel ifuse (um das Dateisystem über fuse einzubinden), usbmuxd (um über USB mehrere parallele Verbindungen zum Gerät aufzubauen) und libplist (um die plist Dateien von Apple zu lesen und zu schreiben). Diese sind aber sehr technisch und auf unterster Eben angesiedelt, so dass ich darauf an dieser Stelle nicht weiter eingehen werden. Man findet sie ebenfalls alle auf libimobiledevice.org, allerdings sollten sie automatisch per Paketmanagement installiert werden bei den meisten Distributionen.
Wichtig an dieser Stelle: libimobiledevice braucht keinen (!) Jailbreak des Gerätes!
Grundlagen
Das Grundlegende ist der Dateisystemzugriff und das Handling der Apple eigenen Protokolle auf das Gerät, ohne dem geht nichts. Diese Funktionalität wird von der Bibliothek libimobiledevice gehandelt, besser gesagt bietet sie die Möglichkeit dafür. Für die praktische Umsetzung benötigt es noch weiterer Programme. Unter Gnome gibt es in der aktuellen Version des GVFS (>= 1.5.1) schon Unterstützung für das iPhone OS, vorausgesetzt, dass libimobiledevice installiert ist.
Unter KDE gibt es seit kurzem einen KIO-Slave für den Zugriff, dieser ist allerdings noch Mitten in der Entwicklung. Ansonsten gibt es noch eine desktopunabhängige Möglichkeit über ifuse das Gerät manuell an einen Pfad zu mounten. Der zugriff auf das Dateisystem ist schon mal viel Wert, doch damit alleine lässt sich erst mal nichts anfangen.
Musik, Podcasts und Videos
Hat man ein iPhone OS Gerät möchte man darauf früher oder später Musik, Podcasts und Filme hören/schauen. Dafür zuständig ist unter Linux die Bibliothek libgpod. Warum braucht es dazu extra ein Tool? Bei allen Apple iPods (und auch das iPhone ist in der Hinsicht ein iPod) wird die Musik nicht einfach nur auf das Gerät gespielt, sondern es wird eine interne Datenbank gepflegt, damit zusätzliche Metadaten wie Playcount, Rating etc. gespeichert werden können. Dummerweise ist diese Datenbank (im aktuellen OS übrigens eine einfache SQLite DB) mit einem Hash versehen, die sie vor Manipulation schützen soll. Es gilt also zwei Probleme zu meistern: DB Verwaltung und Hash-Handling. Beides ist mittlerweile kein Problem mehr, wenn man sich der Bibliothek libgpod bedient. Sie kann die Datenbank aller aktuellen iPod und iPhone OS Modelle lesen und mit dem richtigen Hashwerten schreiben. Technisch gesehen also kein Problem. Fehlt nur noch das Programm, welches die Bibliothek benutzt.
Unter Ubuntu Lucid Lynx werden die iPhone OS Geräte beim einbinden in das System als Musikplayer erkannt. Rhythmbox bindet das Gerät problemlos ein, Podcasts und Musik können einfach per Drag and Drop auf das Gerät übertragen werden. Am Ende des Kopiervorgangs erscheint kurz der “Synchronisiere…” Bildschirm, die Datenbank wird geupdatet.
Banshee ist ein weiterer populärer Mediaplayer unter der Gnome-Desktopumgebung. Leider bauen die Entwickler nicht auf die libgpod Bibliothek auf, sondern haben vor einiger Zeit begonnen eine eigene zu entwickeln, namentlich “podsleuth“, welche aber bis heute vom Funktionsumfang weit hinter libgpod zurückfällt. Lediglich einige der ersten iPods werden unterstützt. Das umschwenken auf libgpod wird immer wieder von Benutzern gefordert (nicht zuletzt von mir auch schon) aber bislang leider nicht in die Tat umgesetzt. Unter anderem wird es wohl dadurch erschwert, da Banshee in C# bzw. Mono geschrieben wurde und dafür keine libgpod-Bindings vorhanden sind. Meiner Meinung nach sehr schade, da ich persönlich Banshee einen Ticken besser finde…
Eine Anwendung extra für Podcasts ist gpodder, welche selbstverständlich, da ebenfalls auf libgpod aufbaut, auch mit den iPhone OS Geräten zusammenarbeitet und einen komfortablen Sync der Podcasts ermöglicht. Meine Favorisierte Anwendung für Podcasts.
Leider gibt es bei den Podcasts aktuell einen extrem nervigen Bug: Die Geräte merken sich, an welcher Stelle im Podcasts man aufgehört hat zu hören. (When Syncing New Podcasts – played and partially played episodes are reset) Man muss also einen Podcasts nicht an einem Stück hören oder sich merken wo man aufgehört hat. Dummerweise wird dieser Wert bei jedem Schreiben der DB zurückgesetzt, so dass alle Podcasts wieder als “ungespielt” markiert sind.
Als GTK-Anwendung wäre dann noch gtkpod zu nennen, welche von den Entwicklern der libgpod Bibliothek selbst entwickelt wird. Als Notlösung mal ganz nett, aber ansonsten sind Rhythmbox und Konsorten die bessere Wahl.
Update: Wie ich in den Kommentaren drauf hingewiesen wurde, kann gtkpod Videos auf das iPhone transferieren. Gerade kurz getestet und es hat funktioniert. Updateende
Unter KDE gibt es als Nennenswerten Mediaplayer nur Amarok. In der aktuellen Version ist das managen der iPhone OS Geräte rudimentär möglich. Sie tauchen selbstständig beim einstecken in Amarok auf und Musik lässt sich übertragen und löschen. Podcast-Sync ist noch in Arbeit. (Dies ist aber ein generelles Problem in Amarok, welches alle portable Mediaplayer betrifft.) Sollte das Gerät in Amarok nicht automatisch auftauchen, so kann es daran liegen, dass eine HAL-Regeldatei fehlt, die das Gerät als Mediaplayer ausweist. Hier ist meine zum Download. Einfach nach /etc/hal/fdi/policy/ kopieren und HAL, bzw. das System neustarten.
Kontakte, Kalender, etc.
Wie schon hier beschrieben, halte ich den besten Weg immer noch über einen Dienst in der Wolke, zum Beispiel Google oder Nuevasync, welche auf iPhone OS Seite einen Exchange ActiveSync bereitstellen. Dazu entweder Evolution, welches von Haus aus mit Google syncen kann, Thunderbird und Lightning mit enstprechenden Plugins (Google Contacts und Provider for Google Calender, bzw. direkt über CalDAV, welches das iPhone auch nativ beherrscht übrigens) oder unter KDE unter Zuhilfenahme des Akonadiplugins.
Möchte man nicht über das Internet syncen, sondern lediglich lokal, so geht dies mittlerweile, wenn auch nur sehr eingeschränkt: Für den Kalender, die Kontakte, sowie Notizen und Lesezeichen gibt es Conduit-Module, welche allerdings bislang nur einen lesenden Zugriff gestatten, als experimental eingestuft und nicht von mir getestet sind (siehe libimobiledevice.org).
Tethering
Eine nützliche Funktion des iPhone OS von der ich recht häufig Gebrauch mache ist das Tethering, also das Bereitstellen der Internetverbindung für den Laptop beispielsweise. Zu Anfangszeiten musste man sich hierfür noch mit einem gejailbreakten iPhone, SSH-Zugang und einem SOCKS-Proxy herumschlagen, etwas später dann die PPP-Verbindung. Zwar sehr geekig wenn man auf seinem Laptop rumhackt und nach zwei Minuten ein Grinsen im Gesicht hat, weil man so was extrem geekiges gerade macht, aber komfortabel sieht irgendwie anders aus.
Diese Zeiten sind zum Glück vorbei und es ist genauso komfortabel eine Internetverbindung für den Comupter über das iPhone aufzubauen wie unter OSX oder Windows. Man hat die Wahl zwischen Bluetooth oder dem USB-Kabel. Beides habe ich in diesem Artikel ausführlich behandelt. Anzumerken sei lediglich, dass die aktuelle Version des NetworkManagers in Ubuntu Lucid Lynx eigenständig das PAN aufbauen kann, Blueman also nicht mehr nötig ist.
Springboardappiconsortierung
Mit iTunes 9punktIrgendwas kam die Möglichkeit sein Springboard, also die Applications Icons, am Desktop zu ordnen, extrem komfortabel mit der Maus. Diese Funktionalität gibt es über ein Python Programm namens sbmanager nun auch unter Linux. Detailliertere Infos gibt es in FERNmanns Blog.
Fotos
Fotos ließen sich von Anfang an vom Gerät runterladen, da es sich standardmäßig als Kamera am System anmeldet. Der vollständige Sync, also das hochladen von Fotos, sowie das Managen der einzelnen “Filme” auf dem Gerät funktionieren noch nicht.
Backup, Restore, Appinstall und weiterer Entwicklerkram
Abseits der Mainstreambedürfnisse eines Linux-iPhone OS Users gibt es aber noch weitere Anstrengungen um das Gerät besser mit Linux zu nutzen. Das größte Problem stellt weiterhin das Backup und der Restore da: Einer der einzigen Gründe, warum ich mein iPhone wöchentlich ans iTunes hänge ist, damit ich ein Backup von Gerät habe. Über das Programm idevicebackup, welches Teil von libimobiledevice ist, soll es in Zukunft möglich sein, native iPhone OS Backups (full und incremental) zu erstellen, sowie diese auch wieder auf das Gerät zurück zu spielen. Restore funktioniert bislang noch gar nicht, Backup nur so halb…
Alle möglichen Infos zum Gerät bekommt man mit dem Programm ideviceinfo.
Ist man selber Entwickler so kann man mithilfe des Programms ideviceinstaller eigene Apps auf das Gerät installieren, bzw. auch wieder löschen. Auch eventuell für Entwickler interessant sein könnte das Programm idevicesyslog, welches, passenden Daemon auf dem iPhone vorausgesetzt, das Syslog des iPhone streamen kann.
iPad und iPhone OS 4.0
Das iPad ist seit kurzem auf dem Markt und verkauft sich wie geschnitten Brot (1. Millionen Geräte in den ersten 28 Tagen) und auch das nächste iPhone inklusive iPhone OS 4.0 steht in den Startlöchern. Wie schaut es also in Zukunft aus? Gut, das iPad wird heute schon von libimobiledevice unterstützt und iPhone OS 4.0 laut ersten Erfahrungsberichten im Netz ebenfalls, mit Ausnahme des Musiksyncs, da aufgrund des neuen Bookshops mal wieder ein neuer DB-Hash Einzug erhalten hat. Die Entwickler stellen aber in Aussicht, ihn bis zum finalen Release geknackt zu haben, so das auch die 4.0 unterstützt wird.
Fazit
Schaut man sich die Entwicklung der letzten drei Jahre an, kann man eigentlich nur staunen und bewundernd den Hut vor den Leuten ziehen, die das alles möglich gemacht haben. Die iPhone OS Geräte lassen sich mittlerweile sehr komfortabel unter Linux managen und mit den diversen Medien betanken. Sicherlich, es gibt noch eine Menge Baustellen, allen voran die oben angesprochene Backup- und Restoreproblematik. Auch Softwareupdates erfordern noch ein iTunes, vom erstmaligen Aktivierungsvorganges eines jeden neuen Gerätes ganz zu schweigen. Auch der Podcastbug ist mehr als nur nervig, aber so schnell wie die Entwicklung voran geht, bin ich mehr als gespannt, was uns die nächste Zeit noch so bringen wird.
Ich hoffe ich konnte mit diesem Beitrag einen guten Überblick über den aktuellen Stand liefern und ein paar Fragen klären.
Ich für meinen Teil habe im Zuge der Artikelerstellung den Donate-Button auf der Entwicklerseite betätigt und den Leuten 20€ zukommen lassen und kann an dieser Stelle nur dazu aufrufen ebenfalls ein wenig zu spenden, damit uns diese Leute weiterhin überraschen, zum staunen bringen, uns glücklich machen und weiterhin spitzen Software schreiben.
In diesem Sinne, ich lade dann mal die neuen Podcastfolgen auf mein iPhone, damit ich morgen auf dem Weg zur Berufsschule was zu hören habe…