[PATCH 0/4] ALSA: usb-audio: Demote the severity of sticky GET_CUR

From: Rong Zhang

Date: Sat Aug 22 2026 - 14:53:44 EST


Currently, a mixer is disabled when its GET_CUR is sticky, causing
userspace to fall back to soft mixers, unless
QUIRK_FLAG_MIXER_GET_CUR_BROKEN is set. This leads to issues on some
wireless headphones with broken GET_CUR but effective SET_CUR, which use
poorly-performed lossy codecs and are prone to audible distortion at low
volume. They have to set the quirk flag to reeanble the mixer.

Considering that users can always opt into soft mixers if they need it,
i.e., when SET_CUR is stubbed, demote the severity of sticky GET_CUR by
marking GET_CUR as broken and only provide mixer values from the cache.
The mixer itself is still registered.

The default behavior of sticky check now becomes what
QUIRK_FLAG_MIXER_GET_CUR_BROKEN originally does, so the quirk flag is no
longer needed.

On some devices, whether their GET_CUR being sticky depends on whether
hotpluggable components are present. When the hotpluggable components
are missing on probe, their GET_CUR behavior is classified as broken.
Therefore, reverse QUIRK_FLAG_MIXER_GET_CUR_BROKEN as
QUIRK_FLAG_MIXER_GET_CUR_OK, so that it can be set to prevent the
heuristics from gating GET_CUR.

Note that even if the quirk flag is set, init_cur_mix_raw() should still
initialize the mixer value to cval->min, otherwise restoring the bogus
saved value on the first channel could lead to unbalanced channels.

The first user of QUIRK_FLAG_MIXER_GET_CUR_OK is Logitech PRO X
Wireless, whose Playback mixer's GET_CUR somehow becomes broken when the
microphone is detached, so set QUIRK_FLAG_MIXER_GET_CUR_OK to prevent
the mixer behavior from depending on whether the microphone is attached.
The device also needs QUIRK_FLAG_MIXER_PLAYBACK_MIN_MUTE as the minimum
mixer value doesn't work properly.

Reported-by: Alexander Niemeyer <adventureFAN@xxxxxx>
Closes: https://msgid.link/6262cbbd-d1f2-4c9d-a1c7-9c5d12636f4b@xxxxxx
Closes: https://msgid.link/7984832b-86f6-4934-bfc0-1ed70218973a@xxxxxx
Signed-off-by: Rong Zhang <i@xxxxxxxx>
---
Rong Zhang (4):
ALSA: doc: usb-audio: Add doc for QUIRK_FLAG_ALWAYS_SET_RATE
ALSA: usb-audio: Demote the severity of sticky GET_CUR
ALSA: usb-audio: Reverse MIXER_GET_CUR_BROKEN as MIXER_GET_CUR_OK
ALSA: usb-audio: Add quirk flags for Logitech PRO X Wireless

Documentation/sound/alsa-configuration.rst | 25 ++++-----
sound/usb/mixer.c | 82 ++++++++++--------------------
sound/usb/quirks.c | 19 +++----
sound/usb/usbaudio.h | 24 ++++-----
4 files changed, 56 insertions(+), 94 deletions(-)
---
base-commit: 26260251022fbc2f248a3d747a9b2b961b18d2d8
change-id: bfb273cc-uac-demote-sticky-check-f92d4aaca7e6

Thanks,
Rong