ground-station: Ground Station: The Software-Defined OS for Satellite Passes
An open-source control plane that fuses orbital prediction, SDR orchestration, automated observations, and real-time transcription into one web-native radio stack.
- Ground Station treats a satellite pass like a managed workflow, with prediction, hardware control, recording, decoding, and teardown all coordinated from one place.
- Its real novelty is orchestration, not tracking, because the repo acts like a control plane for SDRs, rotators, and DSP jobs.
- The project makes radio software feel like observability software by exposing pipeline health, throughput, and subsystem state instead of hiding the signal chain.
- AI transcription turns pass audio into searchable artifacts, which pushes the system beyond hobbyist reception and into operational documentation.
Ground Station is easiest to understand if you ignore the usual satellite-tracking framing. This is not just a nicer Gpredict or another SDR front end. It is a software-defined operating system for a pass: predict it, wake the hardware, tune the radio, record the feed, decode the payload, and put the whole session back to bed when LOS arrives.
A Satellite Pass, Automated Like a Build Pipeline
The repo’s best idea is simple: a pass is a job. Once a satellite crosses the horizon, the system can trigger the observation lifecycle, select the right demodulator, start recording, steer the rotator, and route output into the right storage and transcription path. That makes the station feel less like a bench full of tools and more like a managed service.
That framing matters because radio work has always been full of glue code. Ground Station compresses that glue into a single interface, so the operator spends less time coordinating and more time observing.
Why the Orchestration Layer Is the Real Product
The orchestration center is `ProcessManager`, which delegates work to demodulator, recorder, and decoder managers while keeping the UI responsive. That is not an implementation detail. It is the product. The software has to coordinate hardware and compute-heavy DSP without blocking the operator or losing the pass.
# Conceptual shape of the orchestration layer
process_manager.start()
process_manager.attach_demodulator(satellite)
process_manager.start_recorder()
process_manager.start_decoder()
process_manager.track_rotator(pass_window)
process_manager.teardown_on_los()
Hybrid concurrency is doing real work here. The backend leans on asyncio for I/O and web responsiveness, then uses multiprocessing for the DSP-heavy path so signal processing does not freeze the rest of the system. In a ground station, that balance is not elegant plumbing. It is the difference between a pass you catch and a pass you miss.
Margin of control
The architecture choice makes sense because SDR and FFT workloads are exactly where Python’s GIL stops being theoretical. I like that the UI can stay alive while the signal chain does heavy lifting. That keeps the operator’s mental model intact.
The Pass Lifecycle: From AOS to LOS
The observation flow begins before the antenna moves. Orbit prediction from TLE data and Skyfield or SGP4 determines the pass window, then the executor turns that forecast into an actual session. When AOS hits, the station wakes up: the SDR powers on, the VFO tunes, the tracker starts steering, and the decoder selected for that satellite takes over.
The important part is that these steps are connected, not merely adjacent. Forecast feeds scheduling. Scheduling feeds observation. Observation fans out into live subsystems. Then the results collapse back into artifacts, logs, and database records at LOS.
| Stage | What changes | What the operator sees |
|---|---|---|
| Forecast | TLEs are parsed and a pass window is computed | A future observation appears on the schedule |
| AOS trigger | The session starts and hardware is armed | The station wakes up and begins tracking |
| Active pass | SDR, decoder, recorder, and rotator run together | Audio, data, and telemetry arrive in real time |
| LOS teardown | Files and metadata are finalized | The UI returns to idle with a complete record |
The result is a pass lifecycle that feels deterministic. You are not clicking around to make a dozen things happen in sequence. You are declaring intent and letting the system execute it.
Why the Data Model Matters More Than It Looks
The schema tells the truth about the domain. This is not just audio and frequency. It is transmitter ranges, inversion, UTC-aware timestamps, custom metadata, and a lot of satellite-specific exceptions that do not fit a tidy table.
# The schema points at the real complexity of the domain
transmitter = {
"uplink_low": 145800000,
"downlink_high": 437800000,
"invert": True,
"metadata": {"satnogs": "compatible", "notes": "custom framing"},
"timestamp": "UTC-aware"
}
That choice to keep timestamps aware and metadata flexible is a subtle but important sign of maturity. A ground station breaks if time drifts, if the band plan is wrong, or if a satellite needs one-off handling. The model has to accommodate edge cases without turning into a swamp.
Ground Station is a full-featured, open-source software solution for satellite tracking and radio communication. Designed for amateur radio operators, satellite enthusiasts, and researchers, it provides a comprehensive and easy-to-use platform for monitoring spacecraft, controlling radio equipment, and receiving live radio signals from satellites.
DSP as a First-Class UI Problem
The project’s DSP topology view is a smart move. It turns the signal chain into something observable. You can reason about queue health, throughput, and bottlenecks the same way you would inspect a production pipeline, which is exactly the right mental model for a system that processes live radio data.
That is where Ground Station feels unusually modern. Old radio software often hides the machinery. This repo surfaces it, which makes troubleshooting and optimization much faster.
The AI Transcription Hook
The transcription path is the feature that makes the whole project feel current. Instead of leaving a pass as an audio file or a waterfall screenshot, the system can route speech through Gemini or Deepgram and turn ephemeral radio into text you can search, skim, and archive.
That changes the value of a pass. It becomes a record, not just a capture. For operators who care about ISS contacts, amateur voice traffic, or live mission chatter, that is a serious upgrade.
Very cool! Automated observations with multiple receivers and audio transcription is sick
How It Compares to SatNOGS and the Usual SDR Stack
Ground Station is competing in a crowded space, but the comparison is cleaner than it first looks. SatNOGS is network-first. Gpredict is tracking-first. Typical SDR stacks are reception-first. Ground Station is orchestration-first.
| Project | Primary model | Strength | Weakness | Best for |
|---|---|---|---|---|
| Ground Station | Unified pass orchestration | One control plane for prediction, hardware, DSP, and transcription | High complexity and more moving parts in one repo | Single-station operators who want automation |
| SatNOGS | Distributed station network | Shared observation infrastructure and network coordination | Less focused on a single local workflow | Community stations and shared coverage |
| Gpredict plus SDR tools | Manual tool chaining | Great tracking and flexible reception stack | Lots of glue work and context switching | Power users who like assembling their own setup |
That distinction is the whole editorial point. Ground Station is not trying to win by being one more interface. It is trying to unify the workflow.
The Trade-Offs Behind the Ambition
The ambition cuts both ways. A repo that spans orbital math, multiprocessing DSP, web UI, database migrations, and AI transcription is powerful, but it is also harder to maintain and harder to bus-proof. The more of the station it owns, the more it has to get right.
That trade-off is still worth noticing because it tells you what kind of project this is. It is not a narrow utility built to do one job. It is a serious attempt to make the ground station itself feel like software infrastructure.





