Request preparation
What would you like?
Let me look at a couple of existing issues first to make sure I reference the right internals for the panadapter and spectrum side.Good context gathered. Key classes I can reference: PanadapterModel (per-pan state, owns centerMhz), PanadapterStream (VITA-49 routing), SpectrumWidget (GPU waterfall renderer), and RadioModel (central state). Here is the feature request, raw and ready to copy:
[Feature] Band traffic and band opening monitor mode
What
Add a Band Monitor mode that sequentially tunes a dedicated panadapter through a configurable list of amateur bands, dwells on each band for a configurable period, captures the FFT/waterfall data, and displays the result as a stack of per-band waterfall strips in a standalone floating window. The window gives the operator a at-a-glance view of activity across the entire HF spectrum even though the FlexRadio cannot capture the full HF range simultaneously.
Why
FlexRadio transceivers have a finite instantaneous bandwidth — even the widest pan on a FLEX-8600 cannot cover all amateur HF bands at once. During periods of variable propagation — a contest weekend, a greyline window, a sporadic-E opening on 10m — an operator at a remote or unattended station has no practical way to know which bands are open or active without manually stepping through them one by one.
Band Monitor solves this by automating that stepping and retaining the evidence. Each band's dwell produces a waterfall strip showing what was present during that minute. A band with an opening shows a noisy, signal-rich strip; a dead band shows a flat noise floor. The operator can scan the Band Monitor window at a glance and immediately see where activity is happening, then click to jump the main radio to that band.
Use cases:
- Monitoring for DX openings on 10m/12m/15m during a contest without sitting at the radio
- Watching multiple bands during a greyline window to catch the moment a path opens
- Logging which bands were active during an unattended remote session for later review
- Contest band change decisions — seeing at a glance whether 15m has dried up before committing to a move
How Other Software Does It
DX4WIN / DX Atlas propagation overlay
These tools predict band openings but show no actual RF evidence. Band Monitor complements them with measured data.
SDR# Scanner plugin
SDR# has a basic frequency scanner that steps through a list of frequencies and logs signal strength. It does not produce waterfalls per band and is not aware of ham band plans.
HDSDR / SDRangel
Both support panoramic display across a wide IF bandwidth but are limited to the hardware's instantaneous bandwidth — the same fundamental constraint the FlexRadio has. Neither implements a sequential dwell-and-capture approach.
Reverse Beacon Network (RBN)
RBN aggregates spot data from skimmers worldwide and gives a good picture of band activity, but requires an internet connection and only reflects CW/digital activity visible to skimmer stations. Band Monitor is fully local and captures the actual RF environment at the operator's antenna.
Suggested Behavior
Band list and configuration
A configurable ordered list of bands to scan, defaulting to all standard HF amateur bands (however any other HF band should be configurable):
160m 1.900 MHz centre 200 kHz span
80m 3.700 MHz centre 400 kHz span
60m 5.350 MHz centre 100 kHz span
40m 7.150 MHz centre 400 kHz span
30m 10.125 MHz centre 100 kHz span
20m 14.175 MHz centre 400 kHz span
17m 18.118 MHz centre 100 kHz span
15m 21.200 MHz centre 400 kHz span
12m 24.940 MHz centre 100 kHz span
10m 28.400 MHz centre 600 kHz span
6m 50.200 MHz centre 600 kHz span (hardware permitting)
Each entry is independently toggleable (checkbox) and editable (centre frequency, span). The full list and enabled state persist via AppSettings under BandMonitor/BandList.
Dwell time
Configurable per-scan dwell (default 60 s, range 5–300 s). During the dwell, the scanner holds the panadapter on the band and accumulates FFT frames. At dwell end it moves to the next enabled band. One full cycle = sum of all enabled dwell periods.
AppSettings::setValue("BandMonitor/DwellSeconds", 60)
Panadapter assignment
Band Monitor operates on a dedicated panadapter that it creates and owns for the duration of the session. It does not disturb the operator's existing pans or slices. At session start it issues a pan create command; at session end it issues pan remove. If the radio is at its pan limit (e.g. FLEX-6400 with one pan already open), Band Monitor warns the operator and offers to use the existing pan in a non-destructive time-share mode (pausing the scan when the operator manually tunes, resuming after a configurable idle timeout).
The scanner tunes the pan by updating PanadapterModel::centerMhz and sets the span via the existing pan set command path. No new protocol commands are required.
Waterfall capture
During each dwell, FFT frames arriving from PanadapterStream are accumulated into a per-band frame buffer. At dwell end, the frames are composited into a single waterfall strip image — a fixed-height bitmap (suggested: 80 px tall) showing frequency on the X axis and time within the dwell on the Y axis. The colour mapping reuses the existing waterfall palette and reference level settings from SpectrumWidget.
Frame buffers are kept in memory for the most recent N complete cycles (default 3, configurable). Older cycles are discarded unless the operator has enabled strip logging (see below).
Band Monitor window
A floating, resizable window (frameless chrome matching other AetherSDR pop-outs) containing a vertical stack of band strips. Each strip shows:
┌─────────────────────────────────────────────────────────────────┐
│ 20m 14.175 [════════════════════════════════════════════] 23:14│
│ 15m 21.200 [░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 23:15│
│ 10m 28.400 [▓▓░░▓▓▓▓░░░░▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓▓░░░░░░░░░░░] 23:16│
│ 12m 24.940 [░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 23:13│
└─────────────────────────────────────────────────────────────────┘
- Band label and centre frequency on the left
- Waterfall strip filling the remaining width
- Timestamp of last completed dwell on the right
- A thin animated progress bar under the currently-active band showing dwell progress
- Bands sorted in the configured order; disabled bands hidden
Click to tune: clicking anywhere on a strip tunes the operator's active slice to that band's centre frequency and switches the main panadapter to the same span — the same behaviour as clicking a DX spot in SpotHub.
Cycle time indicator: a small readout at the top of the window shows the total cycle time and time until the next full refresh, e.g. Cycle: 11 min — next: 4 min 20 s.
Strip logging (optional)
When enabled, completed strips are written to disk as PNG files in a configurable directory, named bandmonitor_<band>_<ISO8601timestamp>.png. This allows post-session review of band conditions. Disabled by default.
AppSettings::setValue("BandMonitor/LogStrips", false)
AppSettings::setValue("BandMonitor/LogDirectory", "")
Controls
A small toolbar at the top of the Band Monitor window:
[▶ Start] [■ Stop] Dwell: [60 s ▾] [⚙ Configure bands] [💾 Log strips: off]
Start/stop persists across restarts if the window is open when AetherSDR closes (AppSettings::setValue("BandMonitor/AutoStart", false)).
Interaction with existing code
- Tuning via
PanadapterModel::centerMhz and existing pan set commands — no new protocol
- Waterfall data from
PanadapterStream VITA-49 frames, same path as SpectrumWidget
- Colour palette reused from existing waterfall renderer
- Click-to-tune reuses the same slice-tune path as SpotHub spot clicks
- Window chrome and resize behaviour matches existing floating pop-out windows
No new VITA-49 streams, subscriptions, or SmartSDR protocol commands are required.
Labels: feature GUI panadapter priority: medium
Request preparation
What would you like?
Let me look at a couple of existing issues first to make sure I reference the right internals for the panadapter and spectrum side.Good context gathered. Key classes I can reference:
PanadapterModel(per-pan state, ownscenterMhz),PanadapterStream(VITA-49 routing),SpectrumWidget(GPU waterfall renderer), andRadioModel(central state). Here is the feature request, raw and ready to copy:[Feature] Band traffic and band opening monitor mode
What
Add a Band Monitor mode that sequentially tunes a dedicated panadapter through a configurable list of amateur bands, dwells on each band for a configurable period, captures the FFT/waterfall data, and displays the result as a stack of per-band waterfall strips in a standalone floating window. The window gives the operator a at-a-glance view of activity across the entire HF spectrum even though the FlexRadio cannot capture the full HF range simultaneously.
Why
FlexRadio transceivers have a finite instantaneous bandwidth — even the widest pan on a FLEX-8600 cannot cover all amateur HF bands at once. During periods of variable propagation — a contest weekend, a greyline window, a sporadic-E opening on 10m — an operator at a remote or unattended station has no practical way to know which bands are open or active without manually stepping through them one by one.
Band Monitor solves this by automating that stepping and retaining the evidence. Each band's dwell produces a waterfall strip showing what was present during that minute. A band with an opening shows a noisy, signal-rich strip; a dead band shows a flat noise floor. The operator can scan the Band Monitor window at a glance and immediately see where activity is happening, then click to jump the main radio to that band.
Use cases:
How Other Software Does It
DX4WIN / DX Atlas propagation overlay
These tools predict band openings but show no actual RF evidence. Band Monitor complements them with measured data.
SDR# Scanner plugin
SDR# has a basic frequency scanner that steps through a list of frequencies and logs signal strength. It does not produce waterfalls per band and is not aware of ham band plans.
HDSDR / SDRangel
Both support panoramic display across a wide IF bandwidth but are limited to the hardware's instantaneous bandwidth — the same fundamental constraint the FlexRadio has. Neither implements a sequential dwell-and-capture approach.
Reverse Beacon Network (RBN)
RBN aggregates spot data from skimmers worldwide and gives a good picture of band activity, but requires an internet connection and only reflects CW/digital activity visible to skimmer stations. Band Monitor is fully local and captures the actual RF environment at the operator's antenna.
Suggested Behavior
Band list and configuration
A configurable ordered list of bands to scan, defaulting to all standard HF amateur bands (however any other HF band should be configurable):
Each entry is independently toggleable (checkbox) and editable (centre frequency, span). The full list and enabled state persist via
AppSettingsunderBandMonitor/BandList.Dwell time
Configurable per-scan dwell (default 60 s, range 5–300 s). During the dwell, the scanner holds the panadapter on the band and accumulates FFT frames. At dwell end it moves to the next enabled band. One full cycle = sum of all enabled dwell periods.
AppSettings::setValue("BandMonitor/DwellSeconds", 60)Panadapter assignment
Band Monitor operates on a dedicated panadapter that it creates and owns for the duration of the session. It does not disturb the operator's existing pans or slices. At session start it issues a
pan createcommand; at session end it issuespan remove. If the radio is at its pan limit (e.g. FLEX-6400 with one pan already open), Band Monitor warns the operator and offers to use the existing pan in a non-destructive time-share mode (pausing the scan when the operator manually tunes, resuming after a configurable idle timeout).The scanner tunes the pan by updating
PanadapterModel::centerMhzand sets the span via the existingpan setcommand path. No new protocol commands are required.Waterfall capture
During each dwell, FFT frames arriving from
PanadapterStreamare accumulated into a per-band frame buffer. At dwell end, the frames are composited into a single waterfall strip image — a fixed-height bitmap (suggested: 80 px tall) showing frequency on the X axis and time within the dwell on the Y axis. The colour mapping reuses the existing waterfall palette and reference level settings fromSpectrumWidget.Frame buffers are kept in memory for the most recent N complete cycles (default 3, configurable). Older cycles are discarded unless the operator has enabled strip logging (see below).
Band Monitor window
A floating, resizable window (frameless chrome matching other AetherSDR pop-outs) containing a vertical stack of band strips. Each strip shows:
Click to tune: clicking anywhere on a strip tunes the operator's active slice to that band's centre frequency and switches the main panadapter to the same span — the same behaviour as clicking a DX spot in SpotHub.
Cycle time indicator: a small readout at the top of the window shows the total cycle time and time until the next full refresh, e.g.
Cycle: 11 min — next: 4 min 20 s.Strip logging (optional)
When enabled, completed strips are written to disk as PNG files in a configurable directory, named
bandmonitor_<band>_<ISO8601timestamp>.png. This allows post-session review of band conditions. Disabled by default.AppSettings::setValue("BandMonitor/LogStrips", false)AppSettings::setValue("BandMonitor/LogDirectory", "")Controls
A small toolbar at the top of the Band Monitor window:
Start/stop persists across restarts if the window is open when AetherSDR closes (
AppSettings::setValue("BandMonitor/AutoStart", false)).Interaction with existing code
PanadapterModel::centerMhzand existingpan setcommands — no new protocolPanadapterStreamVITA-49 frames, same path asSpectrumWidgetNo new VITA-49 streams, subscriptions, or SmartSDR protocol commands are required.
Labels:
featureGUIpanadapterpriority: medium