sábado, 7 de septiembre de 2013

Zte Open Hack. Actualizando a FxOS 1.1

Finalmente tengo material para actualizar este blog.
Hace un mes decidí embarcarme en un teléfono económico como backup del ya indispensable smartphone de gran escala que no cabe en el bolsillo del pantalón.
Me decidí por el ZTE Open especialmente porque es una apuesta de Firefox para colocar en el mercado de los teléfonos de gama baja, su tan comentado FirefoxOS, conocido cariñosamente como FxOS.
Con toda honestidad, no me encontré a gusto con el dispositivo, no tanto por sus prestaciones a nivel de hardware sino precísamente por lo que ofrece FxOS en su versión 1.0.1 que es la que trae el movil por defecto. Por esto, decidí actualizarlo y he aquí una guía para lograrlo. Antes que todo, un video demostrativo:

Rooteo del ZTE Open

Lo primero que se me ocurrió fue intentar ingresar al movil en sus entrañas y bueno, descubro que FxOS es una cáscara nueva para el viejo Android, tanto así que una vez en su shell no sabes a ciencia cierta si estás en un Android o en un FxOS excepto si revisas algunas tareas en ejecución.
¿Que es lo primero que se debe hacer cuando es inminente que vas a ser victimario de ese pobre teléfono?. Debemos asegurarnos de que si las cosas van mal puedas volver a un punto anterior donde todo al menos funcionaba. Para eso hay que instalar un mejor recovery y eso fue lo que encontré en un post de pof's headquarters
En ese artículo está suficientemente explicado el método para rootear el zte open y posteriormente instalar el CWM recovery 6.0.3.3 lo cual a mi me funcionó perfectamente, solo que en el proceso de realizar un backup del recovery original es necesario trabajar dentro del teléfono y utilizar la herramienta busybox que por fortuna el FxOS lo trae por defecto.

Compilación de un nuevo FxOS

Mozilla no tiene una versión oficial estable del FxOS mas allá de la 1.0.1, así que probablemente encontremos mas problemas que soluciones haciendo upgrades, pero como me resulta muy molesto el comportamiento de algunos elementos (por ejemplo el manejo de los mensajes de texto), intenté compilarme una versión de FxOS mas reciente, al menos la 1.1 (la 1.2 ya la están cocinando pero eso si que debe ser muy inestable aún). El procedimiento está muy bien detallado en el sitio para desarrolladores de mozilla pero hay que tener pendiente algunos tips:
  1. El ZTE Open comercial (al menos el que uso yo de Movistar) no soporta plenamente los comandos fastboot, así que el procedimiento final utilizando ./flash.sh no va a funcionar, y debo advertir que solo va a poner el teléfono en modo inicial, así que perderá toda la información que tenga preconfigurada.
  2. El ZTE Open comercial tiene instalado un FxOS con unas propiedades que lo blindan para hacer algunas operaciones que requieren permisos de root, así que el procedimiento final de la compilación con ./flash.sh gaia y ./flash.sh gecko no trabajarán tampoco. En la siguiente sección se explica como solucionar esto.
  3. La compilación no está muy bien soportada si se utiliza el gcc 4.7, así que es importante tomar en cuenta las recomendaciones acerca de personalizar el archivo .userconfig para cambiar a gcc 4.6. En mi caso mi sistema Ubuntu 13.04 tiene instalado las dos versiones de gcc y fue necesario hacer esta personalización
  4. El dispositivo que debemos compilar se llama "inari", y debe configurarse la compilación con ./config.sh inari

Rooteo profundo del ZTE Open

El paso 2 explicado en la sección anterior solo puede aplicarse si logramos hacer que los comandos adb puedan acceder plenamente a las particiones y archivos del sistema, por lo que el rooteo explicado al principio del post no es suficiente. El procedimiento para resolver esto es el siguiente:
  • Entrar al teléfono vía adb shell, pasarse a superuser y extraer la partición boot original:
    cat /dev/mtd/mtd1 > /sdcard/boot.img
  • En la cónsola de tu PC, instalar la herramienta abootimg (en Ubuntu 13.04) con
    apt-get install abootimg
  • Bajar al PC la partición boot.img extraida y expandirla
    adb pull /sdcard/boot.img
    abootimg -x boot.img
  • Crear un subdirectorio a_dir, entrar en el y expandir initrd.img
    mkdir a_dir; cd a_dir
    gunzip -c ../initrd.img | cpio -
  • Cambiar el contenido de default.prop con el siguiente texto
    #
    # ADDITIONAL_DEFAULT_PROPERTIES
    #
    ro.secure=0
    ro.allow.mock.location=1
    ro.debuggable=1
    persist.usb.serialno=full_inari
    persist.sys.usb.config=adb
  • Hacer un nuevo ramdisk con el contenido original y el archivo default.prop modificado
    (directorio_raiz_B2G)/out/host/linux-x86/bin/mkbootfs . | gzip > ../newinitramfs.cpio.gz
  • Empaquetar una nueva imagen boot.img con el ramdisk modificado
    cd ..
    (directorio_raiz_B2G)/out/host/linux-x86/bin/mkbootimg --kernel zImage --ramdisk newinitramfs.cpio.gz --base 0x200000 --cmdline 'androidboot.hardware=roamer2' -o newboot.img
  • Subir al teléfono la nueva imagen boot
    adb push newboot.img /sdcard/newboot.img
  • Reiniciar el teléfono en modo CWM recovery para poder flashear boot con toda seguridad
  • Entrar al teléfono vía adb shell y flashear el nuevo boot
    mount /sdcard
    flash_image boot /sdcard/newboot.img
  • Reiniciar el teléfono para que la versión original de FxOS quede ahora disponible para ser modificado

Actualizando el ZTE Open

Ahora sí, ya es momento de actualizar el ZTE Open. Como se explicó al principio, el método de flasheo por archivos de imagen no funciona en este teléfono porque el protocolo fastboot está limitado a pocas operaciones. Entonces solo queda el uso de comandos que gracias a adb puedan actualizar archivos específicos en el teléfono. Siga los siguientes pasos
  • Y ahora sí, "flashear" como lo que especifica el tutorial de B2G
    ./flash.sh gaia
    ./flash.sh gecko
  • Es probable que el teléfono quede en un limbo en este punto, pero el proceso debió terminarse sin problemas, así que es momento de reiniciar el teléfono.
  • Si el teléfono se niega a levantar, tal como lo indica el tutorial de B2G, correr lo siguiente desde el directorio raiz de B2G
    cd gaia
    make reset-gaia
  • Listo, tenemos el FxOS actualizado.
Se pueden hacer todos los pasos explicados en el tutorial de B2G pero siempre y cuando no hagan uso del protocolo fastboot.

53 comentarios:

Anónimo dijo...

muy buen articulo!

Anónimo dijo...

Gracias!!
Funciona perfecto.

Eduardo González dijo...

Que bien que te funcionó. Yo he encontrado otros problemas con este upgrade. La app para compartir imágenes no funciona, que es la misma que permite cambiar el fondo de pantalla. Estoy investigando un poco para resolver esto antes de ir a consultar en los foros.

Eduardo González dijo...

Bueno la app de compartir imágenes ya me funciona. Sencillamente recompilé todo desde el principio, es decir borré el directorio out y objdir-gecko y comencé de nuevo. Ahora si funciona bien

Anónimo dijo...

Acabo de comprar uno de estos, probaré a ver que tal me sale.
gracias por la información.

Jcampos dijo...

muy buen tutorial, pero necesito ayuda con las lineas de hacer un nuevo ramdisk y una nueva imagen boot.img

no entiendo como sería la linea en la consola en la parte de (directorio_raiz_b2g)

Me podrias explicar esta parte por favorl

Eduardo González dijo...

Si compilaste el b2g (cosa que es obligatoria para poder seguir estas instrucciones) debes tener ya las herramientas para hacer el ramdisk y la imagen boot. Lo que esta entre paréntesis se corresponde con el path donde estas trabajando con el b2g. Por ejemplo yo descargue el repositorio git de b2g en /home/edu/firefoxOS/B2G entonces (directorio_raíz_b2g) se refiere a /home/edu/firefoxOS/B2G
Usé paréntesis en vez de los tradicionales "mayor y menor que" porque el CMS me los quita al publicar

Anónimo dijo...

Hola
He conseguido actualizar mi teléfono siguiendo las instrucciones. Gracias!

Pero veo que si hago un system reset me desaparecen las actualizaciones de las apps de calendario, contactos, settings etc y vuelven a las antiguas
Parece que todavía están ahí
Aunque el SO sigue en 1.1

También he visto que comentas por ahí que no funciona lo de actualizar las aplicaciones usando las settings del teléfono.

Si quisiera volver a una versión oficial, podría hacerlo? Por ejemplo si tengo que enviarlo a reparar o algo

Eduardo González dijo...

Sí puedes regresar a la versión oficial. El procedimiento no lo he probado pero se corresponde con lo que debería funcionar.
Primero debes retornar al recovery que viene original, y si seguiste al pie de la letra los pasos sugeridos por Pau Oliva Fora, deberías tener ya el archivo stock-recovery.img en la sdcard.
Esto debería funcionar:

adb shell flash_image recovery /sdcard/stock-recovery.img

(ADVERTENCIA: Esto es delicado, no me hago responsable por algun problema que puedas tener al flashear el recovery, si este no se escribe correctamente tienes muchas posibilidades de volver tu tel un ladrillo)
Luego descarga del sitio http://www.ztedevices.com/support/selectproduct.html?type=software la rom que te corresponda y sigue las instrucciones que estan en el pdf incluido

Eso debería ser suficiente.

Eduardo González dijo...

En las mas recientes actualizaciones del repositorio B2G resolvieron el problema de los updates sobre las apps y el sistema. Ahora al seleccionar "check now" se realiza el chequeo efectivamente. Por defecto está en el canal nightly así que todos los días habrá una actualización. Para evitar la incomodidad de un update diario, cambiar el autochequeo a Weekly o Monthly.
Lo otro resaltante es que el branch v1-train está en 1.1.1.0

Unknown dijo...

Gracias por la info, lo estoy intentanto pero me da el siguiente error cuando lanzo flash.sh gaia

failed to copy 'profile/webapps/music2.gaiamobile.org/application.zip' to '/data/local/webapps/music2.gaiamobile.org/application.zip': Permission denied

¿Sabe alguien qué me ocurre?
El teléfono está rooteado, pero no se como seguir

Gracias

Unknown dijo...

Uf ahora me ha tirado el flash gaia y gecko, pero al cargar el logo se reinicia

A veces me llega al wizard de inicio del tlf (meter el idioma) y se reinicia

¿ Le ha pasado a alguien ?

Gracias

Eduardo González dijo...

tal parece que tienes el teléfono ruteado pero no así el demonio adb. Ese error que te sale es porque el demonio de adb que está corriendo en el teléfono no tiene permisos de root. Para solucionar esto debes seguir los pasos que explico en este post.
Respecto al reinicio y el wizard de inicio, eso sucede cuando flasheas con una variante distinta a la original del teléfono. Si el teléfono era una versión de producción, debiste definir la variable VARIANT=user justo antes de llamar flash.sh, ejemplos:

VARIANT=user ./flash.sh gaia
VARIANT=user ./flash.sh gecko

y preferiblemente, en el proceso de build también es preferible definir esta variable porque si usas flash.sh a secas para usar las .img generadas, estas debería ser adecuadas para un teléfono en producción.

Unknown dijo...

Muchas gracias por la info

Sigo sin que tire. He recuperado el teléfono a la 1.0.1, y segudi otra vez los pasos, añadiendo el VARIANT como indicabas

Todo parece ir bien, pero al reiniciar el tlf como siempre, llega al wizard y en seguida se reinicia

Me puedes indicar si es por lo que dices del demonio adb o debo hacer el build de otra manera

Muchas gracias, menos mal que encuentro info de gente como tú, que ando algo perdido

Eduardo González dijo...

Eso que te sucede me pasó a mi también, pero luego de la primera actualización vía flash.sh no me ha vuelto a pasar. Por ahí hay un procedimiento para respaldar el profile de tal manera que luego de que corre el wizard y re reinicia, puedas devolver tu profile y el teléfono quedaría actualizado respetando tu info.
Echale un vistazo a el sitio https://wiki.mozilla.org/B2G/QA/Tips_And_Tricks
y revisa todo lo que hablan del profile

adri20rz dijo...

hola podrian hacer un video y subirlo a youtube xq la verdad no entiendo y me gustaria actualizar mi telefono

adri20rz dijo...
Este comentario ha sido eliminado por el autor.
Anónimo dijo...

Gracias, y concuerdo con el anterior comentario. Seria genial un Video-Tutorial. Gracias.

Anónimo dijo...

Has hecho algún intento con FxOS 1.2?
Yo lo he intentado siguiendo estos pasos pero nada. El 1.1 si que me funciona

Eduardo González dijo...

Aun no he intentado la versión 1.2, por ahí me comentaron que ya algunos lo han logrado y pronto estará la explicación publicada. Yo tengo días sin probar nada mas por la cantidad de trabajo que he tenido pero apenas tenga un chance me pongo a intentar con el 1.2. Pero adelanto que una de las cosas que me interesan sobremanera es poder actualizar el gonk ya que hay varias mejoras realizadas a ese nivel.

Rolando dijo...

Se puede actualizar de 1.1 a 1.2 por fastboot? El 1.1 me va bien, pero al pasar de 1.1 a 1.2 (con ./flash gaia/gecko) se me queda reiniciando. Estoy volviendo a 1.1, pero me queda la duda si con solo "./flash" funcionara para pasar de 1.1 a 1.2.

Eduardo González dijo...

Ups, he logrado poner a funcionar el b2g 1.2 parcialmente. El procedimiento es flashear por fastboot

./flash.sh

luego remontamos el sistema con permisos de escritura:

adb remount


y luego entrando al shell y haciendo ejecutables los archivos plugin-container y b2g:

chmod 0755 /system/b2g/plugin-container
chmod 0755 /system/b2g/b2g

Sin embargo no funciona el RIL (no detecta la SIM) y el demonio adb por lo general muere y quedamos sin acceso a los comandos adb

Lo de cambiar los permisos es un problema generado porque los script de inicio no se están ejecutando como se espera, ya que dentro de estos script hay unas llamadas para cambiar los permisos de ejecución de b2g y plugin-container.
A todas estas es un sistema no usable por ahora.

Eduardo González dijo...

Hi, olviden lo del problema de adb, se desactivaba porque estaba apagado en las opciones de desarrollador. Ahora me voy a enfrentar al problema del RIL.

Eduardo González dijo...

Ok, si se presenta un problema con el adb, extrañamente cuando la pantalla de bloquea por pasar un rato sin usarse, se muere a la vez el demonio adb. Para poder trabajar en el shell sin interrupciones desactivé el bloqueo de pantalla.

Estuve revisando la razón por la que el RIL no trabaja y ya hice un reporte en el grupo mozilla.dev.b2g

Eduardo González dijo...

He chequeado en profundidad los mensajes arrojados en el logcat por el demonio rild tanto en el ffos 1.1 funcional como en el ffos 1.2 con fallas. En el caso de 1.2, rild sencillamente no ve el radio encendido, se queda apagado, como se puede inferir comparando estos mensajes:

ffos 1.1:

...
D/RILC ( 1006): RID 0 currentState() -> Radio On(10)
D/RILC ( 1006): RID 0 currentState() -> Radio On(10)
...

ffos 1.2:

...
D/RILC ( 797): RID 0 currentState() -> Radio Off(0)
D/RILC ( 797): RID 0 currentState() -> Radio Off(0)
...

Rolando dijo...

Gracias por el update.

Por cierto, la restauración de la imagen oficial de ZTE (la última) restauranto el stock-recovery.img funciona perfectamente siguiendo las instrucciones en el PDF.

¿Es posible hacer un backup del recién fxos 1.1 instalado para restaurarlo despues? Por que quisiera probar actualizar a 1.2 (otra vez), pero es mucho lio tener que recompilar el v1.1 para restaurar.

Eduardo González dijo...
Este comentario ha sido eliminado por el autor.
Eduardo González dijo...

Pare evitar eso debes usar el recovery. Haces backups del sistema que consideres funcional y luego los recobras con el recovery mismo

Anónimo dijo...

¿Saludos el comando cpio no tiene ningun parametro en "gunzip -c ../initrd.img | cpio -"?

caspers dijo...

Buenas, he seguido todos los pasos, del tutorial, y por ahora no he conseguido recuperar el telefono,(un zte open de movistar en españa) . Me gustaria poder recuperarlo con el firmware oficial pero cuando lo intento me da error status 7, he probado varios updatates y no hay manera de instalar ninguno, tanto con el recovery normal que trae como con el cwm.

Podrias darme algun consejo de hacerlo desde el shell del recovery, ya que el reinicio del terminal no me da tiempo ha realizar ninguna operacion, se corta rapido.

Saludos y gracias de antemano

Eduardo González dijo...

Caspers, pero te funciona el recovery? Si es asi tienes todo a favor para recuperar el phone

Caspers dijo...

gracias por responder, el recovery funciona bien, puedo acceder a la shell, montar y desmontar sdcard ..., pero los update.zip me estan dando error, he probado con varios.

Eduardo González dijo...

Ok Caspers, vamos a ver si esto te sirve:

1. Baja este archivo de actualización endiablado por mi (gracias a Javier Suescun): https://mega.co.nz/#!HRYzwA7A!BjMve1T16chys7eXLGTI2SnuqcQ8NYakWrt-11fc-Yc


2. Con el teléfono en modo CWM recovery conectado, cámbiale el nombre a update.zip y lo colocas en la raiz del sdcard:

mv EU_DEV_FFOS_V1.0.0B02_USER_SD-Endiablado_by_Edu.zip update.zip
adb push update.zip /sdcard/update.zip

Nota: Si usas el stock recovery, supongo que debes colocar el archivo en la sdcard de otra manera.

3. Seleccionas en el menú del CWM recovery (o en el stock recovery lo equivalente) install zip -> apply /sdcard/update.zip

Y listo, al reiniciar deberías tener el teléfono recuperado, inclusive con el fastboot 100% activado. Si el fastboot no se activa al 100%, intenta chequear por una actualización fota manualmente.

caspers dijo...

Buenas, Gracias por responder, con este update.zip he conseguido llegar a escoger el idioma, que me sale solo english(us) , pero no me deja hacer mas nada, creo que es por que el firmware no es el mismo que el de Movistar España.
Descargue uno que supuestamente era para españa pero falla la verificacion al instalarlo. Probe quitando los assert de update-script. Pero con el recovery oficial(perdi el otro) no puedo instalarlo.

http://pastebin.com/9r34cAwt

Te paso el recovery.log

caspers dijo...

Actualizado :
Recuperado movil, he probado varios updates, y ha funcionado uno de ellos quitando los assert. Ahora a empezar de nuevo. Gracias por todo!!

Michel T dijo...

Buenas,

Muchas gracias para este articulo.

Despues de 2 dias intentando, configurando a Ubuntu para que se haga bien el build, puedo hacer el flash, pero sigue diciendo "B2G OS Just crashed".

Estoy leyendo la parte de VARIABLE=user, vuelvo a hacer el build con esto, y sino intentare con la imagen endiablada por ti.

Gracias por todo !

elav dijo...

Hola Eduardo, yo por acá de nuevo con mis preguntas.. Resulta que curioseando, puse

$ cat /dev/mtd/mtd

Y me sale todo esto:

mtd0 mtd10ro mtd12ro mtd14ro mtd16ro mtd18ro mtd2 mtd4 mtd6 mtd8
mtd0ro mtd11 mtd13 mtd15 mtd17 mtd19 mtd2ro mtd4ro mtd6ro mtd8ro
mtd1 mtd11ro mtd13ro mtd15ro mtd17ro mtd19ro mtd3 mtd5 mtd7 mtd9
mtd10 mtd12 mtd14 mtd16 mtd18 mtd1ro mtd3ro mtd5ro mtd7ro mtd9ro

¿Cual se supone que debo usar para hacer una salva de mi sistema?

Gracias

Anónimo dijo...

no podria eliminarle el firefox os e instalarle el android 4?

Héctor Cruz dijo...

Hola Eduardo. Yo compré este teléfono en México y quiero desbloquearlo para usarlo con cualquier empresa de telefonía. ¿Sabes cómo puedo hacer eso? POrque viene por default para Movistar

MUchas gracias

Héctor Cruz dijo...
Este comentario ha sido eliminado por el autor.
Eduardo González dijo...

Saludos Hector. El procedimiento para liberar el telefono no es de mi dominio.

reinaldo lugo dijo...

hermano saludos tengo un zte open. habrá alguna forma de instalarle a este celular android eliminando el firefox os. le agradecería su opinión.

Eduardo González dijo...

Yo he probado Android en el zte open pero han sido versiones para el zte v790. Localiza la ROM xperia v2 para el v790 en google y pruebalo. Para instalarlo necesitas el CWM recovery. Esta ROM de Android corresponde a un ICS. A nivel gráfico funciona perfecto, así como el WiFi, pero no logré poner en funcionamiento la telefonía. Otro aspecto a resolve tiene que ver con los botones virtuales.

Anónimo dijo...

Hola
me podriais decir como resetear o volver a valores de fabrica con el ZTE open firefox os? Gracias.

Everton4224 dijo...

Hice una actualización de su tutorial y terminó matando a mi ZTE OPEN. Él ya no se inicia ni ordenador reconoce la unidad no es el conductor que encuentra la puerta. He actualizado a través de DOS con adb y fastboot.

Eduardo González dijo...

Es lamentable su noticia amigo Everton. Es importante tener en cuenta dos aspectos: 1) Hay que seguir el procedimiento al pié de la letra y 2) Ya hay nuevas versiones de los blobs en el teléfono que tienden a no ser compatible con los métodos que he descrito.

openid dijo...

I have ZTE Open Movistar Spain with firmware 1.1, without fastboot, no rooted. I am not able to find a root for this version (only 1.0) and I need to upgrade it to at least to version 1.2. Updgrating version UE - does not work for me (verification error).

What options are left for me?

Anónimo dijo...

EDUARDO TUS EXPLICACIONES ESTAN MUY BUENAS
PERO ESTOY EN VENEZUELA
MI ZTE OPEN ES DE MOVISTAR VENEZUELA
QUISIERA ACTUALIZARLO A FFOS 1.3
O EN SU DEFECTO LLEVARLO A ANDROID
PERO LEO EN TUS COMENTARIOS QUE SOLO EN EL ZTE v790 Y NO EN ZTE OPEN
COMO TAMBIEN LEO QUE A OTROS USUARIO SE LE CUELGA EL ROOT O FLASH
O QUE LUEGO LA PC NO LE RECONOCE EL DISPOSITIVO ZTE OPEN
ADEMAS TODO LO QUE HE LEIDO EN TODAS LAS WEB HASTA EL MOMENTO SE DEBE HACER POR UBUTUN LINUS u OTRO
MAS NO HAY INDICACIONES DE HACERLO POR WINDOW
¿ENTONCES DE QUE ME SIRVE DESCARGAR LOS SOFTWARE PARA ROOT?
PUEDES ORIENTARME
MI NOMBRE ES ROBERT
GRACIAS DE ANTEMANO
ESTARE PENDIENTE DE LO QUE ME RESPONDAS
EN TODO CASO TAMBIEN LEI
EN CLUB MOVISTAR VENEZUELA
QUE ELLOS VAN A LIBERAR LAS ACTUALIZACIONES DEL FFOS 1.2 y FFOS 1.3
PARA QUE SE ACTUALICE DIRECTO DEL ZTE OPEN
SEGUN INDICARON EN MARZO
PERO A LA FECHA QUE TE ESCRIBO ES 31 DE MARZO 2014 Y AUN NO HALLO NADA
NI CUANDO LE DOY A
AJUSTES = DISPISITIVOS = ACTUALIZAR
POR FAVOR DOCUMENTAME PARA APRENDER PORQUE ESTOY ANALFABETA EN ESTO
GRACIAS HERMANO

Anónimo dijo...

porfa quiero liberar mi zte open.





Eduardo González dijo...

Saludos. La liberación es un proceso que nada tiene que ver con el sistema operativo FirefoxOS. Debes buscar en internet el procedimiento correspondiente.

Anónimo dijo...

Por favor no hay algun enlace de algun video de como hacerlo! no tengo experiencia en esto! les agradecere!

abr4xas dijo...

Hola,

Tengo un ZTE Open con boot loop, tienes algo de información para poder salir de ese estado? Gracias.

William Gotay Góngora dijo...

hola eduardo tambien estoy en venezuela en carabobo yo creo q root mi cell pero al instalar el clokwork no me da permisos y quieria coclocar una rom mas mnueva pq la q instale para hacer el root en una 1.0 y para colmo en ingles, ak te dejo mi numero de cell para si es posible contactar y q me ayudes 0414-4713-555