I have a Arduino Nano (Sainsmart) that I'm trying to upload a sketch to. Under the Arduino IDE, the device selected was Arduino Nano w/ ATmega328.

However uploading the sketch gives me the error

avrdude: stk500_recv(): programmer is not responding

I tried both USB ports (/dev/tty.usbserial & /dev/cu.usbserial) but the same error persist. The Arduino is connected to a Macbook Air via the USB cable, and the PWR LED indicator light on the Arduino is turned on and the L indicator LED blinks. There was no problem uploading to a Arduino Uno.

Retried after installing the latest FTDI drivers (MAC OSX, x64, v2.2.18, FTDIUSBSerialDriver_10_4_10_5_10_6_10_7.mpkg) from http://www.ftdichip.com/Drivers/VCP.htm. However that did not help.

What could have gone wrong?


10 Answers 10


This error message basically shows up for any communication problem, so by itself, it is not all that instructive. The Arduino Nano is supposed to have auto-reset, but maybe your clone does not? In that case, you'd have to press the reset key on the board just before starting an upload.

  • According to the device description Features: Automatic reset during program...
    – alexan_e
    Commented Mar 18, 2014 at 22:10
  • 6
    Yes, but according to the comments on the Amazon page, some people who bought this got yet another clone brand, so it seems to me that a healthy dose of skepticism about any claims in the documentation is in order, especially if they can easily be verified with an experiment. Commented Mar 19, 2014 at 9:56
  • I didn't read the comments but in that case you may be right.
    – alexan_e
    Commented Mar 19, 2014 at 10:02
  • 1
    While hitting reset at just the right time can work (it may take several tries), with Nano clones it's almost invariably the change in bootloader serial speed by the official Arduino.cc developers that's causing the problem. This answer is more likely to produce a reliable result: Tools → Processor → ATmega328P (Old Bootloader)
    – scruss
    Commented Mar 18, 2019 at 12:19

Know this is old but I ran onto it during my search for Nano(V3)'s not uploading so thought might help someone else. Problem is the bootloader - Arduino IDE BUT I Found an easy solution (right under my nose).

I realized that my nano's had been uploading just fine then I had finally updated the Arduino AVR Boards from 1.6.20 to 1.6.21. I didn't think there was any problems because it still showed my Nano and ATmega328 etc in the board manager after the change.

But the new boards manager has a new ATmega328 processor choice for the Nano. I changed processor: In the Arduino IDE select TOOLS > PROCESSOR > pulldown menu from ATmega328P to "ATmega328P (Old Bootloader)".

Since then, I have uploaded many programs to several different Nano's V3 (Prolofic interace Chipset) without issue.


I was having the same problem and got the same error message. Turns out these boards don't come with a bootloader preinstalled. If you have some jumper wires and another working arduino you can use this tutorial to install the bootloader and it should work great, mine did at least! :)


Having a similar issue with my Sainsmart Nano.

Under Preferences check "Show verbose output during [x] upload, then when uploading, you should get a red trace like this:

avrdude: Version 5.11, compiled on Sep  2 2011 at 18:52:52
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

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

         Using Port                    : /dev/tty.usbserial-A403MRTP
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 

You'll notice a little "pause" just before the first line of avrdude: Send: 0 [30] [20]. Try uploading again and have you finger ready on the physical reset button of your Nano. Just the moment before the first avrdude: ... appears, press the reset button.

When you succeed, you'll see the screen filling with all sort of gibberish, and ending something like this after a few seconds:

[78] . [00] S [53] h [68] o [6f] u [75] l [6c] d [64]   [20] b [62] e [65]   [20] 0 [30] x [78] 4 [34] 9 [39] D [44] 4 [34] . [00] . [01] . [00] . [00] . [00] . [02] . [00] . [03] . [00] . [04] . [00] . [00] . [00] . [00] . [00] . [e6] . [06] . [b5] . [06] n [6e] . [06] w [77] . [06] . [8c] . [06] . [9d] . [06] . [00] . [00] . [00] . [00] . [02] . [0d] . [aa] . [0d] . [95] . [0c] . [c9] . [0c] . [a9] . [0c] . [f2] . [0c] . [00] 
avrdude: Recv: . [10] 
# | 100% 3.71s

avrdude: verifying ...
avrdude: 8824 bytes of flash verified
avrdude: Send: Q [51]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 

avrdude done.  Thank you.
  • This is to say that the Arduino (or knock-off) in question does not automatically reset before uploading and you have to manually do this by pressing the button.
    – kontur
    Commented Aug 7, 2015 at 21:35

Did you remember to tell the IDE that the board type is a Nano?

Tools -> Board => Arduino Nano ...

This gets me every time I swap between my Nano and Uno.


I also had that error message. I think there are many possible causes, so I haste to specify my special case.

I have a hackintosh with OS X Yosemite 10.10.2, Arduino software 1.0.6 and Funduino UNO. Uploading the example for Serial.write() succeeded the first time. Thereafter most uploads failed. Even when the upload succeeded the serial monitor would not always show output.

This seemed to me to be due to miscommunication on the USB port. I had to repeatedly reset the funduino, unplug and replug the USB cable or even restart the system. When replugging the USB cable sometimes my system would freeze.

By googling I found a solution to "Inserting USB device causes Mavericks 10.9.1 to freeze". Answer no 12 on tonymacx86.com basically instructs you to remove GenericUSBXHCI.kext from /System/Library/Extensions.

I am happy to report that after removing this kext I have no problems uploading the example and monitoring the output. Because I don't need to replug the USB cable I don't know whether this solves my system freeze. I'm not even sure it was a system freeze, because my system may only have become unresponsive to my USB keyboard and mouse.


Had same issue and solution was as follows:

  • identified my arduino as CH340/ATmega168P (written on PCB)
  • went to IDE and picked from list not UNO but "Arduino Pro or Pro Mini"
  • when this option is selected new menu "Processor" selection is available (just under Board selection)
  • selected my processor ATmega168P there and upload worked like a charm!
  • The board selection does not depend on the USB interface chip, only on the processor and baud rate. Commented Jun 13, 2018 at 4:36

The Arduino IDE version 1.8.5 gave the same error every time I tried to connect it to my OSEPP Nano. I tried with multiple nano boards with different versions of the IDE. I had the board set to "Arduino Nano".

The solution was: Instead of Nano choose Arduino/Genuino Uno. This worked for me.


If this doesn't work you will have to use spi to program the nano. You'll need to look up the connection and use a uno since it has a serial chip at16u2 with a driver that recognizes all atmel products. After connections setting uno as a programmer by flashing the uno as isp set the programmer as Arduino as isp and flash the chip. Double check. The benefit is it is less error prone than uart and has better timing but is a hassle to wire up. Good Luck


Ok. I had the same programmer is not responding error on Arduino Nano on Atmel MEGA168PA, USB chip: CH340G. Macbook Pro under macOS 10.14.2.

It hand Blink example installed and the port wasn't visible in the list.

I was trying to figured out, whats wrong and connected my Arduino Due through the programming port. After 2 attempts the sketch was uploaded... Then I connected the Nano back, the port was visible this time (actually two of them: /dev/cu.wchusbserial14120 and /dev/cu.usbserial-14120) and guess what, the upload had been successful!


  • Oh that downvoters don't want my experience to be shared.
    – kelin
    Commented Apr 14 at 7:58

Not the answer you're looking for? Browse other questions tagged or ask your own question.