Picture of Bootload an ATmega328

This instructable adds to any of the Arduino on a Breadboard instructables. I wrote my own breadboard-Arduino tutorial, and then I found that I was struggling to program some of the boards I made. A lot of research and dead-ends got me understanding that:

1. You either need a microcontroller with a pre-loaded Bootloader, or must load your own
2. Not all ATmega328’s are equal

(A bootloader, very simply, is a programme that sits on the chip and manages the upload of your sketches onto the chip)

There are plenty of bootloading resources, but I couldn’t find a single one that pulled everything together in a way that made sense to me.

If this instructable helped you, please visit Crash Bang Prototyping, follow us on twitter, and join in with our prototyping resources and tools.

Here goes…

Remove these adsRemove these ads by Signing Up

Step 1: Parts

1 x Arduino on a Breadboard
1 x Arduino UNO
Connecting Wires
Arduino IDE installed on your PC

Step 2: The Approach

Picture of The Approach

We’re going to use the Arduino UNO to bootload the ATmega328 that is sitting on the Arduino-on-a-Breadboard. This is fairly straightforward if you have an ATmega328P-PU, but needs an extra step for an ATmega328-PU. I’ll tackle the differences later in the Instructable.

Step 3: Program your Arduino UNO as an ISP

Picture of Program your Arduino UNO as an ISP

We need to program the Arduino UNO to act as a an ISP (In-System Programmer), so that it can burn the bootloader onto the Breadboard chip.

  1. Open the Arduino IDE
  2. Open the ArduinoISP sketch (under File, Examples)
  3. If you’re using version 1.0 of the IDE:

search for void heartbeatand change the line that reads:




Connect your UNO to the PC, making sure it’s not connected to the Arduino on a Breadboard.

Ensure your UNO is selected under the Boards menu option, and upload the sketch.

1-40 of 59Next »
bhutanidivye9 months ago

Thanks a lot

gewkwn9 months ago

thanks for info !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

kylebarker8210 months ago


AndyTallack (author)  kylebarker8210 months ago
Great stuff - thanks for letting me know! Would love it if you followed Crash-Bang on Twitter as a thanks :)
Thanks for this. Helped me save a wasted ATmega328
AndyTallack (author)  Antzy Carmasaic10 months ago
Excellent, pleased it helped! Thanks for letting me know.
MarkF78 days ago

If swapping back and forth gets annoying then you can just copy the entire section to a new one, give it an id of "m328pu" and a description of "ATMEGA328PU" with the appropriate fuse values. You can then edit your Arduino IDE "boards.txt" file and create a new board based on the Uno one with the mcu set to "atmega328pu". You'll then be able to select that device in your IDE Board list in addition to the regular Uno board.

AndyTallack (author)  MarkF77 days ago
Thanks Mark. I had tried that originally, but the GCC toolchain (as I understood) didn't support it. What version of the IDE are you using? I believe the new GCC toolchain now supports but haven't had a chance to test yet.
mbose228 days ago

Plz help me Sir, I have modified the conf file. But now on hitting arduinoisp, it says 'Expected signature for ATMEGA328P is 1E 95 14'.

AndyTallack (author)  mbose228 days ago

Does it tell you what the actual signature is?

Are you sure it is an ATmega328?

Thank you so much for replying Sir. That was my mistake. I'm now using IDE1.0.1(1.0.6 previously). The error now is unrecognized character : "P"

3suresh1 month ago

i made iiiiiiiittttttttttttttttt

mbose2 3suresh28 days ago

I get error message saying expected signature for ATMEGA328P is 1E 95 14, even after modifying the conf file. Do you know the solution Sir?

novianwf1 month ago

thanks a lot i want to try this

ShajeehM1 month ago

i m getting this error avrdude: stk500_getsync(): not in sync: resp=0x00 while burning the bootloader to atmega 8L-8pu can any one tell me how to burn bootloader to this chip

AndyTallack (author)  ShajeehM1 month ago

Sorry I don't have an ATmega8 to test this on, but should work - see the comments below on possible way to do this.

ShajeehM1 month ago

i m getting this error avrdude: stk500_getsync(): not in sync: resp=0x00 while burning bootloader to atmega8L-8pu can some one tell me how to burn bootloader and upload sketch to this chip

ShajeehM1 month ago

i m getting this error avrdude: stk500_getsync(): not in sync: resp=0x00 while burning the bootloader to atmega 8L-8pu can any one tell me how to burn bootloader to this chip

ShajeehM1 month ago

please navigate me the option to update my board.txt file .

ShajeehM1 month ago

can we bootload atmega 8 using the same procedure

AndyTallack (author)  ShajeehM1 month ago

Sorry I don't have an ATmega8 to test it on. Check the comments below - similar question there.

ok andy thanx for the reply i m going to bootload atmega 328 first using arduino hope this procedure will work

i need the avrdude file plz

AndyTallack (author)  shaditheman1231 month ago

tsaltzman2 months ago

Thanks! Fixed my problem. :)

b33ma2472 months ago
I'm getting error 0x01e 0x96 0x14

I'm trying to boot load the 328-PU chip (on breadboard) with 328P-PU chip in uno r3

Have programmed uno (atmega328p-pu) as ISP bootloader

have changed hex value to 14 in avrdude.conf

Just get error on bootloading?
AndyTallack (author)  b33ma2472 months ago
Can you send the full error message?
Did you restart the Arduino IDE after you edited the avrdude.conf?

ShreyasD13 months ago

Thanks !!

it worked at last

digonto.GL3 months ago

this really helped me a lot man . thanks a lot and briliant work boss

raja_sekharan6 months ago

Thank you, for the clear instructable. Keep up the good work !

nandan31017 months ago

Hey I tried a lot but it's not working I don't know why I have exactly followed your steps as you said then also it is showing me error again and again

Yikes! Invalid device signature.

Double check connections and try again, or use -F to override


AndyTallack (author)  nandan31017 months ago

Hi. Can you check which ATmega chip you are using?

kylebarker8210 months ago

Should we still use a 16MHz Crystal for pin 9 and 10???

AndyTallack (author)  kylebarker8210 months ago
Yep, I use a 16MHz crystal. In the next few months I'll be working on an instructable for using other crystals - speed vs power and any complications like uploading sketches etc.
rohith9991 year ago
hiii andy i have successfully bootloaded atmegaP-PU chip using ur tutorial now i want to upload a blink sketch to test it later i want to reflash this chip using pulse sensor sketch using arduino uno tx and rx pins without using FTDI and after thant i want to remove tx and rx pins from arduino and i just want to power up using battery will the sketches run ?
all i want to know this because i am preparing beetband sleeve from the make magzine could you please help me regarding this

AndyTallack (author) 1 year ago
Great, thanks for the link.  Why don't you put it into a full-blown instructable, so that everyone can search for it more easily?

A suggestion - I prefer the hardware files from :

I haven't looked into it in detail, but this seems to offer greater language support - eg. Serial (which the GIThib  version doesn't support)...

pctj1011 year ago
nugrahadi1 year ago
the resistor above the led, does it connect to the ground or 5V?
AndyTallack (author)  nugrahadi1 year ago
It connects to GND - sorry the diagram isn't very clear. If you trace the other leg of the LED you'll see it connects to pin 13 on the Arduino, which provides a +ve source.
Hi Andy,
I have tried your steps but I get an error message - "avrdude: stk500_getsync(): not in sync: resp=0x00"
I also have one more question for you, in the schematic, there is a capacitor connected to pin 1 but the other end of it is not connected to anything at all. What is the value of that cap and where should the other end of it be connected to?
Also I would like to ask you for another help. I have some 328 PU chips that came with preinstalled bootloader and the blink sketch uploaded. when I remove the stock 328P-PU from my Uno Rev3 and install the 328PU, I am not able to upload any sketch. All it does is blinks LED13. I get the signature error. I have tried changing the signature but still I cant get it to upload any new sketch. The IDE version is "arduino-1.0.2"
Please help
1-40 of 59Next »