-
Notifications
You must be signed in to change notification settings - Fork 63
Support and 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.
Opens a dialog with three sections stacked vertically:
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.
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.
| 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 |
Clicking File an Issue does four things in sequence:
-
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. - 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.
- Copies the prompt to your clipboard so you can paste it directly into Claude / ChatGPT / etc.
- 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.
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:
- Copies a structured prompt to your clipboard
- 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.
| 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 |
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/AetherSDRThe QT_LOGGING_RULES syntax is <category>=<true|false>, multiple
rules separated by ;. Useful when the bug prevents the GUI from
opening at all.
-
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.jsonincludes 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.xmlstrips known sensitive keys but if you're paranoid, delete the bundle and send only the redacted log.
- 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