7 Nov 2010

Installer Android 2.2 sur HTC Tattoo Orange (fr) sous Linux


Préface

HTC a promis debut 2010 une mise à jour pour Android 2.1 pour le HTC Tattoo, mais de plus en plus il y a des messages dans les forums divers, que HTC ne compte pas à faire une mise à jour de Android 1.6 (version actuel sur les derniers Tattoos). Mécontent de cet attitude envers les proprietaires d'un HTC Tattoo, j'ai décidé d'installer un micrologiciel customisé (basé sur Android 2.2) sur mon Tattoo.
Après plusieurs heures de recherches (surtout sur le forum de xda-developers.com) et plusieurs tentatives, voici les démarches à faire.

Attention : vous faites des modifications importantes sur votre mobile, je ne suis pas responsable si vous cassez votre mobile (normalement tout est réparable).
Ceci a été effectué sous openSUSE 11.3.

Installer le Android SDK et connecter le Tattoo

D'abord il faut se procurer du SDK pour Android ici : http://developer.android.com/sdk/index.html.
Ensuite extraire l'archive téléchargé dans un dossier facile à atteindre (/home/marc-andre/Android-SDK dans mon cas) et pour faciliter les tâches suivantes, mettre à jour les chemins : 

PATH=$PATH:/home/marc-andre/Android-SDK/tools

Mettez votre Tattoo en mode débogage USB : Paramètres -> Applications -> Développement -> Débogage USB et connectez votre Tattoo avec le câble USB à l'ordinateur.

Maintenant taper les commandes suivantes :

adb start-server
adb devices

Si vous-avez un résultat comme ceci :

List of devices attached
HT9A2LG13080    device

vous êtes bon pour la suite.


Créer la GoldCard

Pour forcer le Tattoo à accepter nos actions, il faut créer une goldcard, donc une carte MicroSD modifié. Une GoldCard permet de simuler un CID d'un HTC nu.

Tapez la commade suivante :

adb shell "cat /sys/class/mmc_host/mmc1/mmc1:*/cid"

(Attention : avec les guillemets !)

Copiez le code hexadécimal affiché (ça ressemble à ça : 532600bd227d9c0347329407514d5402) et allez sur http://hexrev.soaa.me/, coller le code dans le champs et soumettez le. 
Copiez ensuite le nouveau code et allez ici : http://psas.revskills.de/?q=goldcard.
Remplissez le formulaire avec votre adresse mail valide (vous recevez la GoldCard sur cette adresse mail) et collez le code copié précédemment, passer le test anti-spam et envoyez le formulaire.

Faites une sauvegarde de votre MicroSD sur votre ordianteur (il faut imperativement brancher la carte sur votre ordinateur - avec un lecteur de carte par example). Puis formatez la carte en VFAT (FAT32).
Si vous avez reçu votre GoldCard par mail, on peut continuer par la commande suivante (Attention, indiquez les bons chemins vers goldcard.img et votre carte SD !) :

sudo dd bs=512 if=~/goldcard.img of=/dev/sdc1 #dans mon cas

Remettez la carte dans votre Tattoo puis démarrez le.

Forcer le root sur Tattoo

Pour pouvoir continuer, il nous faut l'accès du superutilisateur. Hélas, sous le micrologiciel de HTC, on peut pas avoir par défaut accès en root. Il faut qu'on utilise une faille dans le noyau fourni par HTC (et depuis la connaissance de cette faille, celle-ci n'a pas été corrigé - tant mieux pour nous).

Téléchargez mon archive http://www.mediafire.com/?md0icohcexd5zv8 et décompressez-le dans un dossier facile a retenir (/home/marc-andre/assets dans mon cas).
Maintenant on va copier un petit logiciel sur le Tattoo pour exploiter cette faille et qui nous permet d'avoir l'accès en mode superutilisateur, pour cela faites :

adb shell "mkdir /data/local/bin" #s'il y a une message d'erreur que le dossier existe, c'est bon
adb push /home/marc-andre/assets/exploit-m7/m7 /data/local/bin/m7 #comme toujours mon cas
adb push /home/marc-andre/assets/flash_image /data/local/bin/flash_image
adb push /home/marc-andre/assets/su /data/local/bin/su
adb push /home/marc-andre/assets/tattoo-hack/tattoo-hack.ko /data/local/bin/tattoo-hack.ko
adb push /home/marc-andre/assets/boot.img /data/local/bin/boot.img
adb push /home/marc-andre/assets/recovery-tattoo.img /data/local/bin/recovery-tattoo.img
adb shell "cd /data/local/bin && chmod 755 ./m7"

Et maintenant il faut aller dans la console et exécuter m7 :

adb shell
$ cd /data/local/bin
$ while ./m7 ; do : ; done

Il y a certainement plusieurs lignes qui défilent, c'est tout a fait normale, et à la fin vous avez un '#' (il se peut qu'il faut d'abord appuyer sur Entrée pour faire un saut à la ligne). Nous avons accès en mode superutilisateur ! Pour vérifier si c'est le cas, tapez :

# export LD_LIBRARY_PATH=/system/lib
# export PATH=/system/bin
# id

Si vous-avez l'affiche suivante :

uid=0(root) gid=1000(shell) groups=1003(graphics),1004(input),1007(log),1011(adb),1015(sdcard_rw),3001(net_bt_admin),3002(net_bt),3003(inet)

ça veut dire que c'est bon (notez le 'root').

Pour que ça reste comme ça (et encore plus), il faut passer à l'étape suivante.

Installation de 'su' et nouveau bootloader

Toujours dans la console du Tattoo tapez :

# chown root.root /data/local/bin/su
# chmod 4755 /data/local/bin/su
# insmod /data/local/bin/tattoo-hack.ko
# mount -o rw,remount /dev/block/mtdblock5 /data
# mount -o rw,remount /dev/block/mtdblock3 /system
# mv /data/local/bin/su /system/bin/su

(Si vous recevez un erreur pour le tattoo-hack.ko, essayez l'autre dans le dossier tattoo-hack-g6561203)

Ouvrez maintenant une autre console Linux, et essayez si 'su' vous donne accès en mode superutilisateur :

adb shell
$ /data/local/bin/su

Si vous avez un '#', c'est bon.

Et avant tout, on installe le nouveau bootloader :

# chown root.root /data/local/bin/flash_image
# /data/local/bin/flash_image boot /data/local/bin/boot.img

Une fois achève, redémarrez votre Tattoo avec :

# reboot

Remplacer le mode recovery

Une fois votre Tattoo est redémarré, retournez dans la console du Tattoo, et normalement vous êtes déjà superutilisateur :

adb shell
# /data/local/bin/flash_image recovery /data/local/bin/recovery-tattoo.bin

puis

# reboot recovery

Dès que votre Tattoo est en mode recovery, par la console faites :

adb shell
# /sbin/bart -a -b -c --norecovery

pour faire une sauvegarde de votre installation et redemarrez votre Tattoo :

# reboot

Flasher le nouveau ROM sur le Tattoo

Après la sauvegarde, il nous reste que de choisir le ROM à installer. Moi pour ma part, j'ai choisi "fyodor FroYo AOSP Tattoo v0.7.2c" (faites un tour sur http://forum.xda-developers.com/forumdisplay.php?f=544 pour regarder les pour et contres de tous les ROMs).

Copiez d'abord le fichier update.zip (ou le ROM de votre choix renommé en update.zip) sur la carte SD :

adb push /home/marc-andre/assets/update.zip /sdcard/update.zip
adb shell reboot recovery

Quand votre Tattoo est de nouveau dans le recovery, videz d'abord le cache Dalvik et Data. Et ensuite choisissez Flash update.zip. L'installation du nouveau ROM est en route.

Après l'installation, redémarrez votre Tattoo et voilà, vous êtes partie sous Android 2.2 !

Par contre il manque les Google Apps, vous les trouvez ici : http://goo.gl/oetkQ.

Dans la console : 

adb push gapps-mdoi-20101020-signed.zip /sdcard/gapps.zip
adb shell reboot recovery

et dans le mode recovery juste flasher le ZIP de la carte SD. 

Épilogue

Pour passer mon Tattoo sous Android 2.2 il m'as fallu 2 jours. J'ai écrit ce tutoriel de mémoire et avec l'historique de mon navigateur pour retrouver mon chemin. En plus je ne suis pas trop doué pour écrire des tutoriaux, vous m'excusez.
Je ne suis pas sur s'il faut passer vraiment par toutes les étapes ci-dessus, mais ça peut pas faire de mal.
Mais si jamais vous rencontrez un problème, n'hésitez pas de laisser un commentaire pour que je peut mettre à jour mon tutoriel avec la partie manquant / fausse.

Crédits

Aux développeurs du http://forum.xda-developers.com.