SultanXDA legt Unified ROM-aanpak uit op de OnePlus 3/3T

click fraud protection

We namen contact op met SultanXDA om te informeren hoe zijn verenigde ROM en kernel werken voor de OnePlus 3/3T. Lees verder terwijl we erachter komen!

Toen we het hadden over die XDA erkende ontwikkelaar Sultanxda liet de zijne los aangepaste CyanogenMod 13 ROM en Kernel voor de OnePlus 3T, waren veel mensen verrast toen ze zagen dat "dezelfde" ROM-build die werd uitgebracht voor de OnePlus 3T zijn weg vond naar de OnePlus 3 (of omgekeerd!).

Sultanxda hanteerde de uniforme aanpak voor het distribueren van ROM's voor de OnePlus 3 en de OnePlus 3T vanwege hun grotendeels vergelijkbare hardware en software op laag niveau. Dit betekende dat de ROM kruiscompatibiliteit bood tussen beide apparaten, waarbij dezelfde ROM-zip naar het duo kon worden gedistribueerd. Cross-compatibele ritssluitingen zorgden ervoor dat gebruikers (en ook de ontwikkelaar) zich geen zorgen hoefden te maken over het per ongeluk flitsen van de verkeerde ritssluiting en het krijgen van een gemetseld apparaat. Dit wil niet zeggen dat de OnePlus 3/3T gemakkelijk te bouwen is; het brengt in het algemeen alleen minder hoofdpijn met zich mee voor alle betrokken partijen.

We hebben contact opgenomen met de door XDA erkende ontwikkelaar Sultanxda om wat meer licht te werpen op de hele procedure, om de adoptie van zijn methode te bevorderen. Hier zijn de belangrijkste conclusies uit het gesprek, met extra nadruk:

Wat is er anders op de OnePlus 3/3T dat uniforme ROM's mogelijk maakt?

De reden waarom een ​​verenigd ROM mogelijk is, is omdat OnePlus de BSP (de eigen bibliotheken) [Board Support Package] heeft verenigd. Hoewel het unificeren van een kernel eenvoudig is, is het unificeren van een ROM normaal gesproken onmogelijk voor [ROM]-ontwikkelaars vanwege inconsistenties in de BSP die alleen de OEM kan oplossen. Aan mijn kant hoefde ik alleen maar de kernel te verenigen en enkele GPU-firmware-images te scheiden. De firmware-images van de GPU zijn verschillend tussen de Snapdragon 820 en 821, dus ze zijn niet onderling compatibel. Ik heb de kernel aangepast om het te maken laad de juiste GPU-firmware voor elk apparaat om dit op te lossen. ik dan de bijbehorende firmwareafbeeldingen toegevoegd naar de ROM in deze commit. De rest van de apparaatspecifieke firmware-images (zoals de modem-images) bevinden zich in een firmwarepartitie op elk apparaat het GPU-probleem was het enige firmware-gerelateerde probleem waarmee ik te maken kreeg.

Hoe komen de ROM en de kernel erachter welk apparaat het is?

Dankzij de bootloader weet de kernel op welk apparaat hij draait. De bootloader selecteert de Device Tree-configuratie (verpakt in de kernelimage) die overeenkomt met zijn board-ID en geeft deze door configuratie op de kernel Dit geeft de kernel flexibiliteit om de juiste configuraties te laden voor zowel de OnePlus 3 als de OnePlus 3T. U kunt de board-ID voor de OnePlus 3 en de OnePlus 3T door de hyperlinks te volgen.

Heb je alleen een aangepaste kernel nodig om uniforme builds te ondersteunen?

Nee, de ROM moet ook verenigd zijn. OnePlus verenigde de BSP vanaf de open bèta's voor de OP3, en hield deze verenigd in de officiële OP3T OxygenOS-release. Dit betekent dat ROM's eigen bibliotheken moeten gebruiken van de Open Beta-builds van OP3 of de officiële OxygenOS-release van OP3T om verenigd te zijn. Er is ook de GPU-firmware-imagevereiste die ik hierboven heb beschreven, en het touchscreen van de OP3T firmware moet ook in het ROM worden opgenomen (dit is toegevoegd in de GPU-firmware-commit waar ik aan heb gekoppeld boven).

Er is ook een voorbehoud bij de verenigde kernel: ontwikkelaars moeten óf mijn kernel gebruiken (die al verenigd is), óf ze moeten OP3-ondersteuning toevoegen aan de OxygenOS-kernel van OP3T. Ondersteuning voor de OP3T kan niet zomaar aan de kernel van de OP3 worden toegevoegd vanwege de onvolledige Snapdragon 821-ondersteuning, dus unificatie kan veel werk vergen van bereidwillige OP3-ontwikkelaars. Mijn kernel had al volledige Snapdragon 821-ondersteuning toen ik de OP3T ontving (aangezien mijn kernel is gebaseerd op de Snapdragon 821-tak van CAF), dus het unificatieproces was voor mij tamelijk pijnloos.

Ik weet zeker dat veel ontwikkelaars liever de OxygenOS-kernel van OP3T zouden gebruiken dan mijn kernel, waarvoor ondersteuning voor de OP3 zou moeten worden toegevoegd. Ik heb niet gekeken naar het maken van een uniforme kernel voor OxygenOS ROM's, dus er kan extra werk nodig zijn om dat mogelijk te maken.

Kunnen andere ontwikkelaars de code bekijken en zien hoe dit wordt gedaan?

Ja. Sultanxda vermeldt dat al zijn werk op zijn website openbaar beschikbaar is GitHub-account, zodat iedereen met de vereiste kennis kan zien hoe de ROM-unificatie tot stand is gekomen. Toegegeven, de procedure is een beetje ingewikkeld en vereist enige expertise, maar het is een proces dat je heel vaak moet instellen en vergeten met voordelen die hun oorsprong vinden in de vorm van minder onderhoud, minder dubbel werk en een verbeterde een gevoel van zekerheid dat mensen de bestanden van de twee apparaten niet zullen verwarren, aangezien slechts één zip voor beide werkt. Zodra een ROM of kernel is verenigd en is bevestigd dat deze volledig functioneel is op zowel de OnePlus 3 als de OnePlus 3T, is er heel weinig extra werk nodig.


We hopen dat we nieuwe informatie aan het licht hebben gebracht die meer ontwikkelaars zou moeten helpen te kiezen voor uniforme builds voor de apparaten. De ontwikkeling van de OnePlus 3T groeit, en uniforme builds zijn de toekomst voor beide apparaten.