-
Notifications
You must be signed in to change notification settings - Fork 61
SpotHub
SpotHub is AetherSDR's unified spot management system. Access it from Settings → SpotHub...
SpotHub aggregates spots from six independent sources, displays them on the panadapter as colour-coded callsign labels, and provides a sortable spot list with band filtering. All spot sources run on a dedicated worker thread with batched 1/second forwarding to the radio. The Display tab also exposes a separate Signal History markers path that detects voice signals + QRM directly from the panadapter spectrum (no spotter required).
The window opens with frameless chrome by default — a custom 18 px title bar at the top and 8-axis edge resize on the body, matching every other floating dialog in AetherSDR. Toggle frameless mode globally via View → Frameless Window.
SpotHub has eight tabs: Cluster, RBN, WSJT-X, SpotCollector, POTA, FreeDV, Spot List, and Display. POTA and FreeDV are hidden if their respective optional dependencies (no extra build flags / qt6-websockets) aren't available.
Connects to standard DX cluster nodes via telnet (DX Spider, AR-Cluster, CC Cluster).
-
Server / Port / Callsign — configure your cluster node (default:
dxc.nc7j.com:7300) - Auto-Connect — automatically connect when radio connects
-
Console — live telnet output with command input (type
sh/dx 20,set/filter, etc.) - Spot Color — configurable color picker (default: tan)
-
Log File —
~/.config/AetherSDR/dxcluster.log, replayed on dialog open
DX cluster spots appear on the panadapter at their spotted frequency with the configured color.
Connects to the Reverse Beacon Network for automated CW/RTTY/FT8 skimmer spots.
-
Server / Port — default:
telnet.reversebeacon.net:7000 - Callsign — falls back to cluster callsign if empty
- Rate Limit — configurable max spots/sec to radio (default: 10) to prevent flooding during contests
- Auto-Connect — automatically connect when radio connects
- Console — live RBN output with command input
- Spot Color — configurable (default: blue)
-
Log File —
~/.config/AetherSDR/rbn.log
RBN uses the same telnet protocol as DX clusters. The rate limiter uses a token-bucket system — excess spots are queued and sent in the next batch cycle.
Listens for WSJT-X decode messages via UDP multicast to spot stations you can hear in digital modes.
-
Address / Port — default:
224.0.0.1:2237(multicast). Set to0.0.0.0for unicast - Auto-Start — automatically start listening when radio connects
-
Spot Filters — checkboxes to control which decodes are sent to the radio:
- CQ — spot stations calling CQ (mutually exclusive with CQ POTA)
- CQ POTA — spot stations calling CQ POTA (mutually exclusive with CQ)
- Calling Me — spot stations calling your callsign directly
- If nothing is checked, all decodes are forwarded
-
Per-filter Color Pickers — each filter category has its own color:
- CQ: green (default)
- CQ POTA: cyan (default)
- Calling Me: red (default)
- Default (unmatched): white
-
SNR-based Alpha — spot label opacity scales with signal strength:
- -24 dB → faint (alpha 64)
- 0 dB → mostly solid (alpha 192)
- +10 dB → full opacity (alpha 255)
- Spot Lifetime Slider — 30-300 seconds (default: 120s), separate from DXC/RBN lifetime
- Console — shows decoded callsigns with frequency, SNR, and full decoded message
-
Log File —
~/.config/AetherSDR/wsjtx.log
WSJT-X broadcasts decode messages as binary UDP packets (Qt QDataStream format). AetherSDR listens for Type 2 (Decode) messages, extracts the callsign from the decoded text, computes the actual frequency (dial frequency from Status messages + audio offset from the decode), and forwards matching spots to the radio.
The decoded message text (e.g., CQ KK7GWY DN18) appears in the Comment column of the Spot List.
- In WSJT-X: File → Settings → Reporting — ensure UDP Server is enabled (default port 2237)
- In AetherSDR: Settings → SpotHub → WSJT-X tab — click Start (or enable Auto-Start)
- Spots from decoded stations appear on the panadapter
See also: WSJT-X Integration for audio and CAT setup.
A local UDP listener that accepts spot packets from third-party software (loggers, contest tools, custom scripts). Useful for funnelling spots from any UDP-capable application into the same panadapter overlay as your DX cluster spots.
- Port — UDP port to listen on (configurable; default per the Auto-Start state)
- Auto-Start — automatically start listening on radio connect
- Console — live packet log with parse status
Packets are deduplicated against the existing spot pool and forwarded to the radio on the same 1/sec batch cycle as the other sources.
Polls the POTA API for active park activations.
- Poll Interval — 15-300 seconds (default: 30s)
- Auto-Start — automatically start polling when radio connects
- Console — shows activations with callsign, frequency, park reference, park name, and mode
- Spot Color — configurable (default: yellow)
-
Spot Lifetime — uses the POTA API's
expirefield (time remaining on the activation) -
Log File —
~/.config/AetherSDR/pota.log
POTA spots show the park reference and name in the Comment column (e.g., US-4567 Yellowstone National Park SSB). The API is polled at https://api.pota.app/spot/activator — no authentication required. Only new spots are forwarded (tracked by spotId).
Connects to the FreeDV QSO Reporter at qso.freedv.org via WebSocket for real-time FreeDV station spots.
- Auto-Start — automatically connect when radio connects
- Console — shows active FreeDV stations with callsign, frequency, mode, and grid square
-
Spot Color — configurable (default: dark orange
#FF8C00) -
Spot Lifetime — 120 seconds (default), configurable via
FreeDvSpotLifetimesetting -
Log File —
~/.config/AetherSDR/freedv.log
The FreeDV QSO Reporter uses Socket.IO v4 over WebSocket (no REST API). AetherSDR connects in view-only mode (no callsign required) and receives real-time events:
-
freq_change— a station is active at a frequency → creates a spot -
rx_report— a station decoded another station → creates a spot with SNR -
new_connection/remove_connection— stations come online / go offline
On initial connect, the server replays all currently active stations, so spots appear immediately.
FreeDV spots show the mode (e.g., "700E", "1600") and grid square in the Comment column. Requires qt6-websockets package (optional dependency — FreeDV tab hidden if not available).
A sortable table showing all spots from all sources in one view.
| Column | Description |
|---|---|
| Time | UTC time of spot |
| Freq (kHz) | Spotted frequency |
| DX Call | Callsign of spotted station |
| Comment | Mode, park reference, decoded message, etc. |
| Spotter | Who spotted the station |
| Band | Auto-detected band (160m-6m) |
| Source | Which source provided the spot (Cluster, RBN, WSJT-X, POTA, FreeDV) |
- Band Filter Checkboxes — 160m through 6m, all checked by default, persisted across sessions
- Sortable — click any column header to sort
- Double-click to Tune — tunes the active slice to the spot's frequency
- Smart Auto-scroll — scrolls to show newest spots, pauses when you scroll up to read, resumes when you scroll back to the bottom
- Clear button to reset the list
Controls how spots appear on the panadapter. The tab opens with a single compact toggle row at the top — every "show this on the panadapter" switch lives here as a green-checked button:
[Spots] [Passive] [Memories] [Auto] [Signals] [QRM] [Clear All]
| Toggle | What it does |
|---|---|
| Spots | Master enable for the spot overlay (DXC/RBN/WSJT-X/POTA/FreeDV/SpotCollector) |
| Passive | Receive and render radio-side spots without sending spot add commands back to the radio |
| Memories | Render the radio's memory channels as a spot-like feed on the panadapter |
| Auto | Auto-switch slice mode when clicking a spot that includes mode info (CW, FT8, RTTY, etc.) |
| Signals | Gold markers for detected voice-width signals (Signal History — generated locally from the spectrum) |
| QRM | Red markers for persistent carriers and wideband interference (also Signal History) |
| Clear All | Wipes DX spots, memories feed, and S-History / QRM marker state in one click |
- Levels — max vertical stacking depth for labels (1–10)
- Position — vertical starting position (% from top of spectrum)
- Font Size — spot label font size (8–32 px)
- Spot Lifetime — non-linear slider with 10 sec → 24 hr range
- Override Colors — force all spots to one colour (overrides per-source colours)
- Override Background — control label background colour, opacity, and Auto-contrast toggle
- Background Opacity — 0–100%
- Spot Lines — toggle vertical tick lines from each label down to the spectrum
- Total Spots — current count of spots on the radio
Imports an ADIF log file and colours spot labels by worked status: new DXCC entity, new band, new mode, or already worked. Live-watches the log file so colours update whenever your logger writes a new QSO.
- DXCC Colors toggle (Enabled / Disabled)
- Log File (ADIF) — Browse… picker; arms a file watcher automatically
- Imported — live "N QSOs / M entities" status
- Colors — four swatch pickers (New DXCC, New Band, New Mode, Worked). Click a swatch to choose a colour.
Tunes the panadapter-driven Signal History markers — the Signals and QRM toggles on the top row gate visibility, these sliders shape detection.
- Marker Lifetime (15–300 s, default 60) — how long an inactive marker persists before purge
- QRM Gate (3–30 s, default 6) — minimum age before a narrow carrier or wideband signal is classified as QRM
- Edge Threshold (1.0–10.0 dB, default 3.0) — softer noise+dB threshold used by the slope edge walk that refines voice-width markers toward the carrier (lower = closer to carrier but more noise-sensitive)
-
Colors — Signals / QRM swatch pickers (defaults: amber
#FFC800for voice, red#FF0000for QRM) - Snap to Step — when enabled, click-to-tune on a Signal History or QRM marker rounds to the active slice's step size, hiding the small carrier offset that comes from detecting voice on the panadapter
The Signal/QRM markers share the same rendering pipeline as DX spots — they honour Levels, Position, Font Size, override colours, and override background settings.
When too many spots overlap in the same area of the panadapter (exceeding the configured Levels), they collapse into amber +N badges. Clicking a badge opens a popup menu listing all collapsed callsigns with their frequencies — click any entry to tune.
Spots are deduplicated across all sources by callsign + frequency. If the same callsign appears on the same frequency (within 1 kHz) and hasn't expired, the duplicate is dropped. If the callsign moves to a different frequency, the old entry is replaced. The dedup timer uses source-appropriate lifetimes (WSJT-X uses its own shorter timer, POTA uses the API's expire field, DXC/RBN use the Display tab lifetime).
The mouse cursor changes to a pointing hand when hovering over spot labels or density badges on the panadapter, indicating they are clickable for tuning.
All spot source clients (DX Cluster, RBN, WSJT-X, POTA) run on a dedicated worker thread. Network I/O, protocol parsing, and log file writing all happen off the main GUI thread. Spots are batched and forwarded to the radio once per second, reducing both main-thread CPU usage and radio command flooding.
All SpotHub settings are persisted in ~/.config/AetherSDR/AetherSDR.settings:
| Key | Default | Description |
|---|---|---|
DxClusterHost |
dxc.nc7j.com |
Cluster server |
DxClusterPort |
7300 |
Cluster port |
DxClusterCallsign |
(empty) | Login callsign |
DxClusterAutoConnect |
False |
Auto-connect on radio connect |
DxClusterSpotColor |
#D2B48C |
DXC spot color (tan) |
RbnHost |
telnet.reversebeacon.net |
RBN server |
RbnPort |
7000 |
RBN port |
RbnCallsign |
(empty) | RBN callsign (falls back to DXC) |
RbnAutoConnect |
False |
Auto-connect on radio connect |
RbnRateLimit |
10 |
Max spots/sec to radio |
RbnSpotColor |
#4488FF |
RBN spot color (blue) |
WsjtxAddress |
224.0.0.1 |
WSJT-X multicast address |
WsjtxPort |
2237 |
WSJT-X UDP port |
WsjtxAutoStart |
False |
Auto-start on radio connect |
WsjtxSpotLifetime |
120 |
WSJT-X spot lifetime (seconds) |
WsjtxFilterCQ |
True |
Filter: CQ calls |
WsjtxFilterPOTA |
True |
Filter: CQ POTA calls |
WsjtxFilterCallingMe |
True |
Filter: directed to my call |
WsjtxColorCQ |
#00FF00 |
CQ spot color (green) |
WsjtxColorPOTA |
#00FFFF |
CQ POTA spot color (cyan) |
WsjtxColorCallingMe |
#FF0000 |
Calling Me spot color (red) |
WsjtxColorDefault |
#FFFFFF |
Default WSJT-X spot color |
PotaPollInterval |
30 |
POTA poll interval (seconds) |
PotaAutoStart |
False |
Auto-start on radio connect |
PotaSpotColor |
#FFFF00 |
POTA spot color (yellow) |
DxClusterSpotLifetime |
30 |
DXC/RBN spot lifetime (minutes) |
IsSpotsEnabled |
True |
Show spots on panadapter |
SpotsMaxLevel |
3 |
Max label stacking depth |
SpotFontSize |
16 |
Label font size (px) |
SpotBandFilter_* |
True |
Per-band filter state |
ManualSpotColor |
#00FF00 |
Manual spot color (green) |
ManualSpotLifetime |
1800 |
Manual spot lifetime (seconds) |
SpotForwardToCluster |
False |
Forward manual spots to DX cluster |
Right-click on the panadapter to manually create spots:
- Right-click on an empty area of the panadapter
- Select "Add Spot at X.XXX MHz..."
- Fill in the dialog:
- Frequency — pre-filled from click position, snapped to tuning step size
- Callsign — required
- Comment — optional
- Lifetime — 5 min, 15 min, 30 min, 1 hour, or 2 hours
-
Forward to DX Cluster — if checked and cluster is connected, sends a standard
DXcommand
- Click OK — the spot appears on the panadapter
Right-click directly on a spot label for additional options:
| Action | Description |
|---|---|
| Tune to <callsign> | Tunes the active slice to the spot frequency |
| Copy Callsign | Copies callsign to clipboard |
| Lookup on QRZ | Opens qrz.com/db/<callsign> in your browser |
| Remove Spot | Removes the spot from the radio |
Spot labels automatically stack across multiple levels to avoid overlap. When more spots exist than the configured level depth allows, overflow spots are grouped into cluster badges (+N) that can be clicked to expand.
- Panadapter Controls
- VFO Widget
- RX Controls
- TX Controls
- Aetherial Audio
- Multi-Slice Operation
- Diversity and ESC
- TNF (Tracking Notch Filters)
- Memory Channels
- Profile Management
- Slice Colors
- XVTR (Transverters)
- CWX Panel
- CW Decoder
- DVK Panel
- RTTY Operation
- RADE Digital Voice
- DAX Virtual Audio
- DAX IQ Streaming
- WSJT-X Integration
- CAT Control
- TCI Server