Skip to the content
4 layers12.6 × 17 mmUsb c, the printed circuit board in 3D

Open Source Earth Imaging Satellite Hardware + Firmware

Size
12.6 × 17 mm
Copper layers
4
Thickness
1.6 mm
Parts
9
Nets
12
Pads
42
Tracks, vias
73, 8
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
23 Aug 2025
Updated
8 Nov 2026

Overview

Usb c is an open-source printed circuit board by OSUSat, from the OSUSat/cubesat repository on GitHub, published under the MIT licence. It is a 4-layer board of 12.6 × 17 mm with 9 parts on 12 nets, routed with 73 tracks and 8 vias.

It is built around the USBLC6-2P6. Its parts include 3 capacitors, 2 resistors, 1 IC and 1 connector.

Main components

1

README

README.md

Oregon State University (OSU) AIAA OSUSat/SCRT Climate Science CubeSat

Welcome to the central repository for the OSUSat Climate Science CubeSat project. This repository contains the hardware designs, firmware, and documentation for the sub-systems comprising the satellite.


Mission Context & Goals

The OSUSat Climate Science CubeSat is a low-Earth orbit (LEO) satellite designed to capture high-resolution imagery and scientific data for climate science research.

Mission Objectives

  1. Earth Observations: Capture multispectral or high-resolution imagery using a dual-camera payload to study surface health, atmospheric conditions, cloud formations.
  2. Reliable Power Delivery (EPS): Harvest solar power from 6 body-mounted solar panels, manage charge for 4x 18650 Li-ion batteries, and distribute and regulate power rails to prevent overcurrent/overvoltage events.
  3. Command & Telemetry (OBC): Orchestrate system operations, manage communication buses (CANBus, UART, I2C, SPI), process ground commands, and monitor satellite health.

System Architecture

The satellite is divided into five primary subsystems interconnected via a shared backplane connector (exposing power rails and UART/CAN control buses):

mermaid
graph TD
    Solar[Solar Panels & Batteries] --> EPS[Electrical Power System - EPS]

    EPS -->|Power| OBC[On-Board Computer - OBC]
    EPS -->|Power| Payload[Science Camera Payload]
    EPS -->|Power| ADCS[Attitude Determination & Control - ADCS]
    EPS -->|Power| Comms[UHF Communications]

    OBC <-->|Control Bus| EPS
    OBC <-->|Control Bus| Payload
    OBC <-->|Control Bus| ADCS
    OBC <-->|Control Bus| Comms

    Comms <-->|Radio Link| Ground[Ground Station]

1. Electrical Power System (EPS)

  • Microcontroller: NXP S32K3 Series / STM32L496xx (ARM Cortex-M4)
  • Responsibilities:
    • Solar energy harvesting with Maximum Power Point Tracking (MPPT).
    • Battery charge/discharge management (2 independent packs of 2x 18650 cells).
    • Voltage regulation (3.3V & 5V rails) with software-controllable load switches.
    • Fast hardware-level and software-level overcurrent protection.
    • Hardware watchdog monitoring.
    • Broad mission context management using the MCU

2. On-Board Computer (OBC)

  • Microcontroller: Main MCU + STM32H743xx (ARM Cortex-M7)
  • Responsibilities:
    • Master command parsing and state management.
    • Health heartbeats and telemetry collection.
    • Orbital calculations and scheduling payload imaging windows.
    • Ground station radio communication interface.

3. Payload

  • Processor: Raspberry Pi Compute Module 4 (CM4)
  • Responsibilities:
    • High-speed dual-camera scientific imaging.
    • Actuator/motor driver control (e.g., lens shutters, filter wheels) (V1 Only).
    • Image compression and storage before downlink.

4. Attitude Determination and Control System (ADCS)

  • Responsibilities: Detumbling the spacecraft, aligning the imaging payload to nadir pointing, and tracking target orientations.

5. UHF Communications (Comms)

  • Responsibilities: Uplinking commands and telemetry requests from ground stations, and downlinking collected science data and telemetry beacons.

Repository Structure

The project uses a versioned directory structure separating hardware and firmware iterations:

text
.
├── .github/                     # GitHub Workflows & Issue/PR Templates
│   └── workflows/
│       ├── build_and_docs.yml   # CI/CD action defining the pipeline
│       └── build_and_test.sh    # Dynamic build script runner
│
├── adcs/                        # Attitude Determination and Control System
│   ├── v1/
│   └── v2/
│
├── eps/                         # Electrical Power System Subsystem
│   ├── v1/                      # Version 1 (Prototype Model)
│   │   ├── firmware/            # STM32L4 firmware (CMake, CUnit tests, mocks)
│   │   ├── hardware/            # KiCad schematic, layout, symbols, & footprints
│   │   └── documentation/       # Doxygen, Sphinx configuration & spec files
│   ├── v2/                      # Version 2 (Placeholder for v2 development)
│   └── documentation/           # Bootflows, subsystem specifications, & kickoff info
│
├── obc/                         # On-Board Computer Subsystem
│   ├── v1/                      # Version 1 (Prototype Model)
│   │   ├── firmware/            # STM32H7 firmware (CMake)
│   │   ├── hardware/            # KiCad schematic and layout
│   │   └── tests/               # Pico-based LoRa packet transmission test
│   ├── v2/                      # Version 2 (Placeholder for v2 development)

Getting Started & Building

1. Prerequisite Toolchains

Ensure you have the following installed on your host system:

  • ARM Cross Compiler: gcc-arm-none-eabi
  • Build System Tools: cmake, make, g++
  • Documentation Generators: doxygen, Python 3 + sphinx

2. Fetching Submodules

This repository utilizes submodules (such as osusat/core and osusat/messaging). Clone with submodules or initialize them:

bash
git submodule update --init --recursive

3. Hardware Development & KiCad Templates

To create new expansion / daughterboard hardware designs in KiCad, symlink the shared template directory to your local KiCad user template path:

  • Linux:
    bash
    mkdir -p ~/.local/share/kicad/10.0/template
    ln -sf /path/to/cubesat/repo/shared/kicad/templates/test_board ~/.local/share/kicad/10.0/template/test_board
  • Windows (PowerShell):
    powershell
    New-Item -ItemType Directory -Force -Path "$env:APPDATA\kicad\10.0\template"
    New-Item -ItemType SymbolicLink -Path "$env:APPDATA\kicad\10.0\template\test_board" -Target "C:\path\to\cubesat\repo\shared\kicad\templates\test_board"

Once symlinked, open KiCad, click File → New Project from Template..., select the User Templates tab, and choose OSUSat Backplane Test Board Template.

For full manual setup options and details, see shared/kicad/README.md.

4. Compilation Guide

Building for the ARM Target (e.g., EPS v1)

To build the firmware binaries to flash onto the MCU:

bash
cd eps/v1/firmware
cmake -B build_arm -S . -DCMAKE_TOOLCHAIN_FILE=arm-none-eabi-toolchain.cmake
cmake --build build_arm

Outputs: .elf, .hex, and .bin files will be generated under build_arm/.

Building Host Tests / Hardware-in-the-Loop (HITL) Mocks

To build and execute unit tests on your local machine:

bash
cd eps/v1/firmware
cmake -B build_hitl -S . -DTARGET_ARCH=HOST -DBUILD_HITL=ON
cmake --build build_hitl
cd build_hitl && ctest --output-on-failure

CI/CD Pipeline

The repository uses a generalized GitHub Actions workflow:

  • Scope-Based Execution: Uses git diffs to detect which subsystem version has been modified (e.g. eps/v1/ vs obc/v1/) and builds only the affected firmware.
  • Continuous Integration: Runs host-based CTests automatically to verify changes.
  • Documentation Deployments: Generates Doxygen API listings and Sphinx documentation on successful builds. Pull Requests automatically receive a comment with links to Pages-hosted previews of the documentation.

Quality Assurance & Contributions

Before submitting a Pull Request, contributors must follow the project's QA procedures found in /documentation:

  1. Issue Checkout: Before work or contributions begin, ensure your changes are encapsulated by an issue in the GitHub project
  2. Design Guidelines: For any and all changes, follow the design guidelines.
  3. Design Reviews: Complete the Schematic Review Checklist and Layout Review Checklist checklists before fabricating PCBs.
  4. Firmware Guidelines: Adhere to the HITL Guidelines and Keeping the HAL Policy Free design rules.
  5. Acceptance Tests: All hardware deliverables require a formal ATP (Acceptance Test Procedure).

Parts

9
QtyValueFootprintReferences
2120RInductor_SMD:L_0402_1005MetricFB1, FB2
25.1kResistor_SMD:R_0402_1005MetricR1, R2
1100nFCapacitor_SMD:C_0402_1005MetricC1
110nCapacitor_SMD:C_0402_1005MetricC2
11uCapacitor_SMD:C_0603_1608MetricC3
1USBLC6-2P6Package_TO_SOT_SMD:SOT-666U1
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_G-Switch_GT-USB-7010ASVJ1

More from OSUSat/cubesat

6
  • 6 layers80 × 80 mmEps, the printed circuit board in 3D

    Eps

    OSUSat/cubesat

    Open Source Earth Imaging Satellite Hardware + Firmware

    413 parts8MIT
  • 4 layers80 × 80 mmObc, the printed circuit board in 3D

    Obc

    OSUSat/cubesat

    Open Source Earth Imaging Satellite Hardware + Firmware

    151 parts8MIT
  • 4 layers80 × 80 mmPayload, the printed circuit board in 3D

    Payload

    OSUSat/cubesat

    Open Source Earth Imaging Satellite Hardware + Firmware

    60 parts8MIT
  • 2 layers73 × 28 mmBattery contact panel, the printed circuit board in 3D

    Battery contact panel

    OSUSat/cubesat

    Open Source Earth Imaging Satellite Hardware + Firmware

    34 parts8MIT
  • 2 layers35 × 28 mmBattery contact, the printed circuit board in 3D

    Battery contact

    OSUSat/cubesat

    Open Source Earth Imaging Satellite Hardware + Firmware

    11 parts8MIT
  • 2 layers35 × 28 mmBattery contact, the printed circuit board in 3D

    Battery contact

    OSUSat/cubesat

    Open Source Earth Imaging Satellite Hardware + Firmware

    11 parts8MIT

Similar boards

  • 4 layers48 × 35 mmMinimal, the printed circuit board in 3D

    Minimal

    torvalds/GuitarPedal

    Linus learns analog circuits

    114 parts2.5kGPL-2.0
  • 4 layers180.8 × 300.3 mmDilemma, the printed circuit board in 3D

    Dilemma

    Bastardkb/Dilemma

    The Dilemma is a vertical stagger low-profile keyboard with mods.

    383 parts590
  • 4 layers70 × 72 mmSPINC AA Charger, the printed circuit board in 3D

    SPINC AA Charger

    CoretechR/SPINC

    DIY Automatic Battery Charger Using RP2040

    101 parts467GPL-3.0
  • 4 layers94.4 × 72.8 mmRP2040 base, the printed circuit board in 3D

    RP2040 base

    Twisted-Fields/rp2040-motor-controller

    A dual channel brushless motor controller based on the RP2040 microcontroller, designed in Kicad.

    325 parts419
  • 4 layers70 × 54 mmPicoLab, the printed circuit board in 3D

    PicoLab

    CoretechR/PicoLab

    Web-GUI Embedded Multitool

    285 parts327GPL-3.0
  • 2 layers172 × 152.9 mmTrackpad, the printed circuit board in 3D

    Trackpad

    george-norton/peacock

    A big QMK powered trackpad

    102 parts309CERN-OHL-S-2.0
  • 4 layers95.6 × 73.6 mmMathpad, the printed circuit board in 3D

    Mathpad

    Summa-Cogni/Mathpad

    A mathematical keypad for students and professionals

    93 parts243
  • 4 layers100 × 70 mmZSWatch Watch DevKit, the printed circuit board in 3D

    ZSWatch Watch DevKit

    ZSWatch/Watch-DevKit-HW

    The hardware repo for the ZSWatch Development Kit.

    132 parts188GPL-3.0

Questions

How big is the Usb c PCB?

It measures 12.6 × 17 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Usb c use?

9 parts, built around the USBLC6-2P6. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Usb c KiCad files?

From the OSUSat/cubesat repository on GitHub, at the commit this page was made from: the board is shared/kicad/subsheets/usb_c/usb_c.kicad_pcb and its schematic eps/v1/battery_contact_l/battery_contact.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Usb c design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).