Skip to content

v0.7.6 — World's First GPU-Accelerated AI Noise Removal in an SDR Client

Choose a tag to compare

@ten9876 ten9876 released this 27 Mar 05:40

Highlights

NVIDIA NIM BNR — GPU-Accelerated AI Noise Removal (#288)

A world first for SDR clients. AetherSDR v0.7.6 introduces real-time GPU-accelerated neural noise removal powered by NVIDIA Maxine BNR, running on your local RTX GPU via a self-hosted Docker container.

  • Neural denoising trained on massive audio datasets — superior to classical spectral (NR2) and RNNoise (RN2) approaches
  • Real-time gRPC streaming — 48kHz mono float32, 10ms processing chunks, ~15ms total added latency
  • Intensity control — adjustable denoising strength (0–100%) via slider in DSP panel
  • Jitter buffer — 50ms priming for smooth, uninterrupted playback
  • Container management — Start/Stop/Status in Radio Setup → Audio, optional autostart on app launch
  • Zero-config audio — BNR button in VFO DSP tab and spectrum overlay, 3-way mutual exclusion with NR2/RN2

Requirements: NVIDIA RTX 4000+ GPU (Ada Lovelace or newer), Docker + NVIDIA Container Toolkit, NGC API key (free).

# One-time setup:
docker login nvcr.io  # Username: $oauthtoken, Password: <NGC API key>
docker run -d --gpus all --shm-size=8gb \
  -p 8001:8001 -p 8000:8000 \
  -e NGC_API_KEY=$NGC_API_KEY \
  -e STREAMING=true \
  --restart unless-stopped \
  --name maxine-bnr \
  nvcr.io/nim/nvidia/maxine-bnr:latest

# Build AetherSDR with BNR support:
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_BNR=ON
cmake --build build -j$(nproc)

ESC Diversity Beamforming (#20, #38)

  • DIV toggle in VFO audio tab enables dual-SCU diversity reception
  • ESC controls — polar display (phase=angle, gain=radius), horizontal phase slider (0–360° in 5° steps), vertical gain slider (0.0–2.0)
  • Real-time ESC meter — signal strength bar after ESC processing
  • Protocol verified against SmartSDR pcap: esc=on/off, phase in radians, DiversityChild guard per FlexLib
  • Requires DIV_ESC license (SmartSDR+) and dual-SCU radio

Band Zoom Buttons

  • S (Segment) and B (Band) buttons at bottom-left of waterfall
  • Uses radio-native segment_zoom=1 / band_zoom=1 commands (SmartSDR protocol)

Bug Fixes

  • XVTR band switch crash — QPointer prevents SEGV when panadapter destroyed during band change
  • CW decoder not working on first pan — initial applet wasn't wired through setActivePanApplet()
  • Band change panadapter not scrolling — use tuneAndRecenter() instead of autopan=0
  • VFO widget not shrinking — fixed setFixedWidth constraining height when ESC panel hidden
  • Null pointer guards — m_panApplet checked before setCwPanelVisible() calls

Build

# Standard build (no BNR):
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build -j$(nproc)

# With BNR (requires grpc++ package):
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_BNR=ON
cmake --build build -j$(nproc)

73, Jeremy KK7GWY & Claude (AI dev partner)