If you are reading this, chances are you are like most folks that have picked up an Arduino Uno or Mega recently and discovered that on occasion they will just stop working. When it happened to us the first time we thought it was a fluke, when it happened to us a second time we thought we had broken something, and when it happened to us the third time we just got flat out angry.
Up until this point we had decided not to carry any of the newer devices because of the device occasionally just ceasing to function. It may be catchy but without a way to cure it you just have to go out and buy another Uno or Mega and wait fearfully for it to happen again. Granted it appears that the most susceptible to this problem are those tinker a bit more than the usual hobbyist, but being part of that elite group of nerds who break stuff we decided to figure out how to fix the problem and share it so that no one has to go through the amount of pain it took to get to this point.
At first, we thought we had blown the AMEGA328 chip, but changing the ATMEGA328P-PU never seemed to fix the problem. The driver kept reading as an “unknown driver present” or “problems with the current device”. This caused no connectivity with the Uno, and though it blinked away there was nothing we could do to actually use it.
After many painful hours of digging what we found was that Since the change from the old product line to the new, Arduino made a transition from a dedicated USB to Serial FTDI based communication chip to the new ATMEGA8U2 and ATMEGA16U2. Now for a while, we have been skeptical about these chips ( due to the two Uno boards that died within the first week we got them). So we took the liberty to find out the cause and solution to this problem. Hopefully with these instructions, you too can bring your dead Uno/Mega back to life!
Now you may ask yourself how on earth do I fix an SMD part if it is corrupted? Well, Atmel was kind enough to provide an answer to this, FLIP (Windows) or DFU Programmer (Mac OS X and Linux). FLIP can be downloaded from here http://www.atmel.com/tools/FLIP.aspx . For DFU Programmer use the following.
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-programme
sudo aptitude install dfu-programmer
depending on your distribution
(Steps can be found for Mac and Linux on the following Arduino page for installing hex files http://arduino.cc/en/Hacking/DFUProgramming8U2 . Credit goes to Arduino for Mac and Linux programming portions )
These little nifty programs allowed connection to the chip from the USB, provided getting into DFU mode (Depends on which version, look at following picture to determine which version Uno you own).
The area circled red shows the version Uno you have, If it’s version One or SMD, no indication will show. Version two is shown with a R2, version 3 shown with R3
After the device is plugged in via USB, the two red circles at the top need to be shorted for a second to enter into DFU mode, this step is required for all versions. If you have version one, then the following step needs to be done prior to removing the short.
For the Arduino Mega 2560
For version One only
This version requires a little bit extra. The two pads located on the back in the red circle need to be shorted after the reset pin on the front is shorted to ground. Once these are shorted, remove the short for the reset on the front. The device should come up as DFU (see image below to determine if in DFU). Once in DFU, you can remove the short on the pads on the back
Once you have DFU activated, the device manager will show the new connection. This connection called Arduino Uno DFU needs a drive for installation. The driver can be found inside the FLIP program download. (Follow images for clearer instructions on finding the driver).
Click on devices and printers menu under the Windows start program. Image shows that you have entered into DFU mode but no driver is installed.
Right click on DFU and click properties. Click properties at the bottom right of the window that popped up. The next window may/may not need the Change settings button click, depending on your version of Windows (found in the lower left corner). Once done, click the Update Driver button.
Browse for the driver located wherever you saved the Atmel FLIP file. (Found in the AtmelFlip 3.4.5usb) Click next to begin install of the driver.
A warning message from Windows Security may pop up, depending on version of Windows. This is normal (some drivers do not have a signature file for Windows, hence the warning). Click the install this driver software anyway to continue with the install
Driver is installed and shows a new device, AT90USB82. Even thought the chipset is not the Atmega8u2, this driver will work for programming multiple different types of chipsets.
Once the driver is installed, you will be able to use the FLIP program to reinstall the HEX files. The following pictures show the process for installing the original HEX file back into the Atmega8u2 chip. The process for updating the Atmega chip is the same up to this point; the only change is the HEX file.
Open the FLIP program, this program should look something like the image above. First we want to load the HEX file located in the Arduino program download. Make sure to select the correct HEX file, there are multiple files and if the wrong one is selected, either the chip will not work the way intended or will not load the new HEX. (Atmega HEX is much bigger for the R3 Uno, so cannot load onto the 8u chip. This is why the 16u replaced the chip.)
Once the HEX has been selected, click the image that looks like an IC chip (arrow pointing up). Locate the correct device that Windows installed, in this case the AT90USB82 driver was installed. There is an Atmega8u2 device in the list, but cannot connect to the USB device due to no driver being found.
Next connect to the device by clicking the USB cord and clicking USB (many of other ways to connect, have not explore other ways at the moment). A window with Open, Close, and Cancel will pop up. Click Open and the device should connect to the Uno.
If connected correctly, a lot of the grayed out sections should be active now. The selection on the screen should show the HEX file selected and other selections, along with information on the current device. The only buttons needed should be the Run button (To install the HEX file) and the Start Application button (to restart the device after install).
After you finish the upload of the new HEX, restart the Uno by unplugging it and replug the device back in. If you have drives for the Uno already installed, you should be good to go. If not, find the drivers for the Uno located inside the Arduino program folder to install the Uno driver. Hope this guide helped with your problems and happy programming.
As always, feel free to email us or comment if any questions come up throughout the process and we will help in any way we can.
Still can’t get yours working?
Don’t worry we sell a variety of Arduino boards, and cover them with a 90 day warranty on top of the manufacturers warranty (which is serviced in Italy).