OscarWatch keeps orbits (TLEs) and frequencies/modes (transponder database) separate. This document describes where that data lives, how updates are published, and how in-app sync works.
| Layer | Location | Role |
|---|---|---|
| Remote | tle.oscarwatch.org/satellite_database.json | Canonical published updates — new satellites and new/edited transponder modes |
| Bundled | OscarWatch/Assets/satellite_database.json |
Shipped with each app release; fallback when no user file exists |
| User | %AppData%/OscarWatch/satellite_database.json |
Your working copy after first edit or after a merge from the remote URL |
TLEs are fetched from the same host: tle.oscarwatch.org.
The app loads user → bundled (see SatelliteDatabaseService).
- Satellites → Update transponder database… (or Check for updates in the database editor) downloads the remote file and opens a merge dialog.
- Settings → Tracking → Check for transponder database updates on startup (on by default) runs the same check when the app opens; the dialog appears only when updates exist.
- New satellites and modes from the server are selected by default; you can uncheck any before applying.
- Conflicts (same satellite name and mode type, different fields): tick Use local version and apply to confirm your edit (acknowledged in
settings.json; the prompt returns only if local or published data changes). Tick Use published version to replace your copy with the server fields. - Restore defaults deletes the user file and reloads the bundled database from the installation — not the remote URL.
- Import JSON… / Export JSON… in the editor (file picker): export the current editor contents; import merges a chosen file into the editor (same merge UI as remote sync). Press Save in the editor after import to persist to
%AppData%. - Add satellite opens a searchable list of TLE catalogue names not already in the database, or you can enter a custom name.
{
"name": "SO-50",
"norad_id": "27607",
"modes": [
{
"type": "FM VOICE",
"downlink": 436795,
"uplink": 145850,
"downlink_mode": "FMN",
"uplink_mode": "FMN",
"doppler": "NOR",
"ctcss": 67.0,
"ctcss_arm": 74.4
}
]
}| Field | Notes |
|---|---|
name |
Must match the TLE catalogue name closely enough for lookup (see aliases in SatelliteDatabaseService) |
norad_id |
Optional. NORAD catalogue number as a string (e.g. "27607"), matching tle.oscarwatch.org. Use when the display name differs from the TLE name (e.g. RADFXSAT (FOX-1B) → 43017 for AO-91). |
type |
Label shown in the frequency panel mode list; unique per satellite |
downlink / uplink |
kHz; use 0 uplink for beacon-only / receive-only (SSTV, telemetry, CW beacon). OscarWatch treats these as receive-only for CAT (no uplink doppler; ICOM rigs exit satellite mode and tune Main on the downlink band). |
downlink_mode / uplink_mode |
Rig mode strings: FM, FMN, USB, LSB, CW, DATA-USB, DATA-LSB, DATA-FM (FM-DATA is accepted and stored as DATA-FM) |
doppler |
NOR or REV |
ctcss / ctcss_arm |
Optional Hz; FM access and arm tones |
Publishing rules:
- Frequencies must be JSON numbers, not strings (
437350not"437350"). - Validate with the in-app editor or
SatelliteDatabaseFile.ValidateEntriesbefore publishing. - Prefer stable
typenames so merges do not create duplicate modes after renames.
The transponder database is keyed by satellite name, with NORAD catalogue ID as a fallback when TLE names differ (for example Celestrak OBJECT_NAME values such as SAUDISAT 1C matching database entry SO-50 via NORAD ID 27607). Names should align with tle.oscarwatch.org TLE entries where possible. OscarWatch registers common aliases (e.g. AO-7 → AO-07, ISS (ZARYA) → ISS, FOX-1B → RADFXSAT (FOX-1B), SAUDISAT 1C → SO-50). Optional norad_id in the database JSON enables reliable cross-catalog matching. If a spacecraft has TLEs but no database entry, the frequency panel stays empty until an entry exists locally or via sync.
- GitHub — pull requests updating
satellite_database.json/OscarWatch/Assets/satellite_database.json(and the repo root copy if kept in sync). - Remote publish — maintained copies on tle.oscarwatch.org for operators between app releases.
Include a short note in the PR: source (official satellite page, operator reports, coordination with AMSAT/ARISS, etc.). Frequency changes on active spacecraft should reflect confirmed operating status, not rumour.
Remote sync is a read-only HTTPS GET. No station data, callsign, or settings are uploaded. Merge prompts are the consent gate for writing anything to %AppData%.
| Piece | Path |
|---|---|
| Load / lookup | OscarWatch.Core/Services/SatelliteDatabaseService.cs |
| JSON I/O | OscarWatch.Core/Services/SatelliteDatabaseFile.cs |
| Editor | OscarWatch.Core/Services/SatelliteDatabaseEditor.cs |
| UI | OscarWatch/Views/SatelliteDatabaseWindow.axaml |
| Remote URL constant | SatelliteDatabasePaths.RemoteDatabaseUrl |