The ATmega16U2 chip on the 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.
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 chip: In the Arduino
programming environment, check the list of serial ports. The serial port for
your board should no longer show up.
programme FLIP to upload the hex file to your board. Use HEX file dualMOCO.hex
Select Atmega16u2 in Devices
Connect your target hardware to the host platform via USB
Select a device from the device list.
From the top menu bar, select the Device item. In the Device pull-down
click the Select item. Select Atmega16u2 in Devices.
Select a communication medium.
From the top menu bar, select the Settings item. In the Settings pull-down
click the Communication item. In the Communication cascading
select a communication medium.
medium setup dialog box pops up. Adjust the communication
and click Connect.
Select a HEX data file.
From the top menu bar, select the File item. In the File pull-down
a HEX file from the file browser. FLIP parses the HEX file and fills in
RUN the programme.
The dual MOCO/MIDI firmware is installed and recognised as a USB Audio Driver
If you wish to use the Arduino IDE you can place a jumper between pins 4 and 6 ( as shown in photo below) of the ICSP connector for the USB interface. Then unplug your board and plug it back in. You can check this by looking in the serial port menu of the Arduino software. Your port should re-appear.
Before connecting the Uno to a PC, install a jumper between pin4 and pin6 on ICSP connector for Mega8u2/16U2. With the jumper, Arduino-serial mode is initiated. You can use Arduino IDE to program mega328 on Uno.