Skip to content

Support and Logging

Jeremy Fielder edited this page May 9, 2026 · 1 revision

Support & Logging

When something isn't working, AetherSDR has two purpose-built surfaces for getting help: a Support & Diagnostics dialog (Help → Support…) for log capture and bug-reporting, and an AI-Assisted Issue Reporter (Help → Submit your idea… 💡) for turning a plain-English description into a structured GitHub issue.

This page covers both, plus the underlying log-file layout and category toggles you can drive directly from a settings file or the command line.


Help → Support… (Support & Diagnostics)

Opens a dialog with three sections stacked vertically:

1. Diagnostic Logging

A grid of checkboxes for every log category — flip on the ones relevant to your problem before reproducing the bug, then read the live log viewer below.

Label Category Covers
Discovery aether.discovery UDP radio discovery broadcasts
Connection / Commands aether.connection Raw TCP command channel: TX commands, RX responses, socket state
Protocol / Status aether.protocol Parsed SmartSDR protocol handling, model status updates
Audio aether.audio RX/TX audio, device negotiation, volume
VITA-49 aether.vita49 UDP packet routing: FFT, waterfall, meters, DAX
DSP aether.dsp NR2 / NR4 / DFNR / RN2 / BNR / MNR processing, CW decoder
RADE aether.rade FreeDV Radio Autoencoder digital voice
SmartLink aether.smartlink Auth0 login, TLS tunnel, WAN streaming
CAT / rigctld aether.cat rigctld TCP servers, PTY virtual serial ports
DAX aether.dax Virtual audio bridge (PipeWire / CoreAudio)
Meters aether.meters Meter definitions and value conversion
Transmit aether.transmit TX state, ATU, profiles, power control
Firmware aether.firmware Firmware download, staging, upload
Tuner / AGM aether.tuner TGXL tuner, Antenna Genius state
GUI aether.gui Window, applets, dialogs
DX Cluster aether.dxcluster Cluster telnet connection and spot parsing
MQTT aether.mqtt MQTT telemetry client
RBN aether.rbn Reverse Beacon Network connection and spots
Ext Devices aether.devices Serial port, FlexControl, MIDI, HID encoder
Performance aether.perf Render timing and CPU profiling
Propagation aether.propforecast Solar and propagation forecast updates
CW / netCW aether.cw CW keying, MIDI paddle, iambic, netCW timing
S History aether.shistory Signal History detection internals

Defaults: Discovery, Connection / Commands, and Protocol / Status are on out of the box — enough to reproduce most connection and protocol-level bugs without flooding the log. The rest are off until you flip them on.

The Enable All / Disable All buttons under the grid toggle every category at once — useful for "give me everything" debugging sessions when filing a complex bug.

2. Log file viewer

A live tail of aethersdr.log showing the most recent ~2000 lines. Refreshes automatically as new entries arrive while the dialog is open. The path to the file is displayed above the viewer.

Log file locations

Platform Path
Linux ~/.config/AetherSDR/AetherSDR/aethersdr.log
macOS ~/Library/Preferences/AetherSDR/AetherSDR/aethersdr.log
Windows %APPDATA%/AetherSDR/AetherSDR/aethersdr.log

The log writer redacts known token patterns (id_token=, token=, etc.) and the radio's serial number to ****-****-****-XXXX before writing — but always skim a log before sending it to anyone.

3. Action buttons

Button What
Refresh Re-read the log file from disk
Clear Log Truncate the log file (you'll usually do this before reproducing the bug, then run it once and capture clean output)
Open Log Folder Open the log directory in your file manager
Reset Settings Delete AetherSDR's local settings + NR2 wisdom cache. Radio settings stay on the radio. Useful as a "factory reset" for client-side state.
File an Issue Builds a support bundle, generates an AI prompt with system info, copies the prompt to your clipboard, and opens GitHub's bug-report form

File an Issue workflow

Clicking File an Issue does four things in sequence:

  1. Builds a support bundle — a timestamped zip in your downloads directory containing system info (Aether version, Qt version, OS, kernel, CPU arch, build date), radio info (model, redacted serial, firmware, protocol version, callsign, IP, connected state), the redacted settings XML, and the current aethersdr.log.
  2. Generates an AI prompt with all of the above pre-filled, plus a directive that the AI read CLAUDE.md from the repo for architectural context before writing the report.
  3. Copies the prompt to your clipboard so you can paste it directly into Claude / ChatGPT / etc.
  4. Opens GitHub's bug-report form in your browser ready for the AI's output.

A typical loop: paste the prompt into your AI of choice → describe the bug in plain English in the bracketed section → take the AI's output → paste it into the GitHub form → attach the support bundle zip → submit.


Help → Submit your idea… 💡 (AI-Assisted Issue Reporter)

Same general idea as the File an Issue path above, but purpose-built for feature requests and conceptual bug reports rather than runtime diagnostics — no support bundle is generated; the prompt is structured for either feature requests OR bug reports.

The dialog opens with five AI provider buttons (Claude, ChatGPT, Gemini, Grok, Perplexity). Click any one and AetherSDR:

  1. Copies a structured prompt to your clipboard
  2. Opens that AI's web interface in your browser

Paste the prompt into the AI, replace the [bracketed] section with your idea or bug description, and the AI generates a complete GitHub issue body in AetherSDR's preferred format (What / Why / How Other Clients Do It / Suggested Behavior / Protocol Hints / Acceptance Criteria for features; What happened / What I expected / Steps to reproduce / Environment / Suggested fix for bugs).

When the AI's done, click Submit Your Idea (feature request) or Report a Bug in the AetherSDR dialog — both open the appropriate GitHub issue template ready for paste.

You also see this entry-point as the lightbulb 💡 button in AetherSDR's title bar.


When to use which

Situation Use
App crashes or behaves wrongly while you're operating Help → Support… → reproduce → File an Issue
Audio glitch / spectrum freeze / DAX problem Help → Support… with the relevant categories enabled
You want a feature added Help → Submit your idea… 💡 (or the title-bar lightbulb)
Conceptual bug report ("the X dialog should do Y") Help → Submit your idea… 💡
Protocol / firmware-level bug Help → Support… with Protocol / Status + Connection / Commands enabled
Connection / discovery problems Help → Support… with Discovery + Connection / Commands enabled
SmartLink WAN issue Help → Support… with SmartLink + Audio + VITA-49 enabled

Driving log categories from outside the app

The log categories are also Qt logging categories (aether.connection, aether.protocol, aether.audio, …) so you can override them from the environment without opening the dialog:

QT_LOGGING_RULES="aether.protocol=true;aether.audio=true" ./build/AetherSDR

The QT_LOGGING_RULES syntax is <category>=<true|false>, multiple rules separated by ;. Useful when the bug prevents the GUI from opening at all.


Privacy notes

  • Never post your radio's serial number in public issues — the AsyncLogWriter redacts serials in log lines, but a fresh support bundle's radio-info.json includes it. Strip or redact before attaching to a public issue.
  • Never post your IP address in public issues — same reason. The support bundle includes radio IP; LAN IPs are usually RFC1918 and harmless, but WAN IPs (SmartLink) can be fingerprinting fodder.
  • Auth0 tokens, refresh tokens, and any id_token= strings are redacted in the log writer and should never appear in a bundle — but skim before sending.
  • MQTT broker passwords (if you've configured one) are currently stored plaintext in the settings XML; the bundle's settings.xml strips known sensitive keys but if you're paranoid, delete the bundle and send only the redacted log.

Clone this wiki locally