WaveShark

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

    x86_64

    The RTL-SDR and the Airspy are driven by WaveShark’s own USB driver, so there is no librtlsdr to install, but rtl-sdr, airspy or airspyhf brings the udev rules that open them without root. A LimeSDR is read once LimeSuite is installed.

    Download for Linux

    Setup and first run on Linux

  • Linux arm64

    Raspberry Pi 4 and 5

    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 arm64

    Setup and first run on Linux arm64

  • Windows

    x86_64

    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 LimeSuite.dll is on the PATH or beside waveshark.exe.

    Download for Windows

    Setup and first run on Windows

  • macOS

    Apple silicon

    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 brew install ffmpeg limesuite.

    Download for macOS

    Setup and first run on macOS

  • Browser

    Chrome, Edge · WebUSB · nothing to install

    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

    What works in the browser

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.

  1. 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-sdr
  2. Install 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
    $ waveshark
  3. Press 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.

  4. Check the path if nothing arrives

    --probe tests the signal path with no display, and --squelch-probe reports 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
FeatureWith it, and without
teaLinks the TETRA ciphers and a wgpu key search. Without it the keys view still lists enciphered channels and says nothing can read them.
ambeBuilds the AMBE and IMBE vocoder port, whose algorithms are patent encumbered. Without it DMR still says who is talking and decodes no speech.
limesdrOn by default. LimeSuite is opened when a LimeSDR is looked for, so the binary starts without it.
ffmpegPictures 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.
sttSpeech to text over decoded voice, with cuda moving the model onto a card.
mcpServes 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.

Open an issue