Flasher le Neo Freerunner

De openmoko-fr.
(Redirigé depuis Flasher le NeoFreeRunner)

Voici un exemple de flashage du FreeRrunner à partir de la dernière image ASU qui utilise Qtopia (plus d'infos ici) sur une Ubuntu 8.04. Les commandes ci-dessous sont à taper dans un émulateur de terminal GNU/Linux (comme Konsole ou xTerm) et positionné dans le répertoire qui contient dfu-util.

ATTENTION : Flasher détruira TOUS les fichiers présents dans le Freerunner, pensez à les sauvegarder au préalable (sur la carte micro-SD ou avec l'utilitaire NeoTool par exemple).

Source

Sommaire

Version ULTRA simple

Utiliser l'utilitaire graphique nommé NeoTool ;-) C'est simple, ça marche, c'est efficace.

neoTool a besoin de dfu-util (et que le reseau soit configuré sur le PC pour sauvegarder le rootfs de l'appareil)

A lancer en tant qu'utilisateur root :
sudo ./neotool

La seule chose à laquelle il faut faire attention, c'est de sélectionner le fichier rootfs quand il le demande et le fichier kernel quand il le demande (c'est même rappelé dans le titre de la fenêtre!).

Une fois ces deux fichiers sélectionnés, un message vous invite à brancher le moko.

Appuyez alors sur [AUX] puis sur [POWER], ce qui démarre le moko sur la NOR( et donc sur uBoot), branchez le cable usb puis validez la fenêtre de Neotool.

Une barre de progression version console vous donne alors un retour sur le processus en cours.

A conseiller aussi bien aux néophytes qu'aux autres.

Version simple

Malgré les apparences, flasher le Freerunner est assez simple.

Cela peut se résumer aux étapes suivantes :

  1. Télécharger le nécessaire, à savoir :
    • l'utilitaire dfu-util (lien direct). Une fois téléchargé, il faut le rendre executable avec la commande
      chmod +x dfu-util 
    • le noyau ("kernel" en anglais) de la distribution souhaitée sous la forme d'un un fichier .bin (contenant souvent le terme uImage)
    • l'image du système de fichier ("rootfs" en anglais) de la distribution souhaitée sous la forme d'un fichier .jffs2 (remarque : les fichiers .bin et .jffs2 peuvent être contenus dans un unique fichier compressé .tgz)
  2. Brancher et démarrer le Neo sur le menu NAND :
    • raccorder le Neo à l'ordinateur via le cordon USB fourni
    • démarrer en maintenant le bouton AUX puis le bouton Power jusqu'à voir apparaître le menu NAND
  3. Flasher le Kernel :
    ./dfu-util -a kernel -R -D mon-fichier-uImage.bin
  4. Flasher le Rootfs :
    ./dfu-util -a rootfs -R -D  mon-fichier-rootfs.jffs2


Si tout s'est bien passé, le résultat de chaque commande dfu-util sera :

status(0) = No error condition is present
Done!

Il ne reste plus qu'a redémarrer le Freerunner normalement. Si ces instructions ne donnent pas le résultat escompté, consultez la version détaillée ci-dessous.

Sauvegarder les données (Backup)

Pour enregistrer et non écrire la mémoire flash, il suffit de remplacer le paramètre -D (Download) par -U (Upload)

sudo dfu-util -a kernel -R -U good-kernel.bin
sudo dfu-util -a rootfs -R -U good-rootfs.jffs2
sudo dfu-util -a splash -R -U good-splash.bin
sudo dfu-util -a u-boot -R -U good-u-boot.bin
sudo dfu-util -a u-boot_env -R -U good-u-boot_env.bin

Version détaillée

Etape 0 : préparation

Pour l'étape 3 correspondant au flashage, nous aurons besoin de l'identifiant de vendeur et de produit du périphérique USB (le FreeRunner). Pour le trouver, on va comparer la liste des périphériques connectés avant et après connexion du FreeRunner. Pour cela, il faut garder dans un coin le résultat de la commande suivante (évidemment le FreeRunner ne doit pas être connecté):

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

Found Runtime: [0x413c:0x8126] devnum=0,  cfg=0,  intf=3,  alt=0,  name='UNDEFINED'

Etape 1 : récupération de la dernière version du noyau et du rootfs

Les dernières versions sont récupérables à cette adresse, sinon j'utilise ce petit script shell pour récupérer la dernière version:

#!/bin/bash
MONTH=$(date +%Y%m)
DAY=$(date +%d)
echo 'sauvegarde ...'
# on renomme le noyau et le rootfs actuel en .old
if [ -e uImage-om-gta02-latest.bin ]
then
       mv uImage-om-gta02-latest.bin uImage-om-gta02-latest.bin.old
fi
if [ -e openmoko-qtopia-x11-image-om-gta02.jffs2 ]
then
       mv openmoko-qtopia-x11-image-om-gta02.jffs2 openmoko-qtopia-x11-image-om-gta02.jffs2.old
fi
echo 'download ...'
wget http://buildhost.openmoko.org/daily/freerunner/$MONTH/$MONTH$DAY/uImage-om-gta02-latest.bin
wget http://buildhost.openmoko.org/daily/freerunner/$MONTH/$MONTH$DAY/openmoko-qtopia-x11-image-om-gta02.jffs2

Ce script ne marche plus car, comme indiqué dans ce message les repository ont été un peu revus et organisés.

Etape 2 : boot du FreeRunner

Avant de continuer, il est préférable de ne pas avoir la batterie complètement vide. On appuie sur Aux (le bouton en haut à gauche), puis sur Power (le bouton en bas à droite) en maintenant le bouton Aux puis on relâche tout. Vous devez voir apparaitre un menu de boot. Pour éviter que la première entrée soit automatiquement sélectionnée, appuyer une fois sur le bouton Aux. Nous avons maintenant environ 30 secondes pour commencer l'étape 3 avant que le FreeRunner ne s'éteigne automatiquement.

Il faut brancher le câble USB entre le FreeRunner et le PC.

Etape 3 : flashage

Pour cette étape, nous avons besoin de l'identifiant de produit et de vendeur. Nous allons donc faire la différence avec l'étape 0:

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

Found Runtime: [0x1d50:0x5119] devnum=0,  cfg=0,  intf=2,  alt=0,  name='UNDEFINED'
Found Runtime: [0x413c:0x8126] devnum=0,  cfg=0,  intf=3,  alt=0,  name='UNDEFINED'

En faisant la différence par rapport à la première liste, on retrouve l'identifiant qui est dans mon cas: 0x1d50:0x5119

Nous allons maintenant installer le noyau, attendre quelques secondes (le temps de reset du périphérique USB) puis installer le rootfs:

sudo ./dfu-util -d 0x1d50:0x5119 -a kernel -R -D uImage-om-gta02-latest.bin
sleep 4s
sudo ./dfu-util -d 0x1d50:0x5119 -a rootfs -R -D openmoko-qtopia-x11-image-om-gta02.jffs2

Voilà ! Normalement le FreeRunner s'est éteint. Vous pouvez maintenant l'allumer et tester la nouvelle image.

Petit rappel qui a son importance, la version 'openmoko-qtopia-x11-image-om-gta02' est en plein développement et les images sont générées tous les jours. Il est donc possible de tomber sur une version qui ne sera pas utilisable.