Depuis le temps que j'avais envie de migrer mon Motorola Moto G 4G LTE peregrine X1039 (oui, la référence est longue mais toutes les infos serviront par la suite) à CyanogenMod, c'est désormais chose faite. Bon, compte-tenu des dérives de la société CyanogenMod Inc., ce n'est pas Cyanogen mais son fork communautaire, LineageOS.
En quelques mots, Lineage est un système d'exploitation libre et communautaire pour ordiphone (terme pour désigner un smartphone sans reconnaître la prétendue intelligence (« smart ») de ces appareils), basé sur Android, qui prend en charge un grand nombre de modèles.
Dans mon cas, la migration est rendue plus difficile car je passe d'un Android 4.4.3 à un Android 7.1.2. Cela améliore grandement ma sécurité et ma vie privée vu le nombre de failles de sécurité corrigées entre ces deux versions, mais cela oblige aussi à mettre à jour le bootloader et le firmware radio en plus du système en lui-même.
J'ai déjà déverrouillé le bootloader de mon téléphone afin d'être root sur le système vendu de base avec, donc je n'en fais pas mention ici, mais c'est un pré-requis avant de suivre ce shaarli.
Étape 0 : avoir les bons outils
Il nous faut fastboot et adb. Pour ce faire avec Debian GNU/Linux :
sudo apt-get install android-tools-fastboot android-tools-adb
Étape 1 : installer un recovery plus récent
$ fastboot flash recovery twrp-3.1.0-0-peregrine.img
target reported max download size of 536870912 bytes
sending 'recovery' (8314 KB)...
OKAY [ 0.282s]
writing 'recovery'...
OKAY [ 0.281s]
finished. total time: 0.564s
Étape 2 : installer un bootloader plus récent
Si tu ne le fais pas, lors de la tentative de remplacement du système par Lineage depuis TWRP (le recovery), t'auras l'erreur suivante :
This package supports bootloader(s): 0x411A; this device has bootloader 0x4111.
- Télécharger un bootloader de Lollipop (Android 5.X). Ne me demande pas pourquoi Lollipop alors qu'on va installer un Android Nougat (7.X) au final… Il faut télécharger en fonction de la version / variante de ton téléphone. Dans mon cas, ça sera « XT1039_Bootloader_v41.1A.zip » ( accessible en cliquant sur « Bootloaders in zip mode »). En dernier ressort, je mets à disposition la version 411A que j'ai utilisée.
- Extraire le fichier motoboot.img de l'archive.
- Lancer l'écrasement du bootloader depuis le PC (je pose l'hypothèse qu'il est toujours en mode fastboot depuis l'étape précédente) :
$ fastboot flash motoboot motoboot.img
target reported max download size of 536870912 bytes
sending 'motoboot' (1953 KB)...
OKAY [ 0.089s]
writing 'motoboot'...
(bootloader) flashing tz ...
(bootloader) flashing rpm ...
(bootloader) flashing sdi ...
(bootloader) flashing aboot ...
(bootloader) flashing sbl1 ...
OKAY [ 1.281s]
finished. total time: 1.370s
Étape 3 : installer LineageOS et être root
$ adb push lineage-14.1-20170504-nightly-peregrine-signed.zip sdcard1
$ adb push addonsu-arm-signed.zip sdcard1
- Sur l'ordiphone, il faut aller dans « Backup », cocher « boot », « data », « recovery » et « system ». Puis, il faut choisir la carte SD comme destination de la sauvegarde en appuyant sur le bouton« Select storage » et en choisissant « MicroSD card ». Lancer la sauvegarder en swipant. Revenir au menu principal une fois la sauvegarde achevée.
- Pour nettoyer certaines partitions du système actuel, il faut aller dans « Wipe » puis « Advanced Wipe » puis cocher « cache », « data » et « system ». Lancer l'effacement en swipant. Revenir au menu principal une fois l'effacement terminé.
- Pour installer Lineage, il faut aller dans « Install », choisir le zip contenant Lineage que l'on a mis sur la carte SD, ne pas cocher le redémarrage et la vérification MD5 et lancer l'installation en swipant. Revenir au menu principal quand c'est fait.
- Pour installer l'addonsu, il faut aussi aller dans « Install » et choisir le zip contenant l'addonsu. Revenir au menu principal après l'installation.
- Pour terminer, le faut aller dans « Reboot » puis « bootloader » (nécessaire pour l'étape suivante).
Étape 4 : installer un firmware plus récent pour la puce baseband
La baseband est un deuxième ordinateur logé dans nos ordiphones, à côté de l'ordinateur qui exécute nos applications, qui est chargé de dialoguer avec le réseau GSM voire d'exécuter des ordres venant du réseau genre effacer à distance le contenu d'un téléphone volé. Il a donc le contrôle, la priorité sur l'ordinateur qui fait tourner l'interface utilisateur-rice. Le réseau (donc l'opérateur mobile) à donc le contrôles des mobiles modernes au-delà de leur raccordement au réseau.
Si tu ne mets pas à jour son firmware, ton ordiphone ne s'accrochera à aucun réseau GSM : tu auras un ordiphone qui ne peut plus téléphoner ni envoyer des SMS/MMS ni utiliser l'Internet mobile.
- Télécharger un firmware radio de Lollipop. Ne me demande pas pourquoi Lollipop alors qu'on a installé un Android Nougat (7.X) à l'étape précédente… Il faut télécharger le package fastboot en fonction de la version / variante de ton téléphone. Dans mon cas, ça sera « XT1039_Retail_EU_5.1_Radio.zip » ( accessible en cliquant sur le bouton « CLICK TO SHOW CONTENT » sous « Lollipop Radio Firmware: »). En dernier ressort, je mets à disposition le firmware que j'ai récupéré le 07/05/2017 et que j'ai utilisé.
- Extraire les fichiers.
- Lancer l'écrasement du firmware depuis le PC (c'est pour cela qu'à l'étape précédente j'ai préconisé un reboot forcé sur le bootloader ;) ) :
$ fastboot flash modem NON-HLOS.bin
target reported max download size of 536870912 bytes
sending 'modem' (60232 KB)...
OKAY [ 1.906s]
writing 'modem'...
OKAY [ 1.592s]
finished. total time: 3.498s
$ fastboot erase modemst1
erasing 'modemst1'...
OKAY [ 0.040s]
finished. total time: 0.040s
$ fastboot erase modemst2
erasing 'modemst2'...
OKAY [ 0.045s]
finished. total time: 0.045s
$ fastboot flash fsg fsg.mbn
target reported max download size of 536870912 bytes
sending 'fsg' (517 KB)...
OKAY [ 0.086s]
writing 'fsg'...
OKAY [ 5.680s]
finished. total time: 5.766s
Étape 5 : démarrer LineageOS pour la première fois et confirmer le root des applications
On peut désormais rebooter le téléphone sur notre nouveau système. \o/ Le premier démarrage est affreusement lent (2 minutes - 2 minutes 30 faciles sur le logo Lineage) donc sois patient.
Pour activer l'accès root pour les applications, il faut (traduction de http://www.theandroidsoul.com/root-lineage-os-su-addon-zip-download/ ) :
- Aller dans « Préférences » puis « À propos du téléphone » et appuyer 7 fois sur « Numéro de build ».
- Revenir au menu « Préférences » et aller dans « Options pour les développeurs » et cliquer sur « Accès root ». Choisir « Applications uniquement » ou « Applications et ADB » en ayant conscience que choisir ADB revient à donner un accès root distant (ce qui est à mettre en balance avec le fait que nous avons déjà un bootloader exposé aux 4 vents).
- Il faudra autoriser au cas par cas l'accès root à chaque application qui le demandera.
Mes premières impressions à chaud sur LineageOS
Venant d'Android 4.4.3, je ne sais pas ce qui relève d'une version récente d'Android ou de Lineage…
- Puisque je passe à Android > 5, je peux enfin chiffrer mon système mobile. \o/ Bon, je n'ai pas l'option pour chiffrer ma carte SD… Je ne pense pas que toutes les partitions de la mémoire interne soient chiffrées (intuition en voyant les points de montage dans un shell ou avec Ghost Commander)… Et puis bon, l'efficacité du chiffrement quand on a un bootloader ouvert aux 4 vents, ça se place là, quoi.
- J'aime beaucoup le contrôle des permissions des logiciels qui semble plus strict (exemple : j'ai dû autoriser OSMAnd~ à utiliser le GPS puis à écrire sur le système de fichiers en deux étapes, pile quand j'ai déclenché les actions qui nécessitent ces autorisations). Ce contrôle des permissions est surtout beaucoup plus présent dans le quotidien de l'utilisateur-rice via une notification constante tant que le logiciel concerné est en cours d'exécution.
- L'expérience utilisateur-rice est globalement mauvaise, je trouve. La barre d'état est difficile à appréhender, les notifications sur l'écran d'accueil sont mélangées entre des vraies notifications (appels, SMS) et des alertes moins prioritaire (permissions de tel et tel logiciel en cours d'exécution), certains labels de menu sont tronqués jusqu'à ce qu'on pivote l'écran, beaucoup plus d'infos sont accessibles depuis l'écran d'accueil verrouillé (genre la consommation internet mobile, activer/désactiver le WiFi / Bluetooh, etc.), l'appli SMS/MMS est à vomir et les modes silencieux/vibreur sont plus difficiles à appréhender…
- EAP-SIM ne fonctionne pas (affichage de l'erreur « password may be incorrect » durant la connexion à un AP Wi-Fi utilisant cela). C'était pourtant pratique pour se connecter aux points d'accès Wi-Fi « FreeWifi_secure »…