How kenchangh/kensat works
KENSAT is a CubeSat flight system built around scheduled, power-gated on-orbit LLM inference, with an OBC coordinating payload operation, housekeeping, antenna deployment, and open UHF telemetry. The principal workflow sends a prompt from the PIC24 to the Jetson, returns inference text to the OBC, frames it for beacon downlink, and decodes it at a ground station. README-level integrations are shown where source excerpts are unavailable; those links reflect documented behavior, not inspected implementation.
Main entry points: main.c OBC scheduler · task_jetson.c Inference task · task_cmd.c Command parser · task_beacon.c Beacon task
Components 22
Flight control
- OBC scheduler
firmware/obc/app/main.c - Command parser
firmware/obc/app/task_cmd.c - Burn-wire state
firmware/obc/app/deploy.h - Housekeeping tasks
firmware/obc/app/task_5sec.c - IMU task
firmware/obc/app/task_bmi088.c - SD logging
firmware/obc/app/task_sdlog.c - Watchdog task
firmware/obc/app/task_wdt.c - Board peripherals
firmware/obc/bsp/csk_io.c
AI payload
- Inference task
firmware/obc/app/task_jetson.c - UART prompt listener
jetson/prompt_listener.py - llama-server
Radio link
- Telemetry framing
firmware/obc/app/telemetry.h - Beacon task
firmware/obc/app/task_beacon.c - AX.25 framing
firmware/obc/app/ax25.c - Si4463 radio
firmware/obc/app/task_si4463.c - UHF radio link
Ground station
- AX.25 decoder
ground-station/pluto_rx_ax25.py - SDR tools
ground-station/pluto_rx.py
RF engineering
- Matching optimizer
radio/rf-design/matching_network_skrf.py - Smith chart tuning
radio/rf-design/vna_smith_plot.py
Other components
- Mission operator
- Ground operator
Connections 23
- Mission operator → Command parser: sends commands
- OBC scheduler → Command parser: schedules
- OBC scheduler → Inference task: schedules
- OBC scheduler → Beacon task: schedules
- OBC scheduler → IMU task: schedules
- OBC scheduler → SD logging: schedules
- OBC scheduler → Watchdog task: schedules
- Command parser → Inference task: requests inference
- Command parser → Burn-wire state: requests deployment
- Burn-wire state → Board peripherals: drives GPIO
- Inference task → UART prompt listener: sends prompts
- UART prompt listener → Inference task: returns results
- UART prompt listener → llama-server: queries
- IMU task → Telemetry framing: provides readings
- Inference task → Telemetry framing: provides results
- Telemetry framing → Beacon task: supplies payload
- Beacon task → AX.25 framing: frames packets
- Beacon task → Si4463 radio: dispatches transmit
- Si4463 radio → UHF radio link: transmits
- UHF radio link → AX.25 decoder: carries beacons
- Ground operator → AX.25 decoder: receives frames
- UHF radio link → SDR tools: carries signals
- Matching optimizer → Smith chart tuning: informs tuning