Non-UF2 Installation

This installation page is only required if you do not have UF2 bootloader installed (e.g. boardBOOT drag-n-drop)! This page is for non-Express Feather M0's, Arduino Zero's & M0's, and other custom ATSAMD21 boards.

Flashing with Bossac - For Non-Express Feather M0's & Arduino Zero

Our older Feather M0 boards don't come with UF2, instead they come with a simpler bootloader called bossa. This is also what is installed on Arduino Zero's and other Zero-compatible boards that use the ATSAMD21. It is the only method you can use if your CircuitPython installation file is a .bin rather than a .uf2

Command-Line ahoy!

Flashing with bossac requires the use of your computer's command line interface. On windows, that's the cmd or powershell tool. On mac and linux, use Terminal!

Download Latest CircuitPython Firmware

The first thing you'll want to do is download the most recent version of CircuitPython.

Once downloaded, save the .bin file onto your desktop, you'll need it soon!

If you are running Windows 7, you must install the driver set (we cover it on this page) so you have access to the COM port.

Download BOSSA

Once you have a firmware image you'll need to download a special version of the BOSSA tool that can load firmware on SAMD21 boards. This tool is actually used internally by the Arduino IDE when it programs these boards, however you can use it yourself to load custom firmware

Be aware you must use this special 1.7.0 or higher version of bossac to program SAMD21 boards!  If you find an older version of BOSSA it won't work because it doesn't support the SAMD21 chip. To flash with bossac (BOSSA's command line tool) first download the latest version from here. The ming32 version is for Windows, apple-darwin for Mac OSX and various linux options for Linux.

bossac works with .bin files only, it will not work with .uf2 files!

Test bossac

Open a terminal and navigate to the folder with the bossac tool. Then check the tool runs by running it with the --help option:

Open a terminal and navigate to the folder with the bossac tool. Then check the tool runs by running it with the --help option with bossac --help

Or if you're using Linux or Mac OSX you'll need to add a ./ to specify that bossac is run from the current directory like ./bossac --help


Make sure you see BOSSA version 1.7.0 or higher!  If you see a lower version then you accidentally downloaded an older version of the tool and it won't work to flash SAMD21 chips.  Go back and grab the latest release from this BOSSA GitHub repository as mentioned above.


Get Into the Bootloader

You'll have to 'kick' the board into the bootloader manually. Do so by double-clicking the reset button. The red "#13" LED should pulse on and off. If you are using an Arduino Zero, make sure you are connected to the native USB port not the debugging/programming port.

One special note, if you're using the Arduino M0 from you'll need to replace its bootloader with the Arduino Zero bootloader so it can work with BOSSA.  To do this install the Arduino/Genuino Zero board in the Arduino IDE board manager and then follow these steps to burn the Arduino Zero bootloader (using the programming port on the board).  Once you've loaded the Arduino Zero bootloader you should be able to use the M0 with bossac as described below.

Run bossac command

With your board plugged in and running the bootloader you're ready to flash CircuitPython firmware onto the board. Copy the firmware .bin file to the same directory as the bossac tool, then in a terminal navigate to that location and run the following command:

bossac -e -w -v -R adafruit-circuitpython-feather_m0_express-2.1.0.bin

Replace the filename with the name of your downloaded .bin - it will vary based on your board!

This will erase the chip, write the given file, verify the write and Reset the board. On linux or Mac OS X you may need to run this command with sudo ./bossac ...

After BOSSA loads the firmware you should see output similar to the following:

After reset, CircuitPython should be running and the CIRCUITPY drive will appear. You can always manually reset the board by clicking the reset button, sometimes that is needed to get it to 'wake up'. Express boards may cause a warning of an early eject of a USB drive but just ignore it. Nothing important was being written to the drive!

Last updated on Apr 23, 2018 Published on Dec 19, 2017