Can not put Arduino UNO R2's atmega 16U2 into DFU mode

Hi all:

Windows 7 32 bit,
Arduino UNO R2

I had searched for a long time and I understand the standard procedure to put atmega 16u2 on UNO R2 into DFU mode. It was programmed by some other code by using usb-isp programmer. =(
I short the reset pin like this:

And reconnect usb again, but it still shown as Arduino Uno.

So I can not install usb driver in FLIP which can reprogram it.
Can anyone help me?
Many thanks!

Try shorting those pins WHILE the USB is plugged in. It "should" start the device wizard and the driver will be located in the ATMEL\FLIP\usb folder.

spcomputing:
Try shorting those pins WHILE the USB is plugged in. It "should" start the device wizard and the driver will be located in the ATMEL\FLIP\usb folder.

Hi spcomputing:
Yes I did short those pins WHILE the USB is plugged in(Shorting-->device unplugged, unshorting-->device plugged). But the device wizard did not start since the computer think it is still a Arduino Uno instead of other device. I tried "upgrade driver" and force it to select flip's driver, but computer refused to install.
I feel like the DFU mode is not activated after shorting.
Any thoughts?

After shorting/resetting go to the Device Manager and see if there is an "Unknown Device". If it is an unknown, try to install the driver from the FLIP\usb folder (atmel_dfu_usb.inf).

If not, we will need a programmer to re-install the firmware manually with AVRDUDE.

spcomputing:
After shorting/resetting go to the Device Manager and see if there is an "Unknown Device". If it is an unknown, try to install the driver from the FLIP\usb folder (atmel_dfu_usb.inf).

If not, we will need a programmer to re-install the firmware manually with AVRDUDE.

It is NOT an unknown device, so how do I re-install the firmware manually with AVRDUDE? Can you give me a reference?
Thank you!

Two ways. One it if you have a spare Arduino and (6) female/male jumpers we can turn that spare into an ISP.

Second is get a dedicated USBtinyISP or AVRISP Mk II:

Your regional Arduino/electronics distributor should have one or the other.

spcomputing:
Two ways. One it if you have a spare Arduino and (6) female/male jumpers we can turn that spare into an ISP.

Second is get a dedicated USBtinyISP or AVRISP Mk II:
USBtinyISP AVR Programmer Kit (USB SpokePOV Dongle) [v2.0] : ID 46 : $22.00 : Adafruit Industries, Unique & fun DIY electronics and kits
http://www.mouser.com/ProductDetail/Olimex-Ltd/AVR-ISP-MK2/?qs=sGAEpiMZZMuk%252b7HJuOzfqIbZfdpCrKc6fQQeO1dzyzI%3D

Your regional Arduino/electronics distributor should have one or the other.

Yes I do have a spare arduino and I always use it as an ISP.
Are you talking about programming new firmware into ATmega 168?
And the firmware is in \arduino-1.0.1\hardware\arduino\firmwares\UNO-dfu_and_usbserial_combined.hex?
So I use command in README.txt

avrdude -p at90usb82 -F -P usb -c avrispmkii -U flash:w:UNO-dfu_and_usbserial_combined.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

it returns an error:

avrdude: usbdev_open():did not find any USB device "usb"

shall I specify something on USB?

Also I tried:

avrdude -P comport -b 19200 -c avrisp -p m16u2 -v -e -U flash:w:UNO-dfu_and_usbserial_combined.hex -U lock:w:0x0F:m

I understand m16U2 is not in parts list, any idea which part name shall I use?

Please advise.
Thank you!

You were so close, but I like your initiative.

Change

avrdude -p at90usb82 -F -P usb -c avrispmkii -U flash:w:UNO-dfu_and_usbserial_combined.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

to (at90usb162 for the 16u2)...

avrdude -p at90usb162 -F -P usb -c avrispmkii -U flash:w:UNO-dfu_and_usbserial_combined.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

...or "-c arduino" if you are using Arduino as ISP. I have successfully re-bootloaded my Uno's 16u2 this way.

You need to verify what UNO board you have again. There are three basic versions of the UNO.

The original UNO uses the 8U2 chip for USB. To put this into DFU mode you need to short two different locations at the same time. This original version board has the 8U2 chip in a horizontal orientation.
See http://arduino.cc/forum/index.php/topic,111.0.html

The UNO R2 also uses the 8U2 chip for USB. But it has added a resistor to pull-down the HWB signal. So all you need to short is the RESET to ground on the 8U2 to put it into DFU mode. This version board has the 8U2 in a diagonal orientation.

Only the UNO R3 uses the 16U2 chip for USB. This also includes the resistor pull-down for the HWB signal on the 16U2. So all you need to short is the RESET to ground on the 16U2 to put it into DFU mode. This version has the reset button next to the USB connector.

Please verify your board version and try the appropiate steps.

hiduino:
You need to verify what UNO board you have again. There are three basic versions of the UNO.

The original UNO uses the 8U2 chip for USB. To put this into DFU mode you need to short two different locations at the same time. This original version board has the 8U2 chip in a horizontal orientation.
See http://arduino.cc/forum/index.php/topic,111.0.html

The UNO R2 also uses the 8U2 chip for USB. But it has added a resistor to pull-down the HWB signal. So all you need to short is the RESET to ground on the 8U2 to put it into DFU mode. This version board has the 8U2 in a diagonal orientation.

Only the UNO R3 uses the 16U2 chip for USB. This also includes the resistor pull-down for the HWB signal on the 16U2. So all you need to short is the RESET to ground on the 16U2 to put it into DFU mode. This version has the reset button next to the USB connector.

Please verify your board version and try the appropiate steps.

As you are correct, AVRDUDE will do a chip id "SIG" verification based on the .conf file. "Expected signature..." and such. The 8u2 and 16u2 will sort either way. It's all good.

hiduino:
You need to verify what UNO board you have again. There are three basic versions of the UNO.

The original UNO uses the 8U2 chip for USB. To put this into DFU mode you need to short two different locations at the same time. This original version board has the 8U2 chip in a horizontal orientation.
See http://arduino.cc/forum/index.php/topic,111.0.html

The UNO R2 also uses the 8U2 chip for USB. But it has added a resistor to pull-down the HWB signal. So all you need to short is the RESET to ground on the 8U2 to put it into DFU mode. This version board has the 8U2 in a diagonal orientation.

Only the UNO R3 uses the 16U2 chip for USB. This also includes the resistor pull-down for the HWB signal on the 16U2. So all you need to short is the RESET to ground on the 16U2 to put it into DFU mode. This version has the reset button next to the USB connector.

Please verify your board version and try the appropiate steps.

wait a sec, did you said UNO R2 use 8U2? I thought it is 16U2.....
Thanks for you reply!

hiduino:
You need to verify what UNO board you have again. There are three basic versions of the UNO.

The original UNO uses the 8U2 chip for USB. To put this into DFU mode you need to short two different locations at the same time. This original version board has the 8U2 chip in a horizontal orientation.
See http://arduino.cc/forum/index.php/topic,111.0.html

The UNO R2 also uses the 8U2 chip for USB. But it has added a resistor to pull-down the HWB signal. So all you need to short is the RESET to ground on the 8U2 to put it into DFU mode. This version board has the 8U2 in a diagonal orientation.

Only the UNO R3 uses the 16U2 chip for USB. This also includes the resistor pull-down for the HWB signal on the 16U2. So all you need to short is the RESET to ground on the 16U2 to put it into DFU mode. This version has the reset button next to the USB connector.

Please verify your board version and try the appropiate steps.

And as I posted before, I did short reset to ground but it won't change to DFU mode, that's why I'm trying to program firmware directly into 8U2. Looks like not a lot of people have this problem, mostly it can be put it into DFU mode.
I don't know what I did to that chip, hopefully it can be revived.

Just to be sure, I thought I had some UNO R2 units but it turns out they were the original 'R1' versions. Which require an additional step to before it can be put into DFU mode. Just shorting the RESET to ground alone will not work with this version of the boards. See image attached does your board have the two pads circled in red? If so, those need to be shorted together at the same you short the RESET to GND.

spcomputing:
You were so close, but I like your initiative.

Change

avrdude -p at90usb82 -F -P usb -c avrispmkii -U flash:w:UNO-dfu_and_usbserial_combined.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

to (at90usb162 for the 16u2)...

avrdude -p at90usb162 -F -P usb -c avrispmkii -U flash:w:UNO-dfu_and_usbserial_combined.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

...or "-c arduino" if you are using Arduino as ISP. I have successfully re-bootloaded my Uno's 16u2 this way.

It still doesn't work.

Here is what I did. First connect Arduino ISP(it is my UNO R3) and target board(UNO R2), then put following command into command window:

avrdude -P com11 -b 19200 -c avrisp[glow=yellow,2,300] -p at90usb82[/glow] -v -e -U flash:w:UNO-dfu_and_usbserial_combined.hex -U lock:w:0x0F:m

then connect usb cable to R2, computer recognize it as Communication Port(COM4) ( which is not right, but my R3 works well, it shows as Arduino Uno R3(COM11))
I tried to program bootloader into mega328p chip by Arduino IDE, but no response(resp=0x00).

did I do anything wrong?

If you are using Arduino as ISP, you will need to change -c avrispmkii to -c arduino.

I think that was AVRDUDE's confusion with com4.

I have a same problem, with my arduino uno r3...
I plugged in, and my pc identified an unknown device. I installed with the IDE's driver, because it's not in DFU mode.
But, when I want to switch to DFU with the pins, it doesen't change. My computer still recognize as Arduino Uno R3, not as a new device..
Any Idea?

Does it (Windows) notify you with a sound (like plugging in a USB device)?

I'm experiencing the same problem - my Uno R3's 16U2 will not go into DFU mode - and I'd like to try using another Uno as an ICSP programmer to flash the 16U2. I can't find any tutorials/instructions explaining how to connect the second uno to the 16U2's ICSP header though. Could anyone point me in the right direction?

Can I follow the instructions on http://arduino.cc/en/Hacking/Upgrading16U2Due, but use this avrdude command?

avrdude -p at90usb162 -F -P usb -c arduino -U flash:w:UNO-dfu_and_usbserial_combined.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

Is this likely to break anything further than it already has been? :astonished: