For the Staff project, I’m going to be replacing the existing Arduino Uno R3 with a smaller, more easily embedded Arduino Nano. The Nano is a heck of a lot smaller than the Uno (makes sense – it’s meant to be permanently installed, while the Uno is a prototyping platform). I received my Nano a few weeks ago, but immediately ran into a frustrating problem… code would compile, begin to upload, and I’d get the error “stk500_recv(): programmer not responding”
The intarwebz are full of people reporting this problem, unfortunately most are not finding answers.
I went through the usual debugging problems – changing out the USB cable I was using, checking to make sure USB drivers were correct – I could still upload and use code on my Uno, but the Nano flat out refused to accept the new code (and I did check the very common problem of not selecting the correct board in the IDE).
Finally, came across a general discussion about bootloaders, and there was a comment that sometimes these boards do not reset properly. After some more research, I found some folks using various ‘reset button’ hacks to sort of nudge the board into accepting code. With a lot of trial an error, I have a procedure that seems to work pretty consistently. There’s occasional twitches, but with persistence it always loads.
Here’s the process I use.
- Connect up the Nano as you would normally. A stock Nano will have a ‘blinking light’ idle application on it – the painfully bright white LED will go on and off about once every 2 seconds.
- Prepare your Arduino environment:
- Tools->Serial port-> /dev/tty.usb(whateveryourmacshowshere)
- Tools->Board->Arduino Nano should be:
- AT/Mega328 for a Nano 3.0
- AT/Mega168 for a Nano 2.0
- When your code is compiling cleanly, upload the code into the Nano using the following steps
- On the Nano, push down and hold the Reset button
- On the IDE, click the ‘Upload’ button.
- When the Compilation is done, and the display says ‘Uploading’ – wait approximately 2 seconds, then release the reset button
- If it works, you will see the yellow and red TX / RX lights blink for a few seconds as code is transmitted to the Nano. A failure is usually just a few blinks of the red RX light.
While this is not an ideal situation (it makes it harder to load data remotely onto a physically isolated device), it has made it possible for me to actually use the Nano for the project, I hope this information is useful to other frustrated makers out there 🙂