-
-
Notifications
You must be signed in to change notification settings - Fork 107
SpotHub
SpotHub is AetherSDR's unified spot management system. Access it from Settings → SpotHub...
SpotHub aggregates spots from five independent sources, displays them on the panadapter as color-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.
SpotHub has seven tabs: Cluster, RBN, WSJT-X, POTA, FreeDV, Spot List, and Display.
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.
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.
- Spots: Enabled/Disabled — toggle spot rendering
- Levels — max vertical stacking depth for labels (1-10)
- Position — vertical starting position (% from top of spectrum)
- Font Size — spot label font size (8-32px)
- Spot Lifetime — how long DXC/RBN spots remain on the panadapter (1-1440 minutes)
- Override Colors — force all spots to one color (overrides per-source colors)
- Override Background — control label background color and opacity
- Background Opacity — 0-100%
- Total Spots — current count of spots on the radio
- Clear All Spots — removes all spots from radio and resets dedup timers
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 |
- 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