Latest release · v0.4.0
Download
A package, the bare binary or a browser tab, and a radio. No service, no account and nothing phoning home.
Linux
The RTL-SDR and the Airspy are driven by WaveShark’s own USB driver, so there is no librtlsdr to install, but
Download for Linuxrtl-sdr,airspyorairspyhfbrings the udev rules that open them without root. A LimeSDR is read once LimeSuite is installed.Linux arm64
For a Raspberry Pi 4 or 5 on a 64-bit system from bookworm onwards, or any other arm64 board. The same udev rules apply, and speech is read on the CPU.
Download for Linux arm64Windows
Windows will not let anything open an RTL2832U until WinUSB is bound to it with Zadig. The zip holds the executable on its own. A LimeSDR is read once
Download for WindowsLimeSuite.dllis on thePATHor besidewaveshark.exe.macOS
Apple silicon only, and the one build that shows television pictures and plays DAB. Not notarised, so the first open needs Open Anyway in Privacy & Security. The app carries its own ffmpeg and LimeSuite; the bare binary wants
Download for macOSbrew install ffmpeg limesuite.Browser
The same receiver compiled to WebAssembly, with an RTL-SDR, HackRF or Airspy handed to the page over WebUSB and public tuners opened over WebTransport or WebRTC. Speech, the agent server, rtl_tcp, SpyServer, KiwiSDR, LimeSDR and PLUTO stay on the desktop.
Open app.waveshark.io
The buttons follow the release rather than a filename, because every asset carries its version in the name. One build per platform, card or no card: the speech models use an NVIDIA GPU when the CUDA 12 runtime is on the machine and the CPU when it is not, and macOS uses Metal. The release page has the lot.
After the download
First run
Four minutes, most of it the driver. If the spectrum moves, the radio is open and every scanner in the span is already running.
Give the dongle a driver
WaveShark carries its own USB driver, so this is only permission. On Linux, install the distribution’s rtl-sdr package so the udev rules land. On Windows, run Zadig, pick the RTL2832U interface and install WinUSB.
$ sudo apt install rtl-sdrInstall it, or do not
Open the package the button gave you, or take the bare binary and run it where it lands. The binary is the whole program either way.
$ sudo apt install ./waveshark-*-linux-x86_64.deb $ wavesharkPress play
It opens on the dashboard and the dial starts at 433.92 MHz, where the devices it decodes are. Click the spectrum to place a channel and listen, drag to pan, scroll to scrub, hold shift to snap to the band plan.
Check the path if nothing arrives
--probetests the signal path with no display, and--squelch-probereports what the squelch reads on a frequency.$ waveshark --probe 433.92
Two decoders the downloads do not carry
Build from source
The published builds leave out tea and ambe. Compiling them for yourself is not the same act as a project distributing them, which is why the source turns them on and the downloads do not.
$ sudo apt install pkg-config libclang-dev libasound2-dev \
libx11-dev libxrandr-dev libxi-dev libxcursor-dev \
libxkbcommon-dev libwayland-dev libgl1-mesa-dev
$ cargo run --release -p app| Feature | With it, and without |
|---|---|
tea | Links the TETRA ciphers and a wgpu key search. Without it the keys view still lists enciphered channels and says nothing can read them. |
ambe | Builds the AMBE and IMBE vocoder port, whose algorithms are patent encumbered. Without it DMR still says who is talking and decodes no speech. |
limesdr | On by default. LimeSuite is opened when a LimeSDR is looked for, so the binary starts without it. |
ffmpeg | Pictures off a DVB-T or DVB-S2 multiplex and DAB sound, through FFmpeg 5.1 or newer, decoded on the graphics card where it can. In the macOS download; the Linux and Windows ones read the multiplex without it. |
stt | Speech to text over decoded voice, with cuda moving the model onto a card. |
mcp | Serves the receiver to an agent on 127.0.0.1:8931. In every published build. |
The release workflow builds --no-default-features --features native,limesdr,stt,cuda,mcp, with ffmpeg added and cuda dropped on macOS. Every tuner and every network protocol is a feature of its own, which is how the browser build leaves out what a page cannot do.
Something did not decode?
Record the burst with --record and open an issue with the capture. A capture that decodes becomes a test fixture.