Actualizar la imagen de software ("flashear" el dispositivo)

1. Contexto

Debido a que actualmente la máquina se encuentra en un estado de desarrollo, es necesario cambiar la información que se encuentra en la memoria flash a menudo. Este procedimiento se le conoce informalmente como "flashear" (palabra que, obviamente no existe en español). Sin embargo esta ventaja de actualizar permanentemente el software estará presente incluso cuando se cuente con versiones más estables. De lo que se trata es de que sea un artefacto mutable que evolucione y cambie con el usuario y sus necesidades.

Para mayor información revisar:

2. Probado en

3. Procedimiento

Para flashear el móvil hacemos lo siguiente:

3.1. Descargar dfu-util

'dfu-util' Es la utilidad que permite actualizar el firmware desde el computador al cual se va a conectar el teléfono. La sigla dfu corresponde a Device Firmware Update. Dependiendo del sistema hay que hacer más o menos pasos, si tiene un Debian o sus derivados salte a la sección Instalación de dfu-util para Debian o sus derivados y si tiene cualquier otro Linux la siguiente es la suya.

3.1.1. Instalación de dfu-util para cualquier distribución de Linux

3.1.2. Instalación de dfu-util para Debian o sus derivados

Para Debian o sus derivados es mucho más sencillo, sólo utilizar el habitual apt-get:

apt-get install dfu-util

3.2. Descargar las imágenes y el kernel

Existen tres imagenes que permiten hacer pruebas con Openmoko y usarlo, la Gtk, la ASU y la FSO, para una mayor explicacion sobre sus caracteristicas particulares pueden leer:

El sitio donde se descargan la imágenes es http://downloads.openmoko.org/releases/, se recomienda en este momento abrir una nueva ventana, o pestaña, con esta dirección, si lo hace deberá estar viendo algo como lo siguiente:

Om2007.11/              01-Dec-2007 01:55    -   
Om2008.4/               23-Jun-2008 12:57    -   
Om2008.8/               08-Aug-2008 14:49    -   

Cada uno de esos directorios es una versión de la distribución OpenMoko, la más reciente es Om2008.8 así que entre a ese directorio y verá algo como lo siguiente:

Om2008.8-gta02-20080808.rootfs.jffs2  08-Aug-2008 10:33   68M  
Om2008.8-gta02-20080808.rootfs.tar.gz 08-Aug-2008 14:46   49M  
Om2008.8-gta02-20080808.uImage.bin    08-Aug-2008 10:41  1.8M  
Om2008.8.rootfs.jffs2                 08-Aug-2008 10:33   68M  
Om2008.8.rootfs.tar.gz                08-Aug-2008 14:46   49M  
Om2008.8.uImage.bin                   08-Aug-2008 10:41  1.8M  

Vamos a explicar que es cada cosa. Los archivos que tienen extensión jffs2 son el sistema de archivos de la imagen, mejor dicho el root; los que terminan en 'bin' son los kernel y los que terminan en rootfs.tar.gz son el sistema de archivo raíz, pero comprimido, este último se usa para arrancar el sistema desde la micro-SD, así que no hay que preocuparse ellos en este momento. Por lo que si hay que preocuparse es que el kernel y el sistema de archivos se correspondan.

Lo primero que aparece en el nombre de estos archivos es la distribución, en el ejemplo es Om2008.8. Lo que sigue, después del guión, es el hardware en el que funciona: gta02 para el FreeRunner y el gta01 para el Neo1973 (para esta distribución sólo hay para el FreeRunner). Después está la versión que es la fecha en que salió la imagen 20080808. Después viene rootfs para el sistema de archivos o uImage para el kernel. Entonces lo que hay que bajar es un archivo rootfs y otro uImage, pero que, la distribución, el hardware y la versión sean las mismas.

Los tres archivos del final son enlaces simbólicos que siempre estarán apuntando a la última versión, para simplificar vamos a usar estos.

Para ser organizados crearemos primero un directorio donde poner nuestras imágenes (y nos ubicamos en este):

mkdir -p OpenMoko/2008.08
cd OpenMoko/2008.08/

Para descargar podemos usar el wget:

wget http://downloads.openmoko.org/releases/Om2008.8/Om2008.8.uImage.bin
wget http://downloads.openmoko.org/releases/Om2008.8/Om2008.8.rootfs.jffs2

3.3. Actualizar las imágenes y el kernel

Los siguiente es poner el OpenMoko en modo U-boot NOR Flash. Para ello apagamos el OpenMoko y para prenderlo nuevamente presionamos el botón [AUX] y sin soltarlo, oprimimos el botón [POWER]. Como se ve en la siguiente imagen:

400px-Menu6.jpg

Casi inmediatamente y como se ve en la imagen sale algo como lo siguiente:

U-Boot 1.3.2-rc2-dirty-moko12 (Apr 2 2008 - 09:31:05)

Boot
Boot from microSD (FAT+ext2)
Set console to USB
Set console to serial
Set console to USB
Set console to serial
Reboot
Power off

Press [AUX]to select, [POWER] to execute.

Si oprime el [AUX] se mueve entre las diferentes opciones, es importante aprender esto porque el U-Boot tiene un tiempo de espera y el botón [AUX] nos va a servir para que no se cumpla ese tiempo de espera y nos pueda daar la instalación.

En esto momento hay que conectar el cable USB entre el PC y el OpenMoko.

El siguiente paso es loggearnos como root en el PC anfitrión:

su -

Y verificamos que haya conectividad entre el PC y el OpenMoko, para ello ejecutamos:

dfu-util --list

Y debe salir algo como lo siguiente:

dfu-util - (C) 2007 by OpenMoko Inc.
This program is Free Software and has ABSOLUTELY NO WARRANTY

Found Runtime: [0x1d50:0x5119] devnum=9, cfg=0, intf=2, alt=0, name="USB Device Firmware Upgrade"

Si no sale algo como la última línea entonces no se están comunicando, hay que revisar el cable.

Antes de continuar con los siguientes pasos, tal vez sería bueno, sacar un backup de la imagen que tenemos instalada

3.3.1. Backup Imagen

Escribir esta sección

3.3.2. Imagen ASU/2008.8

Para los curiosos sobre la imagen ASU, pueden ver algunas capturas de pantalla de esta en:

Ahora vamos a quemar el sistema de archivos:

dfu-util -a rootfs -R -D Om2008.8.rootfs.jffs2

En el OpenMoko sale algo como lo siguiente:

Starting DFU DOWNLOAD to partition...
[...]
DFU: Switching to DFU mode
[...]

Y en la línea de comando del PC:

dfu-util - (C) 2007 by OpenMoko Inc.
This program is Free Software and has ABSOLUTELY NO WARRANTY

Found Runtime: [0x1d50:0x5119] devnum=9, cfg=0, intf=2, alt=0, name="USB Device Firmware Upgrade"
Durnak:/home/lbernal/OpenMoko/2008.08# dfu-util -a rootfs -R -D Om2008.8.rootfs.jffs2
dfu-util - (C) 2007 by OpenMoko Inc.
This program is Free Software and has ABSOLUTELY NO WARRANTY

Opening USB Device 0x0000:0x0000...
Claiming USB DFU Runtime Interface...
Determining device status: state = appIDLE, status = 0
Device really in Runtime Mode, send DFU detach request...
Resetting USB...
Opening USB Device...
Found Runtime: [0x1d50:0x5119] devnum=10, cfg=0, intf=0, alt=6, name="rootfs"
Claiming USB DFU Interface...
Setting Alternate Setting ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
Transfer Size = 0x1000
bytes_per_hash=1431306
Starting download: [#####

Muy importante en este momento, hay que estar oprimiendo el botón [AUX] para que el U-Boot no apague el dispositivo, en especial en esta quemada que es la más larga.

Cuando finalice, mucho tiempo después, debe salir algo como lo siguiente en la consola del PC:

Starting download: [##################################################] finished!
state(2) = dfuIDLE, status(0) = No error condition is present
Done!
Resetting USB to switch back to runtime mode

Y en el OpenMoko:

DFU: Switching back to Runtime mode             

Ahora, vamos a quemar el kernel:

dfu-util -a kernel -R -D Om2008.8.uImage.bin

Y listo puede seleccionar "boot" con el botón [AUX] y oprimir el botón [POWER] para ejecutar la opción. Y disfrute de su nuevo OpenMoko.

3.3.3. La imagen Gtk/2007.8

Para la imagen gtk.

3.3.4. La imagen FSO - FreeSmartphone.Org

Empecemos por algunas capturas de pantalla sobre la FSO, que podrían inspirarnos para usar esta imagen:

Para quemar la imagen (suponemos que está en la carpeta NeoFreerunner/FSO/ y que hemos instalado dfu-util manualmente):

 ./dfu-util -a rootfs -R -D NeoFreerunner/FSO/openmoko-fso-image-glibc-ipk--20080729-om-gta02.rootfs.jffs2.summary

y para quemar el kernel:

 ./dfu-util -a kernel -R -D NeoFreerunner/FSO/uImage-2.6.24+gitr0+7a1370a816b9348dd8f36a667905dd3533cefc9b-r4-om-gta02.bin 

4. Pendiente

OpenMoko/ActualizarImagen (last edited 2009-08-26 23:39:25 by CristianGomez)