LineageOS 17.1 (Android 10), F-Droid et géolocalisation Wifi et GSM avec microG
-
Sommaire
- Contexte
- Trous de lapins et galères (croyais-je ?)
- Retournement de situation (« plot twist », si vous préférez)
- Conclusion
J’ai un téléphone sous LineageOS et la version 17.1 (Android 10) est maintenant disponible pour mon téléphone. J’utilise F-Droid et microG.
Contexte
F-Droid est un magasin d’applications libres. J’utilise ça et pas autre chose. De plus, n’installant pas les fameuses GApps (services Google), je n’ai pas le Play Store, le service de communication utilisé par plein d’applications qui utilise le cloud Google (GCM - Google Cloud Messaging / Firebase), et le service de géolocalisation Google utilisant les antennes Wifi et téléphoniques aux alentours.
Pour les gens qui, comme moi, on besoin de certaines de ces fonctionnalités, il y a microG: un ensemble d’applications libres réimplémentant ces services Google, notamment :
- un Play Store fake (ne me demandez pas, je ne sais pas vraiment ce que ça fait)
- une bibliothèque qui permet aux applications compilés avec les blobs propriétaires de Google de continuer à communiquer en utilisant le cloud Google, alors que les GApps ne sont pas installés sur le téléphone
- un système de géolocalisation Wifi / GSM s’appuyant sur divers fournisseurs qu’on peut choisir / cumuler parmi :
- des données locales, récupérées avec le téléphone lui-même ou téléchargés en avance pour utilisation hors ligne
- celui d’Apple (probablement utilisé dans les iPhones / iPad)
- le service de localisation Mozilla (qui peut être complété à l’aide de l’application Mozilla Stumbler ou de Firefox Mobile sur Android. Ça fait ce que font les appareils Android ou Apple à l’insu des utilisateurs, mais en toute connaissance de cause : de temps en temps, le GPS est utilisé, les réseaux aux alentours sont scannés et la combinaison est envoyée à Mozilla (la base de donnée n’est pas libre)
- celui de Nominatim
- celui de MapQuest
Ces trois derniers nécessitent une connexion mobile, mais globalement ça ne consomme vraiment pas beaucoup de données. Avec mon forfait 50 M / mois, ça passe large.
- un truc qui fait l’inverse : il prend une position GPS et renvoie des adresse. On peut utiliser Nominatim pour ça. Je ne sais pas très bien ça s’utilise mais c’est possible apparemment.
Ce qui m’intéresse, ce sont les deux derniers points, et en tout cas le point 3. J’ai un GPS un peu faiblard, et puis ça ne marche pas toujours bien dans les transports ou dans un bâtiment / une maison. Les deux premiers points, je m’en fiche, je n’utilise pas d’application qui a besoin d’un Play Store fake ou du cloud Google. Ce sont des applications qui sont compilées avec le blob proprio Google et qui ne trouvent donc pas leur chemin jusqu’à mon téléphone. Jusqu’à maintenant, j’utilisais le système LineageOS for microG, une recompilation de LineageOS avec :
- les applications microG, qui peuvent être installées avec F-Droid
- un mécanisme qui permet aux services microG de se faire passer pour les services Google. Ceux-ci sont signés avec une clé privée de Google, et les applications utilisant ces services à travers le blob propriétaire Google vérifient que la signature du service qui leur répond correspond bien à cette signature. Bien sûr, microG ne peut pas utiliser cette signature, donc ça rate, donc il faut la coopération du système d’exploitation pour que ça marche quand même. LineageOS refuse d’implémenter le patch qui introduit cette “fonctionnalité” (signature spoofing).
Avant LineageOS 17.1
Au lieu d’installer LineageOS, je pouvais installer LineageOS for microG. Cette distribution intègre le fameux patch nécessaire (tout comme de nombreuses autres distributions alternatives (AICP, AOSPExtended, etc), et aussi l’extension F-Droid il me semble (mais qu’on peut de toute façon la flasher sur n’importe quelle distribution Android).
Avec LineageOS 17.1
- pas de version microG de lineage 17.1 (pour le moment)
- la version actuelle de l’extension F-Droid qui permet à F-Droid d’installer et mettre à jour des applications sans afficher 30000 boites de dialogues ne fonctionne pas sur Android 10, des chemins systèmes ont changé.
Je pourrais rester sur Android 9, ça marche très bien, mais tant qu’à faire j’ai migré avant de connaître ces problèmes et de toute façon, cette version ne reçoit plus de mise à jour sur mon modèle. Pas de support officiel d’AICP et d’AOSPExtended pour mon modèle non plus. Donc, installation de la dernière version officielle de LineageOS, et pas de microG.
Trous de lapins et galères (croyais-je ?)
Il fallait donc installer microG un peu manuellement, puis appliquer ce fameux patch manuellement (pensais-je). Pour ça deux familles de solution :
- une recompilation de LineageOS avec un patch : bye bye les mises à jour automatiques, c’est un peu lourd en gestion même si j’ai le coup de main pour compiler Android maintenant.
- des scripts qui viennent décompiler et patcher un fichier JAR dans le système. C’est un peu bricolage, ce qui existe n’a pas l’air d’être très adapté pour Android 10 pour le moment, ça saute lors de la prochaine mise à jour si toutefois celle-ci veut bien s’appliquer après la modif, et je soupçonne la solution de causer potentiellement des problèmes de stabilités.
Pas ouf, donc. Sauf qu’en fait,
Retournement de situation (« plot twist », si vous préférez)
Pas besoin du patch pour juste la géolocalisation. Après vérification désespérée. En fait, Android fournit de base un mécanisme pour enregistrer des fournisseurs de géolocalisation proprement sans devoir usurper des signatures ou quoi que ce soit (je me disais aussi… pourquoi tant de haine ?).
Bon du coup problème réglé, je n’ai pas besoin d’une distribution spéciale de LineageOS. Parfait. Reste l’installation de microG. (Oui, les lecteurs et lectrices les plus aguerries auront remarqué que j’ai eu besoin d’installer microG avant de m’apercevoir que ça marchait sans le patch, mais bon, je raconte dans l’ordre que je veux !)
C’est Magisk
Il se trouve que j’utilise Magisk pour rooter mon téléphone (plus de support officiel pour rooter LineageOS depuis la version 17.1 apparemment pour je ne sais quelle raison. On ne peut plus télécharger les addonsu, et puis de toute façon Magisk fournit un contrôle plus grand - on peut savoir quelles applications essayent d’être root, autoriser / bloquer par application, etc) et que Magisk permet d’installer des modules sympa qui modifient le système de manière à ce que les mises à jours soient toujours possibles, et les modules restent installés après grâce à l’utilisation du mécanisme de survie des modules (
addon.d
) présent dans la plupart des systèmes alternatifs Android.Or, il y a deux modules Magisk très intéressants :
- F-Droid Privileged Extension
- microG Installer Revived
En résumé
- installation de LineageOS 17.1
- on flashe Magisk : c’est un peu intrusif, ça touche la partition de démarrage du téléphone, pensez de toute façon à tout sauvegarder avant de faire quoi que ce soit, mais je n’ai jamais eu de problème et ça marche plutôt bien
- une fois démarré, on peut installer deux modules Magisk
- c’était pénible, ils ont tout cassé avec Android 10, mais finalement c’est plus simple comme ça maintenant
On configure microG, et pif, c’est plié, c’est propre, ça marche et ça survit les mises à jour.
Bonus
Tout n’est pas bon à prendre dans les modules Magisk. Magisk lui-même est complètement libre, et les auteurs font bien attention à ne pas embarquer de code propriétaire. Par exemple, certaines applications (des applications bancaires, des trucs utilisant les DRM (Netflix, autres j’imagine)) vérifient qu’elles sont bien lancées sur un téléphone et un système vérifiés par Google, et la vérification ne passe pas sur un système bidouillé. Magisk embarque un mécanisme pour tester l’état de Safety Net et pour ce faire, il s’appuie sur le blob propriétaire Google bien sûr. Le mécanisme n’est pas là de base et Magisk demande bien l’autorisation à l’utilisateur pour télécharger ce module en l’avertissant que du code propriétaire est nécessaire.
Cette attention n’est pas garantie dans les modules qu’on peut installer via Magisk, et on trouve vraiment de tout : des trucs libres, des trucs proprios, des machins pas à jour, etc. À charge de l’utilisateur de faire ses recherches.
Il y en a quand même des sympas, et notamment :
- Fullscreen Gestures : ça permet, quand on utilise le nouveau mode “gestes” d’Android 10 pour naviguer (changer d’application, revenir en arrière, etc), de cacher complètement la barre de navigation devenue inutile. Pour une raison qui m’échappe, la possibilité de masquer la barre de navigation n’est pas dans Android 10 de base. Les gestes eux-même m’intéressent passablement, mais je navigue en utilisant le lecteur d’empruntes: un “touch” court pour faire précédent et touch long pour avoir la liste des applications ouvertes. La barre de navigation ne me sert pas, prend de la place pour rien, et ne peut pas être recouverte par les filtres d’écran tels que Red Moon. Avant, j’utilisais un petit script pour ajouter une propriété au fichier
/system/build.prop
(qemu.hw.mainkeys=1
) pour faire ça, et il fallait que je le fasse après chaque mise à jour. Maintenant ça se fera tout seul, c’est bien. Par contre les gestes ont l’air de se mettre un peu en travers de mon utilisation du téléphone, j’ai réduit la sensibilité et la zone active au maximum, et si ça ne va pas je reviendrai à la solution précédente. - Cross compiled Binaries : quelques binaires venus du monde de GNU/Linux
- SSH for Magisk : ssh et rsync sur Android, pour les transferts, c’est plutôt pratique
Et quelques un que je n’ai pas encore eu l’occasion de tester :
- ZSH for Arm : j’utilise Zsh sur mon ordi classique, l’avoir quand on est en root sur Android sera peut-être pratique un jour, mais bon je ne vis pas dans le shell root d’Android non plus et le système est par défaut lancé en lecture seul donc pas d’historique. Donc l’intérêt n’est pas encore très clair. J’utilise plus les outils de Termux quand je dois utiliser la ligne de commande sur Android.
- rclone-mount : ça permet de monter des systèmes de fichiers distant (différents clouds, sftp, http, webdav) en utilisant FUSE. Je ne savais pas que c’était possible sur Android, j’avais essayé d’utiliser sshfs sur Termux, sans succès.
Conclusion
C’était un journal plus long que prévu. Mais j’espère que ça vous aura diverti, ou, encore mieux, vous aura été utile !
Bon weekend
Télécharger ce contenu au format Epub
Commentaires : voir le flux atom ouvrir dans le navigateur
Sauf mention contraire, le site est placé sous double licence Creative Commons BY-SA et GNU Free Documentation License propulsé par NodeBB