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
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.