Skip to content

TX Drive, Hamlib Controls Fixed, and a Radio-Link Watchdog

Latest

Choose a tag to compare

@github-actions github-actions released this 03 Aug 14:49

TX Drive puts the level POTACAT feeds your radio on a slider — including from your mobile device. Rig controls that silently did nothing over Hamlib (RF Gain, Preamp, ATT, NR) now work, a new watchdog says out loud when your radio stops answering instead of showing a confidently stale frequency, and cloud pairings now carry everything the Tailscale path needs.

TX Drive — set your transmit audio level from anywhere

A new TX Drive control (0–200%, 100 = unity) sets the level of the remote-operator audio POTACAT feeds the radio — the knob that used to require remoting into the shack PC to adjust. It lives next to the TX meter in the VFO popout, is stored per rig (switching rigs recalls each radio's level), and is adjustable from the ECHOCAT mobile app, with the desktop echoing the authoritative value back so every surface agrees. Guest Pass operators can see it but not move it. On the Flex/K4 direct-audio path the full 0–200% range is real gain; on the generic USB-audio path boosts above 100% aren't possible, and POTACAT says so rather than pretending. VFO profiles also now capture and restore TX power, so a saved FT8 profile can bring back its 25 W along with its frequency and mode.

Hamlib rig controls actually work now

If your radio is connected through Hamlib/rigctld, several built-in controls have been failing silently — the button clicked, the UI updated, and nothing reached the radio. K6RBJ (IC-7100) spent weeks on this and inventoried exactly which controls were dead; every one of them traced to POTACAT sending the wrong Hamlib command:

  • RF Gain — fixed for every Hamlib rig (POTACAT was using a level name Hamlib doesn't have).
  • Preamp and Attenuator — fixed. These are dB levels in Hamlib, not on/off switches, and the exact dB steps differ per radio — POTACAT now asks the radio for its real steps at connect.
  • Noise Reduction (on/off and level) — implemented; it was missing entirely on this connection type.

Just as important, the silence is gone: when a radio rejects a command, the CAT log now names the command that failed and what the rejection means, and a control that genuinely isn't supported on your connection says so instead of flipping the toggle and lying. Working an IC-7100 over Hamlib no longer requires hand-crafted CI-V hex commands for any of the above.

A dead radio now says so — everywhere

The failure that started the K6RBJ saga: RF from transmitting reset his radio's USB port, and POTACAT kept showing the last-known frequency with no hint anything was wrong — for weeks. The transport-level case (unplugged cable, vanished COM port) already went loud in v1.9.11, but there was a hole: with Hamlib, the rigctld helper keeps running after the radio dies, so POTACAT still looked "connected" while every poll failed.

A new watchdog closes that hole. If the radio stops answering polls for 10 seconds, POTACAT declares the link down: CAT log entry, desktop banner, tunes and PTT refused, and connected mobile devices get an explicit radio-offline signal instead of a frozen frequency display. The moment the radio answers again, everything recovers automatically. Transmit time never counts toward the timeout, so radios that mute their CAT port while transmitting (TS-480 and friends) can't trigger a false alarm mid-QSO.

In the same area: selecting the wrong connection type for your rig (like RS-BA1 for a USB-attached radio) now logs a readable "connect failed" line in the CAT log instead of failing invisibly.

Flex Direct: no more phantom "DAX conflict" at startup

Flex Direct users could see a scary startup warning — "DAX channel CONFLICT — another SmartSDR client keeps taking it back... close the other client" — with no other client running. POTACAT was reacting to the radio's own status replays during its startup sequence and mistaking them for a fight. The conflict detector now waits out the startup window; a real DAX tug-of-war with another client is still caught. Also from this cycle: POTACAT no longer force-unmutes a slice it doesn't own (it warns instead, so a deliberate mute stays a mute — thanks KD0RC), and the multi-station Flex setting was renamed in Settings so it can't be misread as the radio's MultiFLEX feature.

Remote audio: hardened against a DNS failure you'd never see

A session was caught where the hidden audio-bridge window failed to resolve every STUN/TURN server name while the rest of the system resolved fine — audio still worked because both ends were on the same LAN, but a remote operator would have gotten silence with no explanation. Two defenses shipped: POTACAT now pre-resolves the relay servers itself and hands the bridge direct IP fallbacks, and the connection report in the CAT log now shows exactly what was gathered ("host 2, srflx 1, relay 2") with an explicit warning when the relay path is unreachable — so this failure mode is visible in bug reports instead of buried in a hidden window's console.

Pairing: cloud pairings now carry the full Tailscale story

LZ3AW paired his mobile device over POTACAT Cloud, then wanted to run Tailscale-only — and the app showed Tailscale "not reachable" even though his tailnet was fine (the browser worked from the same phone). The app-side fix is coming in the mobile update; on the desktop side, everything a pairing needs is now included no matter how you pair: cloud pairing QRs carry the certificate fingerprint (they didn't), every connection hands the app the shack's current Tailscale address and whether the certificate is publicly valid (no pinning needed) or self-signed (pin required), and mid-session changes are pushed live. Practical upshot once the mobile update lands: a device paired over cloud can pick up the Tailscale path automatically on its next connect — no re-pairing, no trip to the shack.

Smaller fixes

  • WWFF re-spots fail fast — the WWFF spot server went read-only in 2025, so re-spot attempts that could never succeed now say so immediately instead of timing out one by one (thanks N4RDX).

Windows, macOS (Intel + Apple Silicon), and Linux (x64 + arm64) installers are attached below; the app auto-updates from here.