Nos comunicamos con SultanXDA para preguntarle cómo funcionan su ROM y kernel unificados para OnePlus 3/3T. ¡Sigue leyendo mientras lo descubrimos!
Cuando cubrimos a ese desarrollador reconocido por XDA sultanxda soltó su ROM y kernel CyanogenMod 13 personalizados para OnePlus 3T, mucha gente se sorprendió al ver que la "misma" compilación de ROM que se lanzó para el OnePlus 3T llegó al OnePlus 3 (¡o viceversa!).
Sultanxda adoptó el enfoque unificado para distribuir ROM para el OnePlus 3 y el OnePlus 3T debido a su hardware y software de bajo nivel muy similares. Esto significaba que la ROM ofrecía compatibilidad cruzada entre ambos dispositivos, donde se podía distribuir el mismo zip de ROM al dúo. Los zips compatibles permitieron a los usuarios (y también al desarrollador) no preocuparse por mostrar accidentalmente el zip incorrecto y obtener un dispositivo bloqueado. Esto no quiere decir que los OnePlus 3/3T sean fáciles de bloquear; simplemente implica menos dolores de cabeza en general para todas las partes involucradas.
Nos comunicamos con el desarrollador reconocido de XDA sultanxda aclarar un poco más todo el procedimiento para favorecer la adopción de su método. Aquí están las principales conclusiones de la conversación con mayor énfasis:
¿En qué se diferencia el OnePlus 3/3T que permite ROM unificadas?
La razón por la que es posible una ROM unificada es porque OnePlus unificó el BSP (las bibliotecas propietarias) [Board Support Package]. Aunque unificar un kernel es fácil, unificar una ROM normalmente es imposible para los desarrolladores [de ROM] debido a inconsistencias en el BSP que solo el OEM puede solucionar. Por mi parte, todo lo que tuve que hacer fue unificar el kernel y separar algunas imágenes de firmware de GPU. Las imágenes del firmware de la GPU son diferentes entre el Snapdragon 820 y el 821, por lo que no son compatibles. Modifiqué el kernel para hacerlo. cargue el firmware de GPU correcto para que cada dispositivo solucione este problema. entonces yo Se agregaron las imágenes de firmware correspondientes. a la ROM en este compromiso. El resto de las imágenes de firmware específicas del dispositivo (como las imágenes del módem) se encuentran en una partición de firmware en cada dispositivo, por lo que el problema de la GPU fue el único problema relacionado con el firmware que enfrenté.
¿Cómo determinan la ROM y el Kernel qué dispositivo es?
El kernel sabe en qué dispositivo se está ejecutando gracias al gestor de arranque. El gestor de arranque selecciona la configuración del árbol de dispositivos (empaquetada en la imagen del kernel) que coincide con su ID de placa y pasa esta configuración en el kernel Esto le da al kernel flexibilidad para cargar las configuraciones apropiadas tanto para el OnePlus 3 como para el OnePlus 3T. Puede encontrar el ID de la placa para el OnePlus 3 y el OnePlus 3T siguiendo los hipervínculos.
¿Necesita sólo un kernel modificado para admitir compilaciones unificadas?
No, la ROM también debe estar unificada. OnePlus unificó el BSP a partir de las Betas Abiertas para el OP3 y lo mantuvo unificado en la versión oficial de OP3T OxygenOS. Esto significa que las ROM deben utilizar bibliotecas propietarias de las versiones Beta abierta de OP3 o de la versión oficial de OxygenOS de OP3T para poder estar unificadas. También existe el requisito de imagen de firmware de GPU que describí anteriormente y la pantalla táctil del OP3T. El firmware también debe incluirse en la ROM (esto se agregó en la confirmación del firmware de la GPU que vinculé a arriba).
Además, hay una advertencia sobre el kernel unificado: los desarrolladores deben usar mi kernel (que ya está unificado) o deben agregar soporte OP3 al kernel OxygenOS de OP3T. El soporte para OP3T no se puede simplemente agregar al kernel del OP3 debido al soporte incompleto de Snapdragon 821, por lo que la unificación puede requerir mucho trabajo por parte de los desarrolladores de OP3 dispuestos. Mi kernel ya tenía soporte completo para Snapdragon 821 cuando recibí el OP3T (ya que mi kernel está basado en la rama Snapdragon 821 de CAF), por lo que el proceso de unificación fue bastante sencillo para mí.
Estoy seguro de que muchos desarrolladores preferirían usar el kernel OxygenOS de OP3T en lugar de mi kernel, lo que requeriría agregarle soporte para OP3. No pensé en crear un kernel unificado para las ROM de OxygenOS, por lo que es posible que se requiera trabajo adicional para que eso suceda.
¿Pueden otros desarrolladores echar un vistazo al código y ver cómo se hace?
Sí. Sultanxda menciona que todo su trabajo está disponible públicamente en su cuenta GitHub, para que cualquiera con los conocimientos necesarios pueda ver cómo se llevó a cabo la unificación de ROM. Por supuesto, el procedimiento es un poco complicado y requiere cierto nivel de experiencia, pero es un proceso en gran medida de configurar y olvidar con beneficios que se originan en forma de menor mantenimiento, menos duplicación de trabajo y una mayor sensación de seguridad de que la gente no confundirá los archivos de los dos dispositivos, ya que solo un zip funciona para ambos. Una vez que se unifica una ROM o un kernel y se confirma que es completamente funcional tanto en OnePlus 3 como en OnePlus 3T, se requiere muy poco trabajo adicional.
Esperamos haber sacado a la luz nueva información que debería ayudar a más desarrolladores a optar por compilaciones unificadas para los dispositivos. El desarrollo del OnePlus 3T está creciendoy las compilaciones unificadas son el futuro para ambos dispositivos en el futuro.