Putting HABL on an atmega88 MCU using USB in system programmer First read the instruction for atmega168 "avrdude_usb_atmega168.txt". Edit Makefile Change: MCU=atmega168 to: MCU=atmega88 Change: START_ADRESS_OF_BOOT_SECTION=0x03C00 to: START_ADRESS_OF_BOOT_SECTION=0x01C00 Programming the device Set read write properties on usb dev (or do this as root). First the fuse bytes needs to be programmed. Extended fuse byte For boot loader reset. BOOTRST shall be 0 For boot loader size 512 words: BOOTSZ1 shall be 0 BOOTSZ0 shall be 1 (If you use something else than 512 words boot loader you need something else here. And you probably neeed to adjust START_ADRESS_OF_BOOT_SECTION in Makefile also.) With all other bits default the extended fuse byte should be: 11111010 But that did not work, used 00000010 instead. avrdude -p m88 -P usb -c avrispmkII -U efuse:w:0x02:m -u -B 8 High fuse byte Used default (did not change it). Low fuse byte To use 8 MHz internal clock CKSEL shall be 0010 and CKDIV shall be 1. With all other bits default this gives 11100010, in hex: 0xE2 But I use a 16 MHz resonator so CKDIV8=1, CKOUT=1, SUT=10, CKSEL=1110 which gives lfuse 11101110 0xEE avrdude -p m88 -P usb -c avrispmkII -U lfuse:w:0xEE:m -u -B 8 Downloading the boot loader program to flash write: avrdude -p m88 -P usb -c avrispmkII -U flash:w:habl.hex -B 8 Test device with some hello world program.