1 votos

Arrancar Fairphone Open OS automáticamente después de la carga lateral desde TWRP

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?

1voto

a.t. Puntos 21

Camino a la respuesta

Porque no entendí claramente la diferencia entre seleccionar, Wipe > Advanced Wipe > Data > yes y Wipe>format data>yes No probé a fondo/consecuentemente esta última opción ya que pensé que era la misma que la Wipe > Advanced Wipe > Data > yes opción.

Como experimentalmente determiné que un restablecimiento de fábrica arreglaba el problema, me centré en automatizar esa opción en las restricciones dadas. Haciendo esto en este pregunta, me acordé de la Wipe>format data>yes y se proporciona con el comando adb en un comentario. Como todavía no he encontrado un método de restablecimiento de fábrica he probado el sudo adb shell twrp format data manualmente, y ha funcionado. Luego lo probé de nuevo en la configuración automatizada con: format_data=$(adb shell twrp format data) y sigue funcionando. Esta respuesta ha sido posible gracias a los comentarios de alecxs.

Respuesta

Pude automatizar la instalación y el arranque de Fairphone Open OS utilizando el siguiente conjunto de comandos:

sudo adb shell twrp sideload
sudo adb sideload 19.11.2-sibon-24df0be9-ota.zip
sudo adb shell twrp format data
adb reboot

Eso hizo que el teléfono arrancara con éxito en la nueva instancia de Fairphone Open OS.

Nota

La terminación del modo de carga lateral ya no era necesaria, por lo que se omitieron las siguientes líneas:

# terminate/end the sideloading modus
sudo adb sideload /dev/null

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X