FirmwareJ’ai acheté récemment un vieux smartphone pas cher chez mon déstockeur informatique préféré. Je voulais m’en servir comme bac à sable pour expérimenter avec LineageOS. Lorsqu’on bricole les systèmes d’exploitation des téléphones portables, on court toujours le risque de rendre l’appareil inutilisable avec une fausse manipulation, et je ne voulais pas briquer le téléphone que j’utilise au quotidien.

Me voilà donc l’heureux propriétaire d’un Samsung Galaxy A5 flambant vieux. Avant de commencer à jouer avec LineageOS, je me suis dit un peu naïvement que ce serait bien de savoir remettre le téléphone dans son état d’origine en cas de pépin. J’ai donc fait quelques recherches, j’ai expérimenté pas mal, et vu que la démarche que j’ai suivie s’applique à tous les appareils de la marque Samsung, je me suis dit que je pourrais en faire profiter mes lecteurs.

Prérequis

La documentation que l’on trouve sur le web est fort incomplète et part du principe que vous utilisez l’application Odin qui ne tourne que sous Windows. L’alternative open source sous Linux, c’est l’outil Heimdall, dont nous avons vu l’installation et la configuration initiale dans le précédent article.

Heimdall est un outil en ligne de commande qui permet de flasher le firmware des smartphones et des tablettes de la marque Samsung. Il existe une version graphique, mais la version en ligne de commande est mieux faite et plus flexible. C’est donc celle-là que j’utilise ici.

Télécharger le firmware officiel

Le site SamMobile est une mauvaise blague. C’est le genre de portail qui donne envie de mettre un bon coup de poing dans l’écran avant de changer de métier et aller élever des chèvres dans le Larzac. J’ai des potes qui font ça, et y’a des jours où je les comprends très bien.

Avant de faire quoi que ce soit, vous devez créer un compte sur le site. Une fois que c’est fait, ouvrez la page de recherche des firmwares et renseignez votre modèle exact ainsi que votre code de région CSC.

Firmware Samsung

Sur la page des résultats, regardez la date et optez pour la dernière version disponible.

Firmware Samsung

InfoL’exemple montré ici est pathologiquement obsolète, étant donné qu’Android 6.0.1 n’est plus maintenu depuis octobre 2017. Cela tient au fait que j’ai pris un vieux modèle pour expérimenter. La procédure décrite vaut pour tous les modèles, y compris les plus récents.

La page de téléchargement du firmware arbore deux boutons Wait & Download et Fast Download. Apparemment le public visé par Samsung c’est Jean-Kevin Tartempion qui télécharge des logiciels crackés sur des sites de Warez dans le sous-sol de la villa de ses parents.

Firmware Samsung

Je clique sur Wait & Download, ce qui déclenche un compte à rebours de 30 secondes avec un lien Tired of waiting qui cherche à m’appâter vers la page des abonnements payants. À mon humble avis, c’est difficile de faire pire en termes d’image de marque calamiteuse.

Firmware Samsung

Étant donné que je suis d’un naturel suffisamment patient, j’attends 30 secondes avant de voir apparaître mon fichier A500FUXXU1CSB1_A500FUXEF1CSD1_XEF.zip qui pèse 1.3 Go. Une fois que j’ai cliqué sur Enregistrer, j’attends deux heures (!) pour récupérer ce fichier, vu que Samsung a bridé les téléchargements à 180 ko/s pour les visiteurs qui ne sortent pas la Carte Bleue. Les entreprises qui essaient de vous avoir à l’usure, c’est assez original comme modèle économique.

ImportantVeillez à stocker le fichier dans un répertoire dont le chemin complet ne contient pas de caractères spéciaux, faute de quoi vous risquez d’avoir des problèmes avec Heimdall. Si votre répertoire c’est /home/utilisateur/Téléchargements, déplacez le fichier vers /home/utilisateur/Firmware par exemple.

Extraire le fichier PIT du smartphone

Branchez le smartphone avec un cable USB et démarrez-le en mode Download en appuyant simultanément sur les touches VolDown, Home et Power et en confirmant par VolUp.

Ouvrez un terminal sur le PC et invoquez la commande suivante pour télécharger la table des partitions (Partition Information Table) du téléphone.

$ heimdall print-pit | tee ~/SM-A500FU.pit

InfoLe nom du fichier SM-A500FU.pit est une pure convention. Il est composé du modèle exact de mon smartphone (SM-A500FU) et de l’extension .pit. J’aurais très bien pu nommer mon fichier yatahongaga.txt, mais autant choisir quelque chose de parlant.

Préparer le firmware

Décompressez l’archive du firmware.

$ ls
A500FUXXU1CSB1_A500FUXEF1CSD1_XEF.zip
$ du -sh A500FUXXU1CSB1_A500FUXEF1CSD1_XEF.zip 
1,3G    A500FUXXU1CSB1_A500FUXEF1CSD1_XEF.zip
$ unzip A500FUXXU1CSB1_A500FUXEF1CSD1_XEF.zip 
Archive:  A500FUXXU1CSB1_A500FUXEF1CSD1_XEF.zip
  inflating: A500FUXXU1CSB1_A500FUXEF1CSD1_A500FUXXU1CPI2_HOME.tar.md5

Le fichier .tar.md5 résultant est en réalité une simple archive .tar mal nommée.

$ file A500FUXXU1CSB1_A500FUXEF1CSD1_A500FUXXU1CPI2_HOME.tar.md5 
A500FUXXU1CSB1_A500FUXEF1CSD1_A500FUXXU1CPI2_HOME.tar.md5: POSIX tar archive (GNU)
$ tar -xf A500FUXXU1CSB1_A500FUXEF1CSD1_A500FUXXU1CPI2_HOME.tar.md5

À l’issue de la décompression, nous nous retrouvons avec un joyeux mélange de fichiers aux extensions variées.

$ ls
A500FUXXU1CSB1_A500FUXEF1CSD1_A500FUXXU1CPI2_HOME.tar.md5
A500FUXXU1CSB1_A500FUXEF1CSD1_XEF.zip
aboot.mbn
boot.img
cache.img.ext4
hidden.img.ext4
hyp.mbn
modem.bin
NON-HLOS.bin
recovery.img
rpm.mbn
sbl1.mbn
sec.dat
system.img.ext4
tz.mbn

Qu’est-ce qui va où ?

À présent, j’affiche le fichier SM-A500FU.pit et je note les partitions qui correspondent à tous ces fichiers.

$ less SM-A500FU.pit
...
--- Entry #0 ---
Binary Type: 0 (AP)
Device Type: 2 (MMC)
Identifier: 1
Attributes: 5 (Read/Write)
Update Attributes: 1 (FOTA)
Partition Block Size/Offset: 8192
Partition Block Count: 30720
File Offset (Obsolete): 0
File Size (Obsolete): 0
Partition Name: APNHLOS
Flash Filename: NON-HLOS.bin
FOTA Filename: 
...

Un script pour le flashage

Partant de là, je pourrais très bien utiliser toutes ces infos pour invoquer manuellement une commande à rallonge. Le hic, c’est que le flashage de firmware fait partie des opérations à risque susceptibles de briquer le téléphone. La moindre faute de frappe, et mon appareil est bon pour partir à la casse. Je prends donc soin d’éditer un petit script shell pour flasher tous ces fichiers à la louche.

#!/bin/bash
#
# SM-A500FU-reset.sh

heimdall flash \
  --APNHLOS NON-HLOS.bin \
  --MODEM modem.bin \
  --SBL1 sbl1.mbn \
  --ABOOT aboot.mbn \
  --RPM rpm.mbn \
  --QSEE tz.mbn \
  --QHEE hyp.mbn \
  --sec sec.dat \
  --BOOT boot.img \
  --RECOVERY recovery.img \
  --SYSTEM system.img.ext4 \
  --CACHE cache.img.ext4 \
  --HIDDEN hidden.img.ext4

Je vérifie à trois reprises si je n’ai pas fait de fautes de frappe, je croise les doigts et j’exécute le script.

$ chmod +x SM-A500FU-reset.sh
$ ./SM-A500FU-reset.sh

Au prochain redémarrage en mode Download, je note le message CURRENT BINARY: Samsung Official. Je démarre sur la version d’Android fournie par le fabricant, et je constate que l’opération de flashage a réussi.


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 


6 commentaires

Thomas · 7 janvier 2022 à 14 h 38 min

Juste en passant, pour dire que sammobile.com n’a rien à voir avec Samsung. (Ce qui ne les dédouane en rien, ils pourraient mettre un accès plus simple à leurs firmwares, mais ça serait reconnaître que leur téléphone sont hackables, c’est pas trop le genre de la maison)

    Arnaud · 10 janvier 2022 à 10 h 12 min

    C’est effectivement ce que j’allais indiqué….

Cenwen · 7 janvier 2022 à 17 h 38 min

J’ai horreur des téléchargements longs et encore plus de ce genre de site. Je serais un peu du genre de tes collègues.

Article encore très intéressant. J’attends avec impatience le 3eme qui concernera, je suppose, l’installation de LineageOS sur cet ancien téléphone sous Android 6.0.

Quel dommage que Heimdall ne soit que réservé pour les Samsungs.

Après c’est seulement réservé aux experts, pas pour tout le monde et j’en connais quelqu’uns autour de moi qui ont du mal à récupérer un lien dans un email………..

Cenwen · 7 janvier 2022 à 17 h 54 min

Comment sais-t-on qu’il s’agit du fichier SM-A500FU.pit ? Est-ce le même quel que soit le firmware téléchargé (nb: il n’est pas dans la sortie de ls)

    kikinovak · 7 janvier 2022 à 18 h 45 min

    J’ai ajouté une explication dans l’article. :o)

      Cenwen · 9 janvier 2022 à 13 h 59 min

      Merci.

Les commentaires sont fermés.