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
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 nonode.description. They'reambiguous and clutter the picker next to the now-named DAX devices.
Evidence (
pw-cli ls Node, Linux / pipewire-pulse, patched #3437 build)These carry
node.name="AetherSDR"(fromQCoreApplication::applicationName,src/main.cpp:161) and nonode.description, so PipeWire disambiguates duplicates with itsobject id →
AetherSDR-127, etc.Likely area
src/core/AudioEngine.cpp— the main RX playback / TX-mic streams via the higher-level audiobackend (QAudioSink/QAudioSource / PortAudio), not the DAX
module-pipe-source/sinkpath inPipeWireAudioBridge.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_propertiesstring so a spaceddevice.descriptionsurvivespipewire-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/PortAudiostreams, not a
pactlproperty 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