https://bugs.kde.org/show_bug.cgi?id=523256
Bug ID: 523256
Summary: Volume keys from a USB headset adapter's HID interface
adjust the default sink instead of the headset's own
sink
Classification: Plasma
Product: plasmashell
Version First master
Reported In:
Platform: Ubuntu
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: Audio Volume widget
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected]
Target Milestone: 1.0
DESCRIPTION
The Poly BT700 (047f:02e6, paired with a Poly Voyager Focus 2 headset) is
a composite USB device: a USB audio class interface plus a HID
consumer-control interface for the on-headset volume buttons.
The adapter's button behavior is state-dependent:
- When its audio interface is idle/suspended, the buttons adjust the
headset's volume locally in firmware. No evdev events are emitted
(verified with `libinput debug-events` and `evtest`).
- When a stream is active on the device, the firmware stops adjusting
volume locally and instead emits generic KEY_VOLUMEUP / KEY_VOLUMEDOWN
HID events, delegating volume control to the host. This matches the
behavior of the same hardware on Windows, where the OS routes those
events back to the originating device's audio endpoint, so the headset
volume changes.
On Plasma, those events are handled as the global Increase/Decrease
Volume shortcuts and applied to the default audio device (in my case, desktop
speakers). The headset's own volume in KDE is never touched.
Practical impact: the buttons misroute during exactly the situations a
headset is used for. Any softphone call (Teams, Zoom, etc.) holds the
mic/playback streams open for its duration, so for the whole call the
headset's volume buttons change the speaker volume and there is no way
to adjust the headset volume from the headset.
The device-active trigger was confirmed via the Audio Volume
applet/settings window itself: its peak meters open a capture stream on
the adapter's mic, which resumes the suspended node and flips the
firmware into host-controlled mode.
I understand KWin and kglobalaccel are not at fault here (the key event
is delivered faithfully, and the global shortcut API carries no
source-device information), and that a complete fix may belong in
PipeWire/WirePlumber (associating HID volume events from a composite
USB audio device with that device's node).. Filing here as
well since the user-visible symptom is in Plasma's volume handling.
STEPS TO REPRODUCE
1. Connect a Poly BT700 adapter (with paired headset). Leave the
default sink set to a different output (e.g. desktop speakers).
2. Activate a stream on the adapter. Easiest reproduction: open the
Audio Volume applet or the Audio page in System Settings, whose peak
meters open a capture stream on the device. A softphone call
reproduces it identically.
3. Press the volume up/down buttons on the headset.
OBSERVED RESULT
- The default sink (speakers) volume changes.
- The headset sink's volume is unchanged (its slider never moves), and
the headset's local volume-change feedback tones are absent.
- `libinput debug-events` shows the adapter emitting key events, e.g.:
-event14 KEYBOARD_KEY +8.673s KEY_VOLUMEUP (115) pressed
event14 KEYBOARD_KEY +8.675s KEY_VOLUMEUP (115) released
- With no stream active on the device, no evdev events are emitted at
all and the headset adjusts its own volume in firmware (feedback
tones audible), which is the expected behavior.
EXPECTED RESULT
Volume key events originating from an audio device's own HID interface
should adjust that device's sink, not the default sink -- matching the
behavior of the same hardware on Windows.
SOFTWARE/OS VERSIONS
Operating System: Kubuntu 26.04 LTS
KDE Plasma Version: 6.6.5
KDE Frameworks Version: 6.24.0
Qt Version: 6.10.2
ADDITIONAL INFORMATION
- Kernel: 7.0.0-28-generic (64-bit), Graphics Platform: Wayland
- PipeWire 1.6.2 (libpipewire 1.6.2)
- Headset: Poly Voyager Focus 2 via Poly BT700 USB adapter
(lsusb: 047f:02e6 Plantronics, Inc. Poly BT700)
- Related (not duplicate) reports filed under the retired plasma-pa
product: Bug 365771, Bug 456310 -- both concern volume keys targeting
the default device, but neither covers the composite-device HID
delegation described here.
--
You are receiving this mail because:
You are watching all bug changes.