1 votes

Mise à jour Android sans support du fabricant (Pas avec une ROM personnalisée mais avec une approche différente)

Résumé pour le patient hospitalisé: Je veux exécuter une nouvelle version d'Android sur un vieux smartphone (s3mini).

(Désolé pour mon mauvais anglais, je suis allemand. N'hésitez pas à corriger ma grammaire dans les commentaires)

Bonjour les programmeurs et les fans d'Android,

Comme vous le savez peut-être, la plupart des smartphones Android ne reçoivent des mises à jour que pendant une courte période de temps jusqu'à ce que le fabricant de matériel cesse de prendre en charge ledit smartphone. Par exemple, mon smartphone (s3mini GT-I8200N) dispose toujours d'Android 4.2.2, ce qui n'est clairement pas idéal.

N'hésitez pas à me corriger si je me trompe, mais je crois comprendre que toutes les données sur le téléphone, y compris les pilotes, sont supprimées si je flash une ROM personnalisée (par exemple, Stock Android 7.0 ou LineageOS). Comme le fabricant (dans ce cas Samsung) ne publie pas ses pilotes, la communauté doit écrire ses propres pilotes pour chaque smartphone (qui évidemment ne sont pas aussi bons que les pilotes écrits par le fabricant car ils connaissent mieux le matériel).

Il est possible d'obtenir un shell root sur le smartphone / d'exécuter mon propre programme en tant que root sur le smartphone. Comme un processus root peut lire/écrire tous les fichiers sur l'appareil sauf le noyau, et qu'Android 7.0/LineageOS est publiquement disponible, il devrait être possible d'écrire un programme qui met à jour chaque fichier système Android. Mettre à jour le noyau avec des privilèges root ne devrait pas poser de problème non plus puisque le noyau Linux est signé. Voilà le plan :

Étape 1 : Télécharger et compiler Android 7.0/LineageOS

Étape 2 : Copier CompiledAndroid7.0.tar et le programme sur le smartphone

Étape 3 : Démarrer le programme avec les droits root

Étape 4 : Le programme termine tout autre processus

Étape 5 : Le programme supprime tous les fichiers sur le smartphone sauf les pilotes, le noyau, les modules de noyau, les fichiers liés au chargeur de démarrage, le programme lui-même et CompiledAndroid7.0.tar

Étape 6 : Le programme décompresse CompiledAndroid7.0.tar dans le répertoire racine (/) (Le programme doit être capable de décompresser un fichier .tar sans aucun autre logiciel sauf le noyau. Mais cela ne devrait pas être difficile à faire, il suffit de copier-coller à partir d'un logiciel open source de déballage).

Étape 7 : Installer le nouveau noyau signé (via un appel système) et redémarrer.

Maintenant, vous disposez d'un vieux smartphone avec Stock Android 7.0/LineageOS et les pilotes d'origine !

Cela pourrait-il fonctionner en principe ou ai-je mal compris le fonctionnement des smartphones Android ?

Un commentaire a dit que l'Étape 4 pourrait planter mon téléphone. Une belle solution de contournement serait que le programme remplace init par une copie de lui-même puis exécute "sudo reboot"

Les anciens modules/kernel/drivers fonctionnent-ils avec les nouvelles versions de Linux ? Sinon, pourquoi ?

MISE À JOUR

Je tiens à vous remercier tous pour votre aide. L'idée ci-dessus ne fonctionnera pas, donc je vais devoir en vouloir à Google pour ne pas avoir de bons serveurs de mise à jour Android et ne pas s'assurer que les anciens modules de kernel fonctionnent, ainsi qu'à Samsung car ils ne publient pas les sources des pilotes ou de pilotes mis à jour. Si j'ai le temps de le faire, je vérifierai si LineageOS prend en charge mon appareil et si ce n'est pas le cas, j'écrirai des pilotes.

0 votes

Toute ROM qui n'est pas de la marque est une ROM personnalisée. Les ROM du fabricant sont d'origine.

0 votes

Je sais que toute ROM qui n'est pas du fabricant est une ROM personnalisée.

0voto

Matthew Read Points 50150

Les flashs chauds sont certainement possibles, mais plus difficiles que ça vaut la peine.

À ma connaissance, toutes les données sur le téléphone, y compris les pilotes, sont supprimées si je flashe une ROM personnalisée (par exemple, Android Stock 7.0 ou LineageOS)

Ce n'est pas correct. Les données ne sont effacées que si le script de flashage le fait ou si l'appareil est crypté. De même, le firmware est seulement écrasé/supprimé si le script de flashage le fait.

Si vous ne flashez pas une ROM stock du fabricant (ou Android pur sur un téléphone Nexus/Pixel), alors vous flashez une ROM personnalisée. Cette approche ne vous apportera vraiment rien, sauf sur un appareil avec un chargeur de démarrage très verrouillé.

0 votes

Merci de me corriger. Est-il possible de copier les pilotes d'origine du smartphone sur mon PC ? "Cette approche ne va pas vraiment vous apporter grand-chose". Avec cette approche, vous avez les pilotes d'origine, écrits par Samsung. Si vous flashez votre ROM personnalisée, vous avez les pilotes écrits par la communauté qui peuvent ou non fonctionner très bien.

1 votes

@Kryptomatrix La plupart des ROM personnalisées que j'ai vues réutilisent les bits binaires des ROM OEM, elles n'écrivent pas les leurs. Voici un dépôt contenant des blobs pour votre appareil, par exemple. Ils sont inclus dans la ROM empaquetée par le système de construction.

0 votes

@eldarerathis Merci. Je ne savais pas ça. Quelqu'un m'a dit qu'il n'est pas possible d'obtenir les pilotes d'origine du smartphone et que c'est la raison pour laquelle les ROM personnalisées sont parfois instables ou ne peuvent pas utiliser une partie spécifique du matériel.

0voto

Andy Brudtkuhl Points 1714

Les anciens modules / pilotes de noyau fonctionnent-ils avec les nouvelles versions de Linux ? Sinon, pourquoi ?

Non, pas toujours. Il y a deux interfaces dans les modules du noyau : l'interface du module vers le noyau, et l'interface du pilote côté noyau entier vers le pilote côté utilisateur. Cette dernière change plus fréquemment, mais la première aussi parfois. Dans l'ensemble, vous constaterez que certains pilotes fonctionnent correctement, mais d'autres ne peuvent pas fonctionner avec une version différente.

Cela pourrait-il fonctionner en principe ou ai-je mal compris la façon dont fonctionnent les smartphones Android ?

Les nouvelles versions d'Android introduisent souvent de nouvelles fonctionnalités que les pilotes doivent être mis à jour pour prendre en charge. Ainsi, vous pourriez être en mesure d'utiliser le même module de noyau dans une nouvelle version d'Android, mais vous auriez besoin (par exemple) d'écrire un nouveau pilote côté utilisateur pour prendre en charge toutes les fonctionnalités nécessaires pour la nouvelle version d'Android.

Dans l'ensemble, c'est comme l'a dit Matthew. Les ROM personnalisées doivent déjà réutiliser certaines parties binaires des pilotes officiels, et les intégrer est une grande source de douleur. Le "suppression des pilotes" dont vous avez parlé n'est pas la raison pour laquelle cela est douloureux. Avec les parties binaires des pilotes, il arrive souvent que vous ne puissiez rien faire pour les faire fonctionner avec une version plus récente d'Android.

Si vous êtes sérieux au sujet de la prise en charge de votre ancien téléphone, consultez Pourquoi n'y a-t-il pas de ROM stable Cyanogenmod pour mon appareil ? pour apprendre ce que vous pouvez faire pour aider.

0 votes

Merci pour votre aide. Est-ce que je comprends bien ? La communauté prend les pilotes originaux binaires, ou les ingénieurs inverses pour écrire de nouveaux pilotes qui fonctionnent avec les versions plus récentes d'Android ? Désolé si c'est une question stupide, mais si l'interface du pilote change avec les nouvelles versions de Linux, alors pourquoi les distributions Linux de bureau (par exemple, Ubuntu) fonctionnent-elles presque toujours sur du vieux matériel ? Je n'ai jamais eu un ordinateur portable/fixe Linux qui n'était pas mis à jour.

0 votes

C'est différent pour différents appareils. Les pilotes GPU ont généralement une partie binaire et une partie pour laquelle la source est disponible. Parfois, il est possible pour des tiers de mettre à jour la partie source et de continuer à utiliser la partie binaire non modifiée.

0 votes

En ce qui concerne la différence avec les ordinateurs de bureau, il se passe deux choses. Premièrement, la distribution veille à ce que tous les pilotes de la distribution soient mis à jour s'ils veulent passer à une nouvelle version du noyau. Deuxièmement, les nouvelles versions d'Ubuntu n'introduisent pas de nouvelles exigences matérielles (telles que "doit prendre en charge Vulkan"), tandis que les nouvelles versions d'Android le font souvent.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X