Multi-band RF spectrum monitor for frequency coordination.
- Multi-band Scanning - The ADALM-Pluto has a frequency range of 70 MHz - 6 GHz when setup in AD9364 mode. It has been tested across the LMR, UHF, DECT, and 2.4 GHz bands.
- Standalone Desktop App - For Mac / Windows.
- Embedded Client - Run headless via Raspberry Pi / GL-Inet Routers.
- Central Server (optional) - Compare and download scans from a fleet of scanners. The server can be hosted locally or in the cloud.
- Multi-Zone Coverage - Compare scan data from multiple scanners across large events, festival grounds, or rehearsal studios.
- Scan History - Scrub back and forth to visualize scans over time.
- Calibration - Generate a calibration curve for the Pluto based on TinySA signal generator output.
demo.mp4
| Backend | Description | Connection |
|---|---|---|
| ADALM-Pluto | FPGA-accelerated via maia-sdr | USB |
| OWON HSA1000 | Spectrum analyzer via SCPI | TCP/IP |
| tinySA Ultra | Portable analyzer | USB |
flowchart TD
subgraph MS["Main Stage"]
S1[Scanner]
end
subgraph BC["Broadcast Compound"]
S2[Scanner]
end
subgraph FOH["FOH"]
S3[Scanner]
end
LC[Local Client]
subgraph Server["spectrum-server"]
MQ[Mosquitto<br/>MQTT Broker]
BR[MQTT Bridge]
DB[(Database)]
DJ[Django<br/>REST API]
end
V[Browser Client]
S3 --- LC
S1 & S2 & S3 ---|MQTT| MQ
MQ --- BR
BR --- DB
DJ --- DB
DJ ---|REST| V
MQ ---|WebSocket| V
spectrum-scanner/
├── scanner/ # Go scanner (CLI + Desktop app)
│ ├── cmd/scanner/ # CLI with embedded web UI
│ ├── cmd/desktop/ # Wails desktop application
│ ├── cmd/calibrate/ # Pluto calibration tool
│ └── internal/ # Backend implementations
├── server/ # Django central server + deployment
│ ├── api/ # REST API
│ ├── realtime/ # MQTT bridge
│ └── docker-compose.* # Docker deployment
└── frontend/ # Vue.js frontend (shared)
Run a scanner with local web UI at http://localhost:8080:
cd scanner
# With ADALM-Pluto
go run ./cmd/scanner -config ../config.yaml
# With OWON spectrum analyzer
go run ./cmd/scanner -backend owon -addr 10.10.125.155
# With tinySA Ultra
go run ./cmd/scanner -backend tinysa -addr /dev/tty.usbmodem4001cd scanner
make desktop-devcd server
# Development
docker compose up -d
# Production
docker compose -f docker-compose.prod.yml up -d --build| Component | README |
|---|---|
| Scanner (CLI + Desktop) | scanner/README.md |
| Central Server | server/README.md |
| Calibration Tool | scanner/cmd/calibrate/README.md |
| Band | Frequency Range | Use Case |
|---|---|---|
| UHF | 470 - 608 MHz | Wireless mics, IEMs |
| Business Radio | 450 - 470 MHz | Two-way radios |
| DECT | 1920 - 1930 MHz | Intercom |
| WiFi 2.4 | 2400 - 2500 MHz | WiFi, Intercom |
MIT

