Upload fail on one of my Uno R3 board, but work fine with another board

Hi, one of my Uno R3 clone board (based on a CH340) has started failing to upload "blink" example. With the error below. In Arduino IDE Serial Monitor, I can read the Serial.print() made by the last program I uploaded (before I had the issue 2 days ago) every second.

avrdude: stk500_recv(): programmer is not responding

I have another Uno R3 clone board (exactly same model) that can upload the "blink" example as usual. I've made multiple tests allowing me to narrow the issue to the board and exclude Arduino IDE/cable/USB 2.0/3.0/driver related issues. All wires have been unplugged from the board and its not on a conductive surface.

Below is verbose log of avrdude failing to upload the sketch (I edited out the memory stuffs as there was no diff with a working upload). The output diffs w.r.t. working upload starts at "avrdude: ser_recv(): programmer is not responding".

What can I do to better understand the cause of the upload failure and why it suddenly appeared?

c:\Users\Zark\Downloads\arduino-upload>C:\wut\dev\Arduino\hardware\tools\avr/bin/avrdude -v -v -v -v -CC:\wut\dev\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM4 -b115200 -D -Uflash:w:C:\Users\Zark\AppData\Local\Temp\arduino_build_776933/Blink.ino.hex:i 

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 "C:\wut\dev\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM4
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
[...removed memory ops...]

         Programmer Type : Arduino
         Description     : Arduino
avrdude: Send: A [41] . [80]   [20] 
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: Send: A [41] . [81]   [20] 
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: Send: A [41] . [82]   [20] 
avrdude: ser_recv(): programmer is not responding
avrdude: stk500_recv(): programmer is not responding
avrdude: Send: A [41] . [98]   [20] 
avrdude: Recv: . [00] 

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x00
         Hardware Version: 4744608
         Firmware Version: 0.4611299
avrdude: Send: A [41] . [84]   [20] 
avrdude: Recv: . [00] 

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x00
avrdude: Send: A [41] . [85]   [20] 
avrdude: Recv: . [00] 

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x00
avrdude: Send: A [41] . [86]   [20] 
avrdude: Recv: . [00] 

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x00
avrdude: Send: A [41] . [87]   [20] 
avrdude: Recv: . [00] 

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x00
avrdude: Send: A [41] . [89]   [20] 
avrdude: Recv: . [00] 

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x00
         Vtarget         : 420030.5 V
         Varef           : 196911264.0 V
         Oscillator      : 0.531 Hz
         SCK period      : 18880329.9 us

avrdude: Send: A [41] . [81]   [20] 
avrdude: Recv: . [00] 

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x00
avrdude: Send: A [41] . [82]   [20] 
avrdude: Recv: . [00] 

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x00
avrdude: Send: B [42] . [86] . [00] . [00] . [01] . [01] . [01] . [01] . [03] . [ff] . [ff] . [ff] . [ff] . [00] . [80] . [04] . [00] . [00] . [00] . [80] . [00]   [20] 
avrdude: Recv: . [00] 
avrdude: stk500_initialize(): (a) protocol error, expect=0x14, resp=0x00
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: Send: Q [51]   [20] 
avrdude: Recv: . [00] 
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x00

avrdude done.  Thank you.

No response from ATmega.
Try loop-back test. It helps to exclude the problems with USB-serial transceiver. Search here on web for how to perform the loopback test. If it is socket version, then it is easy to replace/exchange ATmega. But first, make sure the power on board is ok, especially on the socket to avoid MCU's damage.

Loop back test instructions...

Just helping...

Thanks for pointer to the loop-back test. Unfortunately, this provides no additional hint as to the cause of the issue...
Is the loop-back test known to work with Uno having CH340G instead of Atmel Mega16U2? Because I couldn't get it to work with my working one:
Below, "working" means that I can upload the blink example without issue.

  • Working Mega2560 (Atmel Mega16U2): loopback echo is working.
  • Working Leonardo (no identifiable chipset that I know of): device not detected by O.S., no new com port
  • Working Uno (CH340G): new COM port, but loopback echo is not working.
  • Not working Uno (CH340G): new COM port, but loopback echo is not working.

I'm not sure the loopback test works for Leonardo as TX/RX pins are connected to Serial1 and not the USB serial from what I've read. Not sure why it causes the device not to be detected by the O.S. though.

Unfortunately it's not a socket version.

But first, make sure the power on board is ok, especially on the socket to avoid MCU's damage.

Assuming I had a socket version (I have ordered one), do you check that the power is ok by checking the +5V pin with a multi-meter? (this validate that the voltage regulator on the board haven't been killed by an over-voltage, right?)

Is the loop-back test known to work with Uno having CH340G instead of Atmel Mega16U2?

Yes, of course, same behavior for any chip.

Leonardo is a problem. The USB port is a part of main chip.

Yes, with multimeter.