Hacking.WiFiShieldFirmwareUpgrading History

Hide minor edits - Show changes to markup

December 15, 2013, at 12:17 PM by Scott Fitzgerald -
Changed lines 10-11 from:
  • the AT32UC3 when there is a new version of the firmware available from Arduino. Alternately, if you are an expert C programmer you can customize the official source code to make a derivative firmware for yourself. Check the WiFi library repository for the source code.
to:
  • the AT32UC3 when there is a new version of the firmware available from Arduino. Alternately, if you are an expert C programmer you can customise the official source code to make a derivative firmware for yourself. Check the WiFi library repository for the source code.
Changed line 16 from:
  • The HDG104 firmware is named "wifi_dnld.elf". The H&D module doesn't have static memory so you'll upload its firmware to AT32UC3 controller, then the AT32UC3 will transfer the firmware into the HDG104 module's dedicated dataflash.
to:
  • The HDG104 firmware is named "wifi_dnld.elf". The H&D module doesn't have static memory so you'll upload its firmware to AT32UC3 controller, then the AT32UC3 will transfer the firmware into the HDG104 module's dedicated flash memory.
Changed lines 53-57 from:

The latest version is here https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares. Choose WiFi shield firmware. UPDATE this URL when the repo is moved

The firmware is also located with the Arduino software in the /hardware/arduino/firmwares/wifishield folder. On OSX, right-click or command-click on the Arduino application and select "show package contents" to find this folder. Update when 1.0.2 released

to:

The latest version is here https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares. Choose WiFi shield firmware.

The firmware is also located with the Arduino software in the /hardware/arduino/firmwares/wifishield folder. On OSX, right-click or command-click on the Arduino application and select "show package contents" to find this folder.

Deleted lines 70-72:

Don't you need to remove the J3 jumper and confirm that the firmware is loaded into dataflash first?

Changed lines 83-84 from:

On Linux and Mac we wrote a script that once executed will do all the steps for you, driving into the procedure. The script is a command line utility, so in order to use it you need to open a terminal on your system.

to:

On Linux and Mac we wrote a script that automates the process. The script is a command line utility, so in order to use it you need to open a terminal on your system.

Changed lines 90-91 from:

Once done, open a Terminal window and move to the path were you saved the script and type as following to get the help:

to:

Open a Terminal window and move to the path were you saved the script and type as following to get the help:

Changed line 106 from:

Optional: to test if the WiFi shield has been updated, you can connect an USB to Serial adapter to the FTDI socket and access to the serial debug terminal if the startup message contains the updated date. Look at the apposite page to learn more abot the serial debug option.

to:

Optional: to test if the WiFi shield has been updated, you can connect an USB to Serial adapter to the FTDI socket and access to the serial debug terminal if the startup message contains the updated date. Look at the apposite page to learn more about the serial debug option.

November 01, 2013, at 08:12 PM by Scott Fitzgerald -
Added lines 12-13:

When upgrading the firmware, the WiFi shield should not be connected to the Arduino board.

November 06, 2012, at 04:34 PM by Federico -
Changed lines 63-66 from:
  • batchisp.exe -device AT32UC3A1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/arduino/firmware/WiFi/wifi_dnld.elf program verify start reset 0
to:
Changed lines 71-76 from:
  • batchisp.exe -device AT32UC3A1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/arduino/firmware/WiFi/wifiHD.elf program verify start reset 0
to:
Added lines 86-87:

You can find the script inside your IDE at the following path: ~/arduino1.x.x/hardware/arduino/firmwares/wifishield/scripts

November 06, 2012, at 03:50 PM by Federico -
Changed lines 5-6 from:

Both the AT32UC3 and the HDG104 module are firmware upgradable through the mini USB connector.

to:

Both the AT32UC3 and the HDG104 modules have firmware upgradable through the mini USB connector.

Changed lines 53-55 from:

The firmware is also located with the Arduino software in the /hardware/arduino/firmwares/arduino-wifishield folder. On OSX, right-click or command-click on the Arduino application and select "show package contents" to find this folder. Update when 1.0.2 released

to:

The firmware is also located with the Arduino software in the /hardware/arduino/firmwares/wifishield folder. On OSX, right-click or command-click on the Arduino application and select "show package contents" to find this folder. Update when 1.0.2 released

September 13, 2012, at 01:24 AM by Scott Fitzgerald -
Changed lines 31-32 from:

To update dfu-programmer and other ports:

to:

To update dfu-programmer and other ports to the most recent version:

September 13, 2012, at 01:22 AM by Scott Fitzgerald -
Changed lines 3-12 from:

The WiFi shield provides the WiFi the connectivity according to the IEEE 802.11 b/g standard using the HDG104 module. The TCP/IP stack and the APIs for WiFi library are managed by the AT32UC3A1256 (AT32UC3 for short) microcontroller on the shield. Your Arduino connects to the shield using SPI through the WiFi library.

Both the AT32UC3 and the HDG104 module are upgradable by uploading a new firmware through the mini USB connector. This tutorial shows you how to upgrade:

  • the HDG104 WiFi module firmware, when the manufacturer provides a new firmware binary for their device.
  • the AT32UC3 when there is a new version of the firmware available from Arduino. Alternately, if you are an expert C programmer you can customize the official source code to make a derivative firmware for yourself. Check the WiFi library repository for the source code.

Here's how to upgrade both firmwares:

  • download the HDG104 firmware first, the one called "wifi_dnld.elf". The H&D module doesn't have a static memory so you'll upload its firmware to AT32UC3 controlle, then the AT32UC3 will transfer the firmware into the HDG104 module's dedicated dataflash.
to:

The WiFi shield provides wireless connectivity per the IEEE 802.11 b/g standard through the HDG104 module. The TCP/IP stack and the APIs for WiFi library are managed by the AT32UC3A1256 (AT32UC3 for short) microcontroller on the shield. Your Arduino connects to the shield using SPI through the WiFi library.

Both the AT32UC3 and the HDG104 module are firmware upgradable through the mini USB connector.

This tutorial shows you how to upgrade :

  • the HDG104 WiFi module firmware, for when the manufacturer provides a new firmware binary for their device.
  • the AT32UC3 when there is a new version of the firmware available from Arduino. Alternately, if you are an expert C programmer you can customize the official source code to make a derivative firmware for yourself. Check the WiFi library repository for the source code.

Upgrading the firmware on the devices is a two step process:

  • The HDG104 firmware is named "wifi_dnld.elf". The H&D module doesn't have static memory so you'll upload its firmware to AT32UC3 controller, then the AT32UC3 will transfer the firmware into the HDG104 module's dedicated dataflash.
Changed lines 19-20 from:

You need this software to update the code on the 32UC3. Fortunately, it's free.

to:

You'll need additional software to update the code on the 32UC3.

Added lines 27-36:

To update macPorts:

sudo port selfupdate

To update dfu-programmer and other ports:

sudo port upgrade outdated

Make sure you're using dfu-programer version 0.5.4 or later

Changed lines 49-58 from:

Make sure to note that you need at least version (whatever version you need) of dfu-programmer, and explain how to update on macPorts:

To update macPorts:

sudo port selfupdate

To update dfu-programmer and other ports:

sudo port upgrade outdated

to:
September 11, 2012, at 01:00 PM by Tom Igoe -
Changed lines 12-14 from:
  • download the HDG104 firmware first, the one called "wifi_dnld.elf". The H&D module doesn't have a static memory so, you'll upload its firmware to an external dataflash. To do that the H&D firmware will be uploaded on the AT32UC3 controller at first then it will take care to transfer the firmware into the HDG104 module's dedicated dataflash.
  • Once the firmware for the HDG104 is uploaded, you're ready to the download inside the AT32UC3 the WiFi shield firmware. The "wifiHD.elf" is the file that contains the the application for the WiFi shield.
to:
  • download the HDG104 firmware first, the one called "wifi_dnld.elf". The H&D module doesn't have a static memory so you'll upload its firmware to AT32UC3 controlle, then the AT32UC3 will transfer the firmware into the HDG104 module's dedicated dataflash.
  • Once the firmware for the HDG104 is uploaded, you're ready to the upload the WiFi shield firmware for the AT32UC3. The "wifiHD.elf" is the file that contains the the application for the controller.
Changed lines 48-52 from:

The latest version is here https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares Choose WiFi shield firmware.

The firmware is also located with the Arduino software in the /hardware/arduino/firmwares/arduino-wifishield folder. On OSX, right-click or command-click on the Arduino application and select "show package contents" to find this folder.

to:

The latest version is here https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares. Choose WiFi shield firmware. UPDATE this URL when the repo is moved

The firmware is also located with the Arduino software in the /hardware/arduino/firmwares/arduino-wifishield folder. On OSX, right-click or command-click on the Arduino application and select "show package contents" to find this folder. Update when 1.0.2 released

Changed line 93 from:

Optional: to test if the WiFi shield has been updated, you can connect an USB to Serial adapter to the FTDI socket and access to the serial debug terminal if the startup message contains the updated date. Look at the apposite page to learn more abot the serial debug option.

to:

Optional: to test if the WiFi shield has been updated, you can connect an USB to Serial adapter to the FTDI socket and access to the serial debug terminal if the startup message contains the updated date. Look at the apposite page to learn more abot the serial debug option.

July 03, 2012, at 02:32 PM by Federico -
Changed lines 77-78 from:

Open a Terminal window and move to the path were you saved the script and type as following to get the help:

to:

Connect a jumper on the J3 connector, that put the shield in the programming mode. Then connect the USB cable to the shield USB mini socket. Once done, open a Terminal window and move to the path were you saved the script and type as following to get the help:

July 02, 2012, at 06:24 PM by Federico -
Changed lines 3-6 from:

The WiFi shield provides the WiFi the connectivity according to the IEEE 802.11 b/g standard using the HDG104 module. The TCP/IP stack and the APIs for WiFi library are managed by the AT32UC3A1256 (ATmega32 for short) microcontroller on the shield. Your Arduino connects to the shield using SPI through the WiFi library.

Both the AT32UC3A1256 and the HDG104 module are upgradable by uploading a new firmware through the mini USB connector. This tutorial shows you how to upgrade:

to:

The WiFi shield provides the WiFi the connectivity according to the IEEE 802.11 b/g standard using the HDG104 module. The TCP/IP stack and the APIs for WiFi library are managed by the AT32UC3A1256 (AT32UC3 for short) microcontroller on the shield. Your Arduino connects to the shield using SPI through the WiFi library.

Both the AT32UC3 and the HDG104 module are upgradable by uploading a new firmware through the mini USB connector. This tutorial shows you how to upgrade:

Changed lines 8-9 from:
  • the AT32UC3A1256 when there is a new version of the firmware available from Arduino. Alternately, if you are an expert C programmer you can customize the official source code to make a derivative firmware for yourself. Check the WiFi library repository for the source code.
to:
  • the AT32UC3 when there is a new version of the firmware available from Arduino. Alternately, if you are an expert C programmer you can customize the official source code to make a derivative firmware for yourself. Check the WiFi library repository for the source code.
Changed lines 12-14 from:
  • download the HDG104 firmware first. The H&D module doesn't have a static memory, you'll upload its firmware to the XXX first, and then the ATmega32 controller will upload it into the HDG104 module. When you download the "wifi_dnld.elf" file on the board, you are programming the ATmega32 microcontroller so that it can load the firmware into an external dataflash for the HDG104 WiFi module.
  • Once the firmware for the HDG104 is uploaded, you're ready to the download inside the ATmega32 the firmware. The "wifiHD.elf" is the file that contains the the application for the WiFi shield.
to:
  • download the HDG104 firmware first, the one called "wifi_dnld.elf". The H&D module doesn't have a static memory so, you'll upload its firmware to an external dataflash. To do that the H&D firmware will be uploaded on the AT32UC3 controller at first then it will take care to transfer the firmware into the HDG104 module's dedicated dataflash.
  • Once the firmware for the HDG104 is uploaded, you're ready to the download inside the AT32UC3 the WiFi shield firmware. The "wifiHD.elf" is the file that contains the the application for the WiFi shield.
Changed lines 17-18 from:

You need this software to update the code on the 32UC3A1256. Fortunately, it's free.

to:

You need this software to update the code on the 32UC3. Fortunately, it's free.

Changed lines 37-38 from:

'''Make sure to note that you need at least version (whatever version you need) of dfu-programmer, and explain how to update on macPorts:

to:

Make sure to note that you need at least version (whatever version you need) of dfu-programmer, and explain how to update on macPorts:

Changed lines 50-54 from:

The firmware is also located with the Arduino software in the /hardware/arduino/firmwares/arduino-usbserial folder. On OSX, right-click or command-click on the Arduino application and select "show package contents" to find this folder.

Not sure I understand this, Federico, please clarify

to:

The firmware is also located with the Arduino software in the /hardware/arduino/firmwares/arduino-wifishield folder. On OSX, right-click or command-click on the Arduino application and select "show package contents" to find this folder.

Changed line 55 from:

On Windows use the Flip software Provide a link here provided by Atmel to program the device using the DFU mode (Device Firmware Update). Flip supplies a utility called batchisp that you'll use to make the upgrade. Once you've installed Flip, open a command prompt (CMD) and reach the following path contained inside the Flip installation directory, usually:

to:

On Windows use the Flip software provided by Atmel to program the device using the DFU mode (Device Firmware Update). Flip supplies a utility called batchisp that you'll use to make the upgrade. Once you've installed Flip, open a command prompt (CMD) and reach the following path contained inside the Flip installation directory, usually:

Changed lines 72-111 from:

The dfu-programmer Provide a link here for download (make sure that the version is 0.5.4 or later) is a command line utilty, so in order to use it you need to open a terminal on your system. First step is to convert the .elf files in .hex ones, that is the only format supported by the dfu-programmer. For doing this you'll use an avr tool contained inside the Arduino installation folder at the following path in Linux: ~/Arduino/hardware/tools/avr/bin

On OSX,it's located at: /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/

Open a terminal window, change directories to the directory above, and type:

Provide the path to the Wifi firmware in general please.

./avr-objcopy --output-target=ihex /home/fede/WiFi_firmware/wifi_dnld.elf /home/fede/WiFi_firmware/wifi_dnld.hex

./avr-objcopy --output-target=ihex /home/fede/WiFi_firmware/wifiHD.elf /home/fede/WiFi_firmware/wifiHD.hex

Now you are able to download the firmware on the shield.

Connect the J3 jumper to put the shield in the programming mode, then plug it to the computer through the mini USB socket. as follows:

sudo dfu-programmer at32uc3a1256 erase This will erase the device

Press the reset button on the shield then type: sudo dfu-programmer at32uc3a1256 flash --suppress-bootloader-mem wifiHD.hex

At this point I got "Attempted to write to illegal memory address. Note that you need the most recent version of dfu-programmer"

The output will be something like this: Validating... 234526 bytes used (92.35%)

Press the reset button again, then type: sudo dfu-programmer at32uc3a1256 start This will start the application donwloaded inside your device. Once done this steps you can remove the J3 jumper to exit from the programming mode, hit the reset button again and your upgraded shield is ready to work.

detail the procedure for the HDG104 first, then describe uploading the Atmega32 firmware. Tell them that if they don't need to upgrade the HDG104 firmware, they can skip those steps.

Use the same procedure if you need to upgrade the HDG104 WiFi module driver. After doing this make sure to download the shield firmware too, for the reasons described above.

to:

On Linux and Mac we wrote a script that once executed will do all the steps for you, driving into the procedure. The script is a command line utility, so in order to use it you need to open a terminal on your system.

The WiFi shield upgrading script also make use of the dfu-programmer that you need to install on your system previously (make sure that the version is 0.5.4 or later).

Open a Terminal window and move to the path were you saved the script and type as following to get the help:

  • Mac: ./ArduinoWifiShield_upgrade.sh -h

  • Linux: sudo ./ArduinoWifiShield_upgrade.sh -h

On Linux you need to run the script as root in order to access correctly to the USB DFU peripherals.

With the -a parameter you'll pass to the script the current Arduino installation path, for example: /home/user/Coding

With the -f parameter you'll make the choice of which firmware install:

  • shield to upgrade only the shield firmware
  • all to upgrade both the firmwares

May 29, 2012, at 01:02 PM by Tom Igoe -
Added lines 37-46:

'''Make sure to note that you need at least version (whatever version you need) of dfu-programmer, and explain how to update on macPorts:

To update macPorts:

sudo port selfupdate

To update dfu-programmer and other ports:

sudo port upgrade outdated

Changed lines 100-101 from:

At this point I got "Attempted to write to illegal memory address."

to:

At this point I got "Attempted to write to illegal memory address. Note that you need the most recent version of dfu-programmer"

Deleted line 114:
May 26, 2012, at 12:37 AM by Tom Igoe -
May 26, 2012, at 12:37 AM by Tom Igoe -
Added lines 90-91:

At this point I got "Attempted to write to illegal memory address."

May 26, 2012, at 12:02 AM by Tom Igoe -
Changed lines 3-14 from:

The WiFi shield provides wireless internet connectivity using to the IEEE 802.11 b/g standard. It has an onboard HDG104 module, a TCP/IP stack and APIs for the Arduino board to which it is connected, are provided by an ATmega32UC3A1256.

Both the chipsets are upgradable by uploading firmware through the onboard mini USB connector. In particular you can upgrade:

  • the HDG104 WiFi module firmware if the manufacturer provide a new firmware for the device.
  • the ATmega32UC3A1256 if there is available an improvement of the WiFi shield firmware. If you are a proficient C coder you can alter the source to make a derivative firmware that, for example, implements new network services.

If you wish to upgrade the firmware for both the HDG104 and ATmega32UC3, these are the steps:

  • download the HDG104 firmware. Because the H&D module doesn't have a static memory, the firmware need to be downloaded on an external dataflash. So, when you download the "wifi_dnld.elf" file on the board, you are programming the UC3 microcontroller, that once the download is done, the application will transfer the contents from its flash to the external dataflash.
  • Once the firmware for the HDG104 is stored inside the external dataflash you are ready to the download inside the ATmega32UC3 the firmware that governs the operation of the WiFi shield. The "wifiHD.elf" is the file that contains the the application for the WiFi shield.
to:

The WiFi shield provides the WiFi the connectivity according to the IEEE 802.11 b/g standard using the HDG104 module. The TCP/IP stack and the APIs for WiFi library are managed by the AT32UC3A1256 (ATmega32 for short) microcontroller on the shield. Your Arduino connects to the shield using SPI through the WiFi library.

Both the AT32UC3A1256 and the HDG104 module are upgradable by uploading a new firmware through the mini USB connector. This tutorial shows you how to upgrade:

  • the HDG104 WiFi module firmware, when the manufacturer provides a new firmware binary for their device.
  • the AT32UC3A1256 when there is a new version of the firmware available from Arduino. Alternately, if you are an expert C programmer you can customize the official source code to make a derivative firmware for yourself. Check the WiFi library repository for the source code.

Here's how to upgrade both firmwares:

  • download the HDG104 firmware first. The H&D module doesn't have a static memory, you'll upload its firmware to the XXX first, and then the ATmega32 controller will upload it into the HDG104 module. When you download the "wifi_dnld.elf" file on the board, you are programming the ATmega32 microcontroller so that it can load the firmware into an external dataflash for the HDG104 WiFi module.
  • Once the firmware for the HDG104 is uploaded, you're ready to the download inside the ATmega32 the firmware. The "wifiHD.elf" is the file that contains the the application for the WiFi shield.
Changed lines 17-18 from:

This is the software that will update the code on the 32UC3A1256

to:

You need this software to update the code on the 32UC3A1256. Fortunately, it's free.

Changed lines 38-39 from:

The latest version is here https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares Choose the version that is suitable for the WiFi shield.

to:

The latest version is here https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares Choose WiFi shield firmware.

Changed lines 42-44 from:
to:

Not sure I understand this, Federico, please clarify

Changed lines 47-51 from:

On Windows you can use a software tool provided by Atmel to program the device using the DFU mode (Device Firmware Update), called Flip. Another utility supplied with the flip installation, named "batchisp" is the one you need to make the upgrade. Open a command prompt (CMD) and reach the following path contained inside the Flip installation directory, usually: cd C:\Program Files (x86)\Atmel\Flip 3.4.5\bin but depends where the Atmel software are installed.

Now you are able to download the firmware on the shield, before doing that, connect the J3 jumper to put the shield in the programming mode, then plug it to the computer through the mini USB socket and on the command prompt type:

to:

On Windows use the Flip software Provide a link here provided by Atmel to program the device using the DFU mode (Device Firmware Update). Flip supplies a utility called batchisp that you'll use to make the upgrade. Once you've installed Flip, open a command prompt (CMD) and reach the following path contained inside the Flip installation directory, usually: cd C:\Program Files (x86)\Atmel\Flip 3.4.5\bin but it depends where the Atmel software is installed. Now you are able to download the firmware on the shield.

Connect the J3 jumper to put the shield in the programming mode, then plug it to the computer through the mini USB socket. On the command prompt type:

Added lines 55-56:

Don't you need to remove the J3 jumper and confirm that the firmware is loaded into dataflash first?

Changed lines 60-62 from:

Once the upgrade is done you can remove the J3 jumper and after a restart the shield is ready to be used. Look at the Optional section at the bottom of this page for more checking after the upgrade.

to:

Once the upgrade is done you can remove the J3 jumper and restart the shield. Now it's ready to be used. Look at the Optional section at the bottom of this page for details on checking if the firmware upgrade was a success.

Changed lines 64-74 from:

The dfu-programmer (make sure that the version is 0.5.4 or later) is a command line utilty, so in order to use it you need to open a terminal on your system. First step is to convert the .elf files in .hex ones, that is the only format supported by the dfu-programmer. For doing that we use an avr tool contained inside the Arduino installation folder at the following path: ~/Arduino/hardware/tools/avr/bin and type:

./avr-objcopy --output-target=ihex /home/fede/WiFi_firmware/wifiHD.elf / /home/fede/WiFi_firmware/wifiHD.hex

./avr-objcopy --output-target=ihex home/fede/WiFi_firmware/wifi_dnld.elf /home/fede/WiFi_firmware/wifi_dnld.hex

Now you are able to download the firmware on the shield, before doing that, connect the J3 jumper to put the shield in the programming mode, then plug it to the computer through the mini USB socket. Follow this steps:

dfu-programmer sudo dfu-programmer at32uc3a1256 erase

to:

The dfu-programmer Provide a link here for download (make sure that the version is 0.5.4 or later) is a command line utilty, so in order to use it you need to open a terminal on your system. First step is to convert the .elf files in .hex ones, that is the only format supported by the dfu-programmer. For doing this you'll use an avr tool contained inside the Arduino installation folder at the following path in Linux: ~/Arduino/hardware/tools/avr/bin

On OSX,it's located at: /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/

Open a terminal window, change directories to the directory above, and type:

Provide the path to the Wifi firmware in general please.

./avr-objcopy --output-target=ihex /home/fede/WiFi_firmware/wifi_dnld.elf /home/fede/WiFi_firmware/wifi_dnld.hex

./avr-objcopy --output-target=ihex /home/fede/WiFi_firmware/wifiHD.elf /home/fede/WiFi_firmware/wifiHD.hex

Now you are able to download the firmware on the shield.

Connect the J3 jumper to put the shield in the programming mode, then plug it to the computer through the mini USB socket. as follows:

sudo dfu-programmer at32uc3a1256 erase

Changed lines 94-95 from:

Press the reset button again ant then type: dfu-programmer sudo dfu-programmer at32uc3a1256 start

to:

Press the reset button again, then type: sudo dfu-programmer at32uc3a1256 start

Added lines 98-99:

detail the procedure for the HDG104 first, then describe uploading the Atmega32 firmware. Tell them that if they don't need to upgrade the HDG104 firmware, they can skip those steps.

Added line 103:
May 18, 2012, at 11:18 PM by Scott Fitzgerald -
May 18, 2012, at 11:17 PM by Scott Fitzgerald -
Changed lines 3-12 from:

The WiFi shield provide the WiFi the connectivity according to the IEEE 802.11 b/g standard by mounting the HDG104 module, the TCP/IP stack and the APIs, for the Arduino board on which is connected, are provided by the ATmega32UC3A1256.

Both the chipset are upgradable, by uploading a new firmware through the mini USB connector. In particular you will upgrade:

  • the HDG104 WiFi module firmware only if the manufacturer provide a new firmware for their device.
  • the ATmega32UC3A1256 if there is available an improving of the WiFi shield firmware. Or if you are an expert C coder you can customize the official source code to make a derivative firmware that, for example, implements new network services.

Taking the case where you want to upgrade both the firmware, the order to follow is the following:

  • download the HDG104 firmware first. Because the H&D module doesn't have a static memory, its firmware need to be downloaded on an external dataflash. So, when you download the "wifi_dnld.elf" file on the board, you are programming the UC3 microcontroller, that once the download is done, the application will transfer the contents from its flash to the external dataflash.
to:

The WiFi shield provides wireless internet connectivity using to the IEEE 802.11 b/g standard. It has an onboard HDG104 module, a TCP/IP stack and APIs for the Arduino board to which it is connected, are provided by an ATmega32UC3A1256.

Both the chipsets are upgradable by uploading firmware through the onboard mini USB connector. In particular you can upgrade:

  • the HDG104 WiFi module firmware if the manufacturer provide a new firmware for the device.
  • the ATmega32UC3A1256 if there is available an improvement of the WiFi shield firmware. If you are a proficient C coder you can alter the source to make a derivative firmware that, for example, implements new network services.

If you wish to upgrade the firmware for both the HDG104 and ATmega32UC3, these are the steps:

  • download the HDG104 firmware. Because the H&D module doesn't have a static memory, the firmware need to be downloaded on an external dataflash. So, when you download the "wifi_dnld.elf" file on the board, you are programming the UC3 microcontroller, that once the download is done, the application will transfer the contents from its flash to the external dataflash.
Deleted line 86:
May 18, 2012, at 06:27 PM by Scott Fitzgerald -
Changed lines 1-87 from:

Upgrading the WiFi shield firmware

to:

Upgrading the WiFi shield firmware

The WiFi shield provide the WiFi the connectivity according to the IEEE 802.11 b/g standard by mounting the HDG104 module, the TCP/IP stack and the APIs, for the Arduino board on which is connected, are provided by the ATmega32UC3A1256.

Both the chipset are upgradable, by uploading a new firmware through the mini USB connector. In particular you will upgrade:

  • the HDG104 WiFi module firmware only if the manufacturer provide a new firmware for their device.
  • the ATmega32UC3A1256 if there is available an improving of the WiFi shield firmware. Or if you are an expert C coder you can customize the official source code to make a derivative firmware that, for example, implements new network services.

Taking the case where you want to upgrade both the firmware, the order to follow is the following:

  • download the HDG104 firmware first. Because the H&D module doesn't have a static memory, its firmware need to be downloaded on an external dataflash. So, when you download the "wifi_dnld.elf" file on the board, you are programming the UC3 microcontroller, that once the download is done, the application will transfer the contents from its flash to the external dataflash.
  • Once the firmware for the HDG104 is stored inside the external dataflash you are ready to the download inside the ATmega32UC3 the firmware that governs the operation of the WiFi shield. The "wifiHD.elf" is the file that contains the the application for the WiFi shield.

Download a DFU Programmer

This is the software that will update the code on the 32UC3A1256

Windows: Download Atmel's flip programmer from here

Mac: Install MacPorts following the instructions on this page. Once MacPorts is installed, in a Terminal window, type: sudo port install dfu-programmer

NB: If you've never used sudo before, it will ask for your password. Use the password you login to your Mac with. sudo allows you to run commands as the administrator of the computer

Linux: from a command line type

sudo apt-get install dfu-programme

or

sudo aptitude install dfu-programmer

depending on your distribution.

Download updated firmware for the 32UC3A1256

The latest version is here https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares Choose the version that is suitable for the WiFi shield.

The firmware is also located with the Arduino software in the /hardware/arduino/firmwares/arduino-usbserial folder. On OSX, right-click or command-click on the Arduino application and select "show package contents" to find this folder.

Windows procedure

On Windows you can use a software tool provided by Atmel to program the device using the DFU mode (Device Firmware Update), called Flip. Another utility supplied with the flip installation, named "batchisp" is the one you need to make the upgrade. Open a command prompt (CMD) and reach the following path contained inside the Flip installation directory, usually: cd C:\Program Files (x86)\Atmel\Flip 3.4.5\bin but depends where the Atmel software are installed.

Now you are able to download the firmware on the shield, before doing that, connect the J3 jumper to put the shield in the programming mode, then plug it to the computer through the mini USB socket and on the command prompt type:

  • batchisp.exe -device AT32UC3A1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/arduino/firmware/WiFi/wifi_dnld.elf program verify start reset 0

To download the HDG104 WiFi module firmware inside the dataflash.

  • batchisp.exe -device AT32UC3A1256 -hardware usb -operation erase f memory flash blankcheck loadbuffer /Arduino/hardware/arduino/firmware/WiFi/wifiHD.elf program verify start reset 0

To download the WiFi shield firmware on the AT32UC3A1256.

Once the upgrade is done you can remove the J3 jumper and after a restart the shield is ready to be used. Look at the Optional section at the bottom of this page for more checking after the upgrade.

Linux and Mac procedure

The dfu-programmer (make sure that the version is 0.5.4 or later) is a command line utilty, so in order to use it you need to open a terminal on your system. First step is to convert the .elf files in .hex ones, that is the only format supported by the dfu-programmer. For doing that we use an avr tool contained inside the Arduino installation folder at the following path: ~/Arduino/hardware/tools/avr/bin and type:

./avr-objcopy --output-target=ihex /home/fede/WiFi_firmware/wifiHD.elf / /home/fede/WiFi_firmware/wifiHD.hex

./avr-objcopy --output-target=ihex home/fede/WiFi_firmware/wifi_dnld.elf /home/fede/WiFi_firmware/wifi_dnld.hex

Now you are able to download the firmware on the shield, before doing that, connect the J3 jumper to put the shield in the programming mode, then plug it to the computer through the mini USB socket. Follow this steps:

dfu-programmer sudo dfu-programmer at32uc3a1256 erase This will erase the device

Press the reset button on the shield then type: sudo dfu-programmer at32uc3a1256 flash --suppress-bootloader-mem wifiHD.hex

The output will be something like this: Validating... 234526 bytes used (92.35%)

Press the reset button again ant then type: dfu-programmer sudo dfu-programmer at32uc3a1256 start This will start the application donwloaded inside your device. Once done this steps you can remove the J3 jumper to exit from the programming mode, hit the reset button again and your upgraded shield is ready to work.

Use the same procedure if you need to upgrade the HDG104 WiFi module driver. After doing this make sure to download the shield firmware too, for the reasons described above.

Optional: to test if the WiFi shield has been updated, you can connect an USB to Serial adapter to the FTDI socket and access to the serial debug terminal if the startup message contains the updated date. Look at the apposite page to learn more abot the serial debug option.

May 14, 2012, at 08:41 PM by Federico -
Added line 1:

Upgrading the WiFi shield firmware

Share