forked from PhantomSDR/PhantomSDR
-
Notifications
You must be signed in to change notification settings - Fork 12
Home
magicint1337 edited this page Sep 5, 2025
·
10 revisions
formerly PhantomSDR-Plus
A web-enabled SDR server with a fast Svelte UI. Stream spectrum, waterfall, and audio to any browser using efficient FFT and compression pipelines with optional GPU acceleration.
Note
Rename notice: This project was previously called "PhantomSDR-Plus". It has been renamed to "NovaSDR" to avoid confusion with the separate "PhantomSDR" project. You may still see legacy identifiers (for example, "PhantomSDR+ v2.0.0") in logs; these will be harmonized over time.
- High-performance C++ backend with FFTW3f and multi-level waterfall decimation
- Device-agnostic capture: pipe samples from rtl_sdr, hackrf_transfer, airspy_rx, rx_sdr, rx888_stream
- Efficient codecs by default (zstd waterfalls, FLAC audio); Opus/AV1 optional at build time
- Responsive Svelte + Vite + Tailwind UI (mobile friendly)
- Optional station listing on https://sdr-list.xyz
- Single TOML configuration, clear runtime model
- Built-in static file server (no Apache/Nginx required)
flowchart LR
subgraph Radio_Capture
A1[rtl_sdr]
A2[hackrf_transfer]
A3[airspy_rx]
A4[rx_sdr driver=sdrplay]
A5[rx888_stream]
end
A1 --> B[stdin]
A2 --> B
A3 --> B
A4 --> B
A5 --> B
subgraph NovaSDR_Server
B --> C[FFT, DSP, Compression]
C --> D[WebSocket /waterfall]
C --> E[WebSocket /audio]
C --> F[WebSocket /events]
C --> G[Serves frontend/dist/]
end
subgraph Browser_UI
H[Waterfall and Spectrum]
I[Audio and Controls]
J[Markers, Chat, Info]
end
D --> H
E --> I
F --> J
C -. optional .-> K[sdr-list.xyz]
Key backend entry points:
- Server configuration and runtime parameters:
src/spectrumserver.cpp - CLI, config file loading, and driver/format selection:
src/spectrumserver.cpp - Frontend WS endpoints constructed in the UI:
frontend/src/lib/backend.js
- First run: Quick Start
- Build and dependencies: Installation
- Complete configuration reference: Configuration
- Device guides and curated profiles: Devices
- Operating and performance tuning: Operations
- UI and development: Frontend
- Common issues: Troubleshooting
- Contributing: Contributing
- FAQ: FAQ
- Install prerequisites — see Installation
- Build backend:
meson setup build && meson compile -C build - Build frontend:
cd frontend && npm install && npm run build && cd .. - Copy a curated profile to
config.toml— see Devices - Pipe your SDR into NovaSDR and open
http://localhost:9002— see Quick Start
Tip
If you hit "Out of memory" or high CPU at startup, reduce input.fft_size and/or input.sps. These dominate memory and compute load. See recommendations in Configuration.