aethersdr / aethersdr/AetherSDR
App's own RX/TX audio streams show as generic "AetherSDR" (no node.description) in device lists
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 221
- Forks
- 117
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 299
Description
Summary
Follow-up to #3437 (which named the DAX/TX pipe nodes). AetherSDR's own main audio I/O
streams — the RX-audio playback and the TX-mic capture — still appear in PipeWire/Pulse device
lists (qpwgraph, pavucontrol, and the WSJT-X / FLDIGI device dropdowns) as a generic
AetherSDR / AetherSDR-<id> (e.g. AetherSDR-127), with no node.description. They're
ambiguous and clutter the picker next to the now-named DAX devices.
Evidence (pw-cli ls Node, Linux / pipewire-pulse, patched #3437 build)
id 93 node.name="AetherSDR" media.class="Stream/Output/Audio" ← app RX audio out
id 105 node.name="AetherSDR" media.class="Stream/Output/Audio" ← app RX audio out
id 127 node.name="AetherSDR" media.class="Stream/Input/Audio" ← app TX-mic in ("AetherSDR-127")
These carry node.name="AetherSDR" (from QCoreApplication::applicationName,
src/main.cpp:161) and no node.description, so PipeWire disambiguates duplicates with its
object id → AetherSDR-127, etc.
Likely area
src/core/AudioEngine.cpp — the main RX playback / TX-mic streams via the higher-level audio
backend (QAudioSink/QAudioSource / PortAudio), not the DAX module-pipe-source/sink path in
PipeWireAudioBridge.cpp.
Why this is separate from #3437 (kept intentionally split)
#3437 is a focused, 2-line quoting fix in the DAX pipe bridge — single-quoting the
source_properties / sink_properties string so a spaced device.description survives
pipewire-pulse's argument parser. These app streams live in a different code path and need a
different mechanism (a per-stream node.description / media name on the QAudio/PortAudio
streams, not a pactl property string), with its own verification. Bundling them would expand
#3437 across two subsystems and slow review; splitting keeps that fix small and mergeable while
tracking the remaining naming gap here.
Proposed
Set a descriptive per-stream name on the main RX/TX streams (e.g. AetherSDR RX Audio,
AetherSDR TX Mic) so every AetherSDR node is identifiable in patchbays and app device lists.
Related: #3437
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in src/core/AudioEngine.cpp and trace how the QAudioSink/QAudioSource or PortAudio RX and TX streams are created. Verify the resulting nodes with pw-cli and check qpwgraph, pavucontrol, WSJT-X, and FLDIGI device lists; done means the streams have distinct descriptive names such as AetherSDR RX Audio and AetherSDR TX Mic.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100