Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Android app

The Android client (podsdr-android-arm64.apk) is a full operating position on a phone or tablet: touch spectrum, RX/TX, CW keyer with real paddles over USB, and background operation with lock-screen controls.

Installation

  • Requirements: a 64-bit ARM device (arm64-v8a) running Android 10 or newer.
  • The app is side-loaded (not on a store). Install over USB with adb install -r podsdr-android-arm64.apk, or copy the APK to the phone and open it (you’ll need to allow installs from your file manager).
  • Upgrades install over the top and keep your settings.

On first use the app asks for the permissions it needs as you touch each feature: microphone (TX audio), notifications (the background session notification), and per-device USB access when you plug in a paddle or MIDI dongle.

Connecting

The start screen (“PodSDR Discovery”) has three tabs — the phone can use all three paths:

  • Direct — talk straight to an OpenHPSDR radio (or podsdr-emu) over LAN UDP. Tap Discover for a broadcast search, or enter an IP and tap At IP. An Embedded Emulator tile is always available here — a built-in virtual radio requiring no network at all.
  • Local proxy — enter a proxy URL (e.g. https://pi.local:8080) to list that proxy’s radios and connect over WebRTC with server-side DSP. This is how you reach CAT radios and composites from the phone.
  • Cloud — sign in to the broker (callsign/email + password; hub URL and API token under Advanced), claim a proxy with its pairing code (Claim), then Refresh proxies and tap Connect on any online radio. Works from anywhere — cellular included.

Operating

Spectrum & tuning. Tap the spectrum to tune (snaps to the tune step); drag to slew with momentum. The pill at the top right toggles tuning precision: Fast · step / Slow · 1 Hz. Tap the frequency digits to type an exact frequency; [-] / [+] step by the tune step. Band buttons sit under the control row. Waterfall palette, smoothing and gamma are in Settings.

Bottom controls. Mode (LSB, USB, AM, FM, CWU, CWL, DSB, SAM, DIGL, DIGU — plus filter presets and tune step), Flt (filter presets 5.0k…1.0k and two custom slots), DSP (NB, NR — including RNNoise-based “RNN”, “Ham” and “SSB” models — ANF, AGC modes Fix/Lng/Slw/Med/Fst with target and decay, superhet emulation on Full DSP), Mic (volume, TX drive, attenuator, mic gain with AUTO, CESSB/EQ/leveler/compressor, VOX), Mon (monitor, recording, voice keyer), Spl (split, VFO A/B, swap/equalize, RIT/XIT), and in CW modes Key and Mcr.

Status chips across the top mirror the active DSP settings (NB, NR, AGC, Split, codec, CW pitch/WPM, CPU%) — tap a chip to jump to its panel. A CW reader overlays decoded CW copy beneath them.

PTT. The floating PTT button is tap to key, tap again to unkey — a long press picks it up so you can drag it anywhere (the position is remembered). During TX it shows forward/reverse power, SWR (color-coded), a mic-peak bar with clip counter, and an ALC bar. On a receive-only band it reads RX ONLY and won’t key. Hold-to-talk is available by binding a key of an external keyboard in Keybindings.

Dual watch (VFO A in the left ear, VFO B in the right) appears in the split panel when the connected radio supports it (Full-DSP connections; not CAT radios).

CW on Android

  • Keyer modes: Iambic A/B, Straight, Bug, Ultimatic, Single paddle; WPM 5–60, weighting, Farnsworth, hang time, sidetone volume/pitch. A Practice switch keys the sidetone without transmitting.
  • Paddles: plug in a USB dongle via OTG —
    • MIDI keyers (USB MIDI) — pick the device in Settings and assign dit/dah with MIDI-learn.
    • Serial dongles — FTDI, CH340, CP210x and generic USB-CDC (Arduino, RP2040…); the paddle contacts are read from the CTS/DSR/DCD/RI pins (CDC-ACM devices don’t expose CTS — wire to DSR/DCD/RI).
  • Macros (Mcr): eight editable slots M1–M8 with <MYCALL> / <CALL> variables, plus a free-text field — type a message and Enter/Send keys it once.

Voice keyer & recording (Mon panel)

  • Record RX captures receive audio to a 48 kHz WAV in the app’s recordings/ folder.
  • Voice messages: four slots, each with Record / Play (local preview) / Send (on-air) / Clear, plus a Repeat toggle for contest CQ loops and a global Stop.
  • TX monitor with its own volume, a short record/replay buffer for checking your own signal, and a draggable floating mini spectrum overlay.

Running in the background

While connected, a persistent notification (media-style, visible on the lock screen) shows the frequency, mode and live status — signal level in dBm on RX, power and SWR during TX — with a Disconnect action. Audio keeps flowing with the screen off; the app holds a wake lock for the session. Tap the notification to jump back into the app.

Working with other software

Settings → Rig Control (rigctld) exposes a Hamlib NET rigctl TCP server (default port 4532, off by default). A logger or WSJT-X on the LAN can read/set frequency and mode and key PTT — that is also the intended path for FT8: there is no built-in FT8 decoder on Android; use WSJT-X pointed at the phone’s rigctld, or the web decoder.

Settings highlights

  • Profiles — save/restore named snapshots of your whole setup.
  • Keybindings — full keyboard + MIDI binding editor (external keyboards work, including momentary PTT and paddle keys).
  • Appearance — Dark / Light / System (also a quick 🌙/☀/🖥 toggle on the main screen).
  • DSP pipeline — Full (f64) or Lite (f32 / Q15) backends.
  • Remote proxy — audio codec (PCM, µ-law, Opus 32/64k, Adaptive PCM), waterfall on/off, bins and rate — the bandwidth savers for cellular use.
  • Bands — edit band edges, names, and which bands show as buttons.
  • If the settings file is ever corrupted, the app moves it aside on start and offers a clean Wipe all settings.

Limitations vs desktop

  • No built-in FT8/FT4 decoding (use rigctld + WSJT-X) and no TCI server.
  • No pinch-zoom on the spectrum (tap-to-tune + pan/fling + Fast/Slow toggle).
  • USB serial is for paddle input only — CAT-over-USB radios are hosted by a proxy, not by the phone.
  • arm64 only; Android 10+.