A 2U CubeSat that runs a large language model on-orbit. A power-gated NVIDIA
Jetson Orin Nano executes neural-network inference in space, and the results
are downlinked over a custom UHF radio link to amateur ground stations.
KENSAT’s mission is to demonstrate autonomous AI compute on a small
satellite — taking a GPU-class accelerator and a quantized LLM out of the
data center and running them inside the tight power, thermal, and reliability
envelope of a 2U CubeSat. The on-board computer wakes the Jetson only when
needed, runs an inference within a measured energy budget, and frames the
output for downlink. Everything else in the spacecraft — the flight software,
the UHF radio and its RF matching networks, the power system, and the
antenna-deployment hardware — exists to get that compute on orbit, keep it
alive, and get its results to the ground.
Why it’s hard. Edge AI in orbit means treating a multi-watt accelerator as
a scheduled, fault-tolerant load: powering it from a battery-backed bus only
in defined windows, dissipating its heat passively in vacuum, recovering it if
it hangs, and surviving the brownouts and resets that come with switching that
much current on a small satellite. KENSAT is built end to end around that
problem.
Mission profile: a 520 km sun-synchronous orbit, operating UHF amateur
radio at 437.08 MHz for beaconing, telemetry downlink, and command uplink.
Telemetry — including downlinked inference results — is intentionally
unencrypted so amateur operators worldwide can receive and decode it.
Radio link (for receiving stations)
KENSAT beacons openly on the UHF amateur band — no encryption, no keys.
Anyone with a 70 cm receiver and a G3RUH-capable TNC (Direwolf, gr-satellites,
SatNOGS) can decode it.
Beacon / downlink frequency
437.080 MHz
Transmitter
Mode U — GFSK 1k2 AX.25 G3RUH
Modulation
GFSK
Baud
1200
Framing
AX.25 UI, NRZI + G3RUH
Source callsign
KO6IKZ
Beacon interval
~30 s
Status
active
Encryption
none — telemetry is open by design
Decoders and an end-to-end test harness live in
ground-station.
Boards interconnect over the 104-pin CubeSat Kit Bus. The PIC24 is the
always-on flight computer; it talks to the EPS over I²C, drives the Si4463
radio over SPI, controls and exchanges data with the Jetson over UART, and
fires the antenna-deployment burn wires over GPIO.
See docs/system-architecture.md for the full
spec: pinouts, bus map, operational modes, deployment state machine, power
budget, and thermal analysis.
Architecture spec, radio guide, Jetson startup, debug notes
Engineering highlights
An LLM running in orbit. The payload is an NVIDIA Jetson Orin Nano running
a quantized TinyLlama model under llama.cpp. The always-on PIC24 keeps it
powered down, then — on schedule or command — switches on its rail through a
high-side load switch, waits for the Jetson to boot and signal READY over
UART, dispatches a prompt, collects the generated text, powers the Jetson back
off, and queues the result for downlink. The whole cycle is bounded by a
measured per-inference energy budget so a single run can’t drain the pack.
(docs/system-architecture.md §6.2, jetson/)
Treating a GPU as a spacecraft load. Running multi-watt edge compute on a
2U bus is a systems problem: the EPS sizes a battery-backed rail and a
hardware watchdog around the Jetson’s draw, the OBC power-gates it and can
recover a hung payload by cutting power, and the design accounts for
dissipating its heat passively in vacuum, where there’s no convection.
(docs/system-architecture.md §8.1)
Fault-tolerant by construction. Both the inference cycle and the antenna
burn-wire release are one-shot, flash-persisted state machines that survive
the brownouts and resets that come with switching large currents: attempt
counts are written before energizing, success flags only after completion,
and the RF-silence hold fails safe toward staying quiet.
(details)
A complete UHF link to get results down. TX / RX / antenna matching
networks were designed with a custom scikit-rf grid-search optimizer that
models PCB traces as CPWG transmission lines (elliptic-integral method) and
snaps to real LCSC part values, then validated on an ADALM-Pluto SDR loopback
bench (gain sweep, harmonics, insertion loss). Inference output is framed as
AX.25 and downlinked openly. (radio/rf-design)
Signal-integrity-aware bus design. The Si4463 SPI bus crosses two
board-to-board connectors; the design derates the clock and adds series
termination accordingly. (docs/spi-debug-notes.md)
OBC firmware depends on proprietary vendor SDKs (Pumpkin CubeSat Kit BSP,
Salvo RTOS) that are not redistributed here. See
firmware/obc/BUILD.md.
Radio firmware builds with arduino-cli for the ESP32-S3.
RF design / ground-station tools are Python; see the requirements.txt
in each directory.
License
Original work in this repository is released under the MIT License.
Proprietary vendor SDKs the firmware builds against are not included and are
not covered by that license — see the LICENSE file and
firmware/obc/BUILD.md.
KENSAT — UHF amateur satellite, 437.08 MHz. Telemetry is open and unencrypted
by design, in the tradition of the amateur radio community.
关于
2U 立方星在轨运行大语言模型(Jetson Orin Nano),星上智能代表项目,验证边缘 GPU 星上运行 LLM 的可行性。镜像收录自 https://github.com/kenchangh/kensat,License:MIT
KENSAT — Edge-AI Compute in Orbit
KENSAT’s mission is to demonstrate autonomous AI compute on a small satellite — taking a GPU-class accelerator and a quantized LLM out of the data center and running them inside the tight power, thermal, and reliability envelope of a 2U CubeSat. The on-board computer wakes the Jetson only when needed, runs an inference within a measured energy budget, and frames the output for downlink. Everything else in the spacecraft — the flight software, the UHF radio and its RF matching networks, the power system, and the antenna-deployment hardware — exists to get that compute on orbit, keep it alive, and get its results to the ground.
Why it’s hard. Edge AI in orbit means treating a multi-watt accelerator as a scheduled, fault-tolerant load: powering it from a battery-backed bus only in defined windows, dissipating its heat passively in vacuum, recovering it if it hangs, and surviving the brownouts and resets that come with switching that much current on a small satellite. KENSAT is built end to end around that problem.
Mission profile: a 520 km sun-synchronous orbit, operating UHF amateur radio at 437.08 MHz for beaconing, telemetry downlink, and command uplink. Telemetry — including downlinked inference results — is intentionally unencrypted so amateur operators worldwide can receive and decode it.
Radio link (for receiving stations)
KENSAT beacons openly on the UHF amateur band — no encryption, no keys. Anyone with a 70 cm receiver and a G3RUH-capable TNC (Direwolf, gr-satellites, SatNOGS) can decode it.
Decoders and an end-to-end test harness live in ground-station.
System at a glance
Boards interconnect over the 104-pin CubeSat Kit Bus. The PIC24 is the always-on flight computer; it talks to the EPS over I²C, drives the Si4463 radio over SPI, controls and exchanges data with the Jetson over UART, and fires the antenna-deployment burn wires over GPIO.
See docs/system-architecture.md for the full spec: pinouts, bus map, operational modes, deployment state machine, power budget, and thermal analysis.
Subsystems
Engineering highlights
An LLM running in orbit. The payload is an NVIDIA Jetson Orin Nano running a quantized TinyLlama model under llama.cpp. The always-on PIC24 keeps it powered down, then — on schedule or command — switches on its rail through a high-side load switch, waits for the Jetson to boot and signal
READYover UART, dispatches a prompt, collects the generated text, powers the Jetson back off, and queues the result for downlink. The whole cycle is bounded by a measured per-inference energy budget so a single run can’t drain the pack. (docs/system-architecture.md §6.2, jetson/)Treating a GPU as a spacecraft load. Running multi-watt edge compute on a 2U bus is a systems problem: the EPS sizes a battery-backed rail and a hardware watchdog around the Jetson’s draw, the OBC power-gates it and can recover a hung payload by cutting power, and the design accounts for dissipating its heat passively in vacuum, where there’s no convection. (docs/system-architecture.md §8.1)
Fault-tolerant by construction. Both the inference cycle and the antenna burn-wire release are one-shot, flash-persisted state machines that survive the brownouts and resets that come with switching large currents: attempt counts are written before energizing, success flags only after completion, and the RF-silence hold fails safe toward staying quiet. (details)
A complete UHF link to get results down. TX / RX / antenna matching networks were designed with a custom scikit-rf grid-search optimizer that models PCB traces as CPWG transmission lines (elliptic-integral method) and snaps to real LCSC part values, then validated on an ADALM-Pluto SDR loopback bench (gain sweep, harmonics, insertion loss). Inference output is framed as AX.25 and downlinked openly. (radio/rf-design)
Signal-integrity-aware bus design. The Si4463 SPI bus crosses two board-to-board connectors; the design derates the clock and adds series termination accordingly. (docs/spi-debug-notes.md)
Repository layout
Building
requirements.txtin each directory.License
Original work in this repository is released under the MIT License. Proprietary vendor SDKs the firmware builds against are not included and are not covered by that license — see the LICENSE file and firmware/obc/BUILD.md.
KENSAT — UHF amateur satellite, 437.08 MHz. Telemetry is open and unencrypted by design, in the tradition of the amateur radio community.