Avrdude: stk500_recv(): Programmer Not Responding - Custom Arduino Uno

Hi all,

I designed an Arduino Uno Rev3 board, with all of the parts as through hole, to teach students soldering in the coming weeks. Below you can find the schematic. So far, all of the tests have passed, except programming the 328p via the 16u2.

I get the following verbose error:

avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch

     System wide configuration file is "/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf"
     User configuration file is "/Users/caleb/.avrduderc"
     User configuration file does not exist or is not a regular file, skipping

     Using Port                    : /dev/cu.usbmodem14101
     Using Programmer              : arduino
     Overriding Baud Rate          : 115200

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

avrdude done. Thank you.

I have attempted the Loopback Test and it passed. Likewise, I have uploaded code to the 328p over ICSP and it runs perfectly. I have looked through as many similar forum posts as possible and haven't had much luck, but if anyone has any suggestions on what to try, I am all ears!

I have ruled out a bad 328p by moving a good 328p to my custom board. When I moved a known good 328p from a working uno to my custom uno, I was unable to program it. When I moved the 328p from the custom uno to the working uno, I was able to program it. This suggests that there is something wrong with the 16u2, however, I have not had much luck figuring out what is wrong.

Any tips on what to try?

Thank you and any help is appreciated.

Please post the schematic for this board.

I just uploaded the schematic, unfortunately, the forum says (New users can't upload attachment), so it won't let me include a PDF.

I should probably note that I have a sneaking suspicion that it is the 16u2 firmware, based on my testing. But I haven't been able to fix the problem by reflashing, at least so far.

Thank God for that :wink:

  1. Did you program the 16U2 with its firmware? If you did, your operating system should recognise the board as an Uno. I suspect that you did but not sure.
  2. Have you installed the bootloader on the 328P?

Thank you for your response! Here's the response to each of your questions:

  1. The board is recognized by my computer as an Arduino Uno (Included a screenshot for your reference). I believe I used the right firmware (Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex).

  2. Yes I did, and I'm certain I programmed this right, because I moved the 328p from my custom Arduino to a true Arduino Uno that I bought directly from this site years ago. When I did so, the real Arduino could program the chip with no issues.

Some more information: LED 13 does blink to show that the reset to get the 328p to the bootloader is working as expected. The 328p behaves just as I would expect when programming an Arduino.