The ATmega16U2 chip on your Arduino board acts as a bridge between the computer's USB port and the main processor's serial port. Previous versions of the Uno and Mega2560 had an Atmega8U2. It runs software called firmware (so named because you couldn't change it once it had been programmed in the chip) that can be updated through a special usb protocol called DFU (Device Firmware Update).
Here's how to update the firmware on your 16u2 in a few steps.
Check whether you need to update the firmware
The Arduino Uno and Mega 2560 have been shipping with the updated (rev. 0001) version of the ATmega8U2 firmware since around May, 2011. To check which version of the firmware is on your board, connect it to your computer and follow the directions for your operating system:
- Windows (before 7): locate the board in the Device Manager (it should be under Ports), right click on it and select "Properties"; in the resulting dialog, click on "driver details" in the "Driver" tab ("Details" in Windows 7). In one of the properties, you should the VID, PID, and the revision number.
- Mac OS X: run the System Profiler application (e.g. by selecting "About This Mac" from the Apple menu and clicking the "More Info..." button); go to the USB sheet and click on the item for the Arduino board. The firmware version is listed as "version" (e.g. 0.01 for rev. 0001).
If your board has rev. 0001 of the firmware on it, there's no need to upgrade it.
Download a DFU Programmer
This is the software that will update the code :
- Windows: Download Atmel's flip programmer from here http://www.atmel.com/tools/flip.aspx
- Mac: Install MacPorts following these instructions: http://www.macports.org/install.php#pkg Once MacPorts is installed, in a Terminal window, type sudo port install dfu-programmer
Note: 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-programmer
sudo aptitude install dfu-programmer
depending on your Linux distro.
Download updated firmware
The latest version is here https://github.com/arduino/Arduino/tree/master/hardware/arduino/avr/firmwares/atmegaxxu2
Choose the version that is suitable for your board, either arduino-usbserial/Arduino-usbserial-uno.hex or arduino-usbserial/Arduino-usbserial-mega.hex
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.
If your board is Arduino UNO R1
Connect the Arduino to your computer with a usb cable
Just like you do whenever you're programming it.
Reset the 8u2
To verify you have reset the 8u2 chip: In the Arduino programming environment, check the list of serial ports. The serial port for your board should no longer show up.
Program the chip
- Windows: use flip to upload the hex file to your board
- Mac & Linux: from a terminal window, change directories to get into the folder with the firmware. If you saved the firmware in your downloads folder on OSX, then you might type
Once there, type:
sudo dfu-programmer at90usb82 erase
When this command is done and you get a command prompt again, type
sudo dfu-programmer at90usb82 flash Arduino-usbserial-uno.hex
sudo dfu-programmer at90usb82 reset
Unplug your board and plug it back in.
Now your board should be ready and up to date. You can check this by looking in the serial port menu of the Arduino software. Your port should re-appear.
Using other firmware
The 8U2 and 16u2's flexibility allows for other firmware so your board can appear as a different USB device (MIDI controller, HID, etc.). See the tutorials below for additional information.