Upgrading the Arduino Uno 8U2 using Fli

The instructions on the Arduino DFU update page are pretty vague when it comes to updating to the latest firmware using the Atmel Flip utility. Here’s what I did to get my Uno 8U2 firmware updated using Windows XP:

  1. Install Flip from the Atmel webpage. If you don’t already have a JRE, you probably want the 20 megabyte package that includes one.
  2. Download the 8U2 firmware. That’s the “Arduino-usbserial-uno.hex” file. The “UNO-dfu_and_usbserial_combined.hex” is the Arduino Uno bootloader firmware for the 328p. If you try installing the 328p firmware onto the 8U2 in Flip, you’ll get an error dialog:
    class com.atmel.flipGui.FileMenuHandler
    Address is out of range.
    
  3. I ended up cutting & pasting the hex file contents into a text editor because I couldn’t figure out how to download a single file from github, and I didn’t want the whole 200 megabyte wad.
  4. Hook up wires and touch them to the right spots on the Uno at the right time as described in this Arduino forum post by pluggy.

    Update: Pluggy’s image has disappeared. Here it is:
    flasheo8u2-1-300x216
    I found it at www.ardumania.es/reflashear-el-8u2/.

    You’ll know you did it right when Windows detects a new device. It took me a few tries to keep the first wire steady enough when touching the second wire. Make sure you’re going to the right pads – you could short out your Uno if you touch the wrong place!

  5. After Windows detects the new device, you don’t have to hold the wires in place any more. Move them to the side so you don’t accidentally short out something.
  6. When the Windows device installer comes up, select “have disk” and install the Atmel USB driver. By default the Atmel USB driver is installed in C:\Program Files\Atmel\Flip 3.4.2\usb\atmel_usb_dfu.inf
  7. Notice that the driver is AT90USB82, not ATmega8U2
  8. Although it tells you that you have to reboot XP when you install the driver, I didn’t bother.
  9. Start Flip from the Program menu
  10. File->Load HEX file->Arduino-usbserial-uno.hex
  11. Device->Select->AT90USB82
  12. Settings->Communication->USB and press Open
  13. At this point, you should be ready to program. Press the “Run” button on the main screen.
  14. Programming is quick, taking about 4 seconds. After it’s done, remove the two wires you put in earlier, then unplug the USB cord and reinsert it.

Once you’ve done that, your Uno should be out of DFU mode and back into normal mode.

You can go to My Computer->Manage->Device Manager->Ports (COM & LPT), right-click on “Arduino UNO” and select “Properties”. Under the Details tab, Firmware Revision should now be 00.01.

Update: Someone mentioned they couldn’t find the atmel_usb_dfu.inf file. Looks like there’s a copy here.

19 Responses to Upgrading the Arduino Uno 8U2 using Fli

  1. Kyle says:

    Hi, I’m new to using Arduino and am trying this as a first project. I’ve followed these steps successfully, and I’m not exactly sure what to do next. I’ve tried giving the Uno some sample code I found and it compiles, but won’t upload. The error says:

    avrdude: stk500_getsync(): not in sync: resp=0x00
    avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

    If you could give some more guidance to a complete noobie, I’d appreciate it. Thanks for the tutorials so far.

  2. colin says:

    For one of my projects I need to get the Arduino appear as a 3D mouse rather than a serial device.

    Has anyone tried to reprogram / reconfigure the Arduino-usbserial-uno.hex code to appear as a HID device – but still allow the ATmega8U2 to upload sketches to the Arduino as normal?

    I know Teensy managed to have this an option on their devices.

  3. MikeMike T. says:

    Thank you – thank you – thank you!!

    This worked perfectly!

  4. MikeMike T. says:

    Oh one slight thing, I don’t know if it is the particular version of flip I downloaded, but in step 10 where you say: “File->Load HEX file->Arduino-usbserial-uno.hex” this is grayed out, and can’t be selected.

    I had to do step 11 first “Device->Select->AT90USB82” then I could select the .hex file

    Other than that, all went very well! Again thank you!

  5. Hui says:

    Thanks a lot for your post helped me a lot.

    One addition the file name and the path to the hex file should have no special charakters. When you get message “cannot open file” in flip change directory or file name.

  6. chris says:

    hi not sure if this post will get checked however;
    im using your instructions to get my arduino uno out of DFU mode (not sure how i got into it), and when i press Run in FLIP i get a Blank Check error at 0x0000.. do you have any tips to go about this? I also tried running FLIP in admin mode. 😦
    everything else in the instructions seems to have worked fine, i skipped the wire-touching as my board was already in DFU mode, should i go back and start again from there? :S
    cheers

    • andrewmemory says:

      You might want to try not selecting the “Blank Check” box – that will prevent the test that does the blank check. According to the FLIP user manual it looks like there needs to be some config for blank checking to work.

  7. Nav says:

    Hi Andrew

    I tried this exactly as how you described it and it all went well. Thank you very much for the instructions.

    I am using Windows 7 and I am not sure where to find the version number in Device Properties. I searched through all the fields in the Details tab of the Properties but I couldn’t see any field which said “version 00.01”.

    Also, I had to do step 11 before step 10, but that was easy to figure out.

    Thank you very much for this post and it has helped me a lot.

    Kind regards

    • andrewmemory says:

      Glad it helped! I don’t see a Version field in the Details tab on Windows 7 either – not sure why. It does seem to be specific to the driver – maybe the Windows 7 driver is different from the XP one?

  8. […] usb interface.  Although I used an arduino UNO and reprogrammed it to act like a USB keyboard (via this site), I’ll probably switch to an arduino leonardo sometime and I would recommend doing that from […]

  9. AnotherDave says:

    my board is an Uno R3 with ATmega16U2, not 8. I’m running Windows XP. I was hoping the differences would not matter much. At Step 7 the driver that loaded was “ATmega16U2” and not AT90USB82. I loaded the Hex file., Flip would not open a USB comm for AT90USB82 but it would let me do so for ATmega16U2. I also tried this for AT90USB162 and it did not work. So with USB comm open for ATmega16U2 I proceeded (somewhat pessimistically) to step 13. I was able to run but the result is that when I went back to device manager, I no longer see Arduino under Ports (COM & LPT), and now I see Atmel USB Devices>ATmega16U2 showing up instead. In the Arduino IDE I no longer have a COM port available and no longer able to upload sketches to the board. Can you help me understand what went wrong and how to recover? I think I need to get back to DFU mode

    • AnotherDave says:

      To undo these steps I used FLIP to erase the target memory and then went back to http://arduino.cc/en/Guide/Windows and followed the instructions there to re-install the ArduinoUNO.inf driver. This appeared to bring the board back to where I started. Think I need to learn a little more before I attempt this again. I just got the board last week and no prior experience with ATmega MCUs. No need to post this unless you think someone can learn from it. Thanks

  10. Alvin Fletcher says:

    Hi there works great, got up to the last bit but when I click run it fails at verify, i have a faulty atmega8u2 as leds show receiving but not sending of data, I tried what you did and managed to get it into DFU mode but doesnt work, I would like to mention that this is a Freetronics ethermega and I am shorting the Vboot with a 10k and then quickly shorting the reset to enter DFU mode so all is well until i try to run it and it errors on verify “0x00000.

    Please if you have anything that could help please let me know

  11. Arvin says:

    Hey,

    I cannot find the atmel_usb_dfu.inf file in the stated directory.

    How can I get this file?

  12. ZLP says:

    I discovered how to download a single file from github:
    1) Navigate to the file so you see its contents
    2) Press the “Raw” button in the upper right corner.
    3) Now use your browser’s “Save As…” function to download the hex file.

    Also, the firmware link has changed to:
    https://github.com/arduino/Arduino/blob/master/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial-uno.hex

  13. regisu says:

    Awesome post. Thanks to you I can use my Uno again 🙂

  14. hiren says:

    Hello every one i have Atmega328 ,Arduino UNO r3 board .when i power on and press reset switch pin 13 LED not toggle but continues on.And when i try to load firmware it give error avrdude: stk500_getsync(): not in sync: resp=0x00. i have found so many solution from other forum like uninstall driver and reinstall, 2)select proper COM ,3) select proper board , but i have not success yet, so Please any idea how i can resolve my problem . and is my board damaged,? when i try to load code on onther board it load success fully . so no driver or com problem are there. please help.

    Thanks in advance.

Leave a comment