In this Section

↩ Return Home

↩ Return to Resources

PyCubed is programed/operated using a version of Python designed for microcontrollers called CircuitPython. Advantages to using CircuitPython include:

  1. Native USB support with serial port debugging, no extra drivers or other software required.
  2. CubeSat mounts as a "USB flash drive" with software and libraries stored as plain-text files on the drive, no compilation required.
  3. Simple Python3 programming syntax capable of accessing low-level hardware peripherals such as I2C, SPI, UART, and CAN bus.
  4. Open-source architecture with robust fault tolerance and error handling
  5. Capable of over-the-air software updates.

The CircuitPython architecture is an open-source effort led by Adafruit and targeted towards beginner programmers. Although it's easy to get started, CircuitPython is capable of enough depth to allow command and control of the spacecraft. Visit to read more.


When working with embedded hardware like PyCubed, it's helpful to group programming into two categories.

When getting started, the user will work entirely with software. If there comes a point where the user wants to implement a new microcontroller capability, he or she will need to learn more about the PyCubed firmware.

Firmware and software are located in separate repositories within the PyCubed GitHub. Visit their respective pages below:

PyCubed software block diagram illustrating a portion of the CircuitPython runtime

PyCubed software block diagram illustrating a portion of the CircuitPython runtime


See Hands-On Quick Start for getting started with software.

After finishing the quick start, there are lots of tutorials and examples to help you craft your mission software.

  1. Code Examples for software snippets and helpful patterns
  2. Example Flight Software for complete mission software demos

Software Repo 👇


There are three cases when someone might want to alter the PyCubed firmware:

  1. Update to the latest CircuitPython version for new features. See Updating PyCubed
  2. You built a mainboard yourself and need to flash firmware for the first time. See Programming the Bootloader
  3. You're interested in tweaking CircuitPython or developing your own firmware. See Building the PyCubed Firmware from Source

Firmware Repo 👇