Skip to content

Receiver modes

The receiver manager owns one exact USB SDR and serializes every mode change. A failed startup stops partial processes and restores aircraft reception.

stateDiagram-v2
    [*] --> Aircraft
    Aircraft --> Switching
    Switching --> Listen: rtl_fm and ffmpeg ready
    Switching --> Satellite: SatDump ready
    Switching --> Sensors: rtl_433 ready
    Switching --> Aircraft: validation or startup failed
    Listen --> Aircraft: stop or timeout
    Satellite --> Decode: capture completes
    Decode --> Aircraft: products indexed
    Sensors --> Aircraft: stop or timeout

Aircraft

flowchart LR
    RF[1090 MHz RF] --> SDR[RTL-SDR]
    SDR --> readsb
    readsb --> JSON[aircraft.json]
    JSON --> Snapshot[Live snapshot]
    JSON --> Archive[(Position archive)]
    readsb --> Feed[airplanes.live feed]
  • Frequency: 1090 MHz ADS-B and Mode S.
  • Local JSON is sampled every two seconds; recent positioned aircraft are archived about every ten seconds.
  • The Live map uses OpenStreetMap tiles and requires no commercial map key.
  • Aircraft mode is the default and the recovery target for every temporary session.

Listen

flowchart LR
    RF[Airband AM or NOAA FM] --> rtl_fm
    rtl_fm --> Filter[Voice filtering]
    Filter --> FFmpeg[FFmpeg AAC encoder]
    FFmpeg --> HLS[Rotating HLS playlist]
    HLS --> Safari[Native Safari audio]
Source Range Modulation Useful starting point
Aircraft voice 118.000–136.975 MHz AM An active Tampa tower, approach, departure, or ATIS channel
NOAA Weather Radio 162.400–162.550 MHz FM 162.550 MHz in Tampa

Audio is live with a small HLS buffer. Every tune resets the playlist and uses unique segment names so Safari cannot replay segments from the previous frequency.

Satellite

flowchart LR
    Predict[Skyfield pass prediction] --> Schedule[Choose a visible pass]
    Schedule --> Capture[SatDump LRPT capture]
    Capture --> CADU[CADU data]
    CADU --> Products[SatDump products]
    Products --> Gallery[Skyglow capture gallery]
    Gallery --> Return[Restore aircraft]
  • Intended for supported Meteor M2-series LRPT around 137 MHz.
  • Prediction uses refreshed CelesTrak orbital elements and rejects stale data.
  • Capture duration is bounded and aircraft mode returns after processing.
  • Real imagery requires the active satellite frequency and symbol rate, a suitable 137 MHz antenna, an open sky view, and a usable pass.

Sensors

flowchart LR
    Devices[Weather / soil / TPMS devices] --> RF[315–915 MHz transmissions]
    RF --> rtl_433
    rtl_433 --> Normalize[Validate and normalize JSON]
    Normalize --> Current[Current sensor cards]
    Normalize --> History[(24-hour readings)]

Selectable bands include 315, 345, 433.92, 868.3, and 915 MHz. Only protocols implemented by the installed rtl_433 version can be decoded. Many battery sensors transmit only periodically or after a value changes.

Mode ownership rules

flowchart TD
    Request[Authenticated mode request] --> Validate{Valid mode, options, and duration?}
    Validate -- No --> Reject[Return bounded error]
    Validate -- Yes --> Stop[Stop current decoder]
    Stop --> Release[Wait for USB release]
    Release --> Start[Start requested decoder]
    Start --> Ready{Healthy?}
    Ready -- Yes --> Timer[Run until stop or deadline]
    Ready -- No --> Restore[Restore aircraft]
    Timer --> Restore

All receiver changes use authenticated POST requests. GET requests never change receiver state.