Skip to main content

OreSat C3 Software

Main application for Octavo A8 with Debian Linux version of the C3 card.

The C3 card is the "flight" computer of OreSat. C3 stands for command, control, and communication. It handles all communications and controls the state of the satellite.

Note: For OreSat0, the C3 card used STM32F4 and ChibiOS, for that project see the oresat-firmware repo and the src/f4/app_control directory. The C3 card was converted to Octavo A8 card to simplify the code base by swapping from heavily embedded system using ChibiOS to a general Linux-environment using Python and make to use existing Python libraries.

Like all OreSat software projects it is built using OLAF (OreSat Linux App Framework), which it built on top of CANopen for Python project. See the oresat-olaf repo for more info about OLAF.

Quick Start

For development, install oresat-configs from the GitHub repo at https://github.com/oresat/oresat-configs (not from PyPI). That repo may have changes that are not apart of the latest release yet. Cloning it and using pip install --editable <path to your oresat-configs repo> is very convenient.

Install dependencies

$ pip3 install -e . --group dev

Make a virtual CAN bus (skip if using a real CAN bus)

$ sudo ip link add dev vcan0 type vcan
$ sudo ip link set vcan0 up

Run the C3 app

$ python3 -m oresat_c3

Can select the CAN bus to use (vcan0, can0, etc) with the -b BUS argument.

Can mock hardware by using the -m HARDWARE flag.

  • The-m all argument can be used to mock hardware (CAN bus is always required).
  • The -m opd argument would only mock the hardware for the OPD subsystem and expect all other hardware to exist.
  • The -m fram argument would only mock the F-RAM chip and expect all other hardware to exist.
  • The -m opd fram argument would both mock the hardware for the OPD subsystem and the F-RAM chip and expect all other hardware to exist.

See other options with -h flag.

A basic Flask-based website for development and integration can be found at http://localhost:8000 when the software is running.

Project Layout

  • docs/: Source of Read the Docs documentation.
  • oresat_c3/: Source code.
    • data/: Holds the CANopen EDS and DCF files for project.
    • drivers/: Fully stand-alone (doesn't import anything else from project) Pythonic drivers used by project. All drivers can mock hardware it's for.
    • protocols/: Anything dealing with packing or unpacking beacon and EDL packets.
    • services/: OLAF services, the "glue" between protocol, drivers, and/or subsystems with the CANopen node with a dedicated thread.
    • subsystems/: Anything dealing with the subsystems of the C3 other than the CAN bus.
    • templates/: The Flask-based templates to add OLAF's REST API to be used for development and integration (not used in production).
  • tests/: Unit tests.

Documentation

Project uses Sphinx to generate documentation.

Documentation is hosted on Read the Docs, see https://oresat-c3-software.readthedocs.io/en/latest/

To manually build the documentation:

$ make -C docs html

Open docs/build/html/index.html in a web browser

Unit Tests

This project uses python's build in unittest module for unit testing.

To run units:

$ python3 -m unittest

By default all unit tests run with the hardware mocked. When running on the real hardware set the MOCK_HW environment variable to "false" (case insensitive).

To run units when on real hardware:

$ MOCK_HW="false" python3 -m unittest

Note: The follow environment variables are also available:

  • I2C_BUS_NUM: The I2C bus number used by the OPD and F-RAM.
  • FRAM_ADDR: The I2C address for the F-RAM chip. Must be in hex (e.g., "0x50")

Metadata

Release files for oresat-c3 0.6.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oresat-c3 0.6.6
File Size Uploaded
oresat_c3-0.6.6.tar.gz 225.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for oresat-c3 0.6.6
File Interpreter ABI Platform
oresat_c3-0.6.6-py3-none-any.whl Python 3 none any Details

Total release size: 321.7 kB

Release files / oresat_c3-0.6.6.tar.gz

Download URL oresat_c3-0.6.6.tar.gz
Size 225.6 kB
Tags Source
SHA-256 checksum
How to use checksums
534f18bc91da5ad5a44d43ec5bf66d943d60b9c0d2e33cdb97c24046d136652c
BLAKE2b-256 checksum
How to use checksums
45aeaccd48aa706e4bb08882d7c04cff74445e7a87e1891675ada580d23d905d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 14, 2026.

Transparency log

Release files / oresat_c3-0.6.6-py3-none-any.whl

Download URL oresat_c3-0.6.6-py3-none-any.whl
Size 96.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
157699d9887fe1b60c83f40733b978d76f001d856fd238f4163ec76a941cdb2a
BLAKE2b-256 checksum
How to use checksums
71f97f121c2d42c9b16b553fcfa282894b9e2b931911996558c24a67edbd6ea8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.6 This release

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page