Deuxième article, et je m’enfonce dans les geekeries: d’aucuns diront que c’est tout à fait révélateur (et ils ont probablement raison), je ne désespère cependant pas de trouver un jour un sujet d’article plus, enfin moins, enfin qui n’implique pas l’ouverture de fenêtres de ligne de commande.

Après une certaine attente par rapport à nos voisins français, le premier « Google Phone« , l’HTC Magic, est enfin disponible dans mes contrées (à savoir la Suisse): Orange l’a sorti jeudi dernier (non sans quelques cafouillages) et Swisscom lui a emboîté le pas quelques jours plus tard; pour être tout à fait équitable, je crois qu’il sera également disponible chez Sunrise. N’étant pas un adepte de Steve Jobs, j’attendais avec une certaine impatience la sortie d’un équivalent plus libre de l’iPhone. Je suis donc l’heureux propriétaire de cette petie merveille depuis jeudi dernier.

Etant un pendulaire chevronné, je voulais pouvoir faire du tethering bluetooth (traduction: pouvoir utiliser la connexion internet de mon téléphone depuis mon pc portable, et sans câble). Renseignements pris, c’est faisable sans trop de problèmes ça n’est pas possible sans changer le firmware du téléphone (le noyau d’android 1.5 n’intégrant pas iptables, contrèrement aux versions précédentes; iptables est incontournable pour que l’OS soit capable de faire du tethering). Toujours est-il que ça  demande (du moins pour l’instant) d’avoir des droits de super-utilisateur (root en terminologie unix) sur son téléphone, alors que la version d’Android installée d’origine ne le permet pas.

Pour les curieux, la raison semble être due au fait que dans cette version d’Android le bluetooth est limité à communiquer uniquement avec des écouteurs, et qu’il faille par conséquent ajouter un module au noyau linux (sudo insmod pour les linuxiens) pour activer le tethering, opération qui demande d’être root vu qu’elle touche le noyau.

Après avoir cherché un peu, je suis tombé sur cet excellent wiki dédié à Android et en français, et plus précisément sur cet article qui détaille la procédure à suivre. Cool, me suis-je dit, ça va être du gâteau, c’est tout simple.

Sauf que!

Sauf qu’il semblerait qu’il existe plusieurs versions de ce téléphone (matériel et logicielle, plus d’infos ici; ce forum regroupe les toutes dernières bidouilles sous Android). En effet, après maintes tentatives, mon téléphone refusait catégoriquement de démarrer sur une image de boot alternative (j’ai tenté la chose sur autant d’images que j’ai pu trouver), se bloquant et m’obligeant à débrancher la batterie pour l’éteindre. Je me renseigne, je ne suis pas seul dans ce cas (c’est toujours un soulagement, même si c’est quand même rarement le cas avec ces bidules vendus à la tonne), et il se trouve que mon problème est partagé par quelqu’un ayant acheté son jouet à Shanghaï: mon téléphone n’étant pas « branded » Orange, il semblerait qu’Orange Suisse ait fait des pieds et des mains pour être le premier à le sortir!

Bref. La solution est venue en partie de ce post, initié par un brave Viking ayant le même problème, et sur lequel il a publié une image de boot recovery (qui permet de faire une sauvegarde d’Android avant de le bidouiller, ce qui est tout de même préférable), et en partie du wiki de smartphonefrance concernant la marche à suivre: en effet, leur façon de procéder ne modifie pas les fichiers de démarrage sur le téléphone (on démarre à distance depuis un ordinateur relié par câble USB), de cette façon on évite de commettre l’irrécupérable.

Voilà, après toute cette logorhée, il est temps d’ouvrir enfin des lignes de commande!

Marche à suivre

Petite vérification

Avant toute chose, vérifiez la version de votre téléphone. Mon modèle vient de chez Orange Suisse, les modèles de chez Swisscom n’ont pas la même version. Pour cela, éteignez-le, et allumez-le en appuyant simultanément sur les touches <Back> et <Power>: il démarrera en mode fastboot, qui permet d’utiliser des images de démarrage alternatives. C’est 100% sans risque, on ne modifie rien.

Si la première ligne affichée est:

SAPPHIRE PVT 32A SHIP S-ON H

vous avez la même version que moi et vous pouvez poursuivre ci-dessous. Sinon, vous avez probablement une version compatible avec les modèles français (SAPPHIRE PVT 32B SHIP S-ON G pour Swisscom, ou SAPPHIRE PVT 32B ENG S-OFF H si je ne m’abuse), auquel cas allez voir par ici. Sinon, vous êtes un veinard, vous avez encore une autre version… et il va vous falloir poursuivre vos recherches ailleurs, ou essayer au petit bonheur la chanche une de ces 2 marches à suivre.

Prérequis

Vous aurez besoin du kit de développement (SDK) d’Android. Téléchargez-le et installez-le depuis ici.

Pour les linuxiens (et Mac aussi je crois), vous aurez besoin d’un exécutable supplémentaire, fastboot. Téléchargez-le (Linux ou Mac) et mettez le dans le dossier tools/ du SDK (il y est déjà pour Windows).

Dernier élément, l’image de boot servant à accéder à la console recovery alternative, qui va nous permettre à la fois de faire un backup et de rooter le téléphone. Téléchargez-la et mettez-la également dans le dossier tools/ du SDK.

Pour les linuxiens, j’ai dû rajouter une directive udev pour Ubuntu 9.04 (je ne sais pas si c’est nécessaire pour d’autres distributions). Créez et éditez le fichier

sudo gedit /etc/udev/rules.d/51-android.rules

Ajoutez la ligne

SUBSYSTEM=="usb",SYSFS{idVendor}=="0bb4",SYMLINK+="android",MODE="0666",OWNER="VOTRE LOGIN"

Relancez udev:

sudo /etc/init.d/udev restart

Sauvegarde du système

1. Démarrez le téléphone en mode fastboot (l’éteindre, et appuyer simultanément sur <Back> et <Power>)

2. Connectez le câble USB à l’ordinateur (votre Magic affiche alors « Fastboot USB »)

3. Ouvrez une fenêtre de ligne de commande (shell), rendez-vous dans le répertoire tools/ du SDK

4. Entrez

./fastboot boot recovery-RA-sapphire-v1.5.2H.img

et attendez que votre Magic démarre. Si au bout de 2-3 minutes rien ne se passe, la version de votre Magic n’est pas compatible avec cette image: pas d’autre solution que d’enlever la batterie pour faire redémarrer votre téléphone (mais pas de panique, rien n’ayant été écrit, votre téléphone redémarra normalement comme avant), et il vous faudra essayer une autre image.

5. Vous aurez un menu semblable à celui ci-dessous:

Le menu permettant de sauvegarder son système

Le menu permettant de sauvegarder son système

Choisissez Nandroid Backup avec la molette (attention à Wipe Data au-dessus!), et la sauvegarde démarrera. La sauvegarde est fait dans le dossier nandroid/ de votre carte SD.

6. Redémarrer avec le premier choix du menu (reboot system now)

Rooter votre Magic

La méthode utilisée est la moins invasive: on ne change pas le firmware du téléphone, on ne fait qu’ajouter (copier, en fait, un fichier déjà existant) le petit quelque chose qui permet d’avoir un accès root.

1. Démarrer le téléphone avec l’image daldroid-recovery.img (points 1 à 4 ci-dessus)

2. Dans le shell de votre ordinateur, tapez

./adb shell

3. Tapez maintenant

# mount -o rw -t yaffs2 /dev/block/mtdblock3 /system
# cd system
# cd bin
# cat sh &gt; su
# chmod 4755 su
# sync (Pour s'assurer que tout a correctement écrit dans la mémoire de l'appareil)
# exit (ou reboot si vous voulez redémarrer directement)

Et c’est tout, votre Magic dispose maintenant de l’accès root, à travers la commande <su> qui ouvre un shell root (les applications nécessitant un accès root, comme le tether bluetooth, en ont besoin et s’attendent à trouver cet exécutable sous ce nom-là).

Sources:

http://wiki.smartphonefrance.info/root-htcmagic.ashx
http://forum.xda-developers.com/showthread.php?t=523680