Mettre à jour le firmware.

Attention ! Pas testé ! Sauvegarde du wiki tuxdroidisalive.com.
Si jamais vous désirez mettre le firmware à jour parce que vous ne l'aviez pas fait à l'époque, suivez bien toutes les étapes de cette page et du README.txt, je me souviens que ce n'était pas sans stress.

Il n'est pas précisé dans cette page que tuxup et dfu-programmer doivent être copiés dans /usr/bin.

How to update firmwares with tuxup

!! Important notice !!
Upgrading the firmware is a risky operation. If something goes wrong, one of the CPU can be corrupted. If a RF CPU (fuxrf.hex or tuxrf.hex) is corrupted, the problem cannot be fixed by software.
Before upgrading your firmware, it's recommended to try the software first.
Most of the Tux Droid bought after Oct 2008 have not to be upgraded.

All CPU's in Tux Droid have a bootloader which means you can update all firmware by using tuxup, the Tux Droid Updater application.

Installing

What you need to install :

  • tuxsetup

Tuxsetup includes tuxup, the tux droid updater software, dfu-programmer and all firmware hex files. Tuxup is necessary to update the firmware of all AVR CPU's, which means all CPU's inside Tux and the RF CPU of the dongle.

To reprogram the USB firmware, dfu-programmer is used. As dfu-programmer is not that easy to use, tuxup will be used to do the calls to dfu-programmer for you.

Testing your setup

To be sure everything works fine, don't try to bootload all CPU's simultaneously the first time. These few steps will check that dfu-programmer and tuxup are setup correctly.

Checking tuxup and your hex files. Just type the following

$ tuxup --all --pretend /usr/share/tuxdroid/firmware # or /opt/tuxdroid/firmware/ depending of the version
Programming /opt/tuxdroid/firmware/fuxusb.hex in the USB CPU

Version 0.5.1



Programming /usr/share/tuxdroid/firmware/tuxcore.hex in the tuxcore CPU
Version 0.5.1

Programming /usr/share/tuxdroid/firmware/tuxcore.eep in tuxcore CPU


Programming /usr/share/tuxdroid/firmware/tuxaudio.hex in the tuxaudio CPU
Version 0.5.1

Programming /usr/share/tuxdroid/firmware/tuxaudio.eep in tuxaudio CPU


Programming /usr/share/tuxdroid/firmware/fuxrf.hex in the fuxrf CPU
Version 0.3.0


Programming /usr/share/tuxdroid/firmware/tuxrf.hex in the tuxrf CPU
Version 0.3.0

you should see the version of some of your hex files like above

Checking dfu-programmer

$ tuxup /usr/share/tuxdroid/firmware/fuxusb.hex 
Programming /usr/share/tuxdroid/firmware/fuxusb.hex in the USB CPU

Version 0.5.1

  [ OK ]

Time elapsed:  9 seconds.

if you get [OK], you just updated the dongle firmware correctly and you can continue, otherwise try again or look at the common problems

Setting Tux Droid in bootloader mode

There is a special mode that needs to be enabled to upgrade the firmware: the bootloader mode.

Follow this sequence to get in the bootloader mode:

  • 1. A clean start: disconnect the dongle, turn off Tux Droid and close any audio applications that might be running.
  • 2. Connect the AC wall adapter to be sure tux is well powered.
  • 3. Unscrew the battery door on the back of Tux (above the power switch).
  • 4. Plug the dongle again into the USB port.
  • 5. Keep the head button pushed on Tux Droid while switching him back on.
  • 6. The left eye LED will be lit, indicating Tux Droid is in the bootloader mode.
  • 7. Connect the provided white programming cable between Tux Droid and the USB dongle.
  • 8. You're ready to bootload!

Before programming

Notice

  • Don't forget to use the wall adapter to power tux, it's safer!
  • You should not get any problem if you use the hex files from tuxsetup. If you compile your own firmware or want to mess up with the hex files, read the more complete update manual.

Programming

Just type the following:

tuxup /usr/share/tuxdroid/firmware/fuxusb.hex
tuxup /usr/share/tuxdroid/firmware/tux* /usr/share/tuxdroid/firmware/fuxrf.hex

It's very important to flash fuxusb.hex first. Otherwise, the other CPU may be corrupted.

When done, you have to remove the programming cable and cycle power on both the dongle and tux to get them to reconnect.

Common problems

Claim interface failed

As tuxdaemon is started when the dongle is plugged, it's possible that tuxup get some conflicts with tuxdaemon which will show up as:

Claim interface failed: could not claim interface 3: Device or resource busy
USB DEVICE INIT ERROR

Just restart tuxup to try again.

ERROR : Your dongle firmware is too old

Your dongle firmware is too old to be able to reflash Tux Droid. You have to flash the dongle first (fuxusb.hex), with a version 0.5.2 or higher.

Versions under 0.5.2 uses a different protocol, and are not compatible with your version of tuxup.



Tuxup manual

Tuxup overview

To display the help, just type

$ tuxup --help

All the available options will be displayed :

./tuxup 0.5.0 (SVN/UNRELEASED)
Usage: ./tuxup options [path|file ...]
 -m --main     Reprogram tuxcore and tuxaudio (flash and eeprom)
               with hex files located in path.
 -a --all      Reprogram all cpu's with hex files located in path.
 -p --pretend  Don't do the programming, just simulate.
 -h --help     Display this usage information.
 -v --verbose  Print verbose messages.
 -d --debug    Print debug messages. 
 -q --quiet    Silent mode
 -V --version  Print the version number.

Connection: connect the dongle alone, then press on tux's head
  button while switching it on. Finally, connect the white cable
  between tux and the dongle.

Notes:
  * Options '-a' and -'m' can't be used simultaneously.
  * Inputfiles can be specified only if the -a and -m options are
    not selected.
  * Any .hex or .eep files compiled for Tux Droid can be used.
  * The eeprom file names should contain 'tuxcore' or 'tuxaudio'
    in order to be identified. The usb hex file should contain
    'fuxusb'.

--main (-m)

This option specify that you want flash only the tuxcore and tuxaudio CPUs.

Basically, tuxcore contain the standalone behaviour of Tux, and control the switches, motors, etc. Tuxaudio treats all the audio stuff, and is a communication node between the RF card and tuxcore. Most of the time, changes made on the firmwares concern only these two CPUs.

Example :

$ tuxup --main /usr/share/tuxdroid/firmware

--all (-a)

This option specify that you want flash all the CPUs : tuxcore, tuxaudio, tuxrf, fuxrf and fuxusb.

Example :

$ tuxup --all /usr/share/tuxdroid/firmware

--pretend (-p)

The pretend option simulate the command, but don't reflash the CPUs.

This option is very useful if you're not sure that your tuxup installation is good, or to be sure that your firmware files are not corrupted.

This option can be used simultaneously with -a or -m. Example :

$ tuxup --all --pretend /usr/share/tuxdroid/firmware

--help (-h)

This option display the help, and exit.

--verbose (-v)

Using the verbose mode will display additional message during the update process. It's useful if you want to know what's happens.

Example :

$ tuxup --main --verbose /usr/share/tuxdroid/firmware

--debug (-d)

This option display the debug messages.

--quiet (-q)

Silent mode. If this option is set, only the essential messages will be displayed.

$ tuxup --main --quiet /usr/share/tuxdroid/firmware

--version (-V)

Display the version, and exit