Pixel 2 et LineageOS 17.1

Faire durer un téléphone (soit-disant) intelligent au-delà de 2 ans est devenu un véritable défi, voire un calvaire...

Aujourd'hui je me décide donc à remplacer la version d'Android pour tenter de rouler quelque chose de plus léger et espérer gagner quelques années contre l’obsolescence programmée du bidule.

Une bonne occasion aussi de (re)plonger en douceur dans ces ordinateurs de poche... On range les tournevis, ça se passe avec le clavier aujourd'hui.

T'embarques ?

Avec la version actuelle du système (qui est celle d'origine pré-installée par le fabricant, dans le jargon rom stock), j'observe 2 ou 3 secondes de latence systématique. Ce soucis de performance dégrade considérablement l’utilisation de l'appareil alors qu'il n'est clairement pas périmé. En tout cas, beaucoup moins que le beurre de peanut qui traîne dans mon frigo. Les exemples les plus frustrants sont le déclenchement de l'appareil photo avec 3 secondes de retard ou le téléphone qui sonne sans afficher immédiatement le numéro de l'appelant.

Moi qui aime bien l'électronique et les microcontrôleurs justement pour le côté réactif et instantané, c'est un peu le malaise...

C'est d'autant plus frustrant que depuis 2 ans, j'applique scrupuleusement une hygiène numérique pour éviter de surcharger le système d'exploitation en n'installant ni jeux, ni application gratuite à la con...

Malgré cette rigueur, rien n'y fait. Android est malheuresement lui aussi une bombe a retardement qui se ralentit lui même années après années. Ce n'est pas sans me rappeler un autre OS d'ailleurs. Genre celui qui équipe le plus d'ordinateur dans le monde. Cela m'a toujours fasciné comment l'informatique est devenue cruciale mais totalement merdique en même temps.

Bref.

Comme d'habitude sur ce blog, je vais passer rapidement sur les étapes qui sont expliquées des milliards de fois sur l'Internet (en spécifiant les mot-clés à rechercher) mais plutôt essayer de donner un peu de perspective et de contexte à cette démarche.

Dans le cas des téléphones et d'Android, les versions évoluent de toute façon tellement vite que si l'idée te prends de faire la même chose, tu gagneras probablement du temps à comprendre la démarche (qui est relativement la même depuis plusieurs années) et l'adapter plutôt que de copier coller des recettes obsolètes qui plantent pour un détail.

1. Débloquer le bootloader du téléphone

Pour installer une OS alternatif sur un téléphone (peu importe lequel), il faut en premier lieu débloquer le bootloader.

De mon côté, j'ai toujours utilisé des téléphones vendu par Google (Nexus, Pixel, ...) car cette étape est officiellement supportée.

Concrètement, cela veut dire que quelque part dans les paramètres de mon téléphone, je vais pouvoir cocher des options en ce sens. Simple !

rtfm →

Il est bon de le préciser car certains fabricants dépensent une énergie folle en code et en surcouches pour t'empêcher de faire cela aussi facilement (ie: Motorola). Pour moi c'est devenu un critère d'achat.

Dans mon cas donc (et oui c'est mon blog camarade!), il suffit d'aller dans Options pour les concepteurs (comment afficher ce menu ?) puis activer les 2 options suivantes:

> Débogage USB
> Déverrouillage par le fabricant ou OEM Unlock in english...

Elles sont assez explicites pour ne pas perdre de temps dessus.

Maintenant que ces options sont activées, il va être possible de débloquer le bootloader depuis le PC (connecté au téléphone en USB).

Pour accéder au menu du bootloader d'un périphérique Google Android, il suffit d'éteindre le téléphone, puis de le rallumer en maintenant power et volume bas appuyé.

Quand le téléphone est dans ce menu, il est possible de communiquer avec lui depuis le PC, en utilisant la commande fastboot:

$ sudo fastboot devices
FAXXXXXXXX42	fastboot

Pour le déverrouiller donc:

$ sudo fastboot flashing unlock
OKAY [  8.054s]
Finished. Total time: 8.054s

Voilà. C'est pas sorcier comme dirait Jamy. Bon, t'es encore là ? Ok, on passe à la suite alors.

2. Démarrer le téléphone en recovery

Maintenant, l'étape suivante consiste à mettre le téléphone dans le mode “récupération” (a.k.a recovery) car c'est dans ce “mode” (et seulement dans ce mode) qu'il est possible d'écrire une image Android sur la mémoire interne.

Tu connais peut-être déjà ce mode (sans le savoir) si tu as déjà fait un retour aux paramètres d'usine (a.k.a factory reset). C'est l'étape généralement fortement conseillée pour être sûr de ne rien laisser traîner quand on se sépare d'un téléphone.

La procédure normale prévu par le fabriquant n'est pas interactive. Le téléphone redémarre, puis re-écrit tout seul la mémoire interne avec la version d’origine d'Android qu'il avait gardé dans un coin de sa table de partition. Tu te rappelles ? Ok.

Dans notre cas, nous allons utiliser ce mode aussi, mais pas exactement comme il a été est prévu par le fabriquant.

D'abord, nous avons besoin d'utiliser un logiciel de récupération différent que celui qui est actuellement installé (car à part re-écrire automatiquement la version d'usine d'Android d'usine, il ne sait rien faire d'autre).

Le logiciel choisi est TWRP (Team Win Recovery Project ). C'est un logiciel Open Source qui permet d'effectuer des opérations de bas niveau sur un téléphone en mode recovery (comme par exemple sauver la ROM installée dump, écrire une rom install ou formater la mémoire wipe).

twrp est distribuée sous forme d'image bootable (donc un kernel et un ramdisk).

$ file twrp-3.3.0-0-walleye.img 
twrp-3.3.0-0-walleye.img: Android bootimg, kernel (0x8000), ramdisk (0x1000000), [...]

Pour le démarrer, il faut donc configurer le téléphone pour booter sur cette image. C'est possible directement via l'USB. On pourrait voir ça à la manière d'un système LiveCD avec un PC classique.

Cela implique au passage de bien télécharger la version spécifique au modèle précis du téléphone puisque cela va être consommé directement par le bootloader du téléphone.

Puisque nous sommes encore dans le menu du bootloader, c'est encore avec la commande fastboot que cela se passe:

$ sudo fastboot boot twrp-3.3.0-0-walleye.img 
Downloading 'boot.img'                             OKAY [  1.068s]
booting                                            OKAY [  0.052s]

Suite à cette commande, le téléphone boote immédiatement sur twrp.

Maintenant que le téléphone à démarré twrp, il est en mode recovery. L'outil pour communiquer avec lui n'est plus fastboot mais adb.

$ adb devices
List of devices attached
FAXXXXXXXX42	recovery

Une fois la rom téléchargée, pas la peine se ruer sur le bouton install... Il faut d'abord pousser le fichier sur le téléphone puisque (à ma connaissance) on ne peut pas le lire en USB et l'écrire en même temps sur la mémoire interne.

L'idée est donc de pousser le fichier zip de la rom que l'on va flasher sur un stockage temporaire dans le téléphone. Il y a un pointeur (lien) générique à cet effet qui fonctionne presque tout le temps /sdcard.

$ adb push lineage-17.1-20201117-nightly-walleye-signed.zip /sdcard/
lineage-17.1-20201117-nightly-walleye-signed.zip: 1 file pushed. 26.7 MB/s (748842785 bytes in 26.742s)

Depuis twrp, dans install, il va être maintenant possible d'écrire la rom de son choix sur la mémoire interne du téléphone. Dans mon cas, j'installe LineageOS donc lineage-17.1-20201117-nightly-walleye-signed.zip. Il y en a d'autres, plus ou moins maintenues. Toutes les réponses à tes questions sont sur le forum XDA Developers ;)

Il est fortement conseillé de formater les différentes zones mémoires avant de procéder (Depuis le menu wipe).

Tout est super génial! En fait pas forcément.

Quoi d'autre ? Google.

Dans une autre vie... où j'étais plus jeune, je me serai arrêté là. Qu'en aurais-je bien eu à foutre de la suite Google et de son Play Store à mârde remplit d'applications farcies de tracker à pubs ?

Les versions custom d'Android n'incluent pas les applications Google car elles ne sont, ni libres, ni Open Source. Pour faire court, si tu veux le Play Store officiel et toute la m*rde qui vient avec (Gmail, Calendrier, Photos, Maps, etc...), il y a encore une étape.

Si tu es encore plein d'espoir et de courage, tu peux redémarrer le téléphone maintenant et installer le store Open Source F-Droid. Ta vie avec un téléphone dé-google-lisé commence maintenant. Sinon rendez-vous au paragraphe suivant.

3. (Optionnel) Installer les machins-trucs de Google

Toute la suite de Google est donc dans un package qui s'installe aussi depuis le mode recovery et surtout avant de démarrer le firmware alternatif pour la première fois.

Par contre, à la différence de la rom custom, nous ne pouvons pas utiliser twrp. Cela doit être fait depuis le mode recovery de la rom en question car certaines vérifications de compatibilité de versions ne marcheront pas.

Oui je sais c'est long et chiant... Alors imagine pauvre de moi qui essaye de mettre ça par écrit pour éclairer ta lanterne. Un véritable calvaire.

Parce-que c'est bien fait, lorsque que l'on flashe le téléphone avec LineageOS, il installe aussi (en plus de la rom), une image de recovery. Cela permet entre autre de disposer, comme une version d'usine d'Android, d'une fonction de factory reset ou d'installer des mises à jours.

Ce coup-ci donc, pas besoin de télécharger une image ou quoi que ce soit, il suffit de démarrer la-dessus !

Comme précisé plus haut, il est important de ne pas encore démarrer la nouvelle rom alternative car les Google Apps doivent être installées avant ce premier boot. On peut basculer du mode recovery de twrp directement sur le mode recovery de LineageOS depuis le menu: Reboot puis Recovery.

Depuis l’outil de recovery de LineageOS, le package Google s'installe depuis le menu Apply update puis Apply from ADB. Sur le PC, on pousse le fichier en sideload depuis la commande suivante:

$ sudo adb sideload open_gapps-FIXED-arm64-10.0-nano-20200131.zip
Total xfer: 1.00x                                                       

Le tour est joué.

Maintenant que le package est installée (et seulement maintenant), on peut démarrer sur la rom alternative.

Ça va bien aller!

La suite plus tard. Passez une belle journée.

^EOF

#android #lineageos