Después de escribir un código bash que instala automáticamente LineageOS en el Fair Phone 2 (FP2), también estoy implementando la instalación "inversa" del SO, de LineageOS a Fairphone Open OS. De Fairphone Open OS a LineageOS funciona sin problemas, sin embargo el camino inverso no produce el comportamiento esperado.
Comportamiento esperado
Yo esperaría que el FP2 arrancara con éxito en una nueva instancia de Fairphone Open OS después de ejecutarlo:
sudo adb shell twrp sideload
sudo adb sideload 19.11.2-sibon-24df0be9-ota.zip
# terminate/end the sideloading modus
sudo adb sideload /dev/null
adb reboot
Comportamiento observado
Eso no funciona, ya que el teléfono se queda atascado en un arranque infinito hasta que se desconecta la conexión usb con el host. En ese caso,
- el teléfono inicia la instalación del nuevo Fairphone Open OS durante aproximadamente medio segundo,
- entonces muestra el mensaje de "apagado",
-
y se reinicia en el
Android Recovery
menú mientras se visualiza:Android Recovery Fairphone/FP2/FP2 9/21.03.0-rel.2-sibon-3cb25d6c userdebug/release-keys Use volume up/down and power.
Can't load Android system. Your data may be corrupt. If you continue to get this message you may need to perform a factory data reset and erase all data stored on this device.
Try Again Factory data reset
Si la opción Inténtalo de nuevo se selecciona, el teléfono se reinicia y luego se repite volviendo a este menú. Sin embargo, si Factory data reset
se selecciona, el restablecimiento de datos de fábrica se ejecuta con éxito y el teléfono arranca con éxito en Fairphone Open OS.
Estrategia de mitigación de errores I
Como el restablecimiento de fábrica "resuelve el problema", he intentado automatizarlo. Sin embargo, estoy experimentando algunas dificultades al hacerlo. El problema principal es que ya no tengo control sobre el teléfono tan pronto como lo reinicio después de sideloading el Fairphone Open OS en TWRP. Esto se debe a que durante todo el arranque (hasta el fallo/reinicio en modo Android Recovery), el adb no está autorizado:
List of devices attached
somedeviceid unauthorized
Así que traté de borrar los datos después de sideloading en TWRP, pero antes de reiniciar, utilizando:
adb shell twrp wipe data
adb shell twrp wipe cache
adb shell twrp wipe dalvik
Sin embargo, eso también conduce al comportamiento observado, tal y como se ha descrito anteriormente.
Estrategia de mitigación de errores II
Como borrar los datos del sistema TWRP no equivalía a un restablecimiento de fábrica en/del Fairphone Open OS, pensé que podría reiniciar en fastboot y hacer un restablecimiento de fábrica desde ahí, como se explica aquí utilizando el código:
adb reboot bootloader
fastboot erase userdata
fastboot erase cache
fastboot reboot
Sin embargo, eso hizo que el dispositivo se bloqueara. Creo que este soft-bricked porque, Fairphone Open OS reemplaza el sistema de recuperación TWRP con su propia Android Recovery
sistema, que corrompe el sistema de recuperación TWRP, y luego el Fairphone Open OS trató de fallar en su modo de recuperación, pero que todavía se fijó en el TWRP porque no se eliminó debido al uso de fastboot
en el medio, pero el TWRP se corrompió. Sin embargo, después de un poco de ensayo y error y algunas acciones indebidamente documentados, me las arreglé para unbrick el TWRP de alguna manera, lo que me lleva de nuevo a tratar el comportamiento observado.
Estrategia de mitigación de errores III
He probado la función de reinicio como se describe aquí de twrp después de la carga lateral, antes de reiniciar:
adb shell
recovery --wipe_data
Que salió:
I:Lun file '/sys/class/android_usb/android0/f_mass_storage/lun0/file' does not exist, USB storage mode disabled
TW_INCLUDE_CRYPTO := true
I:Found brightness file at '/sys/class/leds/lcd-backlight/brightness'
I:Got max brightness 255 from '/sys/class/leds/lcd-backlight/max_brightness'
I:TWFunc::Set_Brightness: Setting brightness control to 255
I:LANG: en
I:TW_NO_LEGACY_PROPS := true
Sin embargo, resultó en el mismo comportamiento observado descrito, necesitando un restablecimiento manual de fábrica antes de que Fairphone Open OS arrancara con éxito.
Pregunta
¿Qué podría hacer para cargar lateralmente y arrancar con éxito el Fairphone Open OS procedente de un sistema LineageOS sin que el usuario tenga que realizar un restablecimiento manual de fábrica?