Probando suerte con Firefox OS en el Alcatel One Touch Fire

Conseguí un teléfono Alcatel One Touch Fire con el sistema operativo Firefox OS. Era obvio desde un principio que el Firefox OS no podría competir con Android pero aún así era una propuesta interesante en la que las aplicaciones están basadas en HTML5. En estos días en que cada vez es más común ver aplicaciones corriendo en el navegador, casi me atrevería a decir que el Firefox OS se adelantó a su tiempo, tal vez demasiado :P. En todo caso, es una plataforma interesante para experimentar.

Antes de hacer cualquier cambio o experimento al teléfono, decidí respaldar el sistema original. Esto no fue tan fácil como lo pensé :P. Por suerte, la interfaz entre Firefox OS y la PC funciona usando las mismas herramientas que para Android, que se pueden encontrar en Linux Debian en los paquetes android-tools-adb, android-tools-fastboot y android-tools-fsutils. Después de instalar estos paquetes, contarás con las herramientas básicas para una interfaz entre tu PC y tu teléfono Firefox OS.

Antes de poder conectar tu teléfono a la PC, debes habilitar la opción de depuración remota en Firefox OS. El Alcatel One Touch Fire (OTF) viene con la versión 1.1 de Firefox OS por lo que puedes activar la depuración remota en Ajustes > Dispositivo – Información > Más información > Ajustes para desarrollador – Desarrollador.

2016-02-12-13-44-28
Al conectar el teléfono con la computadora usando un cable USB, lo primero era revisar que el teléfono fuera detectado por las herramientas de Android, en particular adb. Al ejecutar el siguiente comando podemos ver que el programa adb detecta un dispositivo conectado, ese es un buen comienzo :P.

monstruosoft@PC:~$ adb devices
List of devices attached 
MSM7627A	device

En este caso, el Alcatel OTF es detectado como un dispositivo MSM7627A. Ya que el dispositivo ha sido detectado correctamente, podemos pasar al siguiente paso, establecer una conexión con el teléfono usando la opción shell del comando adb que nos mostrará una ventana de terminal remota del celular.

monstruosoft@PC:~$ adb shell
shell@android:/ $

El símbolo de sistema shell@android efectivamente nos indica que ahora estamos conectados al teléfono por medio de una terminal remota. Los comandos que escribamos en esta terminal ser ejecutarán en el teléfono. Esto te puede parecer extraño si nunca has usado una sesión remota pero créeme, así es :P.

El siguiente paso es averiguar la forma en que están organizadas las particiones de sistema del teléfono. Esto puede variar de dispositivo a dispositivo pero para el Alcatel OTF, el siguiente comando muestra una relación entre las particiones y su contenido:

shell@android:/ $ cat /proc/mtd                                                
dev:    size   erasesize  name
mtd0: 00600000 00020000 "boot"
mtd1: 0c800000 00020000 "system"
mtd2: 02800000 00020000 "cache"
mtd3: 00400000 00020000 "misc"
mtd4: 00200000 00020000 "watchdog"
mtd5: 0a100000 00020000 "userdata"
mtd6: 00400000 00020000 "persist"
mtd7: 00a00000 00020000 "recovery"
mtd8: 00100000 00020000 "custpack"
mtd9: 00100000 00020000 "tracability"
mtd10: 00100000 00020000 "tuningpara"
mtd11: 00140000 00020000 "MIBIB"
mtd12: 00040000 00020000 "QCSBL"
mtd13: 000a0000 00020000 "OEMSBL1"
mtd14: 000a0000 00020000 "OEMSBL2"
mtd15: 01a80000 00020000 "AMSS"
mtd16: 017c0000 00020000 "EFS2"
mtd17: 00040000 00020000 "STUDYPARA"
mtd18: 00040000 00020000 "SECRO"
mtd19: 00040000 00020000 "FOTAFLAG"
mtd20: 01b00000 00020000 "FOTA"
mtd21: 00120000 00020000 "APPSBL"
mtd22: 023c0000 00020000 "APPS"
mtd23: 18a60000 00020000 "EFS2APPS"

La mayoría de los tutoriales que he visto se interesan principalmente en las particiones boot, system, userdata y recovery pero puedes respaldar todas. La mayoría de esos tutoriales también recomienda usar el comando cat para respaldar las particiones a la memoria SD pero al intentar hacerlo obtuve el siguiente error:

shell@android:/ $ cat /dev/mtd/mtd0 > /mnt/sdcard/boot.img                     
/dev/mtd/mtd0: Permission denied

Como probablemente estás imaginando ahora, ese error se debe a que el usuario shell no tiene permisos para acceder a las particiones del sistema. Entonces, ¿cómo podemos respaldar el sistema original del teléfono? Obviamente debemos iniciar sesión como un usuario con permisos para acceder a las particiones, ese usuario debe ser, de preferencia, root, y para ello es necesario arrancar el teléfono con un sistema rooteado. Eso no significa que tengamos que borrar el sistema original y quedarnos sin la posibilidad de respaldarlo ya que aquí es donde entra la opción de fastboot.

fastboot es una parte de las herramientas de Android que permite arrancar el teléfono usando una imagen de arranque remota, es decir, que no esté instalada en el teléfono. Hay instrucciones disponibles para compilar tu propia imagen de Firefox OS desde cero (tal vez lo analicemos en un futuro post) pero de momento será más fácil usar una imagen disponible en internet.

La página del Alcatel OTF en el Firefox OS Participation Hub nos redirige a la página de MexMod mantenida por la comunidad con imágenes actualizadas de Firefox OS para este modelo de teléfono. Recomiendo bajar la versión más reciente, en este caso el archivo oftv25.zip que contiene la versión 2.5 de Firefox OS para el Alcatel OTF. En esa misma página puedes encontrar instrucciones para flashear tu teléfono si así lo prefieres. De momento sólo queremos respaldar el sistema original y para eso necesitamos extraer únicamente el archivo boot.img.

Con el archivo boot.img estamos listos para arrancar el teléfono de forma remota; para esto necesitamos arrancar el teléfono en modo fastboot, que en el Alcatel OTF se logra dejando oprimido el botón de bajar volumen inmediatamente después de encender el teléfono, esto hará que el teléfono se quede en la pantalla inicial con el logo de Alcatel. Para verificar que el teléfono está en modo fastboot podemos ejecutar el siguiente comando.

monstruosoft@PC:~$ fastboot devices
MSM7627A	fastboot

Esto nos indica que el teléfono está listo en modo fastboot, de lo contrario el comando anterior no mostraría ningún dispositivo.

Ahora que el teléfono está en modo fastboot, podemos arrancar remotamente con la imagen boot.img del archivo de Firefox OS 2.5 que descargamos previamente usando el siguiente comando:

monstruosoft@PC:~$ fastboot boot boot.img 
downloading 'boot.img'...
OKAY [  0.425s]
booting...
OKAY [  0.106s]
finished. total time: 0.530s

Si ejecutas ahora el comando adb para abrir una terminal remota podrás ver que esta vez la terminal se ejecuta como el usuario root. Como root podrás hacer el respaldo de las particiones del sistema. La mayoría de los tutoriales sugieren respaldar las particiones boot, system, userdata y recovery.

monstruosoft@PC:~$ adb shell
root@android:/ # cat /dev/mtd/mtd0 > /mnt/sdcard/boot.img
root@android:/ # cat /dev/mtd/mtd1 > /mnt/sdcard/system.img
root@android:/ # cat /dev/mtd/mtd5 > /mnt/sdcard/userdata.img
root@android:/ # cat /dev/mtd/mtd7 > /mnt/sdcard/recovery.img

Nota: Antes de poder respaldar las particiones del sistema es probable que tengas que montar manualmente la memoria SD si no se monta de manera automática al arrancar usando el fastboot.

En este punto ya tenemos un respaldo de las particiones de sistema originales del Alcatel OTF. Mientras el teléfono sigue conectado a la PC puedes copiar las imágenes de respaldo desde la memoria SD a tu disco duro; para esto recomiendo poner todos los archivos .img en una carpeta para después poder copiar la carpeta completa con el comando adb, como se muestra a continuación:

monstruosoft@PC:~$ adb shell
shell@android:/ $ cd /sdcard/
shell@android:/sdcard $ mkdir Backups
shell@android:/sdcard $ mv *.img Backups/
shell@android:/sdcard $ exit
monstruosoft@PC:~$ adb pull /sdcard/Backups .
pull: building file list...
pull: /sdcard/Backups/watchdog.img -> ./watchdog.img
pull: /sdcard/Backups/userdata.img -> ./userdata.img
pull: /sdcard/Backups/tuningpara.img -> ./tuningpara.img
pull: /sdcard/Backups/tracability.img -> ./tracability.img
pull: /sdcard/Backups/system.img -> ./system.img
pull: /sdcard/Backups/recovery.img -> ./recovery.img
pull: /sdcard/Backups/persist.img -> ./persist.img
pull: /sdcard/Backups/misc.img -> ./misc.img
pull: /sdcard/Backups/custpack.img -> ./custpack.img
pull: /sdcard/Backups/cache.img -> ./cache.img
pull: /sdcard/Backups/boot.img -> ./boot.img
pull: /sdcard/Backups/STUDYPARA.img -> ./STUDYPARA.img
pull: /sdcard/Backups/SECRO.img -> ./SECRO.img
pull: /sdcard/Backups/QCSBL.img -> ./QCSBL.img
pull: /sdcard/Backups/OEMSBL2.img -> ./OEMSBL2.img
pull: /sdcard/Backups/OEMSBL1.img -> ./OEMSBL1.img
pull: /sdcard/Backups/MIBIB.img -> ./MIBIB.img
pull: /sdcard/Backups/FOTAFLAG.img -> ./FOTAFLAG.img
pull: /sdcard/Backups/FOTA.img -> ./FOTA.img
pull: /sdcard/Backups/EFS2APPS.img -> ./EFS2APPS.img
pull: /sdcard/Backups/EFS2.img -> ./EFS2.img
pull: /sdcard/Backups/APPSBL.img -> ./APPSBL.img
pull: /sdcard/Backups/APPS.img -> ./APPS.img
pull: /sdcard/Backups/AMSS.img -> ./AMSS.img
24 files pulled. 0 files skipped.
2979 KB/s (934105088 bytes in 306.119s)

En este punto ya tenemos un respaldo en la PC de las particiones del sistema de nuestro teléfono. Sin embargo, antes de continuar, cabe mencionar que algunas páginas sugieren utilizar un método distinto para hacer un respaldo más confiable y para ello usan una utilidad llamada ClockworkMod que analizaremos en un futuro post.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s