aethersdr / aethersdr/AetherSDR

App's own RX/TX audio streams show as generic "AetherSDR" (no node.description) in device lists

Open
#3,440 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

audio enhancement maintainer-review priority: low
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.