ROMs y desarrollo Xiaomi Mi A2 ROMs y desarrollo Xiaomi Mi A2

Respuesta
 
Herramientas
  #1  
Viejo 18/04/20, 16:34:30
Array

[xs_avatar]
LEPT LEPT no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: abr 2012
Localización: Ahí-donde-eso
Mensajes: 4,574
Modelo de smartphone: Xiaomi Mi A2
Tu operador: Movistar
Post Flashear Firmware ZIP mediante fastboot

ANTECENDENTES

Dado que a Xiaomi parece que le cuesta filtrar los Firmware (en fotmato .TGZ) flasheables mediante MiFlash para el Xiaomi Mi A2, y que las únicas versiones que se están filtrando son los Firmware (.ZIP) para flashear mediante el Recovery con Sideload, nos quedamos algo limitados a la hora de restablecer nuestro dispositivo con un Firmware oficial, por el motivo que sea.

Existen 2 métodos para hacer uso del contenido de esos .ZIP. Como he dicho anteriormente, uno sería flashearlo desde el Recovery, mediante sideload
[PHP]adb sideload update.zip[/PHP]
y el otro método sería flashearlo mediante comandos fastboot, PERO esto no es tan evidente, dado que dentro del .ZIP no encontramos directamente ficheros para flashear mediante fastboot.


OBJETIVO

Describir el procedimiento para partiendo del .ZIP del Firmware completo para Recovery, obtener los ficheros de las particiones que se podrán flashear mediante comandos fastboot.


REQUISITOS
  • Acceso a bootloader desbloqueado [fastboot oem unlock]
  • Acceso a particiones críticas desbloqueado [fastboot flashing unlock_critical]
  • Firmare completo en formato .ZIP flasheable normalmente desde Recovery. Es el mismo fichero que el de la OTA-FULL, pero NO que la OTA-incremental, vamos que va a tener una tamaño de 1GB y pico.
  • ...y obviamente, los drivers para que el Ordenador reconozca correctamente al smartphone; y los ficheros mínimos y necesarios para interactuar con comandos ADB y FASTBOOT (para Windows son adb.exe, fastboot.exe, AdbWinApi.dll, AdbWinUsbApi.dll).
  • ...y tener copia de seguridad de lo que quieras guardarte, pues vamos a borrar toda nuestra información del smartphone.

PROCEDIMIENTO

Haré el ejemplo con la última versión disponible ahora mismo, la de Abril V11.0.8.0.QDIMIXM.

Descomprimimos dentro de una carpeta ese ZIP y obtendremos lo siguiente
(Click para mostrar/ocultar)


Como vemos, ahí dentro no están los típicos boot.img, modem.img, system.img, etc... En realidad se encuentran dentro del fichero payload.bin.

Por lo que vamos a tener que descompilar ese payload.bin. Para ello haremos uso de una herramienta escrita en Python, o de una versión ejecutable que han adaptado para Windows x64.

Descomprimimos esta herramienta, por ejemplo en la misma carpeta en la que estamos trabajando.

Si usásemos la versión en Python (obviamente tendríamos que tener instalado Python y las dependencias que pide), que nos serviría para diferentes sistemas operativos, el comando que tendríamos que usar es:
Linux
[PHP]python3 payload_dumper.py payload.bin[/PHP]
Windows
[PHP]py payload_dumper.py payload.bin[/PHP]
Y si usamos la versión ejecutable en Windows, veremos al descomprimirla que nos crea 2 carpetas (payload_input / payload_output). Es tan simple como copiar/mover el fichero payload.bin al interior de la carpeta payload_input.
(Click para mostrar/ocultar)


Luego ejecutamos el fichero payload_dumper.exe, y vemos que en una ventana de comandos, van saliendo la lista de ficheros que descompila. Tras un ratito, acabará y se cierra automáticamente.
(Click para mostrar/ocultar)


Los ficheros resultantes de esta descompilación, los tendremos dentro de la carpeta output / payload_output (según la versión usada, de python o Windows).
(Click para mostrar/ocultar)


En esa lista de ficheros, nos faltarían aún 4 ficheros más para tener los mismos que en el interior de los Firmware en .TGZ, aunque sólo nos harán falta 3 más (no nos hace falta system_other.img):
[PHP]storsec.mbn
splash.img
userdata.img[/PHP]

El fichero storsec.mbn lo he extraído de mi smartphone, y resulta que es idéntico (bit a bit) al que venía en el Firmware (.TGZ) de Android 9, luego parece que es siempre igual. Os dejo aquí el que he extraído del mio. O en su defecto se podrá usar el que saquemos del último .TGZ con Android 9.

El fichero splash.img, se encarga de las imágenes del inicio del arranque, la cual varió de Android 9 a Android 10. Por lo tanto tendríamos que extraerlo de un Mi A2 con Android 10. Os dejo aquí el que he extraído del mio.

Y el fichero userdata.img, no debería de ser excesivamente importante el que tuviera ligeras diferencias, pues ahí al final lo que haremos será llenarlo con nuestras cosas (programas, configuraciones, fotos, videos, etc...). No obstante, tras flashear todo esto e iniciar el smartphone por primera vez, le haremos un Factory reset desde el Recovery Stock para que formatee esa partición y quede completamente a su gusto. Por lo tanto, usaremos como userdata.img, la última que tengamos disponible, en nuestro caso es la que contiene el .TGZ del Firmware V10.0.17.0.PDIMIXM.

De este modo, ya tendríamos todos los ficheros necesarios para flashearnos mediante comandos fastboot, el Firmware.
(Click para mostrar/ocultar)
__________________

« swyk.tk » - "Un rincón para compartir conocimientos" - LEPT

Última edición por LEPT Día 28/08/20 a las 14:59:24.
Responder Con Cita
Gracias de parte de:


  #2  
Viejo 18/04/20, 16:34:58
Array

[xs_avatar]
LEPT LEPT no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: abr 2012
Localización: Ahí-donde-eso
Mensajes: 4,574
Modelo de smartphone: Xiaomi Mi A2
Tu operador: Movistar
Lightbulb

Un supuesto en el que sería realmente útil este método frente al de flashear el .ZIP original con el Recovery, podría ser que siendo root hayas desinstalado apps del sistema o modificado parámetros del sistema, o de alguna otra partición, y cuando te llega la nueva OTA, no se te instala.

En ese caso, yo lo que haría sería lo siguiente:

Flasheo estos ficheros obtenidos anteriormente, en el slot contrario al que estoy usando normalmente, lo que me dejaría un sistema nuevo sin modificar nada. Y tras flashearlo en ese otro slot, le digo que arranque en ese otro slot.

Los comandos para flashearlo serían:
en slot a:
[PHP]fastboot flash bluetooth_a bluetooth.img
fastboot flash devcfg_a devcfg.img
fastboot flash dsp_a dsp.img
fastboot flash modem_a modem.img
fastboot flash xbl_a xbl.img
fastboot flash pmic_a pmic.img
fastboot flash rpm_a rpm.img
fastboot flash tz_a tz.img
fastboot flash hyp_a hyp.img
fastboot flash keymaster_a keymaster.img
fastboot flash cmnlib64_a cmnlib64.img
fastboot flash cmnlib_a cmnlib.img
fastboot flash abl_a abl.img
fastboot flash boot_a boot.img
fastboot flash system_a system.img
fastboot flash vendor_a vendor.img
fastboot flash mdtp_a mdtp.img
fastboot flash userdata userdata.img
fastboot flash splash splash.img
fastboot flash mdtpsecapp_a mdtpsecapp.img
fastboot flash storsec storsec.mbn
fastboot erase ddr
fastboot set_active a
pause
fastboot reboot[/PHP]
en slot b:
[PHP]fastboot flash bluetooth_b bluetooth.img
fastboot flash devcfg_b devcfg.img
fastboot flash dsp_b dsp.img
fastboot flash modem_b modem.img
fastboot flash xbl_b xbl.img
fastboot flash pmic_b pmic.img
fastboot flash rpm_b rpm.img
fastboot flash tz_b tz.img
fastboot flash hyp_b hyp.img
fastboot flash keymaster_b keymaster.img
fastboot flash cmnlib64_b cmnlib64.img
fastboot flash cmnlib_b cmnlib.img
fastboot flash abl_b abl.img
fastboot flash boot_b boot.img
fastboot flash system_b system.img
fastboot flash vendor_b vendor.img
fastboot flash mdtp_b mdtp.img
fastboot flash userdata userdata.img
fastboot flash splash splash.img
fastboot flash mdtpsecapp_b mdtpsecapp.img
fastboot flash storsec storsec.mbn
fastboot erase ddr
fastboot set_active b
pause
fastboot reboot[/PHP]
Así tendría, en un slot la versión del Firmware que he estado usando hasta entonces con todas mis modificaciones, y en el otro slot la versión del Firmware limpia y sin tocar que acabo de flashear.

Un par de observaciones del proceso de flasheo:
  • Cuando está flasheando los ficheros system.img y vendor.img, pondrá el mensaje "Invalid sparse file format at header magic". No os preocupeis, pues no afecta el resultado final.
  • Tanto el flasheso de system.img como vendor.img le lleva bastante tiempo, pero es muy probable que el flasheo de mdtp.img le lleve todavía más, alrededor de 5 minutos. Tener paciencia y estar tranquilos. Parece que se quedara colgado porque no avanza, pero si lo hace, y finalmente terminará el flasheo correctamente.

Arranco el móvil, y me arrancará en el slot nuevo, con todo nuevo. Lo configuro mínimamente, y le doy a comprobar y actualizar OTA. Así la nueva OTA debería encontrarse todo de fábrica y actualizarse correctamente. Y de este modo, el proceso de actualización de la OTA, lo que haría sería meter en el slot viejo todo el nuevo sistema actualizado ya, y arrancaría allí.

Lo que tendría tras actualizar, sería un slot activo con la última versión recién actualizada, y un slot inactivo con la versión anterior que habíamos flasheado limpia.

Además, que con esto de haber empezado flashando en el otro slot al activo que tenía toquiteado, si me fallara algo con esos ficheros que flasheo, siempre podría indicarle que arrancara en el slot anterior (el que tengo toquiteado) que arrancaba normal, y no habría pasado nada.

Un último detalle a realizar tras actualizarse la OTA e iniciarse el smartphone. Lo apagamos, e iniciamos en el Recovery Stock:
  1. Apagar el smartphone
  2. Pulsar simultáneamente y mantener pulsados POWER + SUBIR VOL
  3. Cuando se ilumine la pantalla (ha comenzado el proceso de encendido), soltar POWER y seguir manteniendo pulsado SUBIR VOL hasta que salga una pantalla negra con un androide tumbado y el texto debajo: No command
  4. Pulsar y mantener pulsado POWER durante 4 seg, entonces pulsar simultáneamente SUBIR VOL y seguido soltar ambos botones

Allí elegimos la opción de Wipe data/factory reset. Y después de realizar ese proceso, elegimos Reboot system now.

Ahora ya sí, configuramos nuestro Mi A2 a nuestro gusto, en la última versión de Firmware.
__________________

« swyk.tk » - "Un rincón para compartir conocimientos" - LEPT

Última edición por LEPT Día 27/04/20 a las 15:34:32.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 19/04/20, 11:23:12
Array

[xs_avatar]
ferchotin ferchotin no está en línea
Miembro del foro
 
Fecha de registro: jul 2012
Localización: madrid
Mensajes: 444
Modelo de smartphone: Xiaomi MI A2.
Tu operador: Jazztel
Buen tutorial , claro y detallado. En tu línea.
Muchas gracias , gran hombre.👍
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Foros Xiaomi > Xiaomi Mi A2 > ROMs y desarrollo Xiaomi Mi A2



Hora actual: 06:23:23 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /