Cloudlog Aurora WSJT‐X - magicbug/Cloudlog GitHub Wiki
This document describes the current WSJT-X integration implemented in Cloudlog Aurora.
- WSJT-X UDP listener runs when
WSJTXServeris enabled. - Uses:
WsjtxUtils.WsjtxUdpServerWsjtxUtils.WsjtxMessages
- Entry points:
Form1.WSJTXThread(...)WSJTXMesssages : IWsjtxUdpMessageHandler
- Handles WSJT-X
LoggedAdifmessages. - Uploads ADIF directly to Cloudlog via:
CloudlogHelper.UploadQSO(adifline, Properties.Settings.Default.WSJTXStationLocation)
- Uses WSJT-X station location setting (
WSJTXStationLocation) as Cloudlogstation_profile_id. - After ADIF upload, extracts
CALLand emits an internal logged-QSO event used by CQ list/auto-call state.
- Handles WSJT-X
Decodemessages. - Extracts CQ callsigns from decode text.
- Supports lines where
CQis not first token. - Ignores non-callsign CQ tokens (
DX,TEST, etc.).
- For exchange-style lines, parses second callsign on
RR73/73patterns. - Example:
-
PD1DOP ZA5G RR73-> extracted callsign:ZA5G
-
- RR73-derived rows are shown in CQ list for awareness/statusing.
- For CQ lines, extracts Maidenhead grid token where present.
- Example:
-
CQ N1SK FN33-> extracted grid:FN33
-
- Raw decode text is also published internally and used by auto-call progress detection.
- Decode SNR is extracted (when present in WSJT-X decode payloads).
- SNR is cached per callsign row and used by CQ list display and auto-call filtering.
- Handles WSJT-X
Statusmessages and caches:bandmode- TX state (
transmitting) when available from status fields.
- Frequency is mapped to ham band labels (
20m,40m,6m,2m,70cm, etc.). - Exposes recency snapshots for endpoint/status/decode stream health checks.
- Open from menu:
File -> WSJT-X CQ List. - Form:
WsjtxCqListForm - Columns:
UTCCallsignCallCountryGridSNRDecodeCount
- De-duplicates by callsign, increments
Count, and keeps newest entries at top.
- Footer is split into two rows:
- Control row (
time filter,Auto prune,A+,A-,Next,Auto Call,Clear) - Status + legend rows:
- status row: WSJT-X stream badges plus runtime labels (
Auto: ...,Retries: ...) - compact legend row: color legend +
… Checking
- status row: WSJT-X stream badges plus runtime labels (
- Control row (
-
Auto Callbutton is visually highlighted when enabled.
- Persisted locally (primary app user data path, plus legacy compatibility path):
%AppData%\magicbug\Cloudlog Aurora\<version>\wsjtx_cq_list_layout.json-
%LocalAppData%\Cloudlog Aurora\wsjtx_cq_list_layout.json(legacy compatibility)
- Persisted values:
- window size
- window position
- column widths
- list font size (
A-/A+) - time filter selection
-
Auto prunestate
- Endpoint used:
POST /api/logbook_worked_status - Method:
CloudlogHelper.CheckWorkedStatusAsync(callsign, band, mode, gridsquare)
- Request fields:
keylogbook_public_slugcallsign- optional
band - optional
mode - optional
gridsquare
- Parses:
- callsign worked (
worked.callsign_overall,worked.callsign_band) - country worked/confirmed (
worked.country_*,confirmed.country.*) - grid worked (
worked.grid_overall,worked.grid_band)
- callsign worked (
-
✓= Found -
✗= Not Worked -
…= Checking/Pending -
?= Unavailable -
!= Error
✗ New Country (Overall)✗ New Country (Band)✗ Worked, Not Confirmed✓ Confirmed (...)-
…,?,!for checking/unavailable/error
-
✓ FN33= worked grid -
✗ FN33 (Overall)= new overall grid -
✗ FN33 (Band)= new on-band grid -
…= checking/pending -
?= unavailable -
!= error -
—= no grid detected
Row color priority:
-
New Country (Overall)-> red -
New Country (Band)-> amber -
New Grid (Overall/Band)-> black row with white text -
Not Workedcallsign -> pink - otherwise default colors
- Attempts WSJT-X
Reply(TryStartQsoFromCq). - If no exact decode match is available, falls back to
HighlightCallsign.
Start QSOHighlight in WSJT-XCopy Callsign
- Button:
Auto Call: Off/On - When enabled, periodically evaluates candidates and calls one target at a time.
- Recommended WSJT-X setting for reliable control:
Auto Sequenceshould be OFF. - Optional setting:
Auto Sequence compatible mode (do not force TX halt)allows using WSJT-X Auto Sequence without Aurora issuing forced halt-TX when retries are exhausted.
- Button:
Next - Forces auto-call to drop current target and move to next eligible candidate.
-
Nextis only usable when WSJT-X is not transmitting (disabled during TX; re-enabled when TX stops).
- Candidate categories are user-selectable in settings:
-
Not Workedcallsigns New Country (Overall)New Grid (Overall)- band entities (
New Country (Band)/New Grid (Band))
-
- CQ-only filter is applied (RR73-derived rows are excluded for initiating).
- Candidate freshness window is applied.
- Minimum SNR threshold is applied (configurable; example
-10 dB).
- One active target lock (no parallel hopping).
- Active target window timeout.
- Max retries per target.
- Min gap between attempts.
- Temporary holdoff before re-calling same callsign.
- Manual override pause after operator-initiated
Start QSO/Highlight. - Optional manual-selection pause: selecting a CQ row can pause auto-call even without sending
Start QSO/Highlight. - Suppressed while WSJT-X is transmitting.
- Duplicate-TX-cycle guard: suppresses repeated
TryStartQsoFromCqcalls for the same candidate during the same active TX cycle. - Hard-stop if WSJT-X stream is stale (endpoint/status/decode recency checks fail).
- Optional keep-monitoring mode can leave auto-call enabled and waiting for stream recovery instead of hard-stopping.
- Band/mode drift guard: drops active target and re-evaluates when context changes.
- Stuck-QSO timeout: if QSO lock is active but no matching decodes arrive for a timeout period, lock is cleared.
- Monitors raw decode text for active target.
- Detects report exchange tokens (
+dd,-dd,R+dd,R-dd) and marks QSO in progress. - While QSO in progress, auto-call will not swap targets.
- Detects
73/RR73from active target to mark QSO completion state. - Optional strict mode supports waiting for
73sequence confirmation from both sides. - Logged QSO event clears active in-progress state and advances to the next eligible candidate (if auto-call remains enabled).
- Status label in CQ list footer shows states like:
Auto: IdleAuto: TX activeAuto: Cooldown NsAuto: In QSO <callsign>Auto: Awaiting log <callsign>Auto: <callsign> rX/Y NsAuto: Stopped (...)
- Retry counter label is shown separately as
Retries: <callsign> X/Yfor easier debugging. - Active auto target row is visually marked (bold row) while being worked.
- Time filter options:
All,30s,60s,120s,300s. - Filtering is based on row
LastSeenUtc. -
Auto pruneoption removes stale rows automatically when outside selected window. - Filter view refreshes periodically while form is open.
- Auto-call tuning is user-configurable in
Settingsunder theWSJT-Xtab (WSJT-X Auto Callgroup):- candidate category checkboxes (
Not Workedcallsigns, new country, new grid, band entities) - max retries per target
- candidate freshness window
- active target window timeout
- manual pause duration
- stuck-QSO timeout duration
- min gap between attempts
- repeat holdoff duration
- optional strict
73completion mode (require both sides) - minimum decode SNR threshold
- optional keep-monitoring mode when WSJT-X stream is stale
- optional Auto Sequence compatible mode (disables forced halt-TX on retry exhaustion)
- candidate category checkboxes (
- A visible help block in the UI explains what each option does.
- On WSJT-X
LoggedAdif:- row for matching callsign is removed from CQ list
- cached worked-status entries for that callsign are cleared
- relevant auto-call active/in-progress state is cleared
- if auto-call is active and logged callsign is current target, auto-call advances to next candidate
For worked-status checks, console output includes:
- endpoint URL
- request JSON
- raw response JSON
Also logs auto-call state transitions (enabled/disabled, target selected, retry/window move-on, stale-stream stop, etc.). Also logs skip-reason audit lines (TX active, cooldown, stale stream, no candidates, retries reached, drift, etc.).
For WSJT-X Cloudlog checks:
-
CloudlogURLmust be set -
CloudlogAPIKeymust be set -
WSJTXLogbookSlugshould be set
Fallback behavior:
- if
WSJTXLogbookSlugis empty, falls back toTCPLogbookSlug
If config is missing, CQ statuses may show Unavailable.
- WSJT-X
Replystart still requires an exact cached CQ decode for that callsign. - If no active WSJT-X UDP endpoint is observed, reply/highlight cannot be sent.
- Auto-call reacts to decode/73 progression and Logged ADIF events but does not force WSJT-X internal logging.