Ateliers2020/Atelier Smartphones Libres
Copyleft 2020 VinCiv vmahe@free.fr
Document sous Licence Art Libre (https://artlibre.org/)
Préambule : briques et parpaings
Les manipulations nécessaires au changement d'OS sur un mobile peuvent le rendre inutilisable, irrémédiablement : c'est le "bricage"
Votre téléphone n'est plus alors qu'un tas de composants inertes, une "brique", un "parpaing"...
Vous êtes prévenus !
Ne tentez pas ces manipulations sur votre téléphone dernier cri, acquis avec un crédit sur 10 ans
B-)
Arrière-plan technique
Booter sur les ARM
Pas de bios ou d'EFI standard => chaque carte-mère démarre à sa sauce
Le 1er niveau de boot va chercher à une adresse hardware sur la ROM et/ou la carte SD éventuelle => spécifique.
Le 2e niveau (souvent UBoot) est lui-même généré spécifiquement pour le modèle de téléphone => encore un verrou limitant.
Le système installé est à son tour vérifié spécifiquement (ce qui explique certains échecs d'installation).
Bref : on est très loin des PCs et de leur UEFI (pourtant pourri sur les 32bits) !
Un matériel varié
Chaque téléphone a ses propres versions de périphériques, intégrés à la carte-mère (même si ce n'est pas le cas, il n'y a pas d'autre composant disponible pour cette CM donnée).
La plupart des périphériques utilisés ne sont pas ouverts et nécessitent un firmware propriétaire, et ce à la fois sur le hardware lui-même mais aussi en mémoire vive.
TODO : faire un topo sur les identifiants de modèle (i9000), avec mention spéciale pour les modèles ayant plusieurs identifiants (tq le Note 2 de Samsung)
Et le système ?
Le système final (Android,...) est livré déjà prêt, dans un zip et déployé en l'état => oubliez les apt et autres yum d'install progressive.
Les mises à jour peuvent consister en un remplacement de ce zip => écrasent la précédente version.
Le pire du moins bon...
Ah oui ! Tout ce processus est souvent verrouillé par le fournisseur du téléphone => le "possesseur" du téléphone ne peut rien changer, n'ayant pas les droits SuperUser dessus (c'est pour ça que je n'ai pas utilisé le terme de "propriétaire") => rooter le téléphone avant de pouvoir y changer quelque chose !!!
NB : rooter passe souvent par un exploit => on est sur un hack très pointu (et spécifique au modèle, car la faille utilisable est souvent colmatée dans le modèle suivant).
Implications : des limitations en tout genre
À chaque modèle son boot
Le programme de boot est spécifique et donc tous les OS libres doivent proposer une version du boot dédiée à chaque modèle sur lequel ils souhaitent tourner (une "image")
Dans certains cas, c'est l'outil d'installation qui sera spécifique (cas du Recovery de Replicant), ce dernier installant ensuite un OS plus générique.
Des "distributions" pas très génériques
Chaque OS libre ne se "marie" qu'avec certains modèles de téléphone => consulter la liste des "devices" supportés et acheter un modèle en fonction de l'OS qu'on a choisi (corollaire : on est coincé ensuite avec cet OS).
Rem : notez soigneusement l'identifiant de votre modèle, car les images sont spécifiques à cet identifiant (ex : n7100 pour le Samsung Note II, et t0lte pour le Samsung Note II LTE)
Des périphériques inutilisables
Même les modèles les mieux supportés par l'OS choisi peuvent avoir quelques périphériques non fonctionnels car protégés par du firmware propriétaire (sur l'EPROM mais aussi parfois en RAM)...
Replicant est particulièrement frustrant à ce sujet, car rigoriste => smartphone sans WiFi, sans GPS (pour les modèles "supportés").
Moralité : sélection "polonaise"
Choisir :
- les fonctionnalités dont on a absolument besoin (ex: WiFi)
- l'OS qui les fournit en natif
- le téléphone qui est supporté par l'OS avec les fonctions nécessaires
- le fabricant qui fournit ce téléphone
Rem : "polonaise" fait référence à la notation polonaise inverse des mathématiciens.
Mon expérience
Mon besoin
- remplacer un Wiko problématique (USB usé, écran cassé, mauvaise réception GSM)
- ne plus être pollué par des logiciels imposés (ex : 360Security)
- téléphoner, envoyer et recevoir des SMS/MMS, photographier
La démarche
- me documenter => infos sur les OS et leurs limitations
- choisir l'OS => Replicant, en une démarche Libre (quitte à diluer le breuvage par la suite), et parce qu'il semble moins encombré d'applis que les autres
- me procurer un téléphone compatible => achat d'un Samsung S2 d'occasion + récupération d'un Note II
- installer Replicant
L'installation
Il m'a fallu comprendre les étapes impliquées :
- sauvegarder mes données sur l'ancien téléphone
- télécharger un outil d'installation : Recovery, TWRT
- télécharger un OS : Replicant, LineAgeOS
- installer les outils de déboggage Android : ADB sur Linux
- installer l'outil de recovery sur le téléphone : mode Download
- démarrer en mode recovery
- nettoyer l'espace disque
- installer l'OS : télécharger via ADB
- redémarrer
Commandes ADB
L'Android DeBugger est l'outil central dans votre démarche de gestion de l'OS sur vos smartphones. Il s'agit d'un serveur tournant sur votre PC, qui échange avec le mobile via son branchement USB.
Quelques commandes basiques
heimdall flash --RECOVERY <recovery_filename>.img --no-reboot
: la commande pour installer l'application de recovery que vous avez choisie (Recovery ou TRWP)
adb shell
: un équivalent de ssh, soit une console sur votre mobile depuis votre PC
adb sideload filename.zip
: la commande pour téléverser le nouvel OS sur votre mobile (qui est sur Recovery, avec Apply from ADB)
adb reboot
: pour redémarrer votre mobile depuis votre PC
Quelques OS
Replicant
Site : https://replicant.us/supported-devices.php
Remarques :
- puriste : il ne contient que du Libre => pas de support du WiFi, du GPS, du Bluetooth (mais une application pour gérer ces périphériques en USB)
- deux développeurs => peu de modèles supportés (essentiellement Samsung Galaxy)
- léger : moins de 300 Mo
- des petits manques : pas de voyant pour les SMS reçus, carte SD gérée de façon bizarre,...
LineageOS
Site : https://wiki.lineageos.org/devices/
Remarques :
- La principale distribution de référence, sur laquelle s'appuient nombre d'autres OS (/e/, Maru,...)
- celle qui supporte le plus de modèles (ou tente de le faire : le Zip pour mon n7100a échoué à s'installer)
- mais la version officielle, la plus récente et la seule sur leur site, gère peu des plus anciens modèles
- on peut trouver des images faites par d'autres pour de nombreux modèles : recherchez UNOFFICIAL-xxxxx.zip, avec xxxxx l'identifiant de votre modèle et vous trouverez peut-être votre bonheur...
- des applications incluses qui sont "discutées"
- je n'ai pas pu l'essayer
/e/
Site : https://doc.e.foundation/devices/
Remarques :
- une démarche volontariste et des moyens supérieurs aux autres (marketing notamment)
- un cloud spécifique, auquel s'inscrire => me fait penser à KroSoft
- pas testée
Mer project
Site : https://wiki.merproject.org/wiki/Adaptations/libhybris
Remarques :
- des indications très détaillées sur le support des différents périphériques : ça manque aux autres
- pas vraiment un OS
- a priori, Sailfish serait basé dessus ...
Sailfish
Site : https://sailfishos.org/wiki/Devices
Remarques :
- limité aux Sony Xperia ...
- possibilité de hacker l'OS et mettre une Gentoo par dessus (au moins une personne l'a fait)
- pas testée
Maru(OS)
Site : https://maruos.com/docs/devices/
Remarques :
- vise à fournir un véritable PC dans le téléphone (ce à quoi j'aspire)
- ne supporte que quelques modèles Nexus (s'appuie sur ASOP, la version open source de Google)
- indiquait en 2019 vouloir s'appuyer sur LineageOS, afin de supporter tous les téléphones