Skip to content

Steven9101/VertexSDR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VertexSDR

VertexSDR

WebSDR-style server written from scratch in C. Browser-based waterfall and audio streaming for SDR receivers.

Built on the DSP and waterfall foundation originally written by PA3FWM for WebSDR, rewritten and extended as a new standalone project.

Status

Beta. Needs testing, bug reports, and community work before it can be considered stable. Use at your own risk.

Community

Support Development

If this is useful to you, donations help keep it going:

https://www.paypal.com/paypalme/magicint1337

Quick Start (Debian / Ubuntu)

Install dependencies:

sudo apt install build-essential libfftw3-dev libpng-dev libasound2-dev libssl-dev xxd

Build and run:

make
./vertexsdr

For GPU (Vulkan) acceleration (recommended for sample rates above 4 MHz):

sudo apt install libvulkan-dev glslang-tools spirv-tools
make USE_VULKAN=1
./vertexsdr

Open http://localhost:8901 in a browser.

What It Does

  • WebSDR-style browser receiver with live waterfall and audio
  • ALSA, RTL-SDR (via rtl_tcp), TCP SDR relay, and stdin input
  • FFTW CPU backend and Vulkan/VkFFT GPU backend
  • AM, SSB, CW, FM demodulation with AM synchronous mode
  • IQ balance correction, per-frequency EQ, noise blanker
  • Multi-band, config reload, logbook, chatbox

Building

All build variants produce vertexsdr:

make                                    # CPU only
make USE_VULKAN=1                       # GPU acceleration

The binary reads websdr.cfg from the current directory, or takes a path as argument:

./vertexsdr
./vertexsdr /etc/websdr.cfg

Configuration

Edit websdr.cfg. Key settings:

maxusers 100
tcpport 8901
fftbackend fftw
public pub2

band HF
device !rtlsdr 127.0.0.1:1234
samplerate 2048000
centerfreq 10100
gain 30

Device forms:

  • ALSA: device hw:0,0
  • RTL-SDR via rtl_tcp: device !rtlsdr 127.0.0.1:1234
  • TCP SDR relay: device !tcpsdr 127.0.0.1:1234
  • stdin: device !stdin with stdinformat cu8 (or cs16le, f32le, etc.)

See docs/configuration.md for all options.

RTL-SDR Example

Start rtl_tcp in one terminal:

rtl_tcp -a 127.0.0.1 -p 1234 -f 10100000 -s 2048000 -g 30

In websdr.cfg:

band HF
device !rtlsdr 127.0.0.1:1234
samplerate 2048000
centerfreq 10100
gain 30

Then run ./vertexsdr.

RTL-SDR via stdin (rx_tools)

Using rx_sdr from rx_tools to pipe samples directly:

rx_sdr -f 10100000 -s 2048000 -g 30 - | ./vertexsdr

In websdr.cfg:

band HF
device !stdin
stdinformat cu8
samplerate 2048000
centerfreq 10100
gain 30

SDR List Registration

VertexSDR registers your server on both websdr.org and sdr-list.xyz automatically when configured. Each band gets registered as a separate receiver with its own frequency range.

Add to websdr.cfg:

orgserver websdr.org
myhost your.hostname.com
hostname your.hostname.com

If your server is behind NAT or a reverse proxy, set hostname to the public address. Both directories receive the same multi-receiver data.

Hardware Notes

RX888 works well with the Vulkan/VkFFT path for wideband use. Not all sample rates are validated. See docs/sample-rates-and-hardware.md before trying unusual rates.

Tested Configurations

  • RTL-SDR via rtl_tcp at 2.048 MHz (cu8 IQ) - working
  • stdin at 2.048 MHz (cu8/cs16le IQ) - working

Documentation

Contributing

Bug reports, testing on real hardware, DSP fixes, documentation, and UI work are all needed. Open an issue or PR on GitHub.

About

VertexSDR is original code. Not a port, fork, decompilation, or reuse of the WebSDR codebase. Written from scratch using the SDR and DSP knowledge built up through PhantomSDR Plus and NovaSDR.

License

LGPL 3.0. See COPYING.

About

Open source WebSDR-compatible server with full parity, written from scratch in C

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors