Ground station control,
right from your browser.
SatStation drives an AZ/EL antenna positioner and an Icom IC-9700 transceiver for amateur satellite work — SGP4 pass prediction, live tracking, and real-time Doppler correction, with no desktop install and no build step.
Features
SGP4 Pass Prediction
Full SGP4 propagation against CelesTrak's active-satellite catalog, reporting AOS/LOS, max elevation, and orbit number for every pass in your window — filtered to the satellites you actually care about.
Automated AZ/EL Tracking
Drives a BLE-connected AZ/EL positioner through an entire pass automatically — prepositioning, AOS start, waypoint refill mid-pass, and stow at LOS — with no operator babysitting required.
IC-9700 CAT & Doppler
CAT control over the radio's own USB port sets Main/Sub frequency and mode, and continuously pushes Doppler-corrected uplink/downlink frequencies while tracking, with passband offset and TX trim for inverting transponders.
Sun & Moon Tracking
Live az/el for the Sun and Moon using a Meeus-algorithm implementation with topocentric parallax correction — handy fixed targets for antenna calibration and field tests.
Your Satellite Database
A curated, hand-vetted database of active amateur satellites and transmitters ships in the box, and you can add or correct entries locally without waiting on an upstream update.
Runs Anywhere on Your LAN
One headless backend, any number of browser windows or tabs sharing the same live hardware state — open the Operations window on your shack PC and a status view on your phone at the same time.
Screenshots
Architecture
SatStation is a headless Rust backend (satstation-server,
built on Axum) paired with a plain HTML/CSS/JS frontend — no bundler, no npm, no build
step. The frontend talks to the backend over one WebSocket per browser window, using a small
request/response and push-event protocol.
- satstation-core — SGP4/TLE math, IC-9700 radio control, and the AZ/EL positioner's BLE protocol client. No knowledge of the web server or a browser.
- satstation-server — serves the frontend
as static files and exposes
satstation-coreover a WebSocket RPC/ event API. One shared application state, so every connected window sees the same hardware and mission state. - Binds to
127.0.0.1by default — deliberately not0.0.0.0— since this is direct, unauthenticated control of real RF hardware.
Status
Verified against real hardware: orbit propagation and pass prediction, BLE positioner control (connect, query, jog, home, live pass tracking through a full LOS), and IC-9700 CAT control (frequency/mode on Main and Sub, satellite mode, continuous Doppler push).
Still in progress: the flip-mode decision for auto-tracking passes that cross the mount's zenith limit, GPS-based ground station input, and the IC-9700's satellite Normal/Reverse tracking-direction setting.
Downloads
Windows
satstation-server 0.3.2 · x86_64 · MSI installer · 4.1 MB
Installs SatStation as a regular Windows application. Launch it from the Start menu; it opens the Operations window in your default browser.
Download .msiUbuntu 26.04
satstation-server 0.3.2-1 · amd64 · .deb package · 2.9 MB
Install with sudo apt install ./satstation-server_0.3.2-1_amd64.deb,
then run satstation-server from a terminal or the applications menu.
Either package prints a URL
(http://127.0.0.1:7878 by default) to open in a browser —
override the port with SATSTATION_PORT and the bind address with
SATSTATION_BIND. Source isn't public yet; it's headed toward an
open-source release once it's further along.