Lerm-IT

Blog traitant de technologies informatiques. Logiciel libre, AdminSys, DevOps et GNU/Linux !

25 Dec 2011

[Android] Mettre à jour son Samsung sous GNU/Linux avec Heimdall

En tant que fervent utilisateur de GNU/Linux vous avez il y a plus ou moins longtemps fait l’acquisition d’un Smartphone Android. Comme vous êtes un geek accompli vous souhaitez aujourd’hui mettre à jour votre téléphone pour bénéficier des dernières nouveautés d’Android. Après quelques recherches sur le web vous découvrirez bien vite un produit nommé ondin. Enfer et damnation, ce produit ne fonctionne que pour Windows ! Qu'à cela ne tienne nous allons découvrir une solution équivalente pour GNU/Linux : heimdall.

Un équivalent à Ondin pour GNU/Linux

Ondin est dans la mythologie germaine un génie des eaux qui a donné sont nom à un syndrome respiratoire, à un pratique sexuel… mais surtout à un logiciel !

Ondin est un produit de Samsung^w de développeurs indépendants qui vous permet de mettre à jour le  système d’exploitation de votre téléphone Samsung. Ce produit permet de gérer les différents fichiers du système Android allant du partitionnement (organisation des données sur le téléphone), du système en lui-même jusqu’au modules de gestion de la connectivité (Téléphone et internet EDGE/3G).

Ce produit bien que pleinement fonctionnel sous Windows n’a pas de version pour GNU/Linux aussi Benjamin Dobell a pris la très bonne initiative de ré-implémenter les fonctionnalités de Ondin dans une application multiplateforme et qui plus est libre! Le nom de cette application est heimdall. Ce nom est lui aussi tiré de la mythologie et est considéré comme un dieu du feu, nous noterons aussi non sans interrogation qu’il est le fils de 9 (oui oui neuf !) mères ! De plus il est le fils adoptif d’ondin !

D’après la documentation Heimdall semble fonctionner sur les Samsung Captivate, Vibrant, Fascinate, Mesmerize, Epic 4G, Galaxy S 4G, Infuse 4G, GT-I9000T, Galaxy Tab, Galaxy S II et GT-I9000. Pour les possesseurs de Samsung Galaxy S votre nom de code est la plupart du temps GT-I9000 donc votre téléphone est supporté !

Installation de heimdall

En nous rendant sur le site de heimdall nous découvrirons qu’il existe plusieurs paquets de l’application. Des paquets sont disponibles pour Windows, Mac OS et Debian. Pour les autres distributions il conviendra de compiler les sources de l’application.

Rendez vous donc sur le github de heimdall pour voir les différents fichiers disponibles en téléchargement : [https://github.com/Benjamin-Dobell/Heimdall/downloads]

Vous avez du constater qu’il existe trois paquets différents. En voici une description :

  • heimdall : Ce paquet est le programme heimdall en ligne de commande. C’est celui-ci que nous allons détailler ici.
  • heimdall-frontend : Ce paquet est une interface graphique pour le paquet heimdall. Nous ne détaillerons pas son utilisation ici.
  • heimdall-suite : Ce paquet contient les deux précédents.

Prérequis

Note : Sous gentoo il existe un ebuild dans l’overlay poly-c, vous pouvez donc l’utiliser avec Layman. Nous détaillerons néanmoins la procédure de compilation pour les autres systèmes (RHEL, Suse, Mandriva, etc …).

Note : La compilation d’une application nécessite les outils de compilation standard. Nous ne détaillons pas ici la procédure d’installation de ceux ci.

Heimdall dépend de la librairie USB qui est disponible sur toutes les distributions. Installer là avec les sources à l’aide de votre gestionnaire de paquet favori (apt, yum, urpmi, …).

Sous Debian

# apt-get install libusb-dev

Sous mandriva

# urpmi libusb-devel

Sous Centos ou RedHat

# yum install libusb-devel

Sous Suse (OpenSuse, SLES ou SLED)

# zypper install libusb-dev

Nous pouvons maintenant commencer la compilation de heimdall.

Compilation

Nous stockerons les sources dans notre dossier personnel. Pour cela nous créons un dossier réservé à heimdall (Ceci doit être adapté à votre goût !)

$ mkdir -p ~/software/heimdall

Et nous nous rendons dans ce nouveau dossier

$ cd ~/software/heimdall

Nous récupérons ensuite les sources de la dernière version stable. Penser à adapter le numéro de version !

$ wget -O heimdall-v1.3.1.tar.gz https://nodeload.github.com/Benjamin-Dobell/Heimdall/tarball/v1.3.1

Décompressez l’archive

$ tar xvf heimdall-v1.3.1.tar.gz

Et accéder aux sources

$ cd Benjamin-Dobell-Heimdall-*

Nous allons dans un premier temps compilez la bibliothèque de gestion des fichiers PIT. Les fichiers PIT sont les fichiers de partitionnement du téléphone.

$ cd libpit

$ ./configure

$ make

Il n’est pas nécessaire d’effectuer un make install c’est le la compilation de heimdall qui s’en chargera.

Nous allons d’ailleurs compiler heimdall.

$ cd ../heimdall

$ ./configure

$ make

Il ne nous reste qu'à installer heimdall ! Pour cela connecter vous en root (avec la commande su ou sudo).

# make install

Heimdall est maintenant installé dans /usr/local/bin/heimdall

Préparation du firmware

Dans l’archive de votre nouveau système Android vous retrouverez trois fichier tar et un fichier pit.

Comme dit précédemment le fichier PIT est un fichier binaire qui configurera le partitionnement de votre téléphone. Pour plus d’information référer vous à cet article[en] .

Les autres fichiers sont des archives qui contiennent des fichiers. Nous allons les décompresser.

tar xvf CODE*.tar

tar xvf *CSC*.tar

tar xvf MODEM*.tar

Les fichiers décompressés et intéressants sont les suivants

  • factoryfs.rfs : image de la partition système qui contiendra les applications de base
  • cache.rfs : image de la partition de cache
  • dbdata.rfs : image de la partition de la base de données du système
  • boot.bin : application importante qui sera lancé au démarrage du système
  •  Sb1.bin : deuxième application lancé par le système qui va configurer le téléphone
  • param.lfs : fichier contenant les images (JPEG) du système
  • zImage : L’image du noyau Linux
  • modem.bin : Les drivers de votre puce GSM.

Pour plus d’information sur le démarrage du téléphone aller voir ce site[en]

Installation du firmware via Heimdall

Nous partons du principe que vous avez déjà téléchargé le firmware pour votre téléphone. Nous détaillerons ici l’utilisation de heimdall pour l’installer sur votre téléphone.

La procédure de mise à jour de votre téléphone supprimera des données (comme les SMS, les contacts ou les sauvegarde de angry bird !). Penser à sauvegarder vos données. Je vous conseille la lecture des paragraphes 1.3 (sur la garantie et les risques) et la deuxième partie du paragraphe 1.4 (sur la sauvegarde de vos données) sur ce site .

Nous allons donc télécharger tous ces fichiers sur notre téléphone. Pour cela nous devons mettre notre téléphone en mode téléchargement.

Passer le téléphone en mode téléchargement

Quand un téléphone Android passe en mode téléchargement il écoute sur sont port USB et attend qu’on lui envois des fichiers. Ces fichiers sont dans notre cas les fichiers du système Android.

Pour passer un Samsung Galaxy S en mode téléchargement il vous faudra tout d’abord éteindre le téléphone. Maintenez ensuite les touches volume bas, home et démarrage appuyé jusqu’a ce que le téléphone démarre. Vous verrez alors un jolie Droid pelleter !

Activation du mode téléchargement

Activation du mode téléchargement

Connecter votre téléphone en USB. Vous pouvez vérifier qu’il est bien reconnu dans vos logs

$ tail -f /var/log/messages

Dec 25 22:58:37 localhost kernel: usb 2-3: new high speed USB device number 3 using ehci_hcd

Dec 25 22:58:38 localhost kernel: usb 2-3: New USB device found, idVendor=04e8, idProduct=6601

Dec 25 22:58:38 localhost kernel: usb 2-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0

Dec 25 22:58:38 localhost kernel: usb 2-3: Product: Gadget Serial

Dec 25 22:58:38 localhost kernel: usb 2-3: Manufacturer: SAMSUNG

Dec 25 22:58:38 localhost kernel: cdc_acm 2-3:2.0: This device cannot do calls on its own. It is not a modem.

Dec 25 22:58:38 localhost kernel: cdc_acm 2-3:2.0: ttyACM0: USB ACM device

Dec 25 22:58:38 localhost mtp-probe: checking bus 2, device 3: “/sys/devices/pci0000:00/0000:00:1d.7/usb2/2-3”

Dec 25 22:58:38 localhost mtp-probe: bus: 2, device: 3 was not an MTP device

Envoi des fichiers

Nous n’avons maintenant plus qu’a envoyer les données avec heimdall sur notre téléphone. La commande suivante devrait faire l’affaire

$ heimdall flash –repartition –pit s1_odin_20100512.pit –factoryfs factoryfs.rfs –cache cache.rfs –dbdata dbdata.rfs –primary-boot boot.bin –secondary-boot Sbl.bin –param param.lfs –kernel zImage –modem modem.bin

Une barre de progression devrait apparaître tandis que les fichiers sont envoyés.  Le téléphone redémarrera et appliquera automatiquement les mises à jour pour enfin redémarrer et vous redonner la main. Le premier démarrage peu être un peu long (30 secondes)

Envoi des fhcier

Envoi des fichiers

Conclusion

Votre téléphone est maintenant près à être utilisé ! Alors amusez vous bien !