To build the CEE firmware, you need a GCC toolchain that is aware of the latest USB Xmega parts.

These include:

Source code

git clone --recursive git://

You can browse the source code online on GitHub: nonolith/cee-firmware



Flash new firmware

You need pyusb 1.0 to use the bootloader driver.

Run make update to enter the bootloader and flash the new firmware.

A few caveats:

  • Nonolith Connect 1.1 or previous prevents firmware update using this method. Stop Nonolith Connect before updating. Version 1.2 and later do not need to be stopped.
  • On Linux, you need user permission to access the bootloader device. Add yourself to the nonolithd group with sudo adduser <user> nonolithd to give your account permission to access the device. Log out and log back in for it to take effect.

Alternate method

Nonolith Connect is also capable of loading a firmware using the bootloader. Use the fwupdate tool, and use the cee.json file generated by make.


If the CEE fails to enumerate on USB, or is unresponsive, you can manually enter the bootloader to flash a corrected firmware.

  1. Unplug the CEE
  2. Short the BOOT and GND pins together on the 6-pin programming header
  3. While shorting those pins, plug in the USB cable. The blinking LED indicates that the bootloader is active.
  4. Follow the steps above to write a firmware.

Installing the bootloader

This step only required if you soldered your own CEE with a fresh Xmega microcontroller. Devices purchased from Nonolith Labs come with the bootloader installed.

Download bootloader.hex, and run:

avrdude -p atxmega32a4 -P usb -c avrispmkII -U fuse2:w:0xBF:m  -e -U boot:w:bootloader.hex

Flashing the bootloader requires a PDI-compatible AVR programming cable. Also note that while the AVR Dragon supports PDI, it is unable to successfully flash the bootloader section. We recommend the AVR ISP mkII. If you use a different cable, change -c parameter of the command above.

When the bootloader runs, the light on the CEE blinks. You can use Nonolith Connect to flash the default firmware without installing a compiler toolchain. Plug in your CEE, go to the fwupdate page, and click the "Write, Check, and Reset" button to load the default firmware.

With the bootloader installed, you can also use the instructions above to compile and load your own firmware.