Can't get Arduino Uno r3 to enter DFU mode

Hello all,
For my most recent project, I'm going to be making a 3d printed macro keypad with the Arduino Uno r3. I researched the proper procedure to making the Arduino recognizable as a USB keyboard and tried to get my Uno r3 to enter DFU mode. However, when I short the two pin headers closest to the reset button, all it does is restart the Arduino, exactly how it would if you just pressed the reset button. Device manager does NOT appear, and it is still recognized as an Uno r3, not in DFU mode. If anyone has any idea why this is happening or how I can fix it, please respond. I will appreciate all the help that I can get.

P.S - Please don't tell me to get a Leonardo!! I've used Uno r3 in all of my projects and have a couple of spares, so I will not be buying a different board when it is physically possible with the ones that I have!!

Are you using the isp connector footprint near the USB connector? Depending on what versio of Uno you have, that may NOT be near the reset button...

YES, it is the ISP connector near the USB connector. It just also happens to be near the reset button on my board as well. Here is a picture of the type of board that I have. Hopefully that will help you to help me!

Sorry, I couldn't attach the picture, but I can tell you that I'm using an Arduino Uno r3 made by Elegoo.

I know this is an old topic but I happen to have the exact same problem.
Was this ever solved?

Many of the "Uno R3" clones are actually not clones, and use a CH340G or CP2102 serial interface chip; these cannot be put into DFU mode or otherwise reprogrammed. Only boards that use the 16u2 or 8u2 can be reprogrammed (on the plus side, it is harder to damage CH340G/CP2102 - the 16u2 is easily damaged by abuse of the power rails, and sometimes even stuff that should be supported - the symptom of failure in this case is that the USB device doesn't appear in device manager after having previously worked). Check the markings on the black chip near the USB port - if it's a 16u2, it should be reprogramable; if it is CH340G or CP2102, it cannot.

1 Like

Hello,

Well mine is a genuine Arduino UNO R3 and there is a 16u2 on the board but no matter what I do, it won't go into DFU mode.
"shorting" the pins on the icsp header just resets the uno but it won't enter DFU mode.

I've seen a whole bunch of threads with people having this problem, but either there is no reply which solved it or the topic starter replies with "I got it working", but doesn't tell how

See the photo's in the attachments

.... is that a counterfeit?

It doesnt have the right ptc fuse!

DrAzzy:
.... is that a counterfeit?

It doesnt have the right ptc fuse!

That is absolutely a counterfeit. The fonts are all wrong, and the blue is the wrong tone too.

hmm so this is not a real arduino.
That sucks.

think I might have to get my DFRDuino UNO back, since I could get that into DFU mode.

Or can something be done about this one?

This worked for me today as a test. Take your time and read carefully before trying.

It will probably be easier to just replace the UNo for now and come back later when you are more familiar with boot-loading and ISP programmers.

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

no avail

Think in this case the problem is my nano clonenot really acting as an ISP.

Gonna get the USBASP and try updating the 16u2's code.
Just talked to somebody that had the exact same board as I do and had the exact same problem.

Updating the 16u2 with the USBASP solved all of his problems.
he can enter DFU mode every time now

Okay for everyone bumping into the same problem as me.
I eventually got the 16u2 flashed with the combined DFU and serial firmware using my NANO as ISP.

I've looked for the combined DFU and SERIAL bootloader in my arduino folder (in linux the is "/usr/share/arduino/hardware/arduino/firmwares/atmegaxxu2").
The filename is "Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex"
I copied the file to my working directory and opened up a terminal.

Then I flashed the ArduinoISP to my chinese nano clone, hooked it up the the ICSP header next to the USB port. opened up the terminal and gave the following command:

avrdude -p m16u2 -F -P /dev/ttyUSB0 -c avrisp -b 19200 -U flash:w:Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

Then it started flashing the file to the 16u2 and after a power cycle all is working and I can even enter DFU mode now :slight_smile:

Hope this is usefull in the future for people bumping into the same problem as me :slight_smile:

I did the same thing using the "Arduino-keyboard-0.3.hex" and that is working fine as well

1 Like