Skip to content

[satellites] Auto-populate radio metadata (mode/frequency) from SatNOGS Transmitter DB #1009

@accius

Description

@accius

Summary

Automate satellite radio metadata (mode / downlink / uplink / tone / baud) instead of hand-curating it in server/routes/satellites-tracked.js. Curated frequency tables go stale, and maintaining them manually is the concern raised in #1004 (comment). Rather than dropping the data, source it from a machine-readable feed.

Background

satellites-tracked.js currently carries hand-entered mode / downlink / uplink / tone fields. These surface in the satellite popup (src/plugins/layers/useSatelliteLayer.js) and via useSatellites.js. They drift out of date and are tedious to audit (last audit: May 9, 2026).

Proposed source: SatNOGS Transmitter DB

The SatNOGS Transmitter database is a crowd-maintained, machine-readable feed keyed by NORAD ID:

GET https://db.satnogs.org/api/transmitters/?format=json&satellite__norad_cat_id=25544
→ { downlink_low: 145825000, uplink_low: 145825000, mode: "AFSK",
    baud: 1200, type: "Transceiver", status: "active", alive: true,
    norad_cat_id: 25544, updated: "..." }

Frequencies are in Hz. This is a different dataset from the SatNOGS TLE feed dropped in #1007 — orbital data on SatNOGS is questionable, but transmitter/frequency data is its core strength, so dropping one does not preclude using the other.

Approach

  • Background fetcher for SatNOGS transmitters — reuse the state-machine pattern introduced in [feature/satellite] OMM data download, server background driven update, optional Space-Track #1007 (server-side, not event-driven).
  • Refresh on a long TTL (frequencies rarely change — daily is ample).
  • Join to HAM_SATELLITES by NORAD ID; filter to status: "active" / alive: true.
  • Selection/aggregation policy for sats with multiple transmitters (FM voice + APRS + SSTV + telemetry beacon).
  • Format Hz → MHz strings consistent with the existing popup display.
  • Keep the curated values in satellites-tracked.js as a fallback for sats SatNOGS does not cover (some geostationary weather birds — e.g. ELEKTRO-L4/L5 — may have no transmitter entry).
  • Server-side cache with a size cap (we serve 2,000+ concurrent users).
  • CC-BY-SA attribution line for SatNOGS DB data.

Notes

Ref: #1004, #1007

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions