POTACAT
POTACAT is a free, open-source desktop application for amateur radio operators who want to hunt Parks on the Air (POTA) activators, chase SOTA summits, work DX, and operate their radio remotely from a phone.
Built by Casey Stanton, K3SBP and a growing community of contributors.
How It Started
POTACAT began with a simple idea: see all the live POTA spots on one page and one-click tune my FlexRadio to any spot. No more copying frequencies by hand, no more fumbling between browser tabs and radio software. Click a row, radio tunes, start calling.
That first version was a weekend project. Then people wanted SOTA spots too. Then DX Cluster integration, DX expedition tracking, and Reverse Beacon Network. Then logbook forwarding, ADIF export, and QSO logging. Then WWFF and LLOTA spots. Then respotting, panadapter integration, and a full CW keyer. Every feature was driven by real operators asking “can POTACAT do this?” and the answer kept being yes.
What It Does Today
- Live spot aggregation from POTA, SOTA, WWFF, LLOTA, DX Cluster, RBN, and PSKReporter
- One-click QSY to any spot with CAT control for FlexRadio, Icom, Yaesu, Kenwood, Elecraft, Xiegu, QRP Labs, and Hamlib-supported rigs
- Map and table views with band/mode filters, distance, bearing, and beam heading
- QSO logging with ADIF export and forwarding to Log4OM, HamRS, Ham Radio Deluxe, N3FJP, DXKeeper, Wavelog, MacLoggerDX, QRZ Logbook, World Radio League, and SOTAdata
- JTCAT – a built-in FT8/FT4 engine (no WSJT-X required) with waterfall, decode panel, and auto-QSO
- CW Keyer with MIDI paddle support, remote CW from your phone, and text macros
- SmartSDR and TCI panadapter spots so you can see activators on your waterfall
- DXCC Tracker, DX expedition board, solar propagation, band activity heatmap
- Scan mode to auto-tune through filtered spots like scanning a police scanner
ECHOCAT: Remote Radio for Everyone
ECHOCAT is POTACAT’s remote radio feature. Open a browser on your phone, connect to your shack over a VPN like Tailscale, and you have full control of your radio: tune, transmit SSB, send CW, and run FT8 – all from your phone.
We are democratizing remote radio.
Not everyone can afford a FlexRadio with SmartLink or the latest internet-connected transceiver. Remote operation shouldn’t be a luxury. Our mission is to bring remote SSB, FT8, and CW to as many radios and operators as possible. ECHOCAT runs on hardware as modest as a Raspberry Pi connected to a Xiegu G90. If your radio has a serial port or USB, you can probably run it remotely with POTACAT.
No cloud services. No subscriptions. No vendor lock-in. Just your radio, your computer, and your VPN.
Get Involved
POTACAT is in active development. New features ship weekly. We build what the community asks for.
- Discord – Join us at potacat.com/discord to report bugs, request features, get help, and chat with fellow operators
- GitHub – Source code, issues, and pull requests at github.com/Waffleslop/POTACAT
- Support the project – Keep POTACAT alive and growing by becoming a supporting member at buymeacoffee.com/potacat
73 de K3SBP
Quick Start
- Set your grid square in the welcome screen or Settings
- Add your radio — pick a connection type, configure it, and click Test Connection
- Spots appear automatically — POTA spots load every 60 seconds
- Click any spot in the table or on the map to tune your radio to that frequency
- Work the contact and click Log to save the QSO
That’s it — you’re hunting parks.
Hunter Mode
Hunter mode is the default view. It shows live spots from all your enabled sources in a sortable table and/or interactive map.
Reading the spot table
Worked-station indicators
| Indicator | Meaning |
|---|---|
| ✅ | You’ve worked this station before — the call is in your POTACAT log. |
| Greyed-out row | You’ve worked this station this UTC day on the same band and mode. |
| Yellow star | The callsign matches your watchlist. |
NEW badge | The park isn’t on your worked-parks list yet. |
DXP (red row) | DXpedition spot — pinned to the top of the table. |
Both worked indicators update automatically when you log a contact in POTACAT — there’s nothing to sync from pota.app. Watchlist matches can also raise a corner flag and play a chime (enable in Settings).
Note: The worked-today match also considers the park reference, so an activator who moves to a new park shows as workable again even if you worked them earlier in the day. Grey-outs clear at UTC midnight — a station you worked yesterday (UTC) turning white again is expected, not a bug.
Spot-source pills
Every spot carries a pill identifying the network it came from (POTA, SOTA, DX cluster, and so on). When the same station is spotted by more than one source, POTACAT de-duplicates the spots into a single row carrying multiple badges (for example POTA + DX + CWops).
Tip: Hover the FreeDV pill to see a countdown to the next poll — FreeDV spots come from a source that can only be polled about every five minutes.
Multiple spots for the same callsign
If a station is spotted on more than one frequency, each spot stays in the table. POTACAT deliberately does not drop the older spot when a call is re-spotted elsewhere — otherwise a single bogus re-spot could knock a real activator off everyone’s table. Two spots within 0.5 kHz of each other highlight together as the same station. Use the hide options below to tidy up spots you don’t want.
Tip: The spot you’ve clicked to tune to is held on screen past its normal timeout, so the station you’re working doesn’t age out of the table mid-QSO.
Skipping and hiding spots
Skip
Skip marks a spot to be passed over — it’s designed for Scan mode. Skips are tracked per callsign + frequency, kept in memory only, and reset when you restart POTACAT. A skip does not follow an activator who QSYs to a new frequency. Stations you’ve already worked today are auto-skipped during a scan; click Unskip to force one back in.
A Hide button next to Skip hides the station until they QSY to a new band.
Right-click hide
Right-click any spot to hide it for 1 hour, 2 hours, 1 UTC day, or forever. The hide applies to that callsign + frequency — not to everything from that call — and every hide can be reviewed (and undone) in the hidden-spots list.
Hiding worked stations and parks
Three related checkboxes control worked-spot hiding:
| Option | Matches on |
|---|---|
| Hide worked stations | Callsign + UTC day + band + mode |
| Hide worked parks | Park reference (from your imported pota.app CSV) |
| Hide worked call+park combos | Callsign + park |
A hidden worked station reappears at the next UTC day or as soon as the activator changes parks. There’s also a Hide QRT spots option, and a Hide Worked Parks quick toggle on the quick-access settings menu.
Filters
- Uncheck bands you don’t want in the Band filter dropdown (for example, to drop 2m/70cm spots).
- The Mode filter’s Radio option is distinct from picking a fixed mode like SSB — selecting SSB shows only spots whose listed mode is SSB.
- Spots with no mode listed get their own filter category, so mode filters don’t silently hide them.
- Spots can also be limited to your license-class privileges.
Tracking new parks
Download your hunted-parks CSV from pota.app → My Stats and import it in Settings. POTACAT then flags parks you haven’t worked with a NEW badge, and the Hide Worked Parks filter turns the table into a new-parks-only view.
You only need to import the CSV once: on startup it’s merged with POTACAT’s local worked-parks list, and every QSO you log appends its park reference(s) — POTA and WWFF — automatically. POTACAT Cloud subscribers also get automatic parks-worked sync. The stats overlay’s “Unique Parks” and “Park QSOs” figures come from this parks-worked list, not from your lifetime QSO count.
Note: The
NEWbadge reflects POTACAT’s local worked-parks list, not your live pota.app account. POTACAT counts a park the moment you log it, while pota.app only credits a hunt after the activator uploads their log — so the two can disagree for a while.
Note: Some users report that multi-state parks in the pota.app CSV appear only under the state where the park was first activated.
Logging from the spot table
Ctrl-click (Cmd-click on Mac) selects multiple spots so you can log several operators in one pass — perfect for multi-op activations sharing one frequency. Hover the LOG button for a reminder of this.
Tip: For a pass-the-mic pileup on a single spot, you can also comma-separate callsigns in the call field — POTACAT writes one log entry per operator. Comma-separating park references logs an n-fer hunt the same way.
Logging a POTA QSO automatically re-spots the activator unless you’ve turned re-spotting off.
Special events and contests
POTACAT tracks special events and contests such as 13 Colonies, ARRL WAS 250, and CQ WW 160, with a “What’s Next” view of upcoming events. Event definitions are delivered server-side — POTACAT checks for active events at startup and every four hours — so new events show up without an app update.
For 13 Colonies, a progress checklist tracks which special-event stations you’ve worked, and the JTCAT/FT8 views flag 13 Colonies calls you’ve already worked. In the mobile app, the progress chart shows the last known spot of each station you’re still missing.
Note: Event progress comes from QSOs logged in POTACAT — some users report that importing an ADIF does not update 13 Colonies progress.
Spot Table
The main table shows one row per spot with these columns (right-click any column header to show/hide columns):
| Column | Description |
|---|---|
| Log | Click to open the log dialog for this contact |
| Callsign | Activator’s callsign (click to open QRZ page, hover for operator name) |
| Operator | Operator’s name (from QRZ lookup) |
| Freq (kHz) | Frequency — click the row to tune your radio here |
| Mode | CW, SSB, FT8, FT4, FM, RTTY, FreeDV |
| Source | POTA, SOTA, WWFF, LLOTA, DXC, RBN, PSKR, WSJT, DXP |
| Ref | Park or summit reference (e.g. K-1234, W6/CT-001) |
| Name | Park or summit name |
| State | US state or DX entity |
| Grid | Maidenhead grid square |
| Dist | Distance from your QTH in miles or km |
| Heading | Beam heading from your QTH in degrees |
| Age | Time since the spot was posted (e.g. “5m”, “1h 30m”) |
| Comments | Spot comment text |
| Skip | Toggle to skip this spot during scan |
Column widths are resizable — drag the border between column headers. Widths are saved automatically.
Sorting — Click any column header to sort. Click again to reverse. Sort state is preserved across sessions.
Color coding — Rows are tinted by source: green for POTA, orange for SOTA, purple for DX Cluster. Spots for new (unworked) parks show a green border and “NEW” badge when you have parks worked data loaded.
Watchlist stars — Spots matching your watchlist callsigns show a star icon.
WSJT-X decodes — When WSJT-X integration is active, a decode indicator appears on rows where POTACAT hears the activator in WSJT-X.
Map View
Toggle between Table and Map using the view buttons in the toolbar (or press S for split view).
The map uses dark OpenStreetMap tiles and shows:
- Your QTH as a home marker
- POTA activators as green markers with park info popups
- SOTA activators as orange markers
- DX Cluster spots as purple markers (positioned via cty.dat country database)
- Tune arcs — great-circle lines from your QTH to the selected spot
- Band activity heatmap — a color bar at the bottom showing spot density per band (enable in Settings → Display)
Click any marker to see spot details in a popup. Click the frequency in the popup to tune. The map remembers your zoom level and center position.
Split View
Press S or enable Split view in Settings → Display to show the table and map side-by-side (or stacked — configurable). A draggable splitter lets you resize the panes. The split height/width is saved.
Pop-out Windows
POTACAT supports detachable pop-out windows:
- Pop-out Map — Click the ↗ button in the view toolbar. Opens the map in its own resizable window with full functionality (markers, popups, tune arcs, Log button). Remembers position and size.
- Pop-out Spots — In Activator mode, click the pop-out button in the activator toolbar to detach the hunter spots table into a separate window.
- Pop-out QSO Logbook — Press F2 or click the Logbook toolbar button. See Pop-out QSO Logbook.
Pop-out windows sync theme (dark/light) with the main window and auto-reopen if they were open when you last closed POTACAT.
Activator Mode
Switch to Activator mode from the Settings quick dropdown in the toolbar, or in Settings → App Mode.
Activator mode replaces the hunter table with a streamlined interface for running a POTA/SOTA/WWFF activation.
Starting an activation
Enter your park reference(s) when you create the activation. For an n-fer (multiple overlapping parks), enter every reference up front — this matters for exporting later (see below). The multi-park dialog (Ctrl+M) keeps the park you’ve already typed, and comma-separated park lists auto-fill the country prefix (US-, CA-).
Tip: Want to practice without confusing hunters? Activate the K-TEST test park reference, then QRT it on the POTA spot page when you’re done.
GPS park pick and offline maps (mobile app)
The mobile app’s Activator Mode can pick nearby parks by GPS and stores offline POTA maps — downloading a park takes only seconds, so grab it before you drive out of coverage. The park list itself is downloaded and refreshed about monthly, so park-name lookup works offline too; offline callsign-to-name matching relies on the QRZ cache built during normal use. A SPOTS tab sits right next to the ACT tab so you can hunt park-to-park without leaving your activation.
Self-spotting
You can self-spot straight from Activator mode — the equivalent of pota.app’s Add Spot (a live spot). POTACAT does not declare your activation on the POTA website: announcing future plans (pota.app’s Add Activation) and the final log upload are things you do on pota.app yourself.
Logging during an activation
Any logging that occurs while an activation is open is added to the activation automatically. That includes QSOs you log from the spot table while hunting park-to-park — they count toward your activation’s QSO total and keep the activation fields, so your MY_SIG_INFO stays intact when you flip between hunting and activating.
Clicking a spot while in Activator mode auto-fills the callsign and park reference in the logging form. The form also includes a hunter State field, pre-filled from the callsign lookup and editable before you save.
Note: The auto-add only applies while the activation is open — there’s no way to retroactively add previously logged QSOs to an activation.
The QSO counter and UTC midnight
If your activation spans two UTC days, the QSO counter resets at 0000Z. That’s deliberate — POTA treats each UTC day separately, so the counter starts over for the new day.
n-fers and multi-program activations
- n-fer (multiple parks): enter every park reference when you create the activation. POTACAT writes the correct per-park
MY_SIG_INFOrecords. - Multi-program (same park in POTA + WWFF + LLOTA, etc.): enter all the references; POTACAT generates one ADIF per program.
- Park-to-park: the P2P park field accepts comma-separated lists too.
Warning: pota.app’s uploader can’t yet handle a single multi-park ADIF. For an n-fer, export one log per park (from Past activations) and upload each file to pota.app separately.
After the activation
There is no POTA API for uploading logs, so POTACAT can’t submit your activation for you — export the ADIF and upload it at pota.app. You can export a single activation’s ADIF from the Logbook.
Share Image
To show off a past activation, click Past, pick the activation from the dropdown, then click Share Image — POTACAT generates a shareable QSO-map image of that activation.
Starting an Activation
- Enter your park reference (e.g.
K-1234) in the park input field — autocomplete helps you find parks - Set your frequency — type it or let POTACAT read it from your radio via CAT
- Select your mode (CW, SSB, FT8, etc.)
- Click Start Activation
A timer starts counting your activation time. Your contact count is displayed prominently.
Logging Contacts
The quick-log form at the top has:
- Callsign — type the hunter’s callsign
- RST Sent / Received — split-digit input boxes with auto-advance (or single-field N1MM-style if enabled in Settings)
- Hunter Park — if the hunter is also at a park (park-to-park QSO), enter their reference
- Operator name — auto-filled from QRZ lookup
Press Enter or click Log to save. The contact appears in the activation log table below.
Use Alt+R to reload the last contact into the form (handy for correcting mistakes).
Multi-Park Activations
If you’re activating multiple parks from the same location (two-fer, three-fer), press Ctrl+M to open the Multi-Park dialog. Add additional park references and all your contacts will be logged for each park.
Exporting ADIF
Click Export ADIF in the activator toolbar to save your activation log as an ADIF file for upload to pota.app or sotadata.org.uk. For multi-park activations, you can export per-park or combined.
The activator toolbar also has buttons for:
- Map — show your park location on a map
- Past activations — view your previous activations at this park
- Spots — toggle the hunter spot table below the activator view (split view)
- Logbook (F2) — open the pop-out QSO logbook
Spot Sources
Toggle sources on and off from the Spots dropdown in the toolbar (the funnel icon) or in Settings → Spot Sources.
POTA
Parks on the Air spots from the POTA API. Refreshed automatically (default every 60 seconds, configurable). Green markers on the map.
Parks Worked: Import your parks worked CSV from pota.app (Settings → Spot Sources → POTA → Import CSV). Spots for parks you’ve already worked show no “NEW” badge, and you can filter them out with “Hide worked parks” in the Spots dropdown.
Stats overlay: When parks data is loaded, click the Stats button in the status bar to see your Parks Worked count, Total QSOs, unique locations, and how many new-to-you parks are on the air right now.
SOTA
Summits on the Air spots from the SOTA API. Orange markers on the map positioned at summit coordinates.
WWFF & LLOTA
World Wide Flora & Fauna and Lakes and Lagoons On The Air spots. These are additional park/award programs that pull from their respective APIs.
DX Cluster
Live DX spots streamed via telnet from DX cluster nodes. POTACAT supports up to 3 simultaneous cluster connections.
Setup:
- Enable DX Cluster in Settings → Spot Sources
- Enter your callsign (required for cluster login)
- Choose from 13 preset nodes (W3LPL, VE7CC, DXUSA, NC7J, K1TTT, and more) or add a custom node
- Optionally add a second and third node for broader coverage
DX Cluster spots appear with a purple left border in the table and purple markers on the map. Location is resolved from the callsign using the bundled cty.dat country database.
DX Command Bar: When DX Cluster is enabled, a command bar appears below the table. Use it to self-spot or spot other stations on the cluster. Enter a callsign, frequency, and optional comment, then click Send.
Spotting on the cluster: The Log dialog includes a “Spot on DX Cluster” checkbox for non-park contacts. Press Ctrl+R for quick re-spotting with template variables.
Maximising your S50CLX DX Cluster experience
Contributed by Dan, S50U — sysop of S50CLX.
The examples below use S50CLX (running DXSpider), but the same commands work on any DXSpider node.
Let the cluster do the heavy lifting
For best performance, offload filtering to the node you are connected to (S50CLX in our case) over telnet. Configure the node to deliver only the spots relevant to you, instead of letting your logging software filter unwanted data after it arrives. This saves your computer’s processing power and reduces unnecessary bandwidth for both you and the network.
Persistent user profiles
The first time you connect to S50CLX, it automatically creates a user account tied to your callsign. This account stores all your preferences, so any adjustments you make remain active until you change them. Once logged in, set your details so others can find out who and where you are:
set/name Dan
set/qth Cerkno
set/qra JN66WD
set/home S50CLX
Tailoring your connection with SSIDs
Different operating scenarios — contests, casual DXing, POTA hunting — call for different filtering. SSIDs let you keep multiple, independent configurations under the same callsign. An SSID is simply a suffix added to your callsign (e.g. S50U-1). The node treats each SSID as a distinct user, with its own filters and commands, all of which persist across sessions. The SSID is stripped from any spots you originate, so it never appears in the wider cluster feed.
A few practical examples:
S50U-1— only CW spots from NA-based stationsS50U-2— all HF SSB CONTEST spots across EuropeS50U-3— only spots whose comments contain POTA or SOTA references
You can have up to 99 SSIDs (1–99).
Simultaneous connections
Without an SSID, the node permits only one active session per callsign — a second login would disconnect the first. Assign a unique SSID to each connection (e.g. S50U-1 from your laptop, S50U-2 from your shack PC) and you can stay logged in across all your devices at once.
Mastering filters for precision spotting
Filters give you fine-grained control over the spot stream. For example, to receive spots only from spotters in CQ Zones 14, 15, 16, and 20:
accept/spots by_zone 14,15,16,20
accept/rbn by_zone 14,15,16,20
Or only from North American spotters:
accept/spots by_zone 3,4,5
accept/rbn by_zone 3,4,5
Filters can be as simple or as sophisticated as needed and support full boolean logic. A comprehensive guide is on the DXSpider Filtering Manual page.
Note that standard spots and Reverse Beacon Network (RBN) spots are managed separately, so you’ll need to apply filters to each stream individually.
Essential filter commands
Each callsign+SSID combination can hold up to ten accept and ten reject filters for both regular and RBN spots:
reject/spots <0-9> pattern
accept/spots <0-9> pattern
reject/rbn <0-9> pattern
accept/rbn <0-9> pattern
Patterns can include:
- Frequency ranges (
freq,on) - Text strings in comments (
info) - Callsign prefixes (
call,by) - DXCC, ITU, or CQ zone numbers (
call_dxcc,by_itu,call_zone) - US state abbreviations (
call_state,by_state)
Handy cluster commands
sh/filter— display all active spot and RBN filters for your current SSIDsh/dx— list the ten most recent spots; add a number, e.g.sh/dx 50, to see moresh/dx <callsign>— recent spots for a specific callsign (e.g.sh/dx S5for Slovenian stations)sh/muf <prefix>— current Maximum Usable Frequency to a given country, with band-by-band signal strength estimates over timesh/prefix <callsign>— country information for any callsignsh/users— everyone currently connected to the node
Getting the most from the RBN
Enable all-mode RBN spots (the data volume is enormous):
set/skimmer
Disable with:
unset/skimmer
You can also target specific modes:
set/skimmer cw
set/skimmer rtty
set/skimmer ft
set/skimmer cw rtty
While RBN servers broadcast every report they receive, the cluster software intelligently filters out erroneous and duplicate entries — saving bandwidth and giving you a cleaner, more reliable spot feed.
Monitoring your own spots
set/seeme
This shows every spot of your own callsign as it appears in the cluster, before any filters are applied. An excellent way to see where and when you’re being reported worldwide in real time.
Unlock the full potential
This is only the surface of what’s possible with an S50CLX cluster node. Diving deeper into filtering, SSIDs, and the full command set lets you tailor the cluster to work exactly the way you want.
April 2026 — Dan, S50U, sysop of S50CLX (s50clx.si)
Reverse Beacon Network (RBN)
The RBN shows where your CQ calls (and watchlist callsigns) are being heard by the worldwide skimmer network.
Setup:
- Enable RBN in Settings → Spot Sources
- Enter your callsign
A dedicated RBN view appears in the view toolbar. It shows a map with band-colored circle markers (sized by SNR), a spot table, and a dynamic legend. Filters for band and max age are available at the top.
FreeDV / PSKReporter
FreeDV spots from PSKReporter. Polls every 5 minutes (with automatic backoff on server errors). Coral-colored spots in the table and map.
Hover over the FreeDV checkbox in the Spots dropdown to see a countdown to the next poll.
WSJT-X
POTACAT listens for WSJT-X UDP messages (default port 2237) and cross-references decoded callsigns against active POTA spots.
Note: You don’t need WSJT-X to work FT8 in POTACAT — JTCAT is POTACAT’s built-in FT8/FT4 engine. This page is for operators who prefer to run the separate WSJT-X application and have POTACAT work alongside it. If you’re using JTCAT, leave the WSJT-X mode checkbox unchecked.
Features:
- POTA activators in the WSJT-X decode list are highlighted green
- Decode indicators appear on matching rows in the POTACAT spot table
- Click-to-tune sends the frequency to your FlexRadio via SmartSDR TCP (no CAT conflict with WSJT-X)
- Auto-log: QSOs completed in WSJT-X can be automatically logged in POTACAT and forwarded to your external logbooks
Enable WSJT-X in Settings → Spot Sources. Set the UDP port to match your WSJT-X configuration.
Who Controls the Radio?
Two applications can’t both run CAT control of the same radio. If WSJT-X and POTACAT need the same rig, you have two options.
Option A — WSJT-X Mode (simplest)
Check the WSJT-X mode checkbox under the CAT pill. In this mode:
- POTACAT’s own CAT control is disabled. Instead of talking to the radio directly, POTACAT sends UDP packets to WSJT-X, and WSJT-X controls the rig through its own CAT connection.
- Clicking a spot in POTACAT asks WSJT-X to QSY the radio.
- Because POTACAT isn’t holding the serial port, there is no COM-port conflict.
Warning: While WSJT-X Mode is enabled, POTACAT features that need direct rig control — including JTCAT — are unavailable. Uncheck it when you return to normal operation. If clicking a spot suddenly “does nothing,” a leftover WSJT-X Mode checkbox is a prime suspect.
FlexRadio owners get a bonus: click-to-tune goes through the SmartSDR TCP API, which works even while WSJT-X owns CAT.
Option B — Share the rig through rigctld
Run a networked rigctld yourself and point both applications at it:
- Start rigctld (Hamlib) for your radio, e.g. on
127.0.0.1:4532. - In POTACAT, choose the rigctld Network connection type with that host and port.
- In WSJT-X, set the rig to Hamlib NET rigctl with the same address.
Both apps keep full rig control, and CAT survives either application closing.
Warning: Don’t use POTACAT’s Other (Hamlib) connection type for this — it spawns its own internal rigctld, which would conflict with yours and shuts down when POTACAT exits, orphaning WSJT-X. Run a standalone rigctld instead.
UDP Port 2237 Basics
2237is the conventional WSJT-X UDP server port. Set it in WSJT-X under File → Settings → Reporting, and make POTACAT’s port match.- POTACAT opens the port with port sharing enabled, so other listeners (GridTracker, ACLog, and friends) can share 2237 — WSJT-X broadcasts to all listeners on the port.
- If another application refuses to share the port, move POTACAT to a different port and use a JTAlert-style UDP relay to feed both.
Launch Order for Logger Chains
If you chain WSJT-X → POTACAT → an external logger (N3FJP, ACLog, and similar), start the programs in that order:
- WSJT-X — controls the radio and produces the UDP stream.
- POTACAT — attaches to the UDP stream.
- Your logger — receives forwarded QSOs from POTACAT.
When you click OK on the WSJT-X log window, POTACAT auto-logs the QSO, matches the callsign against spotted POTA activators so the park is marked worked, and forwards the QSO to your configured logbooks — see Logbook Forwarding.
Tip: Starting a logger before POTACAT can leave it holding a port POTACAT needs. If forwarding or rig control fails right after startup, close everything and relaunch in the order above.
FT4 and FT2 in ADIF Exports
POTACAT exports FT4 and FT2 QSOs as MODE=MFSK with SUBMODE=FT4 (or SUBMODE=FT2), as the ADIF specification requires — files with a plain MODE=FT4 are rejected by the POTA uploader. Keep this in mind if you hand-edit exported logs.
DX Expeditions
POTACAT checks the Club Log DX expedition database and marks active expeditions with a DXP badge. DX expedition spots are pinned to the top of the table and shown with a red/gold marker on the map.
Radio Setup
POTACAT supports five connection methods. Open Settings and click Add Rig to configure your radio.
FlexRadio (SmartSDR)
Best for: FlexRadio 6000/8000 series running SmartSDR.
POTACAT connects to SmartSDR’s built-in CAT server over TCP. No additional software or cables needed.
- In SmartSDR, make sure the CAT server is enabled (SmartSDR CAT settings)
- Add a new rig → select FlexRadio (SmartSDR)
- Choose your slice (A, B, C, or D)
- Save
SmartSDR exposes Kenwood-compatible CAT on TCP ports 5002–5005:
| Slice | Port |
|---|---|
| A | 5002 |
| B | 5003 |
| C | 5004 |
| D | 5005 |
If SmartSDR is on a different computer, use IP Radio (TCP CAT) instead with the Flex’s IP address.
Tip: Start order matters. If spot clicks or QSY start erroring, close both apps and reopen SmartSDR first, then POTACAT.
Direct connection — SmartSDR doesn’t have to stay open
POTACAT also binds directly to the radio’s own API (TCP port 4992), so SmartSDR isn’t required to keep operating. If SmartSDR closes, POTACAT re-binds directly to the Flex within a couple of seconds, and hands back when SmartSDR reopens. CW is fully supported on this path, including keying through a WinKeyer.
The “independent slice” gotcha
If Run independent slice is checked in the rig settings, clicking spots will not move your SmartSDR slice — POTACAT works its own slice instead, and on some radios that means a brand-new slice opens (e.g. slice C on a 6600). If spots show up but the radio never QSYs, uncheck it.
Digital and remote audio need DAX
ECHOCAT and JTCAT audio go through SmartDAX, not the CAT connection:
- DAX must be running.
- In SmartSDR, assign the slice flag to a DAX channel.
- The SmartDAX window should show a blue indicator next to that slice.
- In POTACAT, select the DAX Audio RX/TX devices as the rig’s audio in/out.
There’s also a setting to pin your TX to a chosen DAX channel, so transmit audio never silently loses its DAX assignment.
JTCAT / FT8
JTCAT talks to the SmartSDR API host on TCP port 4992. Make sure POTACAT has the Flex’s IP address configured — it’s the same address used for SmartSDR panadapter spots — and that your firewall allows POTACAT to reach the radio. A firewall rule that only allows SmartSDR.exe isn’t enough.
Connection troubleshooting
If POTACAT suddenly can’t connect (often after an upgrade), test from PowerShell:
Test-NetConnection <radio-ip> -Port 4992
- True, but POTACAT still fails → your firewall allows SmartSDR.exe but not POTACAT.exe, or the radio has hit its multi-client limit (default: 2 GUI clients). Close an extra client and retry.
- False → your PC is on the wrong subnet from the radio.
See also
- SmartSDR Panadapter Spots — push POTA/SOTA/DX spots onto your panadapter, including on Maestro and SmartSDR for iOS.
IP Radio (TCP CAT)
Best for: FlexRadio on a remote PC, Elecraft K4, or any radio with a TCP-based Kenwood CAT interface.
- Add a new rig → select IP Radio (TCP CAT)
- Enter the host IP and port
- Save
Serial CAT (Kenwood)
Best for: QRPLabs QMX/QDX, Kenwood, Elecraft, Yaesu (via FA/MD commands), and any radio that speaks Kenwood protocol over USB serial.
- Add a new rig → select Serial CAT (Kenwood)
- Choose your COM port
- Set the baud rate
- Check Disable DTR/RTS if your radio uses DTR for PTT
- Click Test Connection to verify
- Save
POTACAT sends only FA (frequency) and MD (mode) commands. Any radio that responds to FA; with a frequency will work.
Yaesu radios also support these commands — POTACAT auto-detects 9-digit (Yaesu) vs 11-digit (Kenwood) FA format from the radio’s response.
Other Rig (Hamlib)
Best for: Icom, Yaesu, and radios that don’t speak Kenwood protocol.
POTACAT bundles Hamlib 4.6.5 (rigctld) — no separate installation needed. Supports 200+ radio models.
- Add a new rig → select Other Rig (Hamlib)
- Search for your radio model
- Choose your COM port and baud rate
- Click Test Connection
- Save
POTACAT spawns a rigctld process, connects via TCP, and translates commands to your radio’s native protocol.
rigctld Network
Best for: Connecting to an existing rigctld instance running on another machine or managed by other software.
- Add a new rig → select rigctld Network
- Enter the host and port (default
localhost:4532) - Save
My Rigs
POTACAT supports multiple saved rig profiles. Each profile stores a name and connection settings. Switch between rigs by clicking the CAT status pill in the status bar and selecting from the rig list.
Win4Yaesu Setup
If you use Win4Yaesu Suite, both programs need access to the radio’s serial port. The solution is COM0COM (free virtual COM port driver):
- Install COM0COM (signed 64-bit version)
- Create a virtual port pair (e.g. COM18 ↔ COM19)
- In Win4Yaesu: assign COM18 to an AUX/CAT port
- In POTACAT: set up Serial CAT (Kenwood) on COM19
POTACAT ←→ COM19 ──(COM0COM)── COM18 ←→ Win4Yaesu ←→ Radio
Win4Yaesu caches radio state, so POTACAT’s polling doesn’t add load on the radio. Multiple programs can run simultaneously on separate AUX/CAT ports.
Tested Radios
| Radio | Connection | Baud | DTR/RTS Off? | Notes |
|---|---|---|---|---|
| FlexRadio 6000/8000 | FlexRadio (SmartSDR) | — | — | Works out of the box |
| QRPLabs QMX | Serial CAT (Kenwood) | 38400 | No | Don’t use Hamlib; power cycle if stuck in terminal mode |
| QRPLabs QDX | Serial CAT (Kenwood) | 38400 | Yes | DTR = PTT on QDX |
| Yaesu FTX-1 | Serial CAT (Kenwood) | 38400 | No | Hamlib backend failed in testing |
| Xiegu G90 | Other Rig (Hamlib) | 19200 | Only with Digirig | CI-V protocol; try X5105 or IC-718 backend as fallback |
| Kenwood TS-480/590/2000 | Serial CAT (Kenwood) | 9600 | No | Also works with Hamlib |
| Elecraft KX2/KX3/K3 | Serial CAT (Kenwood) | 38400 | No | |
| Elecraft K4 | IP Radio (TCP CAT) | — | — | Ethernet TCP CAT |
If your rig isn’t listed, try Serial CAT (Kenwood) first — many radios support FA/MD commands — then fall back to Hamlib.
Yaesu FT-710
Best for: Yaesu FT-710 (AESS / Field) — CAT, audio, and remote CW all over the radio’s single USB cable.
The FT-710 exposes two COM ports and a USB sound card over one USB cable. The Enhanced COM port is the one that carries CAT — use it for the rig connection. For general connection-method background, see Radio Setup.
Connection settings
- Windows: install Yaesu’s FT-710 USB driver from their website (the plain USB driver — the separate “virtual sound driver” is not needed). Linux: no driver needed; the radio is plug-and-play.
- Add a new rig → select Serial CAT (Kenwood) (details) — not Hamlib.
- Choose the radio’s Enhanced COM port.
- Set the baud rate to
38400(matching the radio’s CAT rate). - Check Disable DTR/RTS on connect.
- Click Test Connection, then Save.
Note: Use Serial CAT rather than Other Rig (Hamlib) for this radio. Under Hamlib, power-on and several rig-control buttons are unreliable on the FT-710. Over Serial CAT, remote power on/off works — including from the ECHOCAT power button.
Tip: Power the radio on before opening the rig settings screen — with the radio off, the audio device dropdowns stay empty.
Radio menu settings
| Menu | Set to | Why |
|---|---|---|
| OPERATION SETTING → GENERAL → CAT-1 TIME OUT TIMER | 1000 ms | The factory default of 10 ms is too short for CAT round-trips and causes spurious ?; command rejections |
| RADIO SETTING → MODE SSB → MOD SOURCE | AUTO | Without this, remote PTT keys the radio but nothing is modulated |
| OPERATION SETTING → CAT/LINEAR/TUNER → USB KEYING (CW) | DTR | Required for remote CW keying (see below) |
| FUNC → RADIO SETTING → CW → CW BK-IN | ON (or SEMI) | Without break-in the radio queues CW text but never keys the transmitter |
Audio & digital modes
- In Windows Sound settings, set the radio’s USB audio device to 16 bit, 44100 Hz (CD Quality). The Windows default of 48000 Hz breaks TX audio on this radio.
- In POTACAT’s rig settings, set RX Audio In and TX Audio Out both to the radio’s USB audio codec. A common failure is TX audio routed to the PC speakers instead of the rig.
- SSB-over-DATA (Settings → ECHOCAT) works well on the FT-710. The radio flipping to DATA-U in red while you key from the phone is normal and expected — see SSB over DATA.
- If you use SSB-over-DATA, also change the radio’s DATA MODE setting from
PSKtoOTHERS— otherwise TX lands off the dial frequency in DATA mode.
CW keying
The FT-710’s CAT KY command is unreliable for CW text — it raises the carrier but doesn’t reliably key Morse. POTACAT instead keys this radio per-element using DTR on the radio’s second (CAT-2) COM port:
- In POTACAT Settings, set CW Key Port to the radio’s second COM port (e.g.
COM4if CAT is onCOM3, or/dev/ttyUSB1on Linux). - On the radio, set OPERATION SETTING → CAT/LINEAR/TUNER → USB KEYING (CW) to
DTR. - Turn break-in on: FUNC → RADIO SETTING → CW → CW BK-IN =
ONorSEMI.
Without a CW Key Port configured, POTACAT falls back to the KY command — expect missed or garbled sending.
Warning: On Linux, some
cdc_acmUSB-serial drivers can’t control the DTR pin (Operation not supportedin the log). The pin sticks high and the radio can key continuously while POTACAT runs. POTACAT falls back to a Python/pyserial helper for CW text (installpython3andpyserial), but that only handles word-at-a-time text — real-time paddle keying needs a cheap FTDI/CH340 USB-serial adapter wired to the rear KEY jack, set as the CW Key Port. If the rig gets stuck keyed, set USB KEYING (CW) =OFFon the radio.
Known quirks
- ATU: remote tune via CAT is not supported by Yaesu’s firmware on this radio — no CAT command starts a tune cycle. Use the front-panel TUNE button.
- SWR bar: POTACAT’s SWR bar over-reads on Yaesu rigs — trust the radio’s own meter.
- Some users report that a few panel controls (ATT, preamp, COMP, NR, ANF, VOX) don’t respond from POTACAT even though the power slider, VFO knob, and power on/off work fine.
Yaesu FT-891
Best for: Yaesu FT-891, typically paired with a Digirig (DR-891) interface for CAT and audio.
The settings below are the community reference setup for the FT-891 with a Digirig DR-891. For connection-method background, see Radio Setup.
Connection settings
- Add a new rig → select Serial CAT (Kenwood) (details)
- Choose the CP210x COM port
- Set the baud rate to
38400(matching 05-06 CAT RATE) - Click Test Connection, then Save
Tip: If the test fails, toggle Disable DTR/RTS on connect — adapters differ, and this checkbox resolves connection failures in both directions.
- Linux: prefer Serial CAT over the Hamlib path with this radio. Add yourself to the serial group (
sudo usermod -aG dialout $USER, then log out fully) and make sure no other app (FLRig, a logger) is holding the port. - macOS: pick the
/dev/cu.*serial device. Serial CAT direct to the port works; if you want Hamlib, bridge through FLRig at127.0.0.1:12345instead of pointing Hamlib at the serial port.
Radio menu settings
| Menu | Name | Set to |
|---|---|---|
| 05-06 | CAT RATE | 38400 |
| 05-07 | CAT TOT | 3000 |
| 05-08 | CAT RTS | DISABLE |
| 07-12 | PC KEYING | OFF |
| 08-01 | DATA MODE | OTHERS |
| 08-05 | DATA LCUT FREQ | OFF |
| 08-07 | DATA HCUT FREQ | OFF |
| 08-09 | DATA IN SELECT | REAR |
| 08-10 | DATA PTT SELECT | DAKY |
| 08-11 | DATA OUT LEVEL | 50 |
| 08-12 | DATA BFO | USB |
| 16-03 | HF PWR | 40 W |
| 16-14 | DATA GAIN | 50 |
CW keying
Warning: The FT-891’s
KYCAT command has no free-text form, so CW text macros key the transmitter but produce zero RF on this radio (same limitation as the FT-991A). This is a known open limitation.
For working remote CW, key the radio’s DTR line instead of CAT:
- Wire a cheap FTDI/CH340 USB-serial adapter to the radio’s KEY jack and select it as the CW Key Port in POTACAT Settings.
- Make sure break-in (BK-IN) is enabled on the radio, or it will sidetone without transmitting.
Audio & digital modes
- The DATA menu settings above (08-01 through 08-12) route digital-mode TX audio through the rear port — required for JTCAT/FT8 through the Digirig.
- 11-06 SSB OUT LEVEL directly sets how loud ECHOCAT’s RX audio is.
- 11-05 SSB MIC SELECT picks the SSB TX audio source: if it’s set to
MIC, the hand mic — not your remote audio — is what transmits when ECHOCAT keys the radio.
Known quirks
CAT-level facts about this radio (useful with Rig → Custom Command):
- RF gain over CAT spans
000–030, not 0–255 as the CAT manual states — POTACAT’s rig profile accounts for this. - TX power range is 5–100 W; the rig clamps at 5 W minimum.
- ATU: send
AC002;alone to start a tune cycle (AC001; AC002;together fails);AC000;turns the tuner off. - Filter width is
SH01xx;—SH0xx;is IF shift, a different control. - Split is
ST1;, notFT1;.
Yaesu FTDX10 & FTDX3000
Best for: Yaesu FTDX10, FTDX3000, and FTDX101D/MP — with notes for the FT-991A.
These rigs share the same Yaesu CAT protocol and the same remote-audio menu family, but each has its own gotchas. For connection-method background, see Radio Setup.
Connection settings
All of these radios work well as Serial CAT (Kenwood) (details) at 38400 baud.
FTDX3000 — if the frequency won’t change, check these radio menus:
| Menu | Set to |
|---|---|
| MENU 037 CAT SELECT | USB |
| MENU 038 CAT RATE | match POTACAT (38400 works) |
| MENU 040 CAT RTS | ENABLE |
With CAT RTS = ENABLE, leave Disable DTR/RTS on connect unchecked in POTACAT — the wrong combination of the two is the classic “CAT connects but frequency won’t change” cause on this rig.
FTDX101D/MP — the radio exposes two virtual COM ports (Enhanced and Standard). To share the radio with a logger, enable CAT on both USB ports in the radio menu and point POTACAT at the port the logger isn’t using. Prefer the Serial CAT rig type over Hamlib on the 101 — it’s the stable path for CW macros.
Radio menu settings
FTDX10
| Menu | Set to | Why |
|---|---|---|
| RADIO SETTING → MODE SSB → SSB MOD SOURCE | REAR | Without it, remote PTT keys the radio but no audio transmits (the mic still works normally — mic PTT re-selects the mic) |
| RADIO SETTING → MODE SSB → REAR SELECT | USB | Takes rear-port TX audio from the USB sound card |
| OPERATION SETTING → GENERAL → DATA MODE | Others / DATA-STD (label varies by firmware) | In PSK mode the TX lands off the dial frequency in DATA modes |
FTDX3000
| Menu | Set to | Why |
|---|---|---|
| MENU 103 | USB | Routes SSB TX audio from the USB port for ECHOCAT (switch it back for front-mic use) |
FTDX101D / FTDX101MP
| Menu | Set to | Why |
|---|---|---|
| MODE SSB → SSB MOD SOURCE | REAR | Options are MIC/REAR on the 101 family — there is no AUTO |
| REAR SELECT | USB | TX audio from the USB sound card |
| RPORT GAIN | start around 1 | 50 is far too hot and distorts badly — start at 1 and work up |
| DATA MODE | Others (not PSK) | In PSK mode the radio shifts TX ~1.5 kHz below the dial |
Note: On Yaesu rigs the shack mic can stay live during remote SSB transmit — there’s no CAT command to mute it. With SSB MOD SOURCE = REAR the mic only transmits via its own PTT; otherwise turn the mic down or unplug it when operating remote, or use SSB over DATA.
CW keying
- Yaesu CAT ports handle CW text macros (the
KYcommand) but not real-time paddle keying. For a paddle, wire a cheap FTDI/CH340 USB-serial adapter to the radio’s CW KEY jack and select it as the CW Key Port in POTACAT Settings — it keys per-element via DTR pulses regardless of CAT backend. - Exception — FTDX101D: paddle keying works over plain CAT (
TX1;/TX0;) with no adapter needed. - FTDX3000: the CW Key Port must be the radio’s Standard COM port — never the same port as CAT. Pointing both at one port causes an endless connect/disconnect loop. Leave CW Key Port blank unless you have a second port or dedicated keying adapter.
- Over Hamlib/rigctld there is no per-element CW command at all — POTACAT disables the paddle with a red banner unless a CW Key Port is set. Another reason to prefer Serial CAT.
- Make sure break-in (BK-IN) is on, or the radio queues CW without transmitting. Some users report the FTDX10 remembers BK-IN per band — if CW sidetones but produces no RF, check BK-IN on the current band.
Audio & digital modes
- SSB-over-DATA breaks the FTDX10: with it enabled, PTT drops the rig into DATA-L with a ~650 Hz offset and a 600 Hz filter. Uncheck Settings → ECHOCAT → SSB-over-DATA on this rig, and use the
REAR/USBmenu settings above for remote audio instead. See SSB over DATA. - The same applies to the FTDX3000: uncheck SSB-over-DATA and set MENU 103 to
USB. - 2.4 kHz DATA filter limit (FTDX3000/FTDX5000): DATA-U/PKT modes max out at 2.4 kHz IF bandwidth — too narrow for FreeDV and marginal for FT8, while plain USB allows 4 kHz. POTACAT’s JTCAT uses plain USB on these rigs; for FreeDV, set Settings → Spots → FreeDV sideband to
Always upperand leave Switch radio to DATA mode unchecked. - SWR/ALC meters are transmit-only — during RX the bars stay at
—by design. Key into a dummy load to verify them.
Tip: If your filter width snaps back to the app default (2300 Hz) on every QSY, set your per-mode default filters in Settings → Tuning — they persist after that.
FT-991A notes
- Set MENU 109 SSB PORT SELECT so SSB TX audio comes from the USB port (
USB) — required for ECHOCAT voice. - Like the FT-710, change the radio’s DATA MODE from
PSKtoOTHERSif you use SSB-over-DATA, or TX lands off frequency. - Sharing the radio with Win4Yaesu: Win4Yaesu holds the physical CAT port, so bridge POTACAT through a com0com virtual port pair with rig type Serial CAT (Kenwood) — see Win4Yaesu Setup. Note that com0com does not work inside a Windows VM; VSP Manager (free for hams) is an alternative there.
Warning: The FT-991A’s
KYcommand has no free-text form, so CW text macros key the transmitter but produce zero RF — same known open limitation as the FT-891. Use a DTR keying adapter on the key jack for working remote CW.
Known quirks
- FTDX10: stay on VFO A — some users report misbehavior when the rig is left on VFO B.
- FTDX10: the mode names are DATA-L/DATA-U/DATA-FM only — there is no “DATA-STD” mode (the similarly named option belongs to the DATA MODE menu setting above).
Icom IC-7300 & IC-7300 Mk II
The IC-7300 is one of the most popular rigs in the POTACAT community, and everything — CAT control, PTT, TX/RX audio, even remote CW keying — rides the radio’s single built-in USB cable. The difference between rock-solid and flaky comes down to a handful of radio-side menu settings, so start here.
This page also covers the IC-7610, IC-7100, and IC-706MKIIG at the bottom.
Quick setup
- Add a new rig and select the IC-7300 (or IC-7300 Mk II) profile.
- Choose the radio’s COM port (it enumerates as a Silicon Labs CP210x device on Windows).
- Match the baud rate in POTACAT to the radio’s CI-V USB Baud Rate —
19200is the sweet spot (see below). - Set the rig’s RX and TX audio devices in POTACAT to the radio’s
USB Audio CODEC.
Radio-side CI-V settings
Open MENU > SET > Connectors > CI-V and set:
| Setting | Value | Why |
|---|---|---|
| CI-V Transceive | OFF | The big one. When ON, the radio’s own status chatter collides with POTACAT’s commands on the CI-V bus — the classic cause of PTT that only keys one try in three. |
| CI-V USB Baud Rate | 19200 (fixed) | See the trade-offs below. |
| CI-V USB Echo Back | OFF | With it ON, PTT gets intermittent and TX audio comes out thin with almost no ALC movement. |
| CI-V Address | 94h (Mk II: B6h) | Must match the CI-V address in POTACAT’s rig settings. |
Note: Restart the radio after changing CI-V settings.
Baud rate: fixed 19200 vs Auto
| You want | Set CI-V USB Baud Rate to |
|---|---|
| Reliable PTT and working FT8 decode in JTCAT | 19200, fixed, matched on both the radio and POTACAT |
| CAT power-on from POTACAT/ECHOCAT | Auto |
- Fixed
19200is the recommended setting: a fixed rate eliminates CI-V collisions, and JTCAT will not decode FT8 reliably with the radio at115200. Drop to19200on both sides. Autois what makes the Power On button work. Waking a powered-down IC-7300 requires a long preamble ofFEbytes before the CI-V power-on command — per Icom’s manual, about 150 bytes at 115200 baud, 50 at 38400, 25 at 19200 — and with the radio onAutothis wake-up sequence has been confirmed to work. Power off works at any setting; power on is the hard part.
Note: Powering the radio on from a full power-down is still a known rough edge — the radio takes several seconds to boot and the CAT connection can drop before it finishes. If Power On fails for you, keep the CI-V baud rate low (or
Auto), or define a custom CAT power-on command: click RIG in the top bar, then CAT.
Stuck in transmit after closing ECHOCAT
If the radio locks into TX when you close the ECHOCAT browser session, check SET > Connectors > USB SEND/KEYING and set USB SEND to OFF. When it’s assigned to RTS, the serial control line can hold the radio keyed after the remote session ends. This is the durable, radio-side fix.
Digital modes: MOD input and levels
- SET > Connectors > MOD Input: set DATA MOD to
USB— some radios default data-mode audio to the ACC jack, which leaves JTCAT/FT8 transmitting dead air. - USB MOD Level around 50% is a good starting point; watch the ALC meter during TX and back off if it’s slamming.
- The radio’s USB audio output must carry AF (normal receive audio), not IF — check the USB AF output setting under SET > Connectors.
- If ECHOCAT’s RX meter shows clipping, lower the radio’s USB AF output level — some users run it around 10%.
Tip: For JTCAT, some users report good results with the RX slider around 37% and the radio’s AF gain near the 10 o’clock position.
Remote CW keying
Remote CW on the IC-7300 works well, but only over a direct CI-V serial connection — not through rigctld/Hamlib:
- On direct CI-V, POTACAT sends the radio’s real CW key-down/key-up command (
0x1C 0x01) for every paddle element. - Hamlib’s rigctld protocol has no per-element CW command — it only exposes the mic PTT line. Keying a paddle through rigctld raises PTT while the radio sits in CW mode: transmitter on, key line untouched, silent TX.
Setup:
- Connect the rig as a direct CI-V serial rig (not rigctld Network / Hamlib).
- On the radio, set SET > Connectors > USB SEND/KEYING > USB Keying (CW) to
USB(A) DTR. - Leave POTACAT’s CW Key Port set to
(none)— the 7300 is keyed through its existing CI-V connection.
Warning: Linux users: the kernel’s
cdc-acmdriver can’t control the DTR pin on the 7300’s USB port (Operation not supportedin the log). Worse, the stuck-high DTR line will key the radio continuously the moment it enters CW mode. On Linux, set USB Keying (CW) toOFFto stop the phantom keying. For real paddle keying, wire a cheap FTDI/CH340 USB-serial adapter to the radio’s 3.5 mm KEY jack (adapter DTR pin → tip, GND → sleeve) and select it as the CW Key Port. Note that common “CI-V data cables” are not keying cables — the DTR pin isn’t broken out — and the CW Key Port must be a different COM port than your CAT port.
CW text macros are sent over the normal CAT connection and work everywhere, including Linux.
FLRig as an alternative CAT path
CI-V serial drops commands that arrive nearly back-to-back; POTACAT compensates, but some IC-7300 owners find routing CAT through FLRig smoother — and the internal ATU can be triggered through FLRig, where POTACAT’s direct ATU command doesn’t work on this radio.
- Run FLRig with its XML-RPC server on (the default, port
12345). - In POTACAT, add the rig as Other Rig (Hamlib) with Rig Model FLRig, host
127.0.0.1, port12345. FLRig owns the serial port — leave the COM/baud fields alone. - Alternatively, run your own bridge with
rigctld -m 4 -r 127.0.0.1:12345and use the rigctld Network rig type.
Troubleshooting quick hits
- Spot clicks stopped QSYing and the CAT badge is red — make sure the WSJT-X Mode checkbox is off unless WSJT-X is actually running and configured.
- Echo on ECHOCAT — both the audio input and output must be the radio’s
USB Audio CODEC, never the PC’s default mic/speakers. - Mode flips to USB-D on phone PTT — that’s the SSB-over-DATA feature. If you’re operating with the radio’s own mic, uncheck SSB-over-DATA in Settings.
- No FT8 decodes — CI-V baud at
19200on both sides, and check the JTCAT RX slider.
IC-7300 Mk II
- The Mk II’s default CI-V address is
B6h, not the original 7300’s94h. This is the #1 Mk II gotcha — if you copied settings from an original 7300, fix the address and select the Mk II rig profile. - POTACAT cannot connect to the Mk II (or 7610/7760) over the network CI-V/LAN port — Icom’s LAN remote protocol is proprietary. Run POTACAT on a PC or Raspberry Pi at the radio and operate remotely with ECHOCAT, or bridge through wfview/wfserver.
- Everything else on this page (CI-V settings, USB SEND, CW keying, Linux notes) applies to the Mk II as well.
IC-7610
- CI-V address is
98h. - No TX audio from ECHOCAT/digital modes: set MENU > SET > Connectors > MOD INPUT > SSB MOD to
USB1(orUSB2, whichever port your cable is on), and set SSB-D MOD to the same. - If Test Connection passes but the radio never QSYs, type the bare COM port name (e.g.
COM7) into the manual COM field instead of accepting the auto-detected “Silicon Labs CP210x” dropdown entry.
IC-7100 & IC-706MKIIG (DigiRig)
The same CI-V hygiene applies — CI-V Transceive OFF and a fixed baud rate cure most flakiness on the IC-7100 too.
The IC-706MKIIG (CI-V address 58h) has a firmware quirk: it accepts CAT PTT but doesn’t route TX audio to the rear interface, so PTT must be keyed on the DigiRig’s hardware PTT line instead:
- Set the PTT Port field in the rig’s Hamlib settings (Settings > Rig).
- Two-port DigiRig: CAT on one COM port, PTT Port on the other COM port.
- DigiRig Mobile (single port): CAT and PTT share one COM port — use the DTR/RTS pin selector (default
DTR; some units key onRTS).
Kenwood TS-590, TS-890S, TS-2000 & TS-480
Kenwood rigs connect over Serial CAT (Kenwood) — the basic hookup (COM port, baud, Test Connection) is covered in Serial CAT (Kenwood). This page covers the model-specific quirks.
TS-590S / TS-590SG
Connection
- Use the radio’s USB-B port, not the ACC or COM connectors.
- The default baud rate is
9600. To change it, use radio menu 68 — and note you must power-cycle the radio for a baud change to take effect. - If you get “no response from radio”: match the baud on both sides, toggle Disable DTR/RTS on connect (USB adapters differ), and close every other program that could be holding the COM port.
Rear (USB) audio: TX; vs TX1;
The 590 family selects its TX audio source with the keying command itself:
| Command | Keys the radio with |
|---|---|
TX; | Front mic input |
TX1; | Rear/USB audio input |
POTACAT keys the rear input for digital modes and remote audio. If your radio keys up but transmits silence on FT8, SSTV, or ECHOCAT voice, you’re seeing the front-mic behavior — send TX1; as a custom CAT command to confirm: with TX1; the radio transmits the USB audio correctly.
Note: The radio may still beep on each keying command — that’s normal.
ECHOCAT
With the radio in DATA mode, the PTT button disappears from ECHOCAT — that’s by design (PTT is shown for SSB/FreeDV only). Take the radio out of data mode to get it back.
TS-890S
When you PTT from your phone, the radio flips USB → USB-D. That’s the SSB-over-DATA feature working as designed: it routes your phone’s voice through the radio’s USB audio input, mutes the shack mic, and restores the mode when you release PTT.
If you operate with the radio’s own mic in hand, uncheck SSB-over-DATA in Settings (search for “SSB over Data”) — otherwise the mode switch disables the very mic you’re speaking into.
TS-2000
- No SWR over CAT: the TS-2000 doesn’t expose an SWR reading via CAT, so POTACAT’s SWR bar stays dashed out. That’s normal, not a fault.
- Set the Radio Model to
TS-2000: with a generic or empty model selected, POTACAT polls commands the radio doesn’t support, each one triggers the radio’s?;error response — and the radio beeps continuously. Older Kenwoods (e.g. TS-850S) beep for the same reason; always pick the closest model. - Radio jumping into split when tuning? Check POTACAT’s Enable Split Mode setting first — when it’s on, POTACAT deliberately sets up split on every QSY. This applies to all Kenwood-protocol rigs.
TS-480
If the S-meter and power readings look far too low and SWR shows blank in ECHOCAT, update POTACAT — early builds converted TS-480 meter values with FlexRadio scaling by mistake.
Other radios that speak Kenwood
The FX4CR (F5BUD firmware) presents itself to CAT software as a TS-590S — set it up exactly like a TS-590S over Serial CAT (Kenwood).
Elecraft K4, K3S, KX2 & KX3
Elecraft rigs speak a Kenwood-derived protocol, but each model has its own quirks — and picking the exact Radio Model in POTACAT’s rig settings is what makes them behave.
K4 / K4D
Pick the K4 model
Select K4 explicitly as the Radio Model. The K4 uses Elecraft’s DT data sub-mode commands rather than the Kenwood ones: for FT8/DIGU POTACAT sends MD6 (DATA) + DT0 (DATA-A), and MD9 (DATA-REV) for DIGL. With a generic profile the radio lands in the wrong data variant, so the model selection matters.
Network CAT and remote operation
- For remote control over the network, use the K4 Remote (network) connection type (distinct from the generic IP Radio (TCP CAT)): enter the K4’s IP or hostname, port
9205(plain TCP), and the remote password you set on the radio. - Port
9204(TLS-PSK) is not supported — use9205. - POTACAT performs the K4’s authenticated handshake and keeps the session alive with a heartbeat. A wrong password shows up in the log as
socket closed before session established.
SWR bar stays empty
The K4 rejects the K3-era RM1; SWR query, so POTACAT doesn’t poll SWR on the K4. An empty SWR bar is normal on this radio.
Tip: If the bandwidth looks wide after clicking a spot, check the K4’s own per-mode bandwidth defaults — that’s usually the radio’s stored setting, not POTACAT.
K3 / K3S
If CW spot clicks land you in a wide filter, two rig-side settings are responsible:
- CONFIG > RX BW LOCK must be
OFF. When bandwidth is locked, the K3 silently ignores theFW(filter width) commands POTACAT sends. - The per-mode filter bank (the FB button) must have a narrow roofing filter (250/500 Hz) selected for CW. POTACAT sends only
FW— the DSP width — and neverFB; the roofing filter choice is something you set once on the rig, andFWcan only narrow within it.
Tip: Set your preferred per-mode filter widths in Settings > Tuning and they’ll persist across spot clicks and band changes.
KX2 / KX3
- Both work out of the box over Serial CAT (Kenwood) at
38400baud. - FT8/JTCAT: the KX-series per-band memory recall can override DATA A when you change bands. Set the Radio Model to KX2/KX3 so POTACAT re-sends the mode after each QSY.
- The K3 filter-width advice above applies here too: set per-mode widths in Settings > Tuning.
QRP & Portable Rigs
Setup notes for the small rigs the community runs POTACAT with in the field — Xiegu, QRP Labs, (tru)SDX, and sBitx.
Xiegu G90
- Baud rate is the classic G90 failure. The G90’s factory CAT baud is
19200; if POTACAT is left at the default9600, the radio just silently ignores everything. Set19200in the rig settings. - Connect as Other Rig (Hamlib) at
19200. If the G90 profile won’t read the frequency, some users have success selecting the X5105 (or IC-718) model instead. - ATU: the G90’s CAT protocol has no working remote-tune command — use the front-panel tuner button. This is a radio limitation, not a POTACAT one.
- The TX power slider is a percentage of maximum power, not watts —
50on a 20 W radio means 10 W. (True for every rig, but most noticeable on QRP radios.) - ECHOCAT audio: the G90 only passes USB audio in U-D (data) mode, but in data mode ECHOCAT hides the SSB PTT button (PTT is shown for SSB/FreeDV only) and you can’t switch modes back from the phone. Plan your mode before you walk away from the radio. Audio interfaces in community use: Xiegu CE-19, DE-19, and xggcomms units.
Xiegu X6100 / X6200
- X6100 on a Raspberry Pi: the proven path is bridging through FLRig. Run
rigctld -m 4 -r 127.0.0.1:12345(Hamlib model 4 = FLRig), then set the POTACAT rig type to rigctld Network at127.0.0.1:4532. Pointing Hamlib directly at the X6100’s serial port at 19200 has been slow or failed to QSY for some users. - X6200: if ECHOCAT’s FT8 view decodes but desktop JTCAT shows no band activity, turn up the RX level slider in JTCAT — the input level defaults too low for this radio.
QRP Labs QMX / QMX+
- Connect as Serial CAT (Kenwood) on the QMX’s first USB serial port at
38400baud — don’t use Hamlib. If the QMX gets stuck in terminal mode, power-cycle it. - Set the Radio Model dropdown to QMX — it’s separate from the connection settings, and the QMX-specific behavior only applies when the model is selected.
Remote CW keying
Remote CW on the QMX requires firmware 1.03 (1_003_0) or later for DTR keying on the second USB port. The confirmed working recipe:
| Where | Setting |
|---|---|
| QMX menu System > GPS & Ser.Ports | Serial Ports = 2 |
| QMX menu CW > CW Keyer | Key from USB DTR = USB 2 |
| POTACAT rig | Serial CAT (Kenwood), QMX port 1, 38400, Disable DTR/RTS on connect checked |
| POTACAT audio in/out | QMX Digital Audio Interface |
| CW Key Port (DTR keying) | The QMX’s second COM port |
Warning: On Linux, the kernel’s
cdc-acmdriver can’t toggle DTR on the QMX’s USB ports, so real-time paddle keying fails withOperation not supported. Use an external FTDI/CH340 USB-serial adapter into the key jack as the CW Key Port, or stick to CW text macros, which go over the normal CAT connection and work fine.
Other QMX notes:
- Linux: if saving the rig fails with “Cannot lock port”, you can hand-edit
~/.config/potacat/settings.json— give the rigtype: serial-cat,port: /dev/ttyACM0,baudRate: 38400,disableDtrRts: true. - Very faint phone audio through ECHOCAT is usually the radio-side output level — turn it up on the QMX.
(tru)SDX
- Works out of the box as Serial CAT (Kenwood) at
115200baud. - Power expectations: roughly 0.5 W on USB power alone, about 5 W on a 12 V supply.
sBitx and other ALSA-only Linux radios
POTACAT is a Chromium-based app, so its audio dropdowns show only devices that PulseAudio/PipeWire publishes — raw ALSA hw:/plughw: devices are invisible by design. The sBitx image disables PulseAudio entirely, which hides the radio’s loopback devices from POTACAT.
The fix is to re-enable the sound server and publish the loopbacks as named devices:
- Re-enable PulseAudio (comment out
autospawn = noin/etc/pulse/client.conf) or install PipeWire:sudo apt install pipewire pipewire-pulse wireplumber - Publish the RX loopback:
pactl load-module module-alsa-source device=hw:1,1 source_name=sbitx_rx - Publish the TX loopback:
pactl load-module module-alsa-sink device=hw:2,0 sink_name=sbitx_tx - Persist the
load-modulelines in/etc/pulse/default.paso they survive a reboot.
The named sbitx_rx/sbitx_tx devices then appear in POTACAT’s audio dropdowns. The same pattern works for any Linux SDR that only exposes ALSA devices.
SmartSDR Panadapter Spots
For FlexRadio users: enable Push spots to SmartSDR panadapter in Settings → Display. POTACAT connects to the FlexRadio API on port 4992 and displays color-coded spot markers directly on your SmartSDR panadapter.
Configure which sources appear (POTA, SOTA, DX Cluster, RBN, etc.) and set a max spot age.
Spots appear on every SmartSDR client — Windows, iOS, and Maestro.
Tip: Run POTACAT on an always-on shack PC and the spots stay on the panadapter for every remote client (e.g. a Maestro or iPad). Avoid running two POTACAT instances against the same radio at once. Some users find a panadapter must be left open on the host SmartSDR for spots to reach remote clients.
How it works (protocol)
POTACAT opens a plain TCP connection to the SmartSDR API on port 4992 — the same port SmartSDR itself uses; the radio accepts multiple simultaneous clients. Commands are ASCII text, newline-delimited, in the form C<seq>|<command>:
spot add rx_freq=7.074000 callsign=W5XYZ mode=CW color=#FF4ECCA3 source=POTACAT trigger_action=tune lifetime_seconds=600 comment=Some_note
spot remove callsign=W5XYZ source=POTACAT
spot clear
Useful if you want to script your own spot pushes or understand what POTACAT is doing on the wire.
TCI Panadapter Spots
For Thetis (ANAN/Hermes-Lite 2), ExpertSDR3 (SunSDR), and other TCI-compatible SDR software: enable Push to Thetis/TCI panadapter in Settings → Display.
POTACAT connects via WebSocket and sends color-coded spot markers to your panadapter with black text labels for readability. Configure:
- Host and port (default
127.0.0.1:50001) - Per-source filters (POTA, SOTA, DX Cluster, RBN, WWFF, LLOTA, FreeDV)
- Max spot age
Spot Colors
Each spot source has a distinct background color on the panadapter:
- POTA — Green
- SOTA — Orange
- DX Cluster — Purple
- RBN — Light blue
- PSKReporter — Red
- Nets — Yellow
Text labels are rendered in black for contrast. POTACAT uses the Thetis JSON tag extension for text color compatibility.
AI Noise Reduction (RM Noise)
RM Noise is a free third-party Windows app that removes HF noise (QRN, static crashes, heterodynes) using AI models trained on real ham-radio recordings. POTACAT doesn’t embed it, but you can route your receive audio through it today — and everything downstream of POTACAT, including ECHOCAT listeners on your phone or remote desktop, hears the cleaned-up audio.
What you need
- RM Noise — download from ournetplace.com/rm-noise
- A virtual audio cable — e.g. VB-CABLE (free). Flex users already have DAX, which works as the input side.
Routing
Radio RX audio (USB CODEC / DAX RX) → RM Noise → VB-CABLE → POTACAT audio input
- In RM Noise: set its input to your rig’s audio device (e.g.
USB Audio CODECorDAX Audio RX 1) and its output toCABLE Input (VB-Audio). - In POTACAT: wherever you pick an audio input (ECHOCAT audio bridge, the VFO pop-out’s monitor), choose
CABLE Output (VB-Audio)instead of the rig’s device. - Pick a noise model in RM Noise and listen — phone listeners over ECHOCAT get the same cleaned audio for free.
Important: keep digital decoding on RAW audio
AI noise reduction is for your ears, not for decoders. It destroys the signal structure FT8/FT4, SSTV, and CW decoding depend on.
- In JTCAT, keep the audio source on the rig’s raw device (
DAX Audio RX 1,USB Audio CODEC, or SmartSDR Direct) — not the VB-CABLE device. - Same for SSTV decoding.
Voice listening cleaned, digital decoding raw — best of both.
Notes
- RM Noise is Windows-only, and some of its processing runs on its developer’s servers, so it needs an internet connection.
- Expect a small added audio latency (the AI processes in blocks). Fine for ragchews and POTA hunting; irrelevant for digital since decoders bypass it.
- Native noise reduction inside POTACAT (no extra apps) is on the wishlist — if this routing works well for you, say so in Discord; it helps prioritize.
ECHOCAT — Remote Phone Control
ECHOCAT turns your phone or tablet into a wireless remote for your POTACAT-connected radio. Tune spots, transmit, stream audio, send CW, log QSOs, and even run POTA activations — all over a secure connection.
ECHOCAT comes in two flavors:
- ECHOCAT for iOS and Android — native apps, available on the App Store and Google Play for a one-time
$9.99purchase. The apps add features a browser can’t do: keep listening with the screen locked, QR-code pairing, automatic switching between connection paths, and Bluetooth accessories like BLE PTT buttons. - ECHOCAT Web — free, built into POTACAT, and runs in any modern mobile browser. Nothing to install.
Both work at the same time — pairing the app doesn’t disable browser access.
Note: The app is a remote control for POTACAT Desktop — the desktop does the heavy lifting. When something misbehaves, update POTACAT Desktop first; most app-side problems are fixed there.
What You Need
- POTACAT running on your shack PC, connected to your radio
- A phone or tablet with the ECHOCAT app — or a modern browser (Safari on iOS, Chrome on Android) for ECHOCAT Web
- A connection path between the two: your home Wi-Fi, Tailscale, or the POTACAT Cloud tunnel (see Connection Paths)
Quick Start
1. Enable ECHOCAT on the Desktop
Open POTACAT and click the gear icon in the top bar to open Quick Settings. Toggle ECHOCAT on. You’ll see:
- A URL (e.g.,
https://192.168.1.50:7300) - A 6-character token (e.g.,
A1B2C3)
If you have Tailscale installed, the Tailscale address is shown with a green label — use that green https:// URL for remote access (the hostname, not the 100.x.x.x IP).
You can also configure ECHOCAT from Settings > ECHOCAT, where you can change the port (default 7300), regenerate the token, set the PTT safety timeout, and select audio devices.
2. Pair the App (iOS/Android)
Pairing links the app to your desktop with a QR code — no typing IP addresses.
- In POTACAT, open Settings > ECHOCAT and click Open pairing QR (requires desktop v1.9.2 or later)
- In the ECHOCAT app, scan the QR code — or scan it with your phone’s camera app and open the link
- A pairing-approval popup appears front and center on the desktop — click Approve
On the same network, the app can also discover your desktop automatically (“tap to pair”) — tap the discovered rig and approve the request on the desktop.
Tip: If the in-app scanner won’t cooperate, generate the pairing URL on the desktop and open it directly in your phone’s browser. For anything else that goes wrong, see the Connectivity & Pairing guide.
Once paired, the app shows which path it’s using — LAN, TAIL, or CLOUD — with the current latency in milliseconds at the top of the screen.
3. Or Open ECHOCAT Web in a Browser
No app? Use the free browser interface:
- Open your phone’s browser and navigate to the URL shown in POTACAT
- You’ll see a certificate warning (ECHOCAT uses a self-signed TLS certificate on the LAN) — tap Advanced > Proceed to accept it
- If token authentication is enabled, enter the 6-character token and tap Connect
That’s it — you’re connected. You’ll see the spot list, a frequency display, and the mode badge at the top.
4. Select Audio Devices
In Settings > Radio (on the rig’s configuration), set the ECHOCAT Audio Input and ECHOCAT Audio Output devices. These control which sound devices carry RX audio from the radio to your phone and TX audio from your phone to the radio.
- Audio Input: The device that receives audio from your radio (e.g., a virtual audio cable output, or your radio’s USB audio device)
- Audio Output: The device that sends audio to your radio’s TX input
Tip: You can also change audio devices from the Quick Settings panel without opening the full Settings dialog.
Using ECHOCAT
Tuning
Tap any spot in the list to tune your radio to that frequency and mode. The status bar at the top shows the current frequency and mode.
To tune manually, tap the frequency display to open the dial pad. Enter a frequency in MHz (e.g., 14.060) and tap a step size to nudge the frequency up or down.
Transmitting (PTT)
Tap and hold the red PTT button at the bottom of the screen to transmit. Release to return to receive. A safety timer (default 3 minutes) automatically drops PTT if you forget to release it.
The STOP button is an emergency kill switch that immediately drops PTT and halts any CW or digital transmission.
Audio
Tap the Audio button to start streaming. Your phone will ask for microphone permission — this is needed for TX audio.
- RX audio streams from your radio to your phone speaker/earpiece
- TX audio streams from your phone microphone to the radio when PTT is held
- Tap Vol to cycle through gain levels (1x, 2x, 3x) if RX audio is too quiet
iOS note: In ECHOCAT Web, keep the browser in the foreground or use the Audio button to maintain the connection — iOS aggressively suspends background WebSocket connections. The native app doesn’t have this problem: it keeps streaming with the screen locked.
Scanning
Tap the Scan button in the status bar to auto-tune through your filtered spot list. The radio dwells on each spot for a configurable time (default 7 seconds, adjustable in the settings overlay). Tap Scan again or tap any spot to stop.
Filters
Tap the gear icon on the phone to open the settings overlay where you can filter by:
- Bands (160m through 6m)
- Modes (SSB, CW, FT8, FM, etc.)
- Regions (NA, EU, AS, etc.)
- Spot sources (POTA, SOTA, WWFF, LLOTA, DX Cluster)
- Max age — hide spots older than a set time
- New parks only — show only parks you haven’t worked
- Hide worked — hide callsigns you’ve already logged
Radio Controls
Tap the rig controls button to reveal additional controls:
- Filter width — step the IF bandwidth narrower or wider
- NB — toggle the noise blanker
- ATU — toggle the antenna tuner (if your radio supports CAT-controlled ATU)
- VFO A/B — switch VFOs or swap A⇄B
- RF Gain slider (0–100%)
- TX Power slider (0–100%)
In the native app, these rig controls (including custom CAT commands) live behind the CAT button at the top of the screen — easy to miss if you’re looking for a settings menu.
Remote Rig Power On/Off
If your radio supports power control over CAT, you can power it on and off from your phone. In the app, the power controls are in the VFO tab.
Tip: On Icom rigs, if power-off works but power-on doesn’t, set the radio’s CI-V Baud Rate to
AUTO— CAT power-on requires a wake-up preamble that’s sensitive to the baud setting.
To go fully remote, the POTACAT Launcher — a small companion daemon on port 7301 — lets the app start or restart POTACAT Desktop itself. It runs in the system tray and requires the installed POTACAT (not a source build).
Rotor Control
If you have PSTRotator configured in POTACAT, a rotor toggle appears in the radio controls section. When enabled, tuning a spot automatically sends the bearing to your rotator.
CW from Your Phone
ECHOCAT includes a full CW keyer that lets you send CW from your phone’s touchscreen or a Bluetooth MIDI paddle.
Enable CW
- In POTACAT desktop Settings > ECHOCAT, check Enable CW Keyer
- On your phone, the CW panel appears when you’re in CW mode
CW Panel Controls
- WPM — adjust sending speed (5–50 WPM)
- Keyer mode — Iambic B, Iambic A, or Straight Key
- Sidetone — adjustable frequency (400–900 Hz) and volume
- 5 macro buttons — programmable CW messages (default: CQ, 599, 73, AGN, TU). Customize the labels and text in POTACAT’s desktop settings.
- Free text field — type any text and send it as CW
CW Keying Methods
ECHOCAT supports three keying methods that can work simultaneously:
-
Text macros (KY command) — Tap a macro button and the radio’s internal keyer sends the text. Best for programmed messages with clean keying. Requires radio firmware support (QMX firmware 1_00_021+).
-
Paddle CW (TX/RX keying) — Touch the on-screen paddle or use a Bluetooth MIDI paddle. Your phone sends paddle contact events over WebSocket, POTACAT’s iambic keyer generates the timing, and TX/RX commands key the radio. Preserves your sending rhythm.
-
Hardware DTR keying — A dedicated USB-to-serial adapter wired to your radio’s key jack. Best for absolute timing precision. See the Remote CW Setup Guide for wiring details.
Sidetone: For paddle CW and DTR keying, your phone generates local sidetone via its speaker — the radio’s sidetone is not used since TX/RX keying bypasses the radio’s internal keyer.
FT8 / Digital Modes (JTCAT)
ECHOCAT integrates with POTACAT’s JTCAT feature for remote FT8/FT4 operation.
Tap the FT8 tab on your phone to access:
- Band selection (80m–6m) with one-tap band changes
- Mode selector (FT8, FT4, FT2)
- Decode log — live scrolling list of decoded stations
- TX controls — enable TX, call CQ, reply to stations
- Waterfall — live spectrum display streamed from the desktop
- Auto QSO sequencing — JTCAT handles the exchange sequence; you just pick who to call
Activator Mode
ECHOCAT supports running full POTA/SOTA activations from your phone.
Start an Activation
- Tap the Activate tab
- Select your activation type (POTA, SOTA, or Other)
- Enter your park/summit reference (autocomplete helps you find it)
- Tap Start Activation
Logging QSOs
During an activation, tap the Log button next to any spot, or use the quick-log form:
- Enter callsign, RST sent/received, and optional notes
- QSOs are numbered and timestamped automatically
- Your contact list shows at the bottom of the activation view
Re-spotting
When you log a QSO during an activation, ECHOCAT can automatically re-spot you on POTA/SOTA/WWFF. Configure your re-spot comment template in POTACAT’s desktop settings (e.g., {rst} in {QTH} 73 {mycallsign} via POTACAT).
Export
Tap Export ADIF to generate an ADIF file of your activation contacts. Past activations are saved and viewable with individual map views showing your QSO locations.
Club Station Mode
For multi-operator club stations, ECHOCAT supports authenticated access with license privilege enforcement.
Setup
- In POTACAT Settings > ECHOCAT, enable Club Station Mode
- Point it to a
club_users.csvfile with columns for callsign, password, license class, and rig access - Each member logs in with their callsign and password
How It Works
- Members can only tune frequencies within their license class privileges (e.g., a US Technician can’t tune 80m SSB)
- Rig access can be restricted per member
- The OPERATOR field in logged QSOs is set to the individual member’s callsign
- All actions (logins, tunes, PTT, rig switches) are written to an audit log
Connection Paths
There are three ways for your phone to reach POTACAT. The app checks all of them at connect time and uses the fastest — walk into the house mid-QSO and it hands off from Cloud or Tailscale to LAN automatically. The indicator at the top of the app shows the active path (LAN, TAIL, or CLOUD) and the latency.
| Path | Best for | What you need |
|---|---|---|
| Same LAN | Operating at home | Phone and PC on the same network — nothing else |
| Tailscale | Remote access, free forever | Tailscale on both devices, plus two admin settings |
| POTACAT Cloud | The “easy button” for remote access; required for rig sharing | A POTACAT Cloud account — no Tailscale, no port forwarding |
Tip: Stuck at any point? The ECHOCAT Connectivity & Pairing guide walks through each path in plain English, including the two Tailscale settings that cause most failures.
Same Network (LAN)
On your home Wi-Fi, your phone reaches POTACAT directly at its LAN IP address. No special setup needed beyond enabling ECHOCAT.
Tailscale
Tailscale is a free VPN that connects your phone and shack PC wherever they are — and it will keep working as a supported path indefinitely:
- Install Tailscale (free) on both your shack PC and your phone, signed in to the same account
- In the Tailscale admin console at
login.tailscale.com/admin/dns, enable MagicDNS and HTTPS Certificates — pairing fails without both - Connect using the MagicDNS hostname shown in POTACAT’s ECHOCAT panel (highlighted in green) with
https://— the Tailscale100.x.x.xIP will not work, because the TLS certificate is issued only for the hostname - No port forwarding or firewall changes needed
See the Connectivity & Pairing guide for the full walkthrough, including the device-key expiry gotcha that makes Tailscale setups stop working after a couple of months.
POTACAT Cloud Tunnel
The Cloud tunnel is the simplest remote path: your desktop opens an outbound-only tunnel to POTACAT Cloud and gets a personal address like yourcallsign.potacat.com. Because the connection is outbound from the shack, there is nothing to forward, no VPN to install, and no inbound firewall hole — it even works behind CGNAT (Starlink and many cellular ISPs), where port forwarding is impossible.
Security is layered: the tunnel accepts no inbound connections, pairing tokens are one-time-use, and requests are rate limited.
Share Your Rig
With POTACAT Cloud you can grant another operator timed access to your radio — a friend without HF at home, a club member, or a licensed guest anywhere in the world.
- You issue a guest pass: a four-word code (like
prague-plankton-potato-idaho) that expires after a set number of hours - You can cap TX power, and band privileges are enforced based on the guest’s license class
- The guest needs a free POTACAT Cloud account — this provides the audit trail of who operated your station
- Rig sharing requires the Cloud tunnel; Tailscale covers your own devices, but sharing means Cloud (or adding the guest to your Tailnet yourself)
Note: The remote guest is the control operator and operates under their own callsign, per the usual remote-operation rules. Check the regulations that apply in your country.
Security
Certificate Warning (ECHOCAT Web)
On the LAN, ECHOCAT uses a self-signed TLS certificate. Your browser will warn you the first time — accept the certificate and it will be remembered for future sessions. Over Tailscale, ECHOCAT uses a real certificate issued for your MagicDNS hostname, so there’s no warning — but that’s also why you must connect by hostname, not IP.
Token Authentication
The 6-character hex token adds an extra layer of access control for browser connections. It’s optional — enable it if other people can reach your network. You can regenerate it at any time from the desktop settings.
Settings Reference
| Setting | Default | Description |
|---|---|---|
| Enable ECHOCAT | Off | Start the ECHOCAT server |
| Port | 7300 | HTTPS/WebSocket server port |
| Require Token | On | Require token authentication for browser access (optional extra security) |
| Token | Auto-generated | 6-character hex authentication token |
| PTT Safety Timeout | 180s | Auto-drop PTT after this many seconds |
| Enable CW Keyer | Off | Allow CW keying from phone |
| CW Key Port | None | COM port for hardware DTR keying |
| Audio Input | None | RX audio device (radio → phone) |
| Audio Output | None | TX audio device (phone → radio) |
Troubleshooting
Note: For pairing failures, Tailscale problems, “it worked for weeks and then stopped,” and audio issues, see the dedicated ECHOCAT Connectivity & Pairing guide.
Can’t reach the ECHOCAT URL:
- Make sure ECHOCAT is enabled (green indicator in POTACAT’s connection bar)
- Verify your phone is on the same network as the PC (or both are on Tailscale, with MagicDNS and HTTPS Certificates enabled)
- Check that the port (default 7300) isn’t blocked by your firewall
- If the URL shows a
169.254.x.xaddress, Tailscale isn’t actually running on the PC
Certificate error won’t go away:
- On iOS Safari, you may need to tap “Show Details” then “visit this website”
- On Android Chrome, tap “Advanced” then “Proceed to [IP] (unsafe)”
No audio:
- Tap the Audio button on the phone and allow microphone access
- Check that the correct audio devices are selected in Settings > Radio
- On iOS, make sure your phone isn’t on silent mode
PTT not working:
- Verify your radio’s CAT connection is active (green dot in status bar)
- Check the PTT safety timeout hasn’t expired (the phone will show a warning)
- Tap the STOP button and try again
High latency / audio dropouts:
- Use a 5 GHz Wi-Fi network instead of 2.4 GHz
- If using Tailscale remotely, latency depends on your internet upload speed at the shack
- Close other bandwidth-heavy applications
Phone disconnects when screen locks:
- On iOS, keep the browser in the foreground while operating
- The audio session helps keep the connection alive, so start audio before locking the screen
- On Android, disable battery optimization for your browser
- The native iOS/Android app keeps streaming with the screen locked — worth the upgrade if you operate this way often
ECHOCAT Connectivity & Pairing
Getting your phone talking to your shack PC is the one part of ECHOCAT that involves networking — and networking is where most people get stuck. This page is the plain-English version: which connection path to pick, how to set it up, and what every error message actually means.
Note: Before troubleshooting anything, update POTACAT Desktop. The app is a remote control for the desktop, and most connection fixes ship on the desktop side.
Pick Your Path
| Path | Use it when | Needs Tailscale? | Needs port forwarding? |
|---|---|---|---|
| Same LAN | You’re at home on the same Wi-Fi as the shack PC | No | No |
| POTACAT Cloud | You want remote access with the least setup, or you’re behind CGNAT (Starlink, many cellular ISPs), or you want to share your rig | No | No |
| Tailscale | You want free remote access forever and don’t mind a little one-time setup | Yes | No |
The one thing all three have in common: you never port-forward anything. (See why below.)
You don’t have to choose forever, either — the app tries all available paths at connect time and uses the fastest, switching automatically as you move between networks. The indicator at the top of the app shows the active path (LAN, TAIL, or CLOUD) and the latency in milliseconds.
Path 1: Same Wi-Fi (LAN)
Nothing to configure. Enable ECHOCAT on the desktop, pair the app (or open the URL in a browser), and go. This is the fastest, lowest-latency path.
The only common snag is on iPhone — iOS blocks local-network access until you allow it. See iOS: QR scans but nothing happens.
Path 2: POTACAT Cloud
The “easy button.” Your desktop opens an outbound-only tunnel to POTACAT Cloud and gets a personal address like yourcallsign.potacat.com. Because the shack PC dials out, there is:
- no Tailscale or VPN to install
- no port to forward
- no inbound firewall hole
- no problem with CGNAT — it works on Starlink and cellular connections where port forwarding is physically impossible
Cloud is also the only path that supports sharing your rig with other operators.
Note: If the desktop’s verbose log shows
cloudflared ... Failed to refresh DNS, the Cloud tunnel service itself is down — that one isn’t your setup.
Path 3: Tailscale (Full Walkthrough)
Tailscale is a free personal VPN that makes your phone and shack PC act like they’re on the same network, wherever you are. It takes about ten minutes to set up correctly — and two of those minutes prevent roughly 90% of all failures.
Step 1: Install Tailscale on both devices
Install Tailscale on the shack PC and on your phone, and sign in to the same account on both. Both devices must show as connected on the same Tailnet.
Step 2: Enable the two settings everyone misses
This is the big one. Log in to the Tailscale admin console and open the DNS page at https://login.tailscale.com/admin/dns. Enable both of these:
- MagicDNS
- HTTPS Certificates
If pairing fails with “Pairing request failed: Network request failed”, it is almost always because one or both of these are off. Turn them on, update POTACAT Desktop, regenerate the pairing QR, and try again.
Tip: Tailscale’s own guide to these settings:
https://tailscale.com/docs/how-to/set-up-https-certificates
Step 3: Use the hostname, not the IP
Always connect using the green MagicDNS URL shown in POTACAT’s ECHOCAT panel, with https:// — something like https://shack-pc.tailXXXX.ts.net:7300.
Do not type the Tailscale 100.x.x.x IP into your browser. Here’s why: public certificate authorities are not allowed to issue TLS certificates for CGNAT addresses (the 100.64.0.0/10 range Tailscale uses) or private IPs. So the certificate Tailscale issues for your PC is valid only for the MagicDNS hostname — connect by IP and the secure connection fails before ECHOCAT ever sees it.
Note: The very first connection can take about 30 seconds while the TLS certificate is issued. That’s normal — it only happens once.
Step 4: Stop it from expiring
Tailscale device keys expire after roughly 60–90 days by default. This is the classic “it worked perfectly for two months and then died out of nowhere.”
Prevent it: in the Tailscale admin console, open each device’s ⋯ menu and select Disable key expiry for your shack PC and phone. If it has already expired, just re-authenticate Tailscale on the affected device.
Tailscale quick diagnostics
| Symptom | What it means / what to do |
|---|---|
POTACAT shows a 169.254.x.x URL | Tailscale isn’t actually running on the PC — even if Task Manager says otherwise. Restart Tailscale. |
| “Pairing request failed: Network request failed” | MagicDNS or HTTPS Certificates not enabled (Step 2). Also update the desktop and regenerate the QR. |
| “A server with the specified hostname could not be found” | Tailscale isn’t connected on the phone, or the QR is stale — regenerate the QR after any network change. |
| Worked for weeks, suddenly stopped | Device key expiry (Step 4), or Tailscale disconnected on one end. |
| Pairing only works when Tailscale is off | MagicDNS can occasionally interfere with pairing on some networks. Temporarily disable Tailscale to pair, or switch to the Cloud path. |
| Higher latency than expected | Tailscale may be routing through its relay servers. Some users report that enabling a direct connection shaved 35–55 ms off the ping. |
Why You Can’t Just Port-Forward 7300
It’s tempting: forward port 7300 on your router and skip the VPN. It won’t work, and it’s not your fault.
The control connection does use port 7300, but the audio stream uses WebRTC on dynamic UDP ports — different ports every session, and the UDP flow is initiated from the remote end, so your router’s “established connections” rules never match it. You’d get a page that loads and a radio you can tune, but no audio.
Any real VPN solves this by putting both devices on one virtual network. Tailscale is the recommended one, but some users run WireGuard or ZeroTier successfully.
Warning: Third-party VPNs can also break things — ZeroTier and similar VPNs have interfered with app pairing for some users, and at least one commercial VPN blocked the UDP audio stream entirely. If pairing or audio fails and you run a VPN other than Tailscale, try disabling it first.
Pairing the App
Version rules (read this first)
- The newest app needs the newest desktop. New app features generally ship with a matching POTACAT Desktop release — always update the desktop first.
- QR pairing requires desktop v1.9.2 or later. Older desktops can’t pair with current app builds.
- App updates arrive over-the-air: in the app, go to Settings > About > Check for updates, then fully close and reopen the app. The build number won’t change after an OTA update — that’s normal.
- OTA updates only target the newest store build. If your App Store / Google Play version is old, you silently stop receiving fixes — update from the store occasionally even if the app “seems fine.”
iOS: QR scans but nothing happens
If the iPhone scans the QR and then… nothing — no error, no pairing — iOS is silently blocking local-network access:
- Open iOS Settings > ECHOCAT and turn Local Network ON (also check Settings > Privacy & Security > Local Network)
- Force-quit the ECHOCAT app
- Re-pair
Stuck in an approval loop
If the app loops forever at “asking for approval,” an old pairing is in the way. Open your POTACAT Cloud devices list, revoke any stale or duplicate devices, and pair again.
QR scans but the connection never finishes
Update POTACAT Desktop. Early versions choked when pushing a very large QSO log to the phone during pairing; current desktops cap that transfer. Note that with very large logbooks, the phone won’t show per-call QSO history — spots and worked-parks still sync.
Tap-to-pair buttons do nothing (Android)
Some users report that the Approve/Deny dialog from Android network auto-discovery doesn’t respond. Workaround: use the QR code or open the pairing URL directly instead.
Desktop Updates Won’t Install (POTACAT Launcher)
If a POTACAT Desktop update fails with an “app is running” error even though you closed POTACAT, the culprit is the POTACAT Launcher — the separate background daemon (port 7301) that lets the app start POTACAT remotely. It can hold a file lock on the installation.
Fix: open Task Manager, end the POTACAT Launcher process, and run the update again.
Audio Troubleshooting
Echo, or you hear yourself delayed
Echo is almost always a wrong audio device. In POTACAT Settings > Radio, set the ECHOCAT audio input and output to your rig’s own USB sound device explicitly — for example USB Audio CODEC on an Icom IC-7300, or FT-710 USB Audio. “System Default” only works if the radio’s USB audio happens to be the OS default device, which it usually isn’t.
Two more echo sources:
- Phone speaker feedback — the phone mic is live during receive, so speaker audio loops back. Use headphones or earbuds.
- Network strain — check the latency figure at the top of the app. Above roughly
300 ms, expect delayed self-echo and choppy TX audio; that’s the connection, not the settings.
No audio at all
Work down this list:
- Tap the Audio button — then tap it again (a single tap doesn’t always start the stream)
- Allow microphone permission when the phone asks — TX audio needs it
- Check the audio input and output devices in POTACAT — the computer won’t pick the radio’s audio by default
- On iOS, check the silent/ring switch
- If you’re running a VPN other than Tailscale, it may be blocking the UDP audio stream — disable it and retry
- On Android, make sure the app is up to date — old builds had broken speaker routing
RX audio doesn’t come back after PTT
A known quirk on some devices: tap the Spkr button twice, or use the Restart Audio button to reset the stream.
Tip: To hear what the radio is putting out from the shack PC itself, click VFO and then the speaker icon in POTACAT Desktop.
JTCAT (Built-in FT8 & FT4)
JTCAT is POTACAT’s built-in digital-modes engine. It decodes and transmits FT8, FT4, and FT2 entirely on its own — you do not need WSJT-X installed. JTCAT runs as a pop-out window on the desktop, and the same engine powers the FT8 screen in ECHOCAT on your phone.
While it runs, JTCAT:
- Decodes your radio’s USB audio and shows decodes on a waterfall
- QSYs the radio and switches it into its data mode automatically
- Auto-replies to callers and can run Auto-CQ / Auto-POTA sequences
- Auto-logs completed QSOs and forwards them to your configured logbooks
- Reports decodes to PSKReporter
Note: JTCAT takes over radio control while it is running — POTACAT’s normal CAT connection is suspended until you stop it.
JTCAT vs. WSJT-X vs. ECHOCAT
These three names get mixed up constantly. Here’s the map:
| Name | What it is | When you use it |
|---|---|---|
| JTCAT | POTACAT’s built-in FT8/FT4 engine (desktop pop-out window) | You want FT8 with nothing else installed |
| WSJT-X | A separate application; POTACAT can interoperate with it over UDP | You prefer WSJT-X for decoding/TX and want POTACAT to highlight POTA activators and log |
| ECHOCAT | POTACAT’s phone/tablet remote control; its FT8 screen is a remote view of the JTCAT engine on your desktop | You want to work FT8 from the couch or away from the shack |
Warning: To use JTCAT, the WSJT-X mode checkbox under the CAT pill must be unchecked. WSJT-X Mode hands rig control to an external WSJT-X and disables POTACAT’s own CAT — JTCAT cannot run in that state. See the WSJT-X page for how that mode works.
Audio Setup
JTCAT listens to — and transmits through — your radio’s USB audio codec. Audio devices are configured per rig under Settings → Radio → Edit:
- Audio input (RX): the radio’s USB audio device, selected explicitly (for example
USB Audio CODECfor an IC-7300, orFT-710 USB Audio). Don’t leave it on “Default” unless the radio genuinely is your operating system’s default recording device. - Audio output (TX): the same radio USB device, so TX audio reaches the rig instead of your computer speakers.
Tip: The classic symptom of a wrong input device: the waterfall reacts to the radio’s speaker volume knob or to room noise. That means JTCAT is listening to a microphone, not the rig.
Platform and rig specifics:
- macOS — grant Microphone permission to POTACAT in System Settings → Privacy & Security → Microphone. Without it, decoding silently fails; the log shows
Cycle boundary: ... max=0.0000. - FlexRadio — use the Flex Direct (VITA-49) audio source; no DAX program is needed. PTT requires the SmartSDR API host (port 4992) configured in the rig settings — this is separate from the SmartCAT connection.
- Rigs without built-in USB audio (for example the Xiegu G90) — use an external USB sound-card interface.
Radio Mode (DATA) Setup
The rig must be in its data mode — USB-D on Icom, DATA-USB on Yaesu, DIGU on Kenwood, DATA A on Elecraft. JTCAT sets and enforces this automatically (the log shows post-reconnect mode enforcement: FT8), but a few radios need extra attention:
- Yaesu — the data mode is labeled DATA on most models and PKT on some older ones; either way, make sure data-mode audio comes from the rear/USB input (DATA MOD = USB — some rigs default it to the ACC jack).
- Yaesu FTDX10 / FTDX101 family — in DATA mode these rigs can transmit offset from the dial by the carrier point (roughly 600 Hz) with a narrowed filter. Set MENU → OPERATION SETTING → GENERAL → DATA MODE to
Others(orDATA-STD, depending on firmware) so TX lands where the dial says. - Elecraft KX2/KX3 — per-band memory recall can override DATA A on a band change. Select KX2/KX3 as the Radio Model in Settings → Radio so POTACAT re-sends the mode after each QSY.
Clock Sync
FT8 lives and dies by your computer clock — an offset of even a few seconds kills decoding entirely. JTCAT shows a clock-sync banner when your system clock is off; if you see it, sync your clock to internet time before troubleshooting anything else.
The JTCAT panel also has a Latency (ms) control — the equivalent of WSJT-X’s “Audio: Soundcard time delay.” It is auto-calibrated, so you normally never touch it, but if your DT readings look consistently offset it’s the knob to check.
Making QSOs
Click a decode (or a highlighted POTA activator) to reply. JTCAT runs the exchange — reports, RR73, 73 — automatically.
- Late-join TX — you don’t have to wait for the top of a cycle. Click partway into a TX window and JTCAT starts a shortened reply immediately, matching WSJT-X’s late transmit start.
- AP decoding — a-priori decoding is supported, which helps pull out weak replies directed at you.
- Hold TX — this checkbox is the equivalent of WSJT-X’s “Hold Tx Freq”: your transmit frequency stays pinned to the value in the TX Freq box while RX follows the other station. The setting persists between sessions.
- dB numbers are confidence scores — JTCAT’s per-decode signal figures are the decoder’s own confidence score, not calibrated SNR. Don’t expect them to match WSJT-X’s dB readings.
Tip: Keep the TX Power slider low — around 10–20% typically produces clean audio with little or no ALC action.
Auto-Logging
JTCAT logs each QSO automatically when the report exchange completes and forwards it to any logbooks you’ve configured — see Logbook Forwarding. There’s nothing to click.
That includes interrupted endings: if you click a new station while the previous QSO is still in its 73/courtesy phase, the completed QSO is logged before the new one replaces it.
Note: Some users report a logging bug where a QSO is logged immediately after the report is sent, with the sent RST recorded as both sent and received. If your logged reports look mirrored, check and correct the entry in the logbook.
Troubleshooting
Nothing decodes
Work through these in order:
- Audio input device — must be the radio’s USB codec, not “Default” or a microphone. See Audio Setup.
- macOS Microphone permission — System Settings → Privacy & Security → Microphone.
- RX gain — too high (clipping) or too low both kill decodes. If the RX meter shows a red CLIP indicator, lower the rig’s USB audio output level (or the OS recording level) rather than only the app slider; some IC-7300 users report running the rig’s USB output level as low as about 10%.
- Clock offset — look for the clock-sync banner and sync your system clock.
Radio transmits but nothing shows on PSKReporter
The five-step checklist:
- Watch the ALC meter during TX. Zero deflection means audio isn’t reaching the modulator at all.
- IC-7300: set MENU → SET → Connectors → USB MOD Level to about 50%.
- DATA MOD = USB — some rigs default data-mode audio to the ACC jack.
- TX gain slider in JTCAT/ECHOCAT is not at 0.
- Cross-check with WSJT-X on the same audio devices to separate an app problem from a radio configuration problem.
Waterfall quirks
- A waterfall that follows the radio’s volume knob or room noise means the wrong audio input device is selected.
- Some users report the phone (ECHOCAT) waterfall not displaying even while decodes flow — decoding happens on the desktop, so QSOs still work.
- If decodes or the waterfall stall after a long or resumed session, restart POTACAT (or close and reopen the JTCAT window). Newer builds include a watchdog that restarts audio capture automatically after several silent cycles.
Running from source
Packaged builds ship with the fast native C decoder (ft8_lib). If you run POTACAT from source on macOS, install the Xcode command-line tools (xcode-select --install) and run npm run build-ft8; otherwise JTCAT falls back to a slower WASM decoder. The terminal shows which one loaded: [FT8 Worker] Native C decoder loaded (ft8_lib) versus Native decoder not available, using WASM fallback.
FT8 on Your Phone (ECHOCAT)
ECHOCAT’s FT8 screen drives the same JTCAT engine on your desktop, so everything above still applies — configure audio and rig mode on the desktop first.
One behavior trips up WSJT-X veterans: an FT8 transmission needs about 12.5 seconds of the 15-second window, so you have roughly a 2-second grace window at the start of a TX cycle to tap a reply. Tap within it and the reply goes out immediately (late-join TX may still squeeze in a shortened reply if you’re slightly late); miss it and JTCAT waits for the next cycle. This is FT8 timing physics, not a bug.
Note: ECHOCAT is a remote control — every tap travels to your desktop before anything happens. The latency figure at the top of the app shows that round trip; the higher it is, the less of the grace window you have.
Two more phone-side pointers:
- In FT8 mode, the PTT/transmit controls live inside the FT8 banner. Press Stop there before switching back to the Spots or VFO views.
- To call a directed CQ (such as
CQ POTA), set FT8 → Target → Custom in ECHOCAT.
CW Keyer
POTACAT includes a built-in CW keyer. Plug in a MIDI paddle (e.g. HaliKey or N6ARA TinyMIDI), a keyboard-emulating adapter (VBand or Vail), or a K1EL WinKeyer, and POTACAT keys your radio — no separate keyer software required. You can also send CW without any key at all, using the text box and macro buttons.
Setup:
- Enable CW Keyer in Settings > CW Keyer
- Select your Keyer Mode: Iambic B, Iambic A, or Straight key
- Set your Speed (WPM)
- Click Refresh to detect MIDI devices, then select yours
- Use the Learn buttons to map dit and dah MIDI notes from your paddle
- Enable Local sidetone and adjust pitch/volume
How it works: POTACAT reads your paddle events (MIDI via the Web MIDI API, or Ctrl-key presses from a VBand/Vail adapter), runs an Iambic keyer state machine, and keys the radio over the best route available for your rig — cw key commands via the SmartSDR TCP API on FlexRadio, CI-V key up/down commands on Icom, or DTR pulses on a dedicated serial port. This preserves your exact fist timing — no buffering.
CW status: The CW pill in the status bar shows keyer state. Click it for a popover with volume and WPM controls. The sidetone requires one click anywhere in the app to unlock (browser audio policy).
WinKeyer
The K1EL WinKeyer (WK2/WK3) is supported as a keyer type. Select it in Settings > CW Keyer and choose its serial port in the WinKeyer Port dropdown. WinKeyer also works with FlexRadio direct connections — you can key a Flex through a WinKeyer on the PC without SmartSDR running.
Tip: If your WinKeyer (or a virtual COM port) doesn’t appear in the dropdown, type the port name manually (e.g.
COM5). The WinKeyer Port and CW Key Port fields both accept typed port names in addition to the auto-detected list.
Note: Some left-handed operators report that POTACAT sets the WinKeyer to its normal (non-swapped) paddle mode, and there is currently no in-app paddle-swap setting. If you rely on reversed paddles, check this before an activation.
How POTACAT Keys Your Radio
POTACAT picks a keying route based on your rig and connection. The first key event logs the choice — look for [CW] Keying route: ... in the verbose log.
| Route | How it works | Extra hardware |
|---|---|---|
| CAT text CW | Sends the message as text over the CAT connection — KY on Kenwood/Elecraft/QMX, CI-V 0x17 on Icom. Used by the CW text box and macro buttons. | None |
| CAT real-time keying | Keys each dit and dah over CAT — CI-V 0x1C 0x01 (CW key line) on Icom, or TX1;/TX0; on Yaesu rigs that support it. | None |
| DTR pin keying | Toggles the DTR line of a serial port that is wired or routed to the rig’s key input. | A rig with a second USB serial port that accepts DTR keying (e.g. QMX, FTDX101, FT-710 CAT-2), or an external USB-serial adapter — see below |
CW Key Port
The CW Key Port setting in Settings > CW Keyer selects a dedicated serial port whose DTR pin keys the radio. Leave it (none) unless you actually have one — for most rigs on a direct serial/CI-V connection, POTACAT keys the radio through the normal CAT link with no extra hardware.
You need a CW Key Port when:
- Your rig’s CAT CW is unreliable. On the FT-710, for example, the CAT
KYcommand raises the carrier but doesn’t reliably key Morse — POTACAT keys it via DTR on the CAT-2 serial port instead. - Your rig’s CAT port can’t do real-time keying. Most Yaesu rigs only accept text (
KY) over CAT, not per-element paddle keying — an external USB-serial adapter wired to the CW KEY jack fills the gap. - You’re connected through hamlib/rigctld (see below).
- You’re on Linux with a USB-CDC rig (see below).
A cheap FTDI or CH340 USB-serial adapter (~$5) works: wire the adapter’s DTR pin to the tip and GND to the sleeve of a 3.5 mm plug for the rig’s key jack.
Warning: The CW Key Port must be a different COM port than your CAT connection. Setting both to the same port causes a connect/disconnect loop, and POTACAT will skip the port with a log message telling you so. Also note that common “CI-V data cables” are not keying cables — the DTR pin isn’t broken out.
hamlib/rigctld: Macros Only
The hamlib protocol has no per-element CW keying command — it can send CW text and toggle PTT, nothing in between. That means over a rigctld connection:
- CW macros and the text box work normally.
- Paddle keying does not. POTACAT disables the paddle (with a red banner) rather than key a silent carrier. On Icom rigs, hamlib’s PTT command raises the mic PTT line while the CW key line stays untouched — the transmitter keys, but no CW goes out.
To use a paddle, either connect the rig via direct serial / CI-V instead of rigctld, or add a USB-serial adapter as the CW Key Port — DTR keying works regardless of the CAT backend.
Linux: DTR Keying Limitation
On Linux, the kernel’s cdc_acm driver (used by USB-CDC rigs like the QMX, QDX, and IC-7300 family connected directly) doesn’t support the serial-pin control POTACAT needs for DTR keying. The symptom in the log is DTR keying not supported on this port or setCwKeyDtr error: Operation not supported.
Your options:
- External FTDI/CH340/CP2102 USB-serial adapter as the CW Key Port — these use a different kernel driver that handles DTR correctly. This is the reliable path.
- CW text macros — they work over the main CAT port without DTR.
- Windows and macOS are unaffected.
CW Macros
Five macro buttons send canned CW messages. Both the label and the text of each button are editable in Settings (search for “CW Macros”), and the buttons also appear in the VFO View and in ECHOCAT.
These variables expand when the macro is sent:
| Variable | Expands to |
|---|---|
{call} | The callsign of the spot you’re working |
{MYCALL} | Your callsign |
{op_firstname} | The operator’s first name from QRZ lookup (falls back to OM if QRZ has no name) |
For example, {call} DE {MYCALL} GM {op_firstname} TU 73 might go out as W1AW DE K3ABC GM BOB TU 73.
Note: Variables must use curly braces —
{call}, not[call]or(call). Anything else is sent as literal text.{op_firstname}uses the QRZ first-name field verbatim, which may include a middle initial.
Stopping a message mid-send: press ESC in the POTACAT CW Macros window, or tap the HALT/STOP button next to PTT in ECHOCAT. On rigs with direct text keying (K3, QMX), pressing another macro button interrupts the current message; some users report that Yaesu rigs which play messages from memory finish the queued message first.
Tip: Some operators program macro button 1 as
EE— a quick way to cut off a longer message you pressed by accident.
CW from Your Phone
The keyer extends to ECHOCAT: your macro buttons sync from the desktop to the phone automatically (they’re stored on the desktop, so you only maintain one set), and speed controls are available in ECHOCAT’s CW panel. You can even key a real paddle through your phone from anywhere — see Remote CW Keying.
Remote CW Keying
ECHOCAT lets you send real CW — your own fist, on your own paddle — through the radio in your shack from anywhere your phone can reach it. This page covers the remote keying chain; for the desktop keyer itself (keyer modes, WinKeyer, CW Key Port, macros), see the CW Keyer page.
How It Works
paddle/adapter → phone browser (keyboard or MIDI events) → WebSocket → desktop POTACAT → IambicKeyer → radio
Your paddle adapter sends keyboard or MIDI events to the ECHOCAT page on your phone. ECHOCAT forwards dit/dah events over the WebSocket to desktop POTACAT, whose IambicKeyer state machine generates the element timing and keys the radio — via a CAT command or a DTR pin, depending on your rig. The sidetone is generated locally on the phone, so it fires the instant you press the paddle.
You don’t need a paddle at all to work CW remotely: the CW text box and the five macro buttons send CW via CAT on supported rigs.
Enabling It
- On the desktop, open Settings > ECHOCAT and check Enable Remote CW Keyer. This is the one that matters for phone keying — you do not need the desktop Enable CW Keyer checkbox (that’s for local keying on the PC).
- Leave CW Key Port set to (none) unless you have an external USB-serial adapter plugged into your radio’s key jack (see when you need one). On rigs like the IC-7300, POTACAT keys the radio directly through the CI-V connection with no extra hardware.
- On your phone, the CW panel appears at the bottom when you’re tuned to a CW frequency. If it says CW unavailable, the Remote CW Keyer setting isn’t enabled on the desktop.
Tip: The first key event writes
[CW] Keying route: ...to the verbose CAT log. If you see no[CW]lines at all, your paddle events aren’t reaching the desktop — check the phone-to-desktop connection before suspecting the radio.
Supported Key Hardware
| Hardware | Sends | Notes |
|---|---|---|
| N6ARA TinyMIDI | Keyboard mode: [ (dit) and ] (dah); MIDI mode also works | Keyboard mode is the reliable path on iPhone |
| Vail adapter | Left Ctrl (dit) / Right Ctrl (dah) | Keyboard emulator |
| VBand dongle | Left Ctrl (dit) / Right Ctrl (dah) | Same scheme as Vail |
| K1EL WinKeyer | Connects to the desktop, not the phone | Configure under Settings > CW Keyer on the PC |
| Anything that types characters (e.g. Morserino as a Bluetooth keyboard) | Text | Fills the CW text box — not paddle keying |
Keyboard mode vs. MIDI mode
- iOS Safari does not support Web MIDI — use keyboard mode on iPhone/iPad.
- Android MIDI needs a Chromium-based browser plus a BLE-MIDI bridge app from the Play Store to link the adapter.
- Keyboard mode has one downside: the adapter becomes a keyboard, so your phone’s pop-up keyboard disappears while it’s connected.
- The native ECHOCAT iOS/Android apps support MIDI natively — no browser workarounds needed.
On-Screen Straight Key
No hardware handy? The ECHOCAT app has an on-screen straight key: enable it under Settings > C.W. Keyer in ECHOCAT, and a Key button appears in place of PTT on CW frequencies. Hold it down to key — it’s your fist, rough edges and all, rather than a stored message.
Latency Expectations
- Sidetone is instant. It’s generated on the phone, so there’s no perceptible delay between paddle press and sidetone, regardless of network conditions.
- The RF side follows your network. Local sidetone doesn’t change when the radio actually keys — the transmitted elements are timed by the desktop keyer, but they start after the round trip to your shack.
- Use wired headphones — Bluetooth adds noticeable audio lag.
- Mobile browsers take a moment to warm up audio at the start of a session; a one-time “click” when audio unlocks is the phone’s audio hardware waking up and is normal.
- Any VPN that lets your phone reach the shack PC works — Tailscale is popular but not required.
Rig Recipes
QRP Labs QMX
Note: QMX firmware 1.03 or later is required for DTR keying on the second USB port.
A known-good setup:
- POTACAT rig: Serial CAT (Kenwood) on the QMX’s first USB port at
38400baud, with Disable DTR/RTS on connect checked - Audio in/out: the QMX Digital Audio Interface
- QMX menus: System/GPS & Ser. Ports > Serial Ports =
2, and CW/CW Keyer > Key from USB DTR =USB 2 - CW Key Port (DTR Keying): the QMX’s second COM port
Icom IC-7300 / IC-705 / IC-7610
Set the rig menu MENU > SET > Connectors > USB Keying (CW) = USB(A) DTR (preferred), or USB SEND = DTR. POTACAT prints this menu path in the log when it routes keying via the main port’s DTR line.
Warning: Remote CW on Icom requires a direct CI-V serial connection, not rigctld/hamlib. On direct CI-V, POTACAT sends a CI-V “CW key down/up” command for each paddle element. Hamlib has no such command — it only exposes the mic PTT line — so paddle keying over rigctld puts the transmitter on with the CW key line untouched: a silent key-down.
Yaesu
Most Yaesu CAT ports only accept text CW (the KY command), not real-time paddle keying. To key a paddle on a Yaesu, set CW Key Port to a USB-serial adapter wired to the radio’s key jack. Exceptions and specifics:
- FTDX101D: real-time keying works over CAT (
TX1;/TX0;) — no DTR adapter needed. - FT-710: even text CW over
KYis unreliable on this rig. Set CW Key Port to the radio’s CAT-2 serial port (the second COM port, e.g.COM<n+1>), and on the radio set OPERATION SETTING > CAT/LINEAR/TUNER > USB Keying (CW) =DTR. Also set CAT-1 TIME OUT TIMER =1000 msand turn CW BK-IN on.
Known Limitations
- Yaesu FT-891 / FT-991A: text CW keys the transmitter but produces zero RF. The 991A’s
KYcommand has no free-text form — the text is silently ignored while the TX light comes on — and the FT-891 shows the same symptom. This is a known open limitation of text/macro CW on these rigs. - Break-in must be on. If the radio keys and you hear sidetone but no RF goes out, check that break-in (BK-IN) is enabled — and note the FTDX10 remembers the break-in setting per band.
- Linux DTR limitation. The
cdc_acmkernel driver used by USB-CDC rigs (QMX, QDX, IC-7300 family) can’t control the DTR pin, so paddle keying fails withOperation not supported. The fix is a ~$5 FTDI or CH340 USB-serial adapter wired to the rig’s key jack, set as the CW Key Port — its driver handles DTR correctly. CW text macros still work over the main CAT port. Windows and macOS are unaffected. See the CW Keyer page for details. - Some users on Samsung Android phones report truncated sidetone and the radio not keying with TinyMIDI/VBand adapters in the browser; the native mobile apps are the recommended path there.
Stopping a Transmission
Tap the HALT/STOP button next to PTT in ECHOCAT (or press ESC in the desktop CW Macros window) to stop a macro mid-send.
Scan Mode
Click the Scan button in the toolbar or press Space to start scanning.
Scan automatically tunes through all visible (filtered) spots, dwelling on each for a configurable time (Settings → Tuning → Scan Dwell Time, default 7 seconds).
- The current scan row is highlighted and auto-scrolled into view
- Skip individual spots by checking the Skip column — scan will skip those frequencies
- Press Space again to stop scanning
Keyboard Shortcuts
Press F1 to see this list in the app.
| Shortcut | Action |
|---|---|
| F1 | Show keyboard shortcuts |
| F2 | Open/focus QSO logbook |
| F5 | Check for updates |
| F11 | Show welcome/setup screen |
| F12 | Open the DevTools console (troubleshooting) |
| Space | Pause / resume scan (resumes from the highlighted spot, not the top) |
| ↑ / ↓ | Move the spot selection up / down |
| ← / → | Step the frequency ±1 kHz |
| Ctrl+L | Log a QSO + auto re-spot — also logs unspotted stations, and typing a call shows your past QSOs with it |
| Ctrl+R | Re-spot the selected spot (no log entry) |
| Ctrl+M | Multi-park dialog (activator mode) |
| Alt+R | Reload last contact (activator mode) |
| Ctrl+= | Increase font size |
| Ctrl+- | Decrease font size |
| Ctrl+0 | Reset font size |
| Esc | Close popover / close Settings without saving |
| Enter | Select the highlighted spot (in the table); save QSO (in log dialog) |
Tip: After you log a contact, the selection bar stays on the next spot, so you can keep hunting down the table in frequency order.
Note: The font-size shortcuts don’t resize the bottom banner logger — its font is sized separately by dragging its top edge.
Mouse modifiers
| Modifier | Action |
|---|---|
| Shift+click (column header) | Secondary sort — sort by a second column within the first |
| Ctrl+click / Cmd+click (spots) | Select multiple spots to log several operators at once |
Settings Reference
Open Settings from the toolbar dropdown → “Open Settings…” or from the welcome screen.
Frequently Asked Questions
The questions that come up most often, with settled answers. If you don’t find yours here, try the search box at the top of the page — and if the docs still let you down, ask in the Discord.
Apps and pricing
What’s the difference between POTACAT, ECHOCAT, JTCAT, and CWCAT?
They’re a family, and most of them live inside one app:
- POTACAT is the desktop app — a free, open-source hunter/activator tool for POTA, SOTA, and DX. It connects to your radio via CAT, shows live spots, one-click tunes, and logs your contacts.
- ECHOCAT is the remote control for POTACAT. It’s a server built into the desktop app — there’s nothing separate to install on the shack computer. You connect from a phone or tablet, either in a browser (ECHOCAT Web) or with the native iOS/Android apps. See ECHOCAT Connectivity.
- JTCAT is the FT8/FT4 engine built into POTACAT. It decodes and transmits digital modes natively — you don’t need WSJT-X — and it works remotely through ECHOCAT too.
- CWCAT is a separate app: a CW skimmer for FlexRadio.
Is there a phone app?
Yes. ECHOCAT has native apps on the Apple App Store and Google Play for a one-time $9.99 purchase — a single lifetime fee that includes all updates. If you’d rather not pay, ECHOCAT Web (the browser version) stays free.
Either way, the app is a remote control: you still run POTACAT on a Windows, Mac, or Linux computer connected to the radio, and the phone connects to it. For the ways to connect — same Wi-Fi, Tailscale, or POTACAT Cloud — see ECHOCAT Connectivity.
Is POTACAT really free? What costs money?
POTACAT desktop and ECHOCAT Web are free and open source, and always will be. Two things are paid:
- ECHOCAT mobile apps (iOS/Android): $9.99, one time.
- POTACAT Cloud: an optional subscription at $5/month or $50/year, with a free trial when you activate it inside POTACAT. Cloud adds conveniences like cloud log backup and multi-device logging, parks-worked sync, a tunnel that connects your phone to your shack without a VPN, and rig sharing with other operators.
Which platforms does the desktop app support?
Windows, macOS, and Linux (including arm64), with installers for all three at potacat.com. Users have also run it successfully on a Raspberry Pi 5. Chromebooks are not a supported platform.
Features you might have missed
Can I look up my previous QSOs with a callsign?
Yes. Press Ctrl+L and type the callsign — the logger shows your past QSOs with that station, whether or not they’re currently spotted. The pop-out logger has a Past QSOs panel that does the same thing.
Do I need to respot an activator after I work them?
No. When you log a POTA QSO with Ctrl+L, the activator is respotted automatically (you can turn this off in the log dialog). Ctrl+R respots the selected spot without logging anything.
How do I get operator names to show on spots?
Enter your QRZ credentials at Settings > Station > QRZ Name Lookup. A regular QRZ account is all you need — name lookup does not require a paid QRZ subscription.
Can I sort the spot table by more than one column?
Yes — click a column header to sort, then Shift+click a second column for a secondary sort.
The text is too small (or too big).
Use Ctrl + to zoom in, Ctrl - to zoom out, and Ctrl 0 to reset.
Where’s the list of keyboard shortcuts?
Press F1 for the full hotkey list, or see Keyboard Shortcuts.
Can I send my own CAT commands to the radio?
Yes. Click the Rig button at the top of the Table view and open the Custom tab to create your own CAT command buttons — notch filter, split, anything your radio’s protocol supports. The buttons you define also appear in ECHOCAT, so they work from your phone too. If CAT control itself is misbehaving, see CAT Control Issues.
Can I hide a spot I don’t want to see?
Right-click it. You can hide the spot for 1 hour, 2 hours, 1 UTC day, or forever. Hiding applies to that callsign and frequency — not to every spot from that call — and there’s a hidden-spots list where you can review and undo your choices.
Can I watch for a callsign only on certain bands or modes?
Yes. Watchlist entries accept a CALLSIGN:BAND:MODE syntax: W1AW matches everywhere, K4SWL:20m only on 20 meters, KI6NAZ:CW only on CW, and W1AW:40m:SSB only on 40 meter SSB. See Watchlist.
How do I log a multi-operator activation, or a station at more than one park?
Commas. Enter multiple callsigns comma-separated in the call field to get one log entry per operator (pass-the-mic style), and enter multiple park references comma-separated in the reference field for n-fer contacts. See Multi-Park Activations.
Is there a way to test activating without a real park?
Yes — use the K-TEST park reference, a practice park for testing your activation setup. When you’re done, QRT your spot on the POTA spot page so hunters don’t chase it.
How POTACAT behaves (and why)
What do the checkmarks next to callsigns mean?
A green ✅ means the station is in your log — you’ve worked them before at some point. A grey checkmark means you’ve already worked them on the current UTC day on that band, which is why the spot is muted. See Hunter Mode for the full spot-table legend.
What does the yellow star mean?
That callsign is on your watchlist.
I skipped a station and it came back after a restart. Why?
That’s how Skip works: it’s per-frequency, kept in memory only, and resets when the app restarts. It’s designed for Scan mode — it also won’t follow an activator who moves to a new frequency. If you want a spot gone for longer, use right-click hide instead.
When does a worked activator show up again?
A worked station stays hidden until the next UTC day, or sooner if the activator moves to a new park.
Why don’t I have a Log button?
Logging is behind a setting. Open Settings, search for “log”, and check Enable QSO Logging — the Log button and the Logbook appear once it’s on.
Can I change where my log file is stored?
You can, but be careful: changing the ADIF log path starts a new, empty log at the new location. Your old file isn’t deleted — it stays where it was — but POTACAT won’t move it for you, and new QSOs land in the new file.
How does POTACAT know which parks I’ve already hunted?
From your POTA account: download your hunted-parks CSV from pota.app (under My Stats) and import it in Settings. That’s what powers the NEW-park badges and the Hide Worked Parks filter. See Hide Worked Parks and Parks Worked.
I tapped an FT8 callsign and nothing transmitted until the next cycle. Is that a bug?
No — it’s timing physics. An FT8 transmission needs about 12.5 seconds of the 15-second window, so there’s roughly a 2-second grace window at the start of each cycle. Tap within it and POTACAT transmits immediately; miss it and you wait for the next cycle, exactly as WSJT-X would.
Why don’t JTCAT’s dB numbers match WSJT-X?
They aren’t SNR. JTCAT’s per-decode figures are its own decoder confidence scores, not calibrated signal-to-noise readings, so they won’t line up with WSJT-X’s dB values.
Features that were declined (and why)
Will POTACAT add leaderboards, profiles, or social features?
No — POTACAT is staying in its lane as a hunting and activating tool, not a social platform. Related privacy note: your QSO logs are never exposed to anyone; cloud-stored logs are only reachable through widgets you choose to embed yourself.
Will POTACAT support WinLink or VARA?
There are no plans for either. WinLink would be difficult to integrate, and VARA’s licensing stands in the way.
Can the mobile app do FT8 directly to a radio (via a digirig) without a computer?
No, and it’s not on the roadmap — other apps already serve that use case well. ECHOCAT mobile does run FT8, but through your POTACAT desktop.
Can I run POTACAT headless on a Raspberry Pi and use it from a browser?
No. The desktop app depends on things a web app can’t do — serial ports, TCP connections, subprocesses, file I/O — so a browser-only mode isn’t feasible. Run the full desktop app on the Pi or shack computer and connect remotely with ECHOCAT instead.
Why is there no “delete all” button in the logbook?
It’s deliberate, to protect you from wiping a log by accident. The log is a plain ADIF file (its location is shown in Settings), so if you truly want a fresh start, rename the file or clear its contents outside POTACAT.
Does POTACAT upload to LoTW?
Not yet — LoTW integration is in progress but hasn’t shipped. In the meantime, you can export an ADIF from the logbook (with filters, if you like) and upload it yourself.
Release Highlights
This page summarizes major POTACAT and ECHOCAT releases — it is not an exhaustive list of every patch.
v1.9.4 — July 2026
- 13 Colonies fixes across desktop and mobile, plus a 13 Colonies tracking list with notifications in the mobile
CNTSTStab. - Connectivity bug fixes; the Tailscale certificate is no longer cached at startup (fixes Tailnet account changes).
- Matching mobile OTA updates — update both desktop and app.
- JTCAT fix for
RR73decoded as a grid square; continued FT8 parity work with WSJT-X. - iOS QR-scan fix for macro-lens iPhones; SSTV and Activator-mode updates on mobile.
v1.9.2 + ECHOCAT mobile v1.1 — June 2026
- Straight Key on-screen CW button in the mobile app.
- Fully customizable VFO screen — hide and reorder elements.
- Improved pairing: one click to connect when paired with POTACAT v1.9.2.
- Up to 25 voice/CW macros, synced across devices (older on-phone macros are wiped).
- Android landscape mode.
ECHOCAT for Android — June 26, 2026
- ECHOCAT app live on Google Play (
co.cmox.echocat) — $9.99 one-time purchase, includes all updates. - Known bug at launch: connecting via “Discovered” was broken — use the QR scan instead.
v1.8.16 — June 2026
- Instant pairing for Cloud subscribers: log in on any device and connect to your shack, over Tailscale or POTACAT Cloud off-LAN.
- WSPR TX/RX working; the idle agent can decode SSTV or WSPR (Settings > Station), with WSPR reports sent to PSKReporter.
- IC-7100 rig layer.
v1.8.14 — June 2026
- Late-start FT8 TX — join a slot roughly 7 seconds late with a shortened reply (WSJT-X parity).
- A-priori (AP) decoding in JTCAT; day/night line added to the JTCAT map.
- FT-710 ATU control over CAT; per-rig audio settings under Settings > Radio.
- Remote Stop Scan from ECHOCAT; Linux arm64 build.
v1.8.6 — June 10, 2026 — POTACAT Cloud launch
- POTACAT Cloud subscription: $5/mo or $50/yr with a free trial — cloud log backup, multi-device logging, parks-worked sync, and the Cloud Tunnel (
<callsign>.potacat.com, no Tailscale required). - Cloud Sharing stack: desktop-to-desktop pairing, Share My Rig links (start-now or scheduled, optional anonymous guests, 30-day guest link cap), and tap-to-pair on the LAN.
- Follow-ups in v1.8.7–v1.8.9: revoking access now kicks live sessions instantly, hardened cloud backup download, and a TURN relay for CGNAT (including double-CGNAT/Starlink).
- Charcoal dark theme (Settings > Display), Contests “What’s Next” redesign, color-coded logbook columns with
Ctrl+/−zoom. STATION_CALLSIGNnow written on every QSO (LoTW / Part 97.119 attribution); Flex per-band antenna mapping.
ECHOCAT for iOS — June 8, 2026
- ECHOCAT app live on the App Store — $9.99 one-time purchase, includes all updates.
- ECHOCAT Web continues to work and remains free; Tailscale remains an option.
v1.6 — May 2026
- “Whole Lotta Things Working Well”: initial keyer support in the iOS/Android apps — TinyMIDI, VBand, Vail, and HaliKey MIDI.
- Flex Radio direct connection without SmartSDR plus full WinKeyer support (May 21) — enables AetherSDR use with POTACAT.
- POTACAT Cloud Tunnel first working (June 2): connect a phone to the rig with no Tailscale — the foundation for rig swapping.
v1.5.16 — May 2026
- Initial foundation for the iOS and Android apps; tester builds followed in the Hamvention build.
- WebSDR + KiwiSDR RX “finally working as intended” — listen on a remote SDR while transmitting on your own rig.
- FT8 timing and respot-logging fixes; ragchew logger pop-out with
Ctrl+F1/Alt+F1hotkeys.
v1.5.2 — April 2026
- “Mega GitHub Issue Squashing” release; POTA.app sync phase 1, with Cloud users auto-syncing POTA parks-worked.
- Auto-SSTV RX on idle (default on, 90-minute timeout); SSTV Scottie S2 support.
- CI-V over TCP; IC-7200, TS-2000, and FTX-1 Optima rig profiles; CW keying hardening.
- ECHOCAT map pop-out to a browser window; iPad split-view support.
- Logger32 added as a logbook forwarding target (April 25).
v1.5.0 — April 2026 — “The SSTV Release”
- SSTV decoding: Martin M1 “on par with MMSSTV,” with Scottie 1 close behind (first shipped in v1.4.8/1.4.9).
- Mac, Linux, and Windows installers built via GitHub Actions, downloadable at potacat.com.
- One-click Report a Bug (v1.5.1): redacted system snapshot, rig config, and log tail into a prefilled Discord post — grid square excluded.
- Milestone: roughly 6,000 downloads, 10,000 QSOs, and 102 versions in about 9 weeks.
v1.4.x — April 2026
- Desktop VFO dial with audio streaming on the PC: knob, dialpad, mode selector, PTT, log button, operator heads-up display, and solar weather.
- Multi-slice JTCAT for Flex — monitor 4 or more slices at once.
- WebSDR as an RX option — SWL and HF-net listening, even for unlicensed users.
- VFO Lock and Elecraft K4/K4D rig profile (v1.4.2).
v1.3.15 — April 2026
- FreeDV on ECHOCAT (bundled on Windows; Mac/Linux build the RADE decoder).
- Voice Macros — 5 slots, shared between phone and desktop, with auto-PTT.
- Propagation Map pop-out (RBN/PSKReporter, day/night overlay); GridTracker-style decode enrichment in JTCAT and ECHOCAT.
- ECHOCAT configurable, reorderable spot columns; TunerGenius 1x3 antenna switching.
v1.3.11 — March 2026
- Native ft8_lib decoder replaces WASM — FT8 decoding 5–10x faster (~120 ms).
- Movable S-Meter and SWR meter on desktop and ECHOCAT.
- K1EL WinKeyer (WK2/WK3) keyer support and a floating, draggable CW Macro box with variables such as
{MYCALL},{call}, and{op_firstname}. - Keyboard CW keying (VBand/Vail style: left
Ctrldit, rightCtrldah, iambic timing). - Activation dupe detection (DUPE tag and count badge); Launcher system tray icon on port
7301. - 10 Hz fine tuning on the ECHOCAT dial (v1.3.10).
v1.2.2 — March 2026
- “Don’t Cross the Streams”: JTCAT FT8 decode fixed after crossed desktop audio streams.
- MIDI remote CW on ECHOCAT (Android only — iOS Safari blocks Web MIDI); local sidetone for CW macros.
- Rig Model layer decoupled from connection method, with unlimited custom CAT commands per rig.
- Auto-chase for POTA/SOTA/CQ spots; 4-row FT8 layout on ECHOCAT.
v1.1.0 — March 2026 — “The FT8 + Remote CW Release”
- Remote FT8 and remote CW on ECHOCAT; all CW/FT8 functionality rolled out free to everyone on March 19.
- Watchlist band/mode filters (v1.1.1):
K4SWL:20m,KI6NAZ:CW,W1AW:40m:SSB. - ECHOCAT voice macros, DTR keying for remote CW, and remote power on/off for Yaesu rigs.
- Electron 33→39 / Chromium 130→142 platform upgrade; docs.potacat.com link added in-app.
v1.0.12 — March 2026
- Rig Control Panel (status-bar Rig button): ATU tune, noise blanker, power on/off, RF gain, TX power, and mode-aware filter width presets — unsupported controls auto-hide.
- Native Icom CI-V serial support (IC-7300/705/7610 and more) without Hamlib.
- HF Nets & SWL Directory (“Dir” tab, tap to tune) and Wake Lock on ECHOCAT (v1.0.16).
- ECHOCAT Club Station Mode beta (v1.0.8): callsign + password login with member badges.
- MacLoggerDX UDP forwarding on port
9090(v1.0.7).
v1.0 — March 9, 2026
- First stable release — “45 releases since launch.”
- Spacebar PTT for ECHOCAT (iPad keyboards) and a cleaner Welcome screen.
- ECHOCAT audio settings in Quick Settings; new “Radio” filter for band/mode.
ECHOCAT launch — March 4, 2026
- ECHOCAT: control the rig from a phone browser over a Tailscale VPN — 100% free.
- Requires Tailscale on the shack PC and phone; browse to
https://100.x.y.z:7300. - Per-rig RX/TX audio channels set in the Rig dropdown.
- Followed the same week by the DX Terminal cluster window with one-click QSY (v0.9.39) and NG3K ADXO DX-expedition spots (v0.9.40).
v0.9.27 — March 2026
- Activator Mode (introduced in late-February rolling builds): activator log, RBN view of your own CQ pickups, and a sortable logbook with filtered ADIF export.
- Daily QSO milestone celebrations (10/25/50/100/150/200/250, with 500 as mega).
- WSJT-X auto-log now forwards to external logbooks; new Grid column; 2-fer double-logging fix.
v0.9.22 — February 2026
F5checks for a new version; TCP rigctl support.- DXCC tracker by band and mode, built from your imported logbook.
- Event tracking: WAS 250, CQ WW 160m, and pre-loaded 13 Colonies.
- POTA/DX pill column; QRZ request-flooding bugfix.
v0.9.9 — February 2026
- Auto-update introduced — “the last version you have to download.”
- Portable
.exestill offered alongside the installer.
v0.9.7 — February 2026
- Serial CAT using the Kenwood protocol, bypassing Hamlib (QRPLabs QMX/QDX and similar).
- Worked Station Tracking: green check, muted spots, auto-skip in scan, “Hide already-worked” — plus ADIF import (LoTW/QRZ) and POTA hunted-parks CSV import.
- Light/dark theme toggle and a continent filter (AF/AS/EU/NA/OC/SA).
- Logbook forwarding to N1MM+ (UDP
2333), N3FJP (TCP1100), HRD (TCP7826), and Log4OM 2. - SmartSDR panadapter spots (TCP
4992); RBN watchlist spots in the main spot table. - POTA re-spot feature included in the same build.
v0.9.6 — February 2026
- Ham Radio Deluxe and Log4OM 2 logging integrations go live.
- Pre-auto-update era: manual uninstall/reinstall required to upgrade.
For full release notes on every build, see the #announcements channel on the POTACAT Discord.
Community & Support
Website: potacat.com
Discord: Join the community at potacat.com/discord — get help, share your setup, request features, and chat with other POTACAT users.
Support development: If POTACAT helps you chase parks, consider supporting the project at buymeacoffee.com/potacat.
Report bugs: github.com/Waffleslop/POTACAT/issues
Author: Casey Stanton, K3SBP
License: MIT. Bundles Hamlib (GPL v2).