ALSA: usb-audio: skip the broken mute control on AVerMedia GC553Pro

Skip the nonfunctional master mute control on the AVerMedia Live Gamer
ULTRA S GC553Pro (07ca:1553).

USB tracing shows that GET_CUR returns zero bytes instead of the required
one-byte value, both through usbfs and during ALSA initialization.
SET_CUR succeeds, but switching capture off does not mute HDMI audio.

Before the change, the driver exposed a misleading PCM Capture Switch
and logged: 3:2: failed to get current value for ch 0 (-22)

With the patch applied, the switch and warning are absent. A ten-second
sound recording through PipeWire confirmed that stereo 48 kHz, 16-bit
capture still works.

Tested on NixOS with the patched 7.3.0-rc3 kernel. The USB audio driver
object builds with Clang and W=1; sparse and strict checkpatch pass.

Signed-off-by: Asai Neko <sugar@sne.moe>
Link: https://patch.msgid.link/20260914-avermedia-gc553pro-alsa-v1-1-4c694e8b0cd5@sne.moe
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Asai Neko 2026-09-14 18:58:29 +08:00 committed by Takashi Iwai
parent 1c4f620287
commit 5ab3dc6477

View File

@ -531,6 +531,15 @@ static const struct usbmix_name_map audient_id24_map[] = {
{}
};
/*
* The GC553Pro returns no data for GET_CUR on its advertised mute control.
* SET_CUR succeeds but does not mute capture, so skip the control entirely.
*/
static const struct usbmix_name_map avermedia_gc553pro_map[] = {
{ 3, NULL, UAC_FU_MUTE },
{}
};
/*
* Control map entries
*/
@ -577,6 +586,10 @@ static const struct usbmix_ctl_map usbmix_ctl_maps[] = {
.id = USB_ID(0x0763, 0x2031),
.selector_map = c400_selectors,
},
{
.id = USB_ID(0x07ca, 0x1553),
.map = avermedia_gc553pro_map,
},
{
.id = USB_ID(0x08bb, 0x2702),
.map = linex_map,