avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x10

Hi all

Sorry if I repeat an old question, but I only find unanswered questions about this topic and the problem seems to be related to the upgrade I did from IDE 1.8.5. to 1.8.9 (on macOS Mojave).

Since a couple of years I succesfully flash my own barebone Arduinos, using ATMega328 ICs and a self-made programming shield.
When burning the bootloader or uploading any sketch with Arduino as ISP I recently started getting this error message. I only recently started using IDE 1.8.9. After returning to 1.8.5, my previous version, I do not get the error, except for the first waring line that does not seem to have any effect.

The last line, in Dutch, says "the selected serial port does not exist or your board is not connected".

Warning: Board breadboard:avr:atmega328bb doesn't define a 'build.board' preference. Auto-set to: AVR_ATMEGA328BB
De schets gebruikt 8336 bytes (25%)  programma-opslagruimte. Maximum is 32256 bytes.
Globale variabelen gebruiken 920 bytes (44%) van het dynamisch geheugen. Resteren 1128 bytes voor lokale variabelen. Maximum is 2048 bytes.
/Applications/Arduino189.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino189.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -carduino -P/dev/cu.usbmodem14201 -b19200 -Uflash:w:/var/folders/v_/5y9z_sw978q2rt3499bvmvch0000gp/T/arduino_build_658624/eigen_tests_002.ino.hex:i 

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

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

         Using Port                    : /dev/cu.usbmodem14201
         Using Programmer              : arduino
         Overriding Baud Rate          : 19200
         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
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x14

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x02

avrdude: stk500_getparm(): (a) protocol error, expect=0x14, resp=0x10
         Hardware Version: 425479
         Firmware Version: 25171972.-1443180712
         Topcard         : STK502
         Vtarget         : 1.8 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: stk500_initialize(): (b) protocol error, expect=0x10, resp=0x01
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x10

avrdude done.  Thank you.

de geselecteerde seriële poort 
 bestaat niet of uw board is niet aangesloten.

Should anyone have a solution or a better place to ask, please let me know.

Try connecting a 10 uF capacitor between the reset and ground pins on the board you're using as an Arduino as ISP.

Arduino recently changed the protocol used by the Arduino as ISP programmer from stk500v1 to arduino in order to allow ATmega32U4 boards like the Leonardo to be used with Arduino as ISP. An unfortunate side effect of this change is that it makes it more likely that the reset disabling capacitor will be needed on boards where it was previously not necessary. This change has been reverted and a new "Arduino as ISP (ATmega32U4)" programmer added for compatibility with Leonardo, etc., but there has not been a new release since that time:

1 Like

Thank you, pert!
I'll give it a try en post my findings asap.
Jan

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xde
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xde
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xde
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xde
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xde
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xde
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xde
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xde
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xde
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xde
Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

please help

@sivimj please don't hijack threads. We'll use your dedicated thread to help you with this problem:
https://forum.arduino.cc/index.php?topic=615815.msg4173244#msg4173244

Try connecting a 10 uF capacitor between the reset and ground pins on the board you're using as an Arduino as ISP.

Can we solder this cap for permanence? I hope it does not hamper the working of the Arduino Board.

The purpose of the cap is to disable the auto reset circuit on the Arduino board. The reason for that circuit is because the microcontroller on the board must be reset at just the right time during the upload process to activate the bootloader. If you disable the auto reset circuit, you will need to manually reset the board whenever you upload.

The capacitor solution is used specifically because it's not permanent. If you want something more permanent, you can cut the "RESET-EN" solder jumper that you will find on most Arduino boards with an auto reset circuit.

You will have to remove the capacitor from programmer board when uploading sketch on it. And when you use it as arduino as isp, you will again have to add cap between reset and ground.