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 53Next »
bhutanidivye8 months ago

Thanks a lot

gewkwn8 months ago

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

kylebarker829 months ago


AndyTallack (author)  kylebarker829 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 Carmasaic9 months ago
Excellent, pleased it helped! Thanks for letting me know.
novianwf4 days ago

thanks a lot i want to try this

ShajeehM6 days 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)  ShajeehM6 days 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.

ShajeehM6 days 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

ShajeehM6 days 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

ShajeehM6 days ago

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

3suresh13 days ago

i made iiiiiiiittttttttttttttttt

ShajeehM20 days ago

can we bootload atmega 8 using the same procedure

AndyTallack (author)  ShajeehM19 days 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)  shaditheman12319 days ago

tsaltzman1 month ago

Thanks! Fixed my problem. :)

b33ma2471 month 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)  b33ma2471 month ago
Can you send the full error message?
Did you restart the Arduino IDE after you edited the avrdude.conf?

ShreyasD12 months ago

Thanks !!

it worked at last

digonto.GL2 months ago

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

raja_sekharan5 months ago

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

nandan31015 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)  nandan31015 months ago

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

kylebarker829 months ago

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

AndyTallack (author)  kylebarker829 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.
rohith99911 months 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
AndyTallack (author)  edifiedsprit1 year ago

I battled with the not in sync error, and if I recall correctly it was linked to that capacitor that isn't connected... although it shouldn't be needed for burning the bootloader, only when uploading the sketches. When are you getting this error, when burning or uploading?

The capacitor incidentally is a 0.1uF - I should have left it off the diagram as I only used it when connected an FTDI board to upload sketches.

On the 328-PU chips: I haven't actually tried them with a preinstalled bootloader, but once I'd burned the bootloader using the method in this instructable I was able to upload sketches without changing the signature. Did you try burning a new bootloader with one of these chips?

If you could send me a list of the steps you followed I may be able to help a little more.

Info: The chips I bought from eBay are 328-PU. It came with Arduino Bootloader and blink sketch already uploaded. So if I remove the stock 328P-PU from my Uno-R3 and insert the 328-PU, I can see the blinking LED on Pin 13. The supplier did not mention what bootloader is installed.The link is here:

Steps that I had followed to Burn a bootloader to the new 328PU chips:

Step 1: I setup a 328-PU on a breadboard as per your circuit diagram. I did not connect the 0.1uF capacitor to pin 1 on the target 328-PU.

Step 2: I connected wires from breadboard to Uno-R3.

Step 3: I edited the avrdude.config file and change the signature as instructed in your instructable, then saved the file and close the folder.

Step 4: I connected Uno-R3 to my laptop and open the IDE (version arduino-1.0.1)

Step 5: In the IDE I went to tools and ensured that the selected board is UNO, Then I went to "Programmer" and selected "Arduino as ISP".

Step 6: I clicked on Burn Bootloader.

Here I get stuck. and I am not able to go any further from here
Issue 2:

Dear Andy,
My motive is to be able to program (upload new sketches to) the new 328PU chips that I had bought. The reason why I bought those chips is because they came with preinstalled Arduino bootloaders, hence I thought that I would be able to upload sketches onto them just by swapping them with the stock 328 P-PU on UNO-R3.
Sadly I am stuck even here. If I remove the stock 328P-PU from my UNO and insert this 328P-PU, I cant upload any sketches to them. I have tried to upload after changing the signature file, but still I get the same error.

Please provide me with a solution to either issue 1 or issue 2. If I am not asking for too much, then provide solution to both the issues :-)

Thanks a ton in advance...

AndyTallack (author)  edifiedsprit1 year ago

Just checking - the chips on the link you provided were ATMEGA8 chips, not ATMEGA328. Can you confirm that they are ATMega328?

Secondly, perhaps you could send me the error that the IDE shows - do you have Verbose Output set (File, Preferences, Show Verbose Output during upload).

Well, I am really sorry for wasting your time here..:-(. Yes I was wrong. The chip is a ATMega8-16PU.

What can I do with this?? Can I still upload sketches on them by any method?? :-P

AndyTallack (author)  edifiedsprit1 year ago
No worries. Sorry I don't know much about the ATmega8 - it is in fact an older chip used on the early versions of the Arduino - it has less memory, less PWM pins etc. than the ATmega328. To upload sketches, I suggest you try the "Arduino NG or older w/ ATmega8" option from the "Tools/Board" menu in the IDE.

Good luck!
Dear Andy,
I just found that I had to update the boards.txt file with this
" ############################################################## Optiboot-Atmega8-16
I am now able to upload sketches once I change the selected board as created by this code.
1-40 of 53Next »