Nous avons contacté SultanXDA pour savoir comment fonctionnent sa ROM et son noyau unifiés pour le OnePlus 3/3T. Continuez à lire pendant que nous le découvrons !
À l'époque où nous avons couvert ce développeur reconnu par XDA Sultanxda a libéré son ROM et noyau CyanogenMod 13 personnalisés pour le OnePlus 3T, beaucoup de gens ont été surpris de voir la "même" version de ROM publiée pour le OnePlus 3T arriver sur le OnePlus 3 (ou vice versa !).
Sultanxda a adopté une approche unifiée pour la distribution des ROM pour le OnePlus3 et le OnePlus 3T en raison de leur matériel largement similaire et de leurs logiciels de bas niveau. Cela signifiait que la ROM offrait une compatibilité croisée entre les deux appareils, où le même zip ROM pouvait être distribué au duo. Les zips à compatibilité croisée ont permis aux utilisateurs (et au développeur également) de ne pas s'inquiéter de flasher accidentellement le mauvais zip et d'obtenir un appareil maçonné. Cela ne veut pas dire que les OnePlus 3/3T sont faciles à construire – cela entraîne simplement moins de maux de tête pour toutes les parties impliquées.
Nous avons contacté un développeur reconnu par XDA Sultanxda d'apporter un peu plus de lumière sur l'ensemble de la procédure, afin de favoriser l'adoption de sa méthode. Voici les principaux points à retenir de la conversation avec un accent supplémentaire :
Quelle est la différence sur le OnePlus 3/3T qui permet des ROM unifiées ?
La raison pour laquelle une ROM unifiée est possible est que OnePlus a unifié le BSP (les bibliothèques propriétaires) [Board Support Package]. Bien qu'unifier un noyau soit facile, unifier une ROM est normalement impossible pour les développeurs [ROM] en raison d'incohérences dans le BSP que seul l'OEM peut résoudre. De mon côté, tout ce que j'avais à faire était d'unifier le noyau et de séparer certaines images du firmware du GPU. Les images du firmware du GPU sont différentes entre les Snapdragon 820 et 821, elles ne sont donc pas compatibles entre elles. J'ai modifié le noyau pour le faire charger le bon firmware GPU pour chaque appareil pour résoudre ce problème. J'ai alors ajouté les images du firmware correspondantes à la ROM dans ce commit. Le reste des images du micrologiciel spécifiques au périphérique (telles que les images du modem) se trouvent dans une partition du micrologiciel sur chaque périphérique. le problème du GPU était le seul problème lié au firmware auquel j'ai été confronté.
Comment la ROM et le noyau déterminent-ils de quel périphérique il s'agit ?
Le noyau sait sur quel périphérique il s'exécute grâce au chargeur de démarrage. Le chargeur de démarrage sélectionne la configuration de l'arborescence des périphériques (intégrée dans l'image du noyau) qui correspond à son ID de carte et la transmet configuration sur le noyau Cela donne au noyau la flexibilité de charger les configurations appropriées pour le OnePlus 3 et le OnePlus 3T. Vous pouvez trouver l'ID de la carte pour le OnePlus3 et le OnePlus 3T en suivant les hyperliens.
Avez-vous seulement besoin d’un noyau modifié pour prendre en charge les builds unifiés ?
Non, la ROM doit également être unifiée. OnePlus a unifié le BSP à partir des versions bêta ouvertes pour l'OP3 et l'a maintenu unifié dans la version officielle OP3T OxygenOS. Cela signifie que les ROM doivent utiliser des bibliothèques propriétaires provenant soit des versions bêta ouvertes de l'OP3, soit de la version officielle d'OxygenOS de l'OP3T afin d'être unifiées. Il existe également l'exigence d'image du micrologiciel GPU que j'ai décrite ci-dessus et l'écran tactile de l'OP3T. le micrologiciel doit également être inclus dans la ROM (cela a été ajouté dans le commit du micrologiciel GPU auquel j'ai lié au-dessus de).
Il existe également une mise en garde concernant le noyau unifié: les développeurs doivent soit utiliser mon noyau (qui est déjà unifié), soit ajouter le support OP3 au noyau OxygenOS de l'OP3T. La prise en charge de l'OP3T ne peut pas simplement être ajoutée au noyau de l'OP3 en raison de la prise en charge incomplète de Snapdragon 821. L'unification peut donc nécessiter beaucoup de travail de la part des développeurs OP3 volontaires. Mon noyau bénéficiait déjà d'un support complet pour Snapdragon 821 lorsque j'ai reçu l'OP3T (puisque mon noyau est basé sur la branche Snapdragon 821 de CAF), le processus d'unification a donc été plutôt indolore pour moi.
Je suis sûr que de nombreux développeurs préféreraient utiliser le noyau OxygenOS de l'OP3T plutôt que mon noyau, ce qui nécessiterait d'y ajouter la prise en charge de l'OP3. Je n'ai pas envisagé de créer un noyau unifié pour les ROM OxygenOS, donc des travaux supplémentaires pourraient être nécessaires pour y parvenir.
D'autres développeurs peuvent-ils jeter un œil au code et voir comment cela se fait ?
Oui. Sultanxda mentionne que tout son travail est accessible au public sur son Compte GitHub, afin que toute personne possédant le savoir-faire requis puisse voir comment l’unification du ROM a été réalisée. Certes, la procédure est un peu complexe et nécessite un certain niveau d'expertise, mais c'est un processus à définir et à oublier avec des avantages provenant d'une maintenance moindre, d'une réduction du travail en double et d'un meilleur le sentiment d'assurance que les gens ne confondront pas les fichiers des deux appareils, car un seul zip fonctionne pour les deux. Une fois qu'une ROM ou un noyau est unifié et confirmé comme étant entièrement fonctionnel sur le OnePlus 3 et le OnePlus 3T, très peu de travail supplémentaire est requis.
Nous espérons avoir mis en lumière de nouvelles informations qui devraient aider davantage de développeurs à opter pour des versions unifiées pour les appareils. Le développement sur le OnePlus 3T se développe, et les versions unifiées sont l’avenir des deux appareils à l’avenir.