-
Notifications
You must be signed in to change notification settings - Fork 12
Installation
Clean, repeatable steps to get NovaSDR built and running with its built‑in web server. No external reverse proxy is required.
Note
NovaSDR was previously called "PhantomSDR‑Plus". You may still see legacy names in banners or logs; functionality is unchanged.
- Requirements
- Platform packages
- Debian/Ubuntu (incl. Raspberry Pi OS)
- Arch Linux / Manjaro
- Fedora / CentOS Stream / RHEL
- openSUSE (Leap/Tumbleweed)
- Alpine Linux
- GPU/CPU OpenCL acceleration (NVIDIA, AMD, Intel, Portable/CPU)
- Build steps (backend + frontend)
- Verify installation
- Next steps
Backend toolchain:
- C++23 compiler (GCC 12+/Clang 15+)
- Meson, Ninja, pkg-config
- Libraries:
- FFTW3f
- zstd
- FLAC++
- zlib
- Boost (system, iostreams)
- libcurl
Optional accelerators (only if you intend to use them):
- OpenCL runtime and headers (plus your GPU vendor’s runtime/driver)
- CUDA toolkit (cuFFT) for NVIDIA GPUs
- Intel MKL (when specifically compiled with MKL)
Frontend toolchain:
- Node.js 18+ (for development and production build)
Important
Accelerators must be both installed on the system and compiled into NovaSDR to be usable. If you request an accelerator that isn’t compiled in, the server exits with a clear error (handled in broadcast_server::broadcast_server()).
sudo apt update && sudo apt install -y \
build-essential meson ninja-build pkg-config git \
libfftw3-dev libzstd-dev libflac++-dev zlib1g-dev \
libboost-system-dev libboost-iostreams-dev libcurl4-openssl-dev \
nodejs npmOptional (common tools and OpenCL loader):
sudo apt install -y clinfo ocl-icd-opencl-devTip
For Ubuntu derivatives, package names are the same. If your Node.js is old, install a current LTS from NodeSource or nvm.
Raspberry Pi OS is Debian‑based, so package names match. Use 64‑bit (arm64) for best toolchain compatibility.
sudo apt update && sudo apt install -y \
build-essential meson ninja-build pkg-config git \
libfftw3-dev libzstd-dev libflac++-dev zlib1g-dev \
libboost-system-dev libboost-iostreams-dev libcurl4-openssl-dev \
nodejs npm clinfo ocl-icd-opencl-devOpenCL on Raspberry Pi:
- NovaSDR does not support GPU acceleration on Raspberry Pi. Do not attempt to enable GPU OpenCL.
- If you want to validate an OpenCL path on the CPU, use POCL (portable CPU OpenCL):
sudo apt install -y pocl-opencl-icd clinfo | grep -E "Platform Name|Device Name"
- In your config, keep:
[input] accelerator = "none"
sudo pacman -S --needed \
base-devel meson ninja pkgconf git \
fftw zstd flac zlib boost curl \
nodejs npm clinfo ocl-icdOpenCL providers (choose what matches your hardware):
- NVIDIA:
opencl-nvidia - AMD (AMDGPU/RADV):
opencl-amdor Mesa’sintel-compute-runtimenot for AMD; for AMD, ROCm packages are available via the AUR for supported GPUs - Intel (Gen9+/Xe):
intel-compute-runtime - Portable CPU:
pocl
List installed platforms:
clinfo | grep -E "Platform Name|Device Name"sudo dnf install -y \
gcc-c++ meson ninja-build pkgconf-pkg-config git \
fftw-devel zstd-devel flac-devel zlib-devel \
boost-system boost-iostreams curl-devel \
nodejs npm clinfo ocl-icd ocl-icd-develOpenCL providers:
- NVIDIA: enable RPM Fusion, install NVIDIA driver and
xorg-x11-drv-nvidia-cuda(provides OpenCL ICD) - AMD: ROCm OpenCL is available on recent Fedora releases for supported GPUs (rocm-opencl-runtime). For others, Mesa’s
mesa-openclpackage may expose Rusticl on supported hardware - Intel:
intel-compute-runtimevia third‑party repositories; for older CPUs,beignet(legacy) or POCL
Verify:
clinfo | grep -E "Platform Name|Device Name"sudo zypper install -y \
gcc-c++ meson ninja pkgconf-pkg-config git \
fftw3-devel libzstd-devel libFLAC++-devel zlib-devel \
libboost_system-devel libboost_iostreams-devel libcurl-devel \
nodejs npm clinfo ocl-icd ocl-icd-develOpenCL providers:
- NVIDIA: install proprietary driver and
opencl-nvidia - AMD: ROCm (supported GPUs) or
mesa-opencl - Intel:
intel-compute-runtime(if available) or POCL (pocl)
sudo apk add --update \
build-base meson ninja pkgconf git \
fftw-dev zstd-dev flac-dev zlib-dev boost-dev curl-dev \
nodejs npm clinfo ocl-icd-devOpenCL providers:
- NVIDIA: packages available in community/testing with proprietary drivers
- AMD/Intel: Mesa Rusticl (
mesa-opencl) or POCL (pocl) - Portable CPU:
pocl
Note
Alpine’s musl toolchain is stricter; if you hit compilation issues, ensure all -dev headers are present and consider edge/testing repositories.
NovaSDR can use OpenCL (or CUDA/MKL) if compiled with those backends and the runtime is available.
-
Verify installation:
clinfo | grep -E "Platform Name|Device Name"
You should see at least one platform and device (GPU or CPU).
-
Enable in configuration:
[input] accelerator = "opencl" # or "cuda" or "mkl"
Selection and validation are performed during startup (see
broadcast_server::broadcast_server()).
Vendor‑specific notes (Linux):
-
NVIDIA
- Install the proprietary driver for your GPU
- Install CUDA toolkit (optional but recommended for development)
- Ensure an OpenCL ICD is present (on Ubuntu/Debian usually via the driver package; loader via
ocl-icd-opencl-dev) - Verify with
clinfo
-
AMD
- ROCm OpenCL runtime for supported GPUs (modern discrete Radeon)
- Otherwise, use Mesa’s OpenCL (Rusticl) if supported on your GPU/driver
- Verify with
clinfo
-
Intel
- For modern iGPUs and Xe GPUs: Intel Compute Runtime (Level Zero + OpenCL)
- For CPU fallback: Intel oneAPI OpenCL (CPU runtime) or POCL
- Verify with
clinfo
-
Portable CPU OpenCL (works on anything)
- POCL (
pocl-opencl-icdon Debian/Ubuntu,poclon Arch/Fedora/openSUSE/Alpine) - Useful for validating OpenCL on systems without a supported GPU
- POCL (
Warning
Requesting accelerator="opencl" or "cuda" or "mkl" without the corresponding backend compiled into NovaSDR will cause a critical error and exit. Keep accelerator="none" if unsure.
- Clone (or open your checkout)
git clone https://github.com/Steven9101/NovaSDR.git
cd NovaSDR- Backend: configure and compile
meson setup build
meson compile -C build- Backend config, dependencies, and compile flags are defined in
meson.build.
- Frontend: install and build
cd frontend
npm install
npm run build
cd ..- This produces static assets in
frontend/dist/.
- Serve the built UI from NovaSDR
[server]
html_root = "frontend/dist/"Tip
The server’s default html_root may already be suitable. If you change where you build the UI, update html_root accordingly.
Binary check:
./build/spectrumserver --helpYou should see CLI usage printed from the program’s entry point:
- CLI parsing and help text live in
main()
Minimal run check (without a live SDR yet):
- Prepare a minimal
config.toml(see Configuration) - Start NovaSDR with that config:
./build/spectrumserver --config config.toml
- In a second terminal, pipe a short sample or test stream when ready (see Devices)
Note
NovaSDR expects raw samples on stdin. Without an active capture tool piping samples to the process, the UI will load but no spectrum/waterfall will update.
- Configure NovaSDR: Configuration
- Choose a device profile and run with stdin piping: Devices
- Operate and tune: Operations
- Troubleshoot issues: Troubleshooting
- Common questions: FAQ