Dfu-util/fr
From Openmoko
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català
Contents
Objectif
dfu-util est un programme qui sert à mettre à jour les logiciels des périphériques USB à partir d'un ordinateur via le protocole USB DFU (Universal Serial Bus Device Firmware Upgrade).
Dans le cadre du projet Openmoko, on utilise ce programme pour communiquer avec notre gestionnaire de démarrage u-boot qui intègre la partie complémentaire du protocole DFU.
En utilisant dfu-util et votre smartphone, vous pouvez :
- transférer et mettre à jour des partitions de la mémoire flash interne NAND.
- transférer n'importe quoi vers la mémoire RAM
- cela peut être utilisé dans le cadre de cycles de développement rapide de code bas niveau comme les noyaux sans mettre à jour la mémoire flash
- lire les partitions de la mémoire interne NAND
- c'est un moyen facile et efficace d'effectuer des sauvegardes complètes de votre téléphone
Code source
En environnement Debian et Ubuntu, vous aurez besoin de libusb-dev : sudo apt-get install libusb-dev autogen pkg-config autotools-dev autoconf automake
En environnement Fedora vous aurez besoin de libusb-devel et libusb-static : yum install libusb-devel libusb-static
En environnement Gentoo vous pouvez utiliser emerge avec openmoko-dfu-util une fois que vous l'aurez autorisé dans la liste de paquets : echo "app-mobilephone/openmoko-dfu-util **" >> /etc/portage/package.keywords emerge -va app-mobilephone/openmoko-dfu-util
Vous pouvez télécharger et construire la dernière version de dfu-util avec les commandes subversion suivantes : svn co http://svn.openmoko.org/trunk/src/host/dfu-util/ cd dfu-util ./autogen.sh ./configure make
L'exécutable généré est dfu-util/src/dfu-util.
Exécutables
Des paquets binaires seront mis à disposition via la construction de la distribution Openmoko. Pour le moment, l'outil est disponible pour Linux/i386.
Il est nécessaire de rendre le fichier téléchargé (dfu-util) exécutable avec :
chmod +x dfu-util
vous pouvez alors l'exécuter avec
./dfu-util
voir ci-dessous pour des instructions plus complètes.
dfu-util est disponible comme paquet pour Debian >= lenny, il peut être installé avec la commande suivante : apt-get install dfu-util
dfu-util est disponible comme paquet pour la distribution Slackware (12.1), il peut être installé avec : pkgtool
Il existe actuellement un exécutable expérimental pour les plateformes Win32 (voir Dfu-util-windows). Les utilisateurs de Windows peuvent consulter la page No_Linux.
Compiler dfu-util sur Mac:
- http://lists.openmoko.org/pipermail/community/2007-July/008438.html
- User:SNMoore
- MacOS_X#Flashing_to_your_device
Documentation de réference
Pour exécuter dfu-util, il est nécessaire d'avoir monté la partition /proc/bus/usb. La commande "ls /proc/bus/usb" doit renvoyer un résultat ressemblant à : "001 002 003 004 005 devices". Le résultat de la commande ne doit pas être vide, et si c'est quand même le cas cela signifie que le système de fichiers n'est pas monté et peut être monté avec la commande :
sudo mount -t usbfs usbfs /proc/bus/usb
Vous pouvez rajouter la ligne suivante dans votre fichier /etc/fstab pour que le système de fichiers soit automatiquement monté :
usbfs /proc/bus/usb usbfs defaults
Avant d'utiliser dfu-util
Vous devrez démarrer votre téléphone avec le menu de démarrage NAND :
- Vérifiez que votre téléphone est connecté à l'ordinateur via un câble USB (et pas à un chargeur USB !) :)
- Assurez-vous que vous déclenchez toutes les commandes dfu-util en tant que super-utilisateur
- Eteignez le téléphone
- Maintenez le bouton AUX appuyé
- Appuyez sur le bouton POWER jusqu'à ce que le menu de démarrage apparaisse
voir aussi Booting the Neo FreeRunner
Options en ligne de commande
--help
dfu-util - (C) 2007 by Openmoko Inc. This program is Free Software and has ABSOLUTELY NO WARRANTY Usage: dfu-util [options] ... -h --help Print this help message -V --version Print the version number -l --list List the currently attached DFU capable USB devices -d --device vendor:product Specify Vendor/Product ID of DFU device -c --cfg config_nr Specify the Configuration of DFU device -i --intf intf_nr Specify the DFU Interface number -a --alt alt_nr Specify the Altseting of the DFU Interface -t --transfer-size Specify the number of bytes per USB Transfer -U --upload file Read firmware from device into <file> -D --download file Write firmware from <file> into device -R --reset Issue USB Reset signalling once we're finished
--list
En utilisant l'option --list, vous pouvez voir les périphériques compatibles DFU, leur configuration, l'interface et les paramétrages associés. Vous trouverez ci-dessous un exemple pour le téléphone Neo1973 en mode u-boot Runtime Mode
# ./dfu-util --list dfu-util - (C) 2007 by Openmoko Inc. This program is Free Software and has ABSOLUTELY NO WARRANTY Found DFU Runtime: [0x1457:0x5119] devnum=0, cfg=0, intf=2, alt=0, name="USB Device Firmware Upgrade"
Vous trouverez ci-dessous un exemple pour le téléphone Neo1973 en mode u-boot DFU Mode
# ./dfu-util --list dfu-util - (C) 2007 by Openmoko Inc. This program is Free Software and has ABSOLUTELY NO WARRANTY Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=0, name="RAM 0x32000000" Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=1, name="u-boot" Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=2, name="u-boot_env" Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=3, name="kernel" Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=4, name="splash" Found DFU: [0x1457:0x5119] devnum=16, cfg=0, intf=0, alt=5, name="rootfs"
Cela vous montre six interfaces, toutes avec configuration 0 et interface 0, avec altsetting 0...5, pour l'accès à la RAM et chacune des partition.
--device
Vous pouvez indiquer les numéros USB de produit et de vendeur du périphérique que vous voulez programmer :
dfu-util --device 0x1457:0x5119
Si un seul périphérique DFU est connecté à votre ordinateur, il n'est pas nécessaire de préciser cela. Dès que plusieurs périphériques sont détectés, dfu-util le détectera et s'arrêtera en vous demandant lequel il doit utiliser.
--transfer-size
Indique la taille de chaque transfert USB. Si vous ne précisez pas de valeur, la taille maximale compatible avec la combinaison de système d'exploitation et de périphérique USB est choisie (pour obtenir les meilleures performances).
--download
Télécharge le fichier demandé dans le périphérique.
--upload
enregistre le contenu du périphérique DFU dans le fichier dont le nom est indiqué.
Commandes fréquemment utilisées
Pour l'instant, il n'y a pas de manuel à proprement parler. Mais vous pouvez utiliser les quelques exemples suivants :
Mettre à jour le rootfs
dfu-util -a rootfs -R -D /path/to/openmoko-devel-image.jffs2
Mettre à jour le noyau
dfu-util -a kernel -R -D /path/to/uImage
Mettre à jour le gestionnaire de démarrage
dfu-util -a u-boot -R -D /path/to/u-boot.bin
Mettre à jour l'image affichée au démarrage
dfu-util -a u-splash -R -D /path/to/splash.gz
see also Configuring_the_boot_splash_screens
Copier un noyau dans la RAM
dfu-util -a 0 -R -D /path/to/uImage
Once this has finished, the kernel will be available at the default load address of 0x32000000 in Neo1973 RAM.
Notes de mise à jour
If during flashing of an image using dfu-util you're consistently getting an error -110 message, check that the size of the destination NAND partition is big enough to hold the image. For example the kernel partition is only 2 MB big by default and a kernel with debugging info compiled-in can often exceed this. It's possible to change the partition layout to enlarge a given partition and shrink other partitions but you have to remember to reflash all partitions whose start offset has changed afterwards. To adjust partitions layout use the mtdparts u-boot command.
If in turn you're facing errors in seemingly random places during the flashing of images, most likely the USB hub or cable through which your Neo1973 is connected, is of too poor quality. It is recommended that you always connect the phone directly to the host when using dfu-util.
If dfu-util reports a message like the following, before it starts flashing:Resetting USB... not at least 2 device changes found ?!? Lost device after RESET?retry the command - it should work on a second run.
If dfu-util complains about not being able to program the device while in runtime mode, do the following: while in the boot menu, remove the usb cable and insert it again. Depending on the version of uBoot it should display somewhere in the menu that it is now in DFU mode. Now dfu-util should be able to continue.
If dfu-util is too slow on Windows, that's a known bug. A suggestion is to run Linux on a virtual box. An full root image 97MB that is 776Mbit, the USB 1.1 on the Neo FreeRunner is capable of either 1.5 Mbit/s (Low-Speed) and 12 Mbit/s (Full-Speed). So flashing it should take less than 9 minutes with low speed and a bit more than a minute with full-speed. Plus transfer overhead, plus decompression on the Neo side.
Voir aussi
- Flashing the Neo 1973 to the latest software.
- Flashing the Neo FreeRunner