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.
The Arduino Uno and Mega 2560 have been shipping with the updated version of the ATmega16u2 firmware. To check which version of the firmware is on your board, connect it to your computer and follow the directions for your operating system:
This is the software that will update the code :
Windows: Download Atmel's flip programmer from here
Mac: Install MacPorts following these instructions:
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-programmer
sudo aptitude install dfu-programmer
depending on your distribution
The latest version is here
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.
You'll need to solder a 10k resistor (Brown-Black-Orange) at the back of your board in the same location as this picture.
Just like you do whenever you're programming it.
To do this, briefly bridge the reset pin with the ground. The pins are located near the USB connector, as shown in this picture. Connect them briefly with a piece of wire.
To verify you have reset the 8u2 or 16u2 chip: In the Arduino programming environment, check the list of serial ports. The serial port for your board should no longer show up.
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 atmega16u2 erase
When this command is done and you get a command prompt again, type
sudo dfu-programmer atmega16u2 flash Arduino-usbserial-uno.hex
sudo dfu-programmer atmega16u2 reset
If your board has an atmega8u2 type atmega8u2 instead of atmega16u2 in the command lines above.
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.
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.