==== 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===
{{downloads:BL:optiboot_atmega328.hex|optiboot_atmega328.hex}}
{{downloads:BL:optiboot_atmega328_pro_8MHz.hex|optiboot_atmega328_pro_8MHz.hex}}
=== Install ===
==Arduino Pro Mini with 8 MHz XTAL==
__[[:interfaces:usbasp|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==
__[[:interfaces:pololu|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===
https://www.engbedded.com/fusecalc/
https://www.engbedded.com/conffuse/