Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Yet Another Simple AVR Bootloader
C Shell C++ Perl
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bootloader Fix for Atmega 1281/2561
uploader Still the most reliable.
.gitignore Autotools build system.
COPYING Fixed Readme



To get the AVR bootloader, run make in the bootloader directory. This will produce yasab.hex to flash on your AVR. Change the target and other options in the makefile.

To get the upload utility, run the following commands in the uploader directory:

make install

To install it into /usr/local/bin/

You need a Toolchain for your Hostmachine and for AVRs. Change configuration options for the AVR firmware in the makefile in "bootloader".

Yet Another Simple AVR Bootloader

This AVR Bootloader just gets data from the included uploader. This will be flashed and started. Currently supported & tested AVR MCUs:

ATmega32 ATmega2560

It is using my avrSerial Library for UART communications.

On devices with more than one UART module, YASAB will listen on all of them.

Running "make" will produce yasab.hex and sample.hex. The first is the real bootloader. The second is a small program to test the bootloader.

Configuration Options like Baudrate, Bootdelay or Clock Frequency can be changed in the makefile.

On the ATmega32, 2022 bytes in Flash are needed. Therefore, set the bootloader section size to 1024 Words. On the ATmega2560, 3864 bytes in Flash are needed. Therefore, set the bootloader section size to 2048 Words. In either way, adjust BOOTSTART in the Makefile!


This is a small utility to upload hex files to YASAB. The optional parameter, q, can be a character that is sent to reset the target.

Usage: uploader /dev/port /path/to.hex [q]

Android Uploader

I've also written a YASAB Uploader implementation in Java for Android. It is used in my xyCopter Remote Control App.


38400, 8N1, XON-XOFF will be used for data transmission.

Repeat any character
Respond with 'o'
Send 'c'
Respond with 'a'
Send 32bit target address (MSB first)
Respond with 'o' or 'e'
Send 32bit data length (MSB first)
Respond with 'o' or 'e'
Send data...
In between 'e' or 'o' for abort or okay


YASAB is released under a BSD 2-Clause License. See the accompanying COPYING file.

Something went wrong with that request. Please try again.