Open source · GPL-3.0 · macOS on Apple silicon

rx888-radio

Your RX-888 MkII software-defined radio on a Mac. A browser SDR built on ka9q-radio's radiod covers HF (0–64 MHz) and VHF/UHF. It decodes FT8, FT4 and WSPR on every HF band at once, with world maps, and records and transcribes airband and public-safety radio on the Mac itself. It also does SSB voice, AM / shortwave / FM with stereo, APRS, AIS and SSTV.

The Radio tab: four spectrum and waterfall panels: the AM broadcast band, 2–30 MHz HF, FM broadcast and airband, each spectrum a colour-coded persistence display
The Radio tab: four panels, each on its own range. They are live where the receiver is listening and show their last picture elsewhere. Click to tune, Shift + wheel (or a dial) to zoom. The spectrum is a persistence display.

One receiver, many radios

Every feature is a tab in the browser. The monitors run on the server, so they keep going with the page closed.

Radio

A 2 × 2 grid of spectrum + waterfall panels on any ranges, with zoom, the VHF tuner's window, a bandwidth menu, FM stereo, recording and keyboard / dial control.

FT8 / FT4 / WSPR

Decodes every HF band at once (ft8_lib, wsprd) and shows each station on a world map and a per-station timeline, with band conditions from all three.

Airband

Records every channel in the VHF window and transcribes it with on-device Whisper. Shows a live Bay Area map, flights from ADS-B (adsb.fi), and follows whichever channel is talking.

Public safety

Covers the CHP low band and VHF-high channels, recorded and transcribed, with incident locations geocoded on a map. Kept for 7 days, and never published.

SSB voice

Lists amateur nets, Pacific oceanic aviation and VOLMET, USAF HFGCS and Coast Guard channels, with a voice-band signal check and activity found in the ham bands.

AM / SW / FM

Bay Area AM and FM station lists, plus shortwave broadcasters from the EiBi schedule. FM plays in stereo, with a stereo sign on each station.

Maritime · APRS · SSTV

AIS ships with AIS-catcher, marine VHF and NOAA weather, APRS stations on a map with multimon-ng, and SSTV pictures decoded as they arrive.

Built to keep running

A supervisor restarts radiod after a USB drop. The voice session restores its channels after a restart, and the panels keep their last pictures on disk.

See and hear it

Screenshots and a clip recorded with this code.

FT8 Skywatch: a world map of decoded FT8 stations with lines between stations in contact, and a per-station timeline
FT8 Skywatch: every FT8 message on a world map and timeline, each one explained in plain words.
Bay Airband, Live: a map of the San Francisco Bay Area airports with arrivals labelled by flight number, and the Listen panel
Bay Airband, Live: airports light up when their tower is talking, and arrivals are placed from the controllers' instructions.

Hear one: American 2105 on NorCal Approach, 135.650 MHz. Whisper's transcript: 210 knots and cleared ILS to a right, American 2105.

Get started

You'll need an RX-888 MkII on a USB 3 port, an Apple-silicon Mac with Homebrew, and the SDDC_FX3.img firmware from the ExtIO_sddc releases. The full steps are in the repository's READMEs and in AGENTS.md, for coding agents.

  1. Build ka9q-radio with the macOS patch (ka9q/README.md).
  2. Create the Python environment and run the tests.
  3. Optionally build the decoders (ft8_lib, wsprd, multimon-ng, AIS-catcher).
  4. Start rxapp and open http://127.0.0.1:8090.
git clone https://github.com/minyaozhu/rx888-radio.git && cd rx888-radio
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
./run_rxapp.sh          # starts and supervises radiod, then open http://127.0.0.1:8090