WaveShark

waveshark --help has the rest

Command line reference

Every switch that sets the receiver up so a session can be reproduced without a dozen clicks, and every diagnostic that prints numbers and exits.

Running WaveShark with no arguments gives you the interactive receiver. Everything below either sets that receiver up, or is a diagnostic that prints and exits.

$ waveshark --tune 868.3 --record captures
$ waveshark --replay captures
$ waveshark --headless --print-log --ha-broker homeassistant.local
FlagWhat it does
--tune <mhz>Start tuned and listening. Repeat it for several channels at once.
--mode <mode>wfm, nfm, am, usb, lsb or cw.
--span <khz>Nearest span to this, narrowed in software when the radio cannot sample that slowly.
--device <name>Pick a radio when several are plugged in.
--rf-gain <db>Total tuner gain, distributed across the radio’s stages.
--stream <host>Offer a network tuner as a radio: an IQStream host:port or ws://, wss:// or https:// address, or rtl_tcp://, spyserver:// or kiwisdr://host:port. Repeatable.
--iqstream-listen <addr>Serve this span over IQStream, SpyServer and rtl_tcp on one port, 5555 by convention. Add ,tune to let a subscriber move the dial.
--iqstream-tuner <radio>Serve a spare radio beside the span on the same port, as its number or label, then a rate and a frequency. Repeatable.
--location <lat,lon>The receiver position, which lets one ADS-B frame place an aircraft instead of needing a pair.
--record [dir]Write every burst that decodes as an rtl_433 style capture.
--capture-iqWrite the raw span from the moment the radio starts, with a SigMF description beside it.
--capture <file>Open a recording as the receiver: rtl_433 style, SigMF, or any file with rate=, format= and centre= after its name.
--replay [path]Decode a capture, a directory of them, or a packet log, and print what came out.
--packet-log <dir>Where the binary packet log goes, one file a day.
--survey [file]Record a database of the devices heard and where they were heard.
--headlessRun with no window, scanning and logging as the interface would.
--print-logPrint every packet as it arrives, window or not.
--mcp-listen <addr>Where to serve MCP, or off. 127.0.0.1:8931 unless told otherwise.
--kiss-listen <addr>Serve a KISS TNC, so packet software can use the radio and key AX.25 through it.
--ha-broker <broker>Publish every device heard to Home Assistant over MQTT.
--ha-spaces <kinds>Which identity spaces are worth publishing, e.g. ism,wmbus.
--fetch-dataWarm the dataset cache before going somewhere without a connection.
--probe [mhz]Check the signal path with no display.
--squelch-probe [mhz]Report what the squelch reads on a frequency, for setting one.
--settings <name>Open with a settings dialog up: agent, radio, spectrum, waterfall, log, scanners, memory, data or app.

--chain, --flights, --calls, --messages, --transcript, --links, --control, --channels, --video, --scanners, --gain and --setup open the receiver on a view.

Capture once, decode forever

A capture that decodes is a test fixture: no radio, same answer every run.

Reverse engineering