Skip to content
magicint1337 edited this page Sep 5, 2025 · 10 revisions

NovaSDR

formerly PhantomSDR-Plus

C++23 Meson FFTW3f Svelte

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.

NovaSDR UI


Why NovaSDR

  • 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)

Architecture

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]
Loading

Key backend entry points:


Quick links


Get started quickly

  1. Install prerequisites — see Installation
  2. Build backend: meson setup build && meson compile -C build
  3. Build frontend: cd frontend && npm install && npm run build && cd ..
  4. Copy a curated profile to config.toml — see Devices
  5. 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.

Clone this wiki locally