Le blog (moins vite fait) de Clem

Ce site est artisanal, veuillez ne pas m'en vouloir. Je m'en sers comme cobaye pour des expériences.

samedi 31 juillet 2010

•  tridi 13 thermidor 218

(jour de l'abricot)

Anti-Sarko

655 jours

avant la fin de son mandat

Mes petits trucs Linuxiens

Connecter l'iPhone à Gentoo Linux avec iFuse

mardi 10 novembre 2009 • dernière édition : lundi 4 janvier 2010

Apple a pour politique de verrouiller son iPhone et d'imposer l'utilisation d'iTunes pour le gérer. Et par conséquence, l'iPhone ne prend pas en charge le driver universel de stockage de masse qui permet de connecter n'importe quelle clé USB ou disque dur externe à n'importe quel ordinateur. Or, comme nous le savons, iTunes n'existe que pour Windows ou Mac OS... pas pour Linux.

Divers moyens existent pour contourner ce problème et gérer l'iPhone via Linux ; le plus connu de ces moyens est certainement d'installer un serveur SSH dessus puis de s'y connecter depuis l'ordinateur sous Linux au moyen de ce protocole sécurisé. Le principal problème de cette méthode étant qu'il faut recourir au Jailbreak, ce que tout le monde ne veut pas faire.

Heureusement, ces derniers temps, le système FUSE permet enfin de se connecter à l'iPhone et de le monter comme un matériel de stockage de masse classique, malgré quelques limitations sur lesquelles nous allons revenir.

Installer l'environnement

Quelques infos tout d'abord sur le système utilisé à l'origine et sur les versions des programmes que je vais installer :

  • Noyau : 2.6.30-gentoo-r5 ; x86
  • GVFS : 1.4.1
  • libusb : 1.0.3
  • glib : 2.20.5-r1
  • udev : 146-r1
  • sys-fs/fuse : 2.7.4
  • libiphone : 0.9.4
  • libplist : 0.16
  • ifuse : 0.9.4
  • usbmuxd : 1.0.0_rc1

Tout ce qui suit est valide pour Gentoo Linux. Les connaisseurs pourront probablement adapter ceci, s'ils le souhaitent, pour leur propre distribution. Et je suppose ici que vous savez utiliser Portage et que vous avez un minimum de connaissance du système Gentoo (ce qui est vraiment l'euphémisme de l'année puisque pour utiliser Gentoo... il faut savoir comment ça marche, Gentoo n'étant pas précisément un système grand-public).

Les prérequis : il faut que vous disposiez des paquets suivants :

  • >=dev-libs/libusb-1.0.3
  • >=dev-libs/glib-2

et vous devez avoir activé le support de FUSE dans votre noyau. Il se trouve dans « File systems ».

Installer FUSE : il suffit d'exécuter la commande habituelle de Portage pour installer le programme (attention, un autre paquet s'appelant « fuse », spécifiez bien sa catégorie : # emerge sys-fs/fuse

Installer iFuse et les outils nécessaires pour l'iPhone

Ça, c'était la partie facile. La suite l'est un peu moins.

L'idée, c'est qu'un programme appelé iFuse va interagir avec une bibliothèque appelée libiphone et utiliser l'interface usbmux pour communiquer avec l'iPhone.

Il y a aussi une bonne nouvelle : Gnome a annoncé que la dernière version de GVFS prendrait FUSE en charge, et que par conséquent, une fois les bons programmes installés, celui-ci serait capable de monter automatiquement l'iPhone de la même façon qu'il monte automatiquement un CD-rom ou une clé USB.

Cependant, les outils dont nous avons besoin ne sont pas encore dans l'arbre de Portage et il faut donc aller les chercher sur un overlay appelé rion. Il faut donc ajouter cet overlay par layman (ou playman pour les utilisateurs de Paludis).

Il fallait jusqu'ici aller chercher les paquets sur l'overlay rion mais depuis la mi-décembre 2009, ils sont passés dans l'arbre officiel de Portage. Cependant, libiphone, libplist et ifuse ne fonctionnent que pour l'architecture ~amd64. On ne peut donc plus les installer aussi simplement sur un système ~x86.

Je laisse pour le moment le vieux guide, en attendant de faire d'autres essais. Il devrait fonctionner pour ~amd64 sans problème.

Installons nos outils : il y a quatre paquets à installer qu'il faut d'abord démasquer, en ajoutant ces lignes au fichier /etc/portage/package.keywords (et en remplaçant ~x86 par la bonne architecture le cas échéant) : app-pda/usbmuxd ~x86
app-pda/ifuse ~x86
app-pda/libplist ~x86
app-pda/libiphone ~x86
Puis lancez l'installation : # emerge usbmuxd ifuse libplist libiphone

La partie pratique : connecter l'iPhone à l'ordi

La théorie est toute belle mais... voilà, la dernière version de GVFS disponible pour Gentoo n'est pas la dernière existante, donc il va falloir faire sans.

Monter un disque ne présente à priori pas de difficulté. Une règle pour udev indique que si un iPhone se connecte, udev devrait démarrer le démon usbmuxd par lequel le système va communiquer avec le téléphone. Une simple commande de montage devrait ensuite suffire.

Mais ce n'est pas si simple : pour une raison quelconque, cette règle ne fonctionne pas pour moi, si bien que quand je branche mon iPhone, rien ne se passe. L'idée est donc de lancer usbmuxd à la main, puis de monter le système de fichiers de l'iPhone dans un dossier préalablement créé pour l'accueillir.

Ce qui suit est donc une méthode bancale, temporaire (j'espère) et qui nécessite que vous ayiez les droits d'administration (utilisateur root) :

Créez le point de montage si nécessaire : # mkdir /media/iPhone

Lancez usbmuxd en mode « no-daemon » et verbeux (pour qu'il affiche son activité) : # usbmuxd -v -f --udev

Si usbmuxd ne tourne pas dans un terminal à part, ifuse se plaindra qu'aucun iPhone n'est connecté ; laissez-le donc tourner et prenez un autre terminal pour la suite.

Montez l'iPhone au moyen du petit programme iFuse : # ifuse /media/iPhone Note : la plupart des sites que j'ai consultés indiquent d'ajouter --root à la fin de cette commande pour accéder au système de fichier de l'iPhone dans son ensemble, ce qui ici génère une erreur.

Pour démonter l'iPhone il suffit d'utiliser la commande habituelle : # umount /media/iPhone

Les limitations

Vu la nature du téléphone, il est fortement recommandé de ne pas écrire dessus mais de se contenter de récupérer des données, par exemple des photos.

Par ailleurs, il est inutile de vouloir utiliser cette méthode pour placer de la musique dans l'iPod : la base de données de l'iPod est en effet cryptée, donc non seulement ça ne fonctionnera pas, mais en plus si vous reconnectiez l'iPhone à iTunes, celui-ci remettrait cette base de données à zéro, entrainant la perte de toute la musique qu'elle contiendrait déjà.

En tous cas, c'est efficace pour une chose : récupérer ses photos quand F-Spot vous laisse tomber !

Creative Commons License Le contenu et les photos de cette partie du blog
sont mis à disposition sous licence Creative Commons BY-NC-SA 2.0
Vous pouvez les utiliser, redistribuer ou modifier en citant la source (cette page)
selon les conditions précisées dans la licence.
Clem

Les articles antérieurs à mai 2007 ont émigré, vous les retrouverez peut-être, en 2012...
Dessin de Clem par Chantelune • Dessin « anti-Sarko » basé sur une image appartenant à Canal+, merci à eux.

Site : Copyright © 1995-2010 Syntax Web Interactions - Tous droits réservés sauf mentions contraires sur certaines pages.

XHTML Valide CSS Valide Valid WAI AAA