In this Section

↩ Return Home

↩ Return to Resources

<aside> 📢 Unless you've soldered on a new SAMD51 microcontroller, it's likely the bootloader is already programmed for you.

If you're looking how to update the bootloader or firmware, see Updating PyCubed


Flashing a new bootloader


⭐ bootloader flashing is only required once: on brand-new SAMD51 that haven't been used on a PyCubed board before.


  1. With the requirements above satisfied, plug the JTAG programmer into your computer and open Atmel Studio 7.

  2. Navigate to Tools → Device Programming, as shown:

  3. Select the appropriate Tool and Device from the drop-down menus and click apply.

    ❗ make sure to choose the correct microcontroller part number. Visually check the part markings on the SAMD51 to confirm if it's the SAMD51x19 or SAMD51x20.

  4. Navigate to "Memories" on the left-hand side.

  5. Uncheck the "Erase Flash before programming" box, and then click the "..." button, as shown:

  6. Navigate to the directory you saved the GitHub firmware files, and change the file parameters from "Programming Files" to "Binary" and shown:

  7. Select the .bin file downloaded previously and click the "Open" button:

  8. Now make the following connections to the PyCubed board. If you're careful, you can avoid soldering header-pins to the board by just holding jumper-wire pins (or pogo pins, if you have them) against the through-holes during programming. When in doubt, solder the header pins.

    Required Connections:

  9. With the connections made, return to Atmel Studio 7 and click the "Read" button. A device signature should populate. If an error appears, check connections and troubleshoot the specific error message.

  10. After receiving a device signature, click the "Program" button. Programming should only take a few moments.

  11. Successful bootloader programming will trigger the PyCubed board to reboot. After a few moments, the board should mount to the computer as a PYCUBEDBOOT drive.

    Flashing the Firmware:

  12. Drag the CircuitPython firmware .uf2 file downloaded previously to the PYCUBEDBOOT drive:

  13. As soon as the file is done transferring, the board will reboot again and mount as CIRCUITPY or PYCUBED and is now a functioning CircuitPython board. Congratulations! 🎉

    Note: you may wish to load the default libraries by copying everything from the respective board version here: to your PYCUBED drive.