PodSDR

SDR software for OpenHPSDR radios and ordinary CAT-controlled transceivers. Runs as a desktop program, in a browser, and on Android.

PodSDR talks OpenHPSDR Protocol 1 and 2 directly to Hermes-class hardware, and it can also drive a conventional rig over CAT and USB audio so that the same spectrum display, controls and remote access work for an IC-7300 or an FTDX10 as for a Hermes Lite 2. A small server next to the radio lets you operate it from any browser or phone, on your LAN or from outside, without opening ports. FT8, FT4 and FT2 decoding, a CW keyer and noise reduction are built in. Everything is written in Rust.

It is developed by Michal SP5TLS. The downloads are free.

The PodSDR web client in a browser: spectrum and waterfall on 20 m, VFO readout, mode and filter buttons, band buttons and the DSP-RX panel with noise reduction and AGC settings.
The web client, served by the proxy and connected to the built-in Hermes Lite emulator. Dark theme; a light one is available.

What you get

PodSDR is a set of programs that share one radio core:

An iOS version, sharing the Android code, is in beta — you can join it through TestFlight.

Supported radios

RadioHow it connectsNotes
Hermes, Hermes Lite 2, Angelia, OrionOpenHPSDR Protocol 1 / 2 over EthernetFull RX/TX. The desktop program talks to them directly; the proxy relays them to browsers and phones.
Icom IC-7300, IC-705CI-V over USB + USB audioThe radio's own scope can be streamed as the panadapter (cat_spectrum).
Icom network radios: IC-705 over WLAN, IC-9700, IC-7610, IC-905, IC-R8600, or anything behind RS-BA1Icom network protocolControl and audio over the network, no cables.
Yaesu FTDX10, FTDX3000, FT-991ACAT over USB + USB audio
Xiegu X6100, G90CI-V over USB + USB audioR1CBU and Aether firmware supported on the X6100.
QRP Labs QMX, QMX+Kenwood-style CAT + USB audio
BG2FX FX-4CRCAT + USB audioStock and f5bud firmware.
RTL-SDR donglesUSB, proxy sideReceive only. Wideband panadapter with the full RX DSP.
FlexRadio FLEX-1500USB, proxy sidePure-Rust driver, no FlexRadio software needed. macOS and Linux.

Traditional radios are hosted by the proxy: it controls the rig over CAT, moves RX and TX audio through the rig's USB sound device, and presents the result to every client as a normal radio. By default the rig is switched to its DATA mode on transmit so its own compressor and EQ stay out of the way.

Two radios the proxy already drives can be combined into a composite radio: for example an FTDX3000 for transmit and receive audio plus a Hermes for the wideband waterfall, or an RTL-SDR plus any transmitter. Clients see one radio with one spectrum and one PTT. Details are in the composite radios chapter.

The clients

The Android app's discovery screen with Direct, Local proxy and Cloud tabs and an Embedded Emulator button.
The Android app's start screen. The same UI is used on iOS.

All three clients start on the same discovery screen and offer the same three ways in: Direct (UDP to an OpenHPSDR radio or the emulator on the LAN; desktop and Android only, since browsers cannot do UDP), Local proxy (a proxy URL such as https://pi.local:8080), and Cloud (sign in to the broker and pick one of your proxies).

Once connected you get the same operating position everywhere: click or tap to tune, drag to slew, drag the filter edges in the passband, type a frequency, band buttons with per-band memories, S-meter with peak hold, and during transmit forward/reflected power, SWR, ALC and mic level. Modes are LSB, USB, AM, FM, CWU, CWL, DSB, SAM, DIGL and DIGU. VFO A/B, split with quick DX offsets, RIT/XIT and dual watch are there when the radio supports them.

Each radio keeps its own profile, so connecting to a different radio restores that radio's frequencies, mode, DSP settings and calibration.

Operating remotely

Browsers cannot send UDP, so the proxy sits next to the radio and bridges OpenHPSDR traffic into a WebRTC data channel. On the LAN that is all there is to it: start the proxy, open its address in a browser, connect. Audio uses an adaptive PCM codec that follows the available bandwidth.

To operate from outside your network, start the proxy with the cloud uplink instead. It opens an outbound WebSocket to the broker at podsdr-broker.fly.dev and stays registered there. Clients anywhere sign in to the broker, pick the proxy, and the broker negotiates a WebRTC session between the two ends, through NAT on both sides. There is no port forwarding, no VPN and no dynamic DNS to set up. Session tokens are signed by the broker and checked by your proxy against the broker's public key, so another broker cannot be substituted. You can also run your own broker.

Radio Hermes / HL2 / CAT rig / RTL-SDR or podsdr-emu podsdr-proxy Raspberry Pi · Linux · macOS · Windows server-side DSP · WebRTC relay hosts CAT and composite radios Desktop program direct UDP to the radio Browser · Android · Desktop on the LAN spectrum · audio · TX · keyer over WebRTC Cloud broker pairing codes · signed sessions Clients anywhere home · car · hotel · cellular UDP OpenHPSDR P1/P2 HTTPS + WebRTC wss uplink (outbound only) sign in pick a radio WebRTC via broker / TURN UDP

Pairing a proxy to your account is a one-time step:

  1. On the machine next to the radio, run ./run-cloud.sh shack (the name is what clients will show).
  2. While the proxy is unclaimed, the launcher prints a short pairing code. Enter it in the Cloud panel of any client. The proxy is now attached to your account and stops issuing codes.
  3. Sign in from the web, desktop or Android client and connect to any of the proxy's radios.

The proxy only makes outbound connections (port 443 to the broker, UDP to its STUN/TURN servers), so no inbound firewall rules are needed. Ports are listed in the reference, and the cloud setup is described step by step in the documentation.

Signal processing, keying and digital modes

There are two DSP backends behind the same controls: a floating-point one used on desktop, in the browser and on the server, and a fixed-point Q15 one that is lean enough for an RP2040 or ESP32 and doubles as a low-power mode on phones.

Trying it without a radio

Every server bundle includes podsdr-emu, which answers Protocol 1 discovery on your LAN like a Hermes Lite and streams synthetic I/Q. The desktop program, the web client and the Android app also each have an embedded emulator: switch it on and connect, with no network and no hardware. That is what the screenshot at the top of this page shows.

Download

Bundles for Windows, macOS, Linux, Raspberry Pi and Android are on the download page, with SHA-256 checksums. Nothing is installed system-wide: unpack, run, and delete the folder when you no longer want it.