Desktop GUI
The desktop client (podsdr-gui, window title PodSDR SDR Radio) is the
full-featured native operating position for Linux, macOS and Windows.
Installation is covered in Downloads and
Quick start.
Connecting
The PodSDR Discovery panel at the top offers three tabs:
- Direct — find radios on the local network (direct UDP, no proxy).
Discover broadcasts on the LAN; Discover at IP targets an address
you type. This finds OpenHPSDR radios and a running
podsdr-emu. - Local proxy — enter a proxy URL (e.g.
https://pi.local:8080) to list and connect to that proxy’s radios over WebRTC — including CAT radios and composites the proxy hosts. - ☁ Cloud — sign in to the broker (callsign/email + password; hub URL
and token under Advanced, default
wss://podsdr-broker.fly.dev), claim a proxy with its pairing code, then connect to any of its radios from anywhere. See the cloud chapter.
Two extra buttons live here: Emulator (Off/On) spins up a built-in Hermes Lite emulator in-process and connects to it (with an Emu Settings noise slider), and Wipe all settings resets the app (with confirmation).
Each radio keeps its own profile — connecting to a different radio restores that radio’s frequencies, mode, DSP and calibration.
The main window
The whole window is spectrum + waterfall, with controls overlaid:
- Click to tune (snaps to the tune step); drag the band to slew. A toggle switches drag precision between Fast · step and Slow · 1 Hz.
- Drag the filter edges in the shaded passband to set custom low/high cuts.
- Scroll the mouse wheel over the frequency display to tune by the current step; click the digits to type a frequency.
- S-meter top right (IARU scale with peak hold,
S9+20 (-53 dBm)-style readout). During TX it’s replaced by FWD/REV power, SWR (color-coded), MIC and ALC bars, and a mic-clip counter. - Status pills along the top are live and clickable: NB, NR, ANF, AGC open mini editors; Split/RIT/XIT badges, CW pitch/WPM, codec, CPU%, RTT and a connection-health dot round it out.
Frequency & bands. Large VFO readout (active VFO), dimmed second VFO, a row of band buttons (edit the set via 📻 Bands…), and per-band memories — each band remembers its VFO A/B, split and mode.
Modes: LSB, USB, AM, FM, CWU, CWL, DSB, SAM, DIGL, DIGU, with mode-aware filter preset chips F1–F6 next to the picker.
RX row: Volume, Drive, Attenuator (0–31 dB), tune Step (1 Hz…1 MHz).
VFO extras (capability-gated — hidden if the radio doesn’t support them): VFO A/B, A=B, A↔B, SPLIT with quick +1/+2/+5 kHz DX offsets, RIT/XIT with drag offsets, momentary REV, and DW — dual watch, VFO A in the left ear and VFO B in the right.
The control tabs
A tab strip along the bottom:
- DSP-RX — noise blanker (+threshold), noise reduction (NR1 spectral subtraction, RNN Orig stock RNNoise, RNN Ham and SSB RNN ham-trained neural models, Multiband expander), auto-notch (ANF), out-of-phase headphone mode, superhet emulation, and AGC (Fixed/Long/Slow/Medium/Fast with target, decay, and manual gain when Fixed).
- Filter — all presets plus custom low/high; in CW also pitch, rise time and click-tune offset.
- TX-Audio — mic gain (+AUTO), Tune mic (records 5 s and proposes settings), CESSB, ALC, compressor (Legacy or Spectral with profiles), 3-band EQ, leveler, VOX (threshold + hang), and TX makeup gain for CAT radios.
- Monitor/Rec — TX monitor with its own audio-spectrum window, RX
recording to WAV (48 kHz, saved under the app’s
recordings/folder), a 10-second TX-loop record/preview buffer (never transmitted), and the voice keyer: four message slots with Record / Play (preview) / Send (on-air) / Delete, a Repeat loop for contest CQs, and Stop. - Display — waterfall palette (Classic SDR, Sunrise, Cool Blue, Grayscale, Viridis, Volcano, Blue-Orange), smoothing, gamma, swipe sensitivity.
- Keyer and CW Macros — appear in CW modes; see below.
CW
The keyer runs client-side even on proxy connections, so paddle-to-sidetone latency stays sub-millisecond.
- Modes: Iambic A / Iambic B / Straight / Bug / Ultimatic / Single paddle; 5–60 WPM, weight, Iambic-B timing, auto letter spacing, reversed paddles, QSK hang, sidetone volume/delay. Settings adds pitch, rise time, Farnsworth, key compensation, dynamic dit/dah ratio and paddle-memory style. Practice keys sidetone without transmitting; a CW reader decodes received CW on screen.
- Paddles: keyboard (default Z=dit, X=dah), serial dongles (pick port + CTS/DSR/DCD/RI pins), or MIDI keyers (pick device, then MIDI-learn dit/dah).
- Macros: M1–M8 (default hotkeys F1–F8) with
<MYCALL>/<CALL>variables, plus a free-text Send: field — type and press Enter to key a one-off message.
Working with other software
Settings → CAT Control (rigctld) starts a Hamlib NET rigctl server (default port 4532). WSJT-X, loggers and anything Hamlib-compatible can read/set frequency, mode and PTT. This is the FT8 path: the desktop GUI has no built-in FT8/FT4 decoder — run WSJT-X against rigctld and the GUI’s audio devices, or use the standalone web decoder. In DIGU/ DIGL the GUI automatically bypasses CESSB/compressor/leveler during TX so data signals stay clean.
Keybindings
⌨ Keybindings… (in Settings) maps keyboard and MIDI to nearly every action — tuning, band/mode/filter changes, AGC/NB/NR/ANF, volume, PTT (toggle and hold-to-talk), TUNE, CW paddles and macros, WPM, and more. Each action has a primary and an alternate slot; click a slot and press the key or MIDI control to capture it. Continuous actions (volume, drive, WPM…) bind to MIDI faders (absolute) or encoders (relative). A dedicated MIDI device can be selected for bindings, or share the keyer’s. Defaults include ←/→ tune (Shift = coarse), ↑/↓ step, +/− volume, M mode, Space PTT.
Settings that matter
- Audio Devices — input (mic) and output pickers.
- DSP Pipeline — Full (f64, best quality, default), Lite F32, Lite Q15, Lite uSDX.
- Remote proxy — audio codec (PCM ~770 kbps, µ-law, Opus 32/64 kbps, Adaptive PCM default — filter-sized, lossless on CW/SSB), waterfall stream on/off, bins (512–4096) and rate (3/6/12 Hz) — the knobs for slow links.
- TX Options — tune power, SWR protection (auto TX cutoff with threshold and dwell; a red alarm banner with Reset appears when it trips).
- Calibration — QRG offset, ADC gain (set a known −73 dBm signal to read S9), TX audio gain for CAT rigs.
- Appearance — ☀ Light / 🌙 Dark / 🖥 System (quick-toggle in the HUD too).
- Profiles — named snapshots of everything; per-radio state is kept automatically regardless.
Settings live in podsdr-gui/settings.json under your OS config directory
(~/.config/podsdr-gui/ on Linux, ~/Library/Application Support/podsdr-gui/
on macOS), auto-saved about once a second. A corrupted file is moved aside and
the app starts with defaults rather than crashing. Reset All Settings is
under Settings → System.
Current limitations
- Spectrum zoom/pan isn’t wired yet — the display spans the receiver’s sample-rate bandwidth.
- No squelch control in this UI.
- No TCI server (use rigctld); no built-in FT8 decoding (see above).