Haciendo downgrade en un ZTE Open con FirefoxOS v1.1 (mejorado)

Para los meses de Noviembre ZTE lanzo su correspondiente actualización para los dispositvos ZTE Open, con esta versión muchos nos hemos quedado si poder obtener acceso root al dispositivo, por lo que al documentarme y tratar de obtener información sobre alguna receta que permita hacer downgrade al móvil me he topado con que no muchos lo han realizado.

De tanto buscar  y documentarme encontré un pequeña solución. Primero es de mencionar que se le busca hacer downgrade es la versión de software que se distribuye bajo el nombre de OPEN_FFOS_V1.1.0B04_MOVISTAR.zip y que dentro contiene el empaquetado construido de nombre B2G_P752D04V1.1.0B13_MOVISTAR(SD).zip que se consigue a través del sitio web de ZTE Devices o bien cuando nuestro dispositivo nos solicito la actualización desde la V1.0 a la V1.1 vía Internet. También se necesitara que el dispositivo cuenta con 100% de carga en batería así como también la memoria MicroSD esta disponible de espacio.

Procedimiento para hacer downgrade:

Primero es de mencionar que no me hago responsable de lo que le suceda a tu ZTE Open. Es de recordar que en el dispositivo perderás todo la información que en él tengas así como también deberías tener instalado el paquete android-sdk en tu distribución GNU/Linux y que tu computador reconozca el dispositivo.

Buscando en distintos foros,  me tope con un hilo titulado He brickeado mi Zte Open ¿Y ahora qué? en donde se explican los pasos a seguir cuando tu dispositivo queda como pisapapeles o mode brick, efecto que conseguí luego de intentar hacer downgrade con la versión que se obtiene en http://firefox.ztems.com/ haciendo que mi dispositivo se reiniciara antes de empezar la animación. ¡Este procedimiento es el que nos permitirá conseguir con exito nuestro downgrade hacía la versión 1.0! por lo que para poder conseguir hacer downgrade es necesario dejar nuestro dispositivio en mode brick, pero tranquilos, siempre y cuando tengamos acceso al mode recovery prodremos instalar la rom que nos permitira salir del mode brick.

Para dejar nuestro dispositivo en mode brick es necesario descargar la ROM que se encuentra en http://firefox.ztems.com/ en especifico la que mencionan para Update package of Android GB for OPEN device desde acá o en este otro mirror. Descargada la rom, la colocamos en la microSD, apagamos nuestro dispositivo, lo encedemos en mode recovery presionando la teclas al mismo tiempo: volumen arriba + encendido, esta combinación nos llevará hasta el mode recovery de nuestro ZTE Open, seleccionaremos la opción apply update from external storage con las teclas volumen arriba o volumen abajo y luego presionamos el botón encendido para seleccionarlo, ubicamos la rom con nombre update.zip la selecionamos y presionamos el botón encendido para hacer el respectivo flasheo, tan solo tomará unos minutos, luego de recibir el mensaje: Install from sdcard complete procederemos a reiniciar nuestro ZTE Open, este procedimiento nos dejara nuestro mobile en mode brick (en algunos casos se nos reiniciara muchas veces el dispositivo, no se cargará el OS correctamente)  pero este procedimiento es el que nos permitira instalar rom firmadas con las testkey de ASOP y subir a futuras versiones.

Para instalar la rom que nos sacará del mode brick, y siguiendo la lectura del hilo, encontré los pasos que había realizado un usuario al que consiguió hacer downgrade hasta la V1.0 y posterior a ello seguir el procedimiento que se describe en http://pof.eslack.org para obtener root access. El usuario en el hilo comenta que:

he ulizado la imagen "endiablada" de http://sl.edujose.org/, que es la version 1.0 y permite hacer root con el procedimiento descrito en http://pof.eslack.org, y la he firmado con las testkeys del AOSP

El resultado de esa imagen o rom creada, el usuario la ha colgado en Internet por lo que es posible descargarla desde: Mirror 1 y Mirror 2 (Recomendado por Ruri Gk).  Esta imagen nos instalará la versión OPEN_EU_DEV_FFOS_V1.0.0B02 y nos ayudara a salir del mode brick que tenemos en nuestro dispositivo.

Ahora bien procedemos descargar la rom creada update-signed.zip y pasarlo a la microSD del dispositivo, lo pueden realizar vía comando con adb o bien copiando y pegando con cualquier administrador de archivos. En mi caso, como mi ZTE Open esta en "mode brick" he usado un lectora microSD pasando el update-signed.zip a la memoria, realizamos lo siguiente:

  1. Apagamos el dispositivo (extraemos la batería en algunos casos que no se puede apagar el dispositivo)
  2. Encendemos en el modo recovery presionando volumen arriba + el botón de encendido.
  3. Al entrar en el modo Firefox OS system Recovery <3e> nos desplazamos con los botones de volumen arriba / volumen abajo.
  4. Seleccionamos y hacemos primero un wipe data/factory reset (debemos presionar el botón de encendido para entrar en esta opción).
  5. Luego hacemos wipe cache partition.
  6. Siguiente nos desplazamos hasta la opción apply update from external storage, presionamos el botón  encendido para acceder a esta opción, ubicamos el archivo que anteriormente colocamos en nuestro microSD y que lleva por nombre update-signed.zip.
  7. Presionamos el botón encendido para proceder con el flasheo de la rom en el dispositivo.
  8. Realizado el anterior paso, seleccionamos la opción reboot system now luego de que se nos muestré el mensaje Verifying update package / Install update package.

Hasta el momento todo debería funcionar bien, sin reinicios y al encender nos debería de enviar hacia la personalización de nuestro FFOS. Hasta los momentos de escribir este procedimiento/receta las pruebas que he realizado (llamadas, navegación de datos, envío de sms) con esta rom y la sim card de Movistar Venezuela no he tenido ningún problema. Si lo presentan comentalo!

Consiguiendo root access:

Una vez que hemos realizado el respectivo downgrade a nuestro dispositivo, procederemos a realizar nuestro root acces aprovechándonos de la vulnerabilidad CVE-2012-4220 y a la que le han realizado un expolit que ha sido portado a nuestro ZTE Open. Deberemos descargar el exploit ya compilado desde acá o bien podemos compilarlo por nuestra cuenta con las fuentes que se encuentra en Github.

1. Primero crearemos un directorio para trabajar y luego procedemos a descargar el exploit compilado:

mkdir ~/root-zteopen
cd ~/root-zteopen
wget -c http://pof.eslack.org/archives/files/root-zte-open.zip
unzip root-zte-open.zip

2. Desempaquetado todos los archivos por lo que nos encontraremos con un pequeño script escrito en Bash que nos ayudara con el envío del binario al dispositivo, para luego ejecutarlo y conseguir root access en nuestro ZTE Open, para ello ejecutamos:

sh run.sh

354 KB/s (19208 bytes in 0.052s)

== root for Movistar zte open (roamer2) by @pof
== CVE-2012-4220 - discovered by giantpune
== original exploit by Hiroyuki Ikezoe
== if the phone hangs, remove the battery and try again!
roamer2 (OPEN_EU_DEV_FFOS_V1.0.0B02) is not supported.
Attempting to detect from /proc/kallsyms...
roamer2 (OPEN_EU_DEV_FFOS_V1.0.0B02) is not supported.[diag]
Attempting to inject code...
This works only once a boot.
roamer2 (OPEN_EU_DEV_FFOS_V1.0.0B02) is not supported.[diag]
Attempting to inject code...
This works only once a boot.
Got root! - copying su binary!
Enjoy!

En muchos casos es necesario que el script reinicie el dispositivo móvil mas de 3 veces en mi caso enviaba el binario, reiniciaba y no conseguía hacer root access hasta la quinta vez que fue la ultima que se logro conseguir! Para saber si ya tenemos acceso podemos ver en la salida del script ejecutado lo siguiente:  Got root! - copying su binary! Enjoy!

Instalar ClockworkMod Recovery para hacernos de futuras custom rom:

El bootloader actual no nos permite hacernos con nuestras propias custom rom, por lo que el siguiente procedimiento permitirá instalar el ClockworkMod Recovery en nuestro ZTE Open, para ello deberemos respaldar el actual que posee la rom update-signed.zip con el que hemos flasheado el dispositivo por si presentamos un inconveniente a futuro. En este punto es necesario haber conseguido root access en nuestro dispositivo. Primero debemos acceder a la shell  de nuestro dispositivo ZTE Open con el comando adb que provee las android-sdk-platform-tools y luego volvernos usuario root. Ejecutamos lo siguiente:

adb shell
su
busybox dd if=/dev/mtd/mtd0 of=/sdcard/stock-recovery.img bs=4k

072+0 records in
3072+0 records out
12582912 bytes (12.0MB) copied, 3.538330 seconds, 3.4MB/s

Realizado lo anterior hemos respaldado nuestro recovery y lo hemos almacenado el ruta /sdcard/ del dispositivo, luego salimos de la shell de nuestro equipo.

Procederemos a descargar la ClockWorkMod recovery desde Mirror1 o Mirror2 y luego enviarla a nuestro dispositivo:

wget -c http://pof.eslack.org/archives/files/recovery-clockwork-6.0.3.3-roamer2.img
adb push recovery-clockwork-6.0.3.3-roamer2.img /sdcard/cwm.img

Al ejecutar el ultimo comando estamos colocando nuestro CWM recovery en el directorio /sdcard/ del dispositivo. Ahora volvemos a entrar en nuestra shell del dispositivo y vamos a flashear nuestro recovery:

adb shell
su
flash_image recovery /sdcard/cwm.img
mtd: successfully wrote block at 0
mtd: successfully wrote block at 20000
mtd: successfully wrote block at 40000
mtd: successfully wrote block at 60000
...
mtd: successfully wrote block at 540000
mtd: successfully wrote block at 560000
mtd: successfully wrote block at 580000
mtd: successfully wrote block at 0

Lo anterior muestra que se ha flasheado correctamente con la ClockWorkMod descargada. Para probar que todo funciona correctamente, salimos de nuestro shell en el dispositivo y reiniciamos con el modo recovery nuestro dispositivo (volumen arriba + botón encendido) deberiamos ver en la pantalla las distintas opciones y el titulo de ClockworkMod Recovery v6.0.3.3.

Si todo va bien, tendremos nuestro dispositivo listo para comenzar a compilar la última versión de FirefoxOS disponible, esto lo dejaré para un próximo post!