Optiboot

ATMEL STK500v1 compatible boot loader for Arduino ATMEGA328.

Build

Compile all firmware
git clone https://github.com/Optiboot/optiboot
cd optiboot/optiboot/bootloaders/optiboot/
./makeall.arduino.sh
Get firmware version
git log -n 1 --pretty=format:%H%n
0dd4cedfbd6669d47752707486d3625a911bdb12
List all firmware
md5sum *.hex
ee4b2f496e0333f95f45bb7078601d29  optiboot_atmega1280.hex
57b44fc69816e6fdbf73732b5caa12f2  optiboot_atmega1284p.hex
62bc6f118b7e0720f229c4bdde634b0c  optiboot_atmega168.hex
6a7fbf0503d47ed5db9d5d2baff317e5  optiboot_atmega168p_16MHz.hex
6a7fbf0503d47ed5db9d5d2baff317e5  optiboot_atmega168p_UART__.hex
2bb2b975f97f383909249e7157a7acb3  optiboot_atmega328.hex
3278fecadddec6c2fa11f5050b031dbb  optiboot_atmega328_pro_8MHz.hex
ec29c6363477553e94cb8d3c95987d33  optiboot_atmega32.hex
916b4c7cda8374cfc9ea61c0e370a237  optiboot_atmega88.hex
d53d8ce273525c3af14305c67df624cf  optiboot_atmega8.hex
e7c69c45143d7b31f1e4d3cef761dc7e  optiboot_bobuino.hex
62bc6f118b7e0720f229c4bdde634b0c  optiboot_diecimila.hex
0695b84ddb0017e61c327e6c2fc35a7b  optiboot_lilypad.hex
e15b4d5149f94ba277969114984b2cf9  optiboot_luminet.hex
62bc6f118b7e0720f229c4bdde634b0c  optiboot_pro_16MHz.hex
1d520857938ce8ae40eaf2b1e6eda6be  optiboot_pro_20mhz.hex
0695b84ddb0017e61c327e6c2fc35a7b  optiboot_pro_8MHz.hex
0ffe624b21c48a839a256baa4fa8a93f  optiboot_sanguino.hex
cb6b8ac98dd6d55f3a453e87722257b6  optiboot_wildfirev2.hex
2183c788feec1b79ae41cbdbd3912799  optiboot_xplained168pb.hex
68c384e8def907edca0033d6670588e0  optiboot_xplained328pb.hex
68c384e8def907edca0033d6670588e0  optiboot_xplained328p.hex
Compile specific firmware

This firmware is for a Pro Mini with an 8 MHz XTAL and a generic UNO clone at 16 MHz.

make clean
make atmega328 BAUD_RATE=115200
make atmega328_pro8 BAUD_RATE=57600
List firmware
2bb2b975f97f383909249e7157a7acb3  optiboot_atmega328.hex
9d1fc10caca488882432a01f5c96e797  optiboot_atmega328_pro_8MHz.hex

Download

Install

Arduino Pro Mini with 8 MHz XTAL

USBasp

avrdude -V -B 5 -c usbasp -p ATMEGA328P -e -u -U lock:w:0x3F:m -U efuse:w:0xFD:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m
avrdude    -B 5 -c usbasp -p ATMEGA328P -D -u -U flash:w:optiboot_atmega328_pro_8MHz.hex:i
avrdude    -B 5 -c usbasp -p ATMEGA328P -D -u -U lock:w:0x2F:m
Arduino UNO

Pololu USB AVR Programmer v2.1

avrdude -V -B 5 -P `pavr2cmd --prog-port` -c avrisp2 -p ATMEGA328P -e -u -U lock:w:0x3F:m -U efuse:w:0xFD:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m
avrdude    -B 5 -P `pavr2cmd --prog-port` -c avrisp2 -p ATMEGA328P -D -u -U flash:w:optiboot_atmega328.hex:i
avrdude    -B 5 -P `pavr2cmd --prog-port` -c avrisp2 -p ATMEGA328P -D -u -U lock:w:0x2F:m

Test

Arduino Pro Mini with 8 MHz XTAL
$ avrdude -c arduino -b 57600 -D -p m328p -P /dev/ttyUSB0 

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)

avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.

Resources

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies