A software-defined radio application for listening, decoding, and recording. Connect radios, channels, and displays in Patch view, then pin your everyday controls to Rack view.
Run the desktop app with a local SDR, or place the server near your antenna and connect through a browser. Both use the same receiver engine and interface.
Download a desktop installer or portable server from GitHub Releases. The installation guide covers macOS, Windows, Linux, Homebrew, WinGet, APT, DNF, AUR, Nix, and Docker.
On macOS:
brew tap newspicel/tap
brew install --cask sdrminusminusFor a headless server on macOS or Linux, install sdrmm from the same tap:
brew install sdrmm
brew services start sdrmmOpen http://localhost:8080. For remote access, configure authentication and HTTPS.
- Plug in the RTL-SDR and pick it on the Device node. Set the rate to 2.4 MS/s.
- Add a WFM channel from + Node and set it to a local FM station.
- Wire Device
iqto WFMiq, and WFMaudioto the Speaker. - Start the Speaker. Press
pon a node to pin it to the Rack.
Your first receiver walks through it. Radios covers other hardware.
- Listening: AM, NFM, broadcast FM with stereo and RDS, SSB, and digital voice.
- Decoding: aircraft, ships, amateur radio, pagers, sensors, images, and more.
- Displays: spectrum, waterfalls, maps, decoded messages, and video.
- Recording: device IQ, channel baseband, and audio, with SigMF playback.
- Radio tools: scanning, signal identification, coherent arrays, direction finding, and passive radar.
- Automation: REST, WebSocket, MCP, network IQ export, and event forwarding.
SDR-- is under active development. The decoder catalog shows how well each mode is tested.
These captures use debug-build signal sources and repository IQ fixtures. Regenerate them with
cargo xtask screenshots.
| Spectrum and waterfall | Rack view |
|---|---|
![]() |
![]() |
| FT8 decoding | Signal identification |
|---|---|
![]() |
![]() |
| Aircraft positions | Ship positions |
|---|---|
![]() |
![]() |
| Slow-scan television | Amateur television |
|---|---|
![]() |
![]() |
| Pager messages | Broadcast FM |
|---|---|
![]() |
![]() |
git clone https://github.com/Newspicel/sdrminusminus.git
cd sdrminusminus
python3 scripts/build-media.py
export FFMPEG_DIR="$(python3 scripts/build-media.py --print-prefix)"
pnpm --dir web install --frozen-lockfile
pnpm --dir web build
cargo run -p sdrmmOpen http://localhost:8080, or run cargo xtask dev --watch and open http://localhost:5173
for hot reload. cargo xtask check and cargo xtask test are the main gates.
The build guide lists prerequisites and every check. Read Contributing and the architecture before a pull request.
- User and developer guide
- Swagger UI:
/api/docson a running server - OpenAPI:
/api/openapi.jsonor openapi.json
Copyright (C) 2026 Julian Haag.
Licensed under the GNU General Public License, version 3 or later. Third-party notices and license texts are also available in the app's About panel.










