Recovering bootloader of an Arduino Nano v3.0 – usbasp

I bought my second Arduino Nano v3.0, at Deal Extreme
Arduino Nano , as always I quickly unpacked to do a quick hello world test in it. Unfortunately my test failed, and I was unable to upload my program. After some research at the net, I found several tutorials to program the Arduino’s bootloader, so I give it a try. SParkfun has a very good tutorial on how program the bootloader, including unsing another Arduino as the USBAsp programmer.

If you don’t know, the bootloader is a small program that was written by the Arduino developers, this makes an easy interaction with IDE. Without it Arduino IDE can not upload you programs. I already have an USPAsp programmer, also bought on Dx, and you can also find several USPAsp programmers on Ebay.

SO, what do you need?

– Arduino to be programmed
– USBAsp ( programmer Atmel – SPI )
– Cable USBAsp x Arduino
– IDE Arduino

You can buy your programmer USBASP HERE, that made the process very easy.

I tried to use another Arduino, but as I struggled doing this, and as I had the USBAsp progrmmer, I used it. SparkFun has the tutorial on this link .

Here is what I did
1 – Connect the calble on Arduino and USBAsp


USBAsp pinout



Arduino Nano pinout.

The cable should be like this:


Mosi is pin 1 of UsbASP SPI Conector and Miso is pin 1 of Arduino SPI Conector . Count the pins up to down and left to right.

1 2
3 4
5 6

I used windows, and you need and USBASP driver , downloaded from this link

Then, you use you owm Arduino installation to program your bootloader.
Connect your just programmed Arduino on your USB, ( disconnecting everything else ).
Start your your Arduino IDE, choose the correcy board (Arduino Nano 328, and programmer – usbasp )
During the procedure you will see an orange led blinking, as the bootloader is programmed.
That’s it!

After that I wrote a small Hello world and sucessfully saw it? results on my serial monitor.

// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:

// the loop routine runs over and over again forever:
void loop() {
Serial.println(“Alo Mundo!”);
delay(1000); // delay