How to load Arduino bootloader into ATMEL microcontroller ATMEGA328P

Install Mini-Core

Install Mini-Core following the instructions given on their githhub page:

This installation method requires Arduino IDE version 1.6.4 or greater.

  1. Open the Arduino IDE.
  2. Open the File > Preferences menu item.
    Arduino preference menu

  3. Enter the following URL in Additional Boards Manager URLs:
    Additional Boards Manager URLs

  4. Open the Tools > Board > Boards Manager… menu item.
    Arduino board selection

  5. Wait for the platform indexes to finish downloading.
    Scroll down until you see the MiniCore entry and click on it.
    Click Install.
    Boards Manager, MiniCore by MCUdude

  6. After installation is complete close the Boards Manager window.

Programmer preparation

Plug the USBasp device into your computer.

USBasp programmer

If you get an error stating the USBasp cannot be found,

use Zadig to download the device driver.

Go to : and download the software. Once downloaded

Launch the software and go to Options>List all devices

Zadig software for programmer driver


In the drop-down menu, select USBasp.
Then in the Driver selection click the small arrows until you find “libusbK (v3.0.7.0)”

Zadig driver selectioin

Then click “Replace Driver”

Burning the Bootloader onto the chip

Inside of Arduino IDE go into Tools>Programmer>USBasp

Arduino select programmer USBasp

Select the board ATmega328

Select board ATmega328

and select the variant 328/328A

Select IC chip variant


Connect the USBasp to the Arduino programming port (6 pins header)

Connecting programmer to Arduino ICSP programming header

Go to Tools>Burn Bootloader

Burn Arduino bootloader into ATMEL ATmega328 microcontroller

You should see this message in the console.

avrdude done. Thank you.

A quick way to check if the boot-loader was correctly burned is to try loading with an empty source code.

If the loading fails, try changing the port in Tools>Port. If the loading still not works, try redoing step 3. for the start.


Arduino programming via USB


You can program the board using a USB B mini, just like you would a normal Arduino Board.

For this you need to change the port if necessary: Tools>Port

Use the Check button to compile ans the arrow to load the code onto the board.

Select Arduino USB programming port.

Set up:

The pins of the USBasp must be connected to the corresponding of the Arduino ICSP connector.

Arduino programming header port

Basic circuit for Arduino and boot-loader programming.




Other references