* [REGRESSION] Audient EVO4 hardware volume control now requires quirk
@ 2026-09-26 13:03 Faaris Ansari
2026-09-27 14:26 ` Sasha Levin
0 siblings, 1 reply; 16+ messages in thread
From: Faaris Ansari @ 2026-09-26 13:03 UTC (permalink / raw)
To: stable; +Cc: regressions, linux-sound
#regzbot introduced: v7.1.13..v7.2.5
Hello,
A new regression has been introduced between an update on my system
from kernel 7.1.13 to 7.2.5. When attempting to control the volume of
my audio interface (Audient EVO4) through pipewire / wireplumber, it
attempts to modify the hardware volume, then falls back to modifying
the software volume instead. This causes the system volume to be
dramatically lower when modifying it through software. However, moving
the hardware knob very slightly to change the volume brings the
software volume back up to 1.0.
I confirmed this is a kernel regression by reverting only the kernel
on my system back to the working 7.1.13 (now EOL) version, where the
issue did not occur. I also tested both the 6.12 and 6.18 LTS
branches, and the issue also occurred there.
I also worked through troubleshooting this with a WirePlumber
developer to confirm it isn't an issue with the PipeWire stack:
https://gitlab.freedesktop.org/pipewire/wireplumber/-/work_items/1022
I was able to work around the issue by adding extra modprobe config to
my system, specifically the below:
options snd_usb_audio quirk_flags=2708:0006:ignore_ctl_error
Does this quirk need to be added to the snd_usb_audio module or is
there an underlying fix somewhere else?
While troubleshooting I also attempted to patch my kernel with this
patch set hoping it would help with the problem:
https://lore.kernel.org/lkml/20260919151840.24371-1-arc@gmx.li/
The patch set worked fine but this specific problem was still
occurring. Using both the patch set and the quirk above makes the EVO4
work perfectly however.
Would appreciate further guidance on helping to debug.
Thanks,
Faaris
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-09-26 13:03 [REGRESSION] Audient EVO4 hardware volume control now requires quirk Faaris Ansari
@ 2026-09-27 14:26 ` Sasha Levin
2026-09-27 22:50 ` Faaris Ansari
0 siblings, 1 reply; 16+ messages in thread
From: Sasha Levin @ 2026-09-27 14:26 UTC (permalink / raw)
To: stable
Cc: Sasha Levin, regressions, linux-sound, Faaris Ansari,
Cássio Gabriel, Takashi Iwai, Jaroslav Kysela
> I was able to work around the issue by adding extra modprobe config to
> my system, specifically the below:
>
> options snd_usb_audio quirk_flags=2708:0006:ignore_ctl_error
>
> Does this quirk need to be added to the snd_usb_audio module or is
> there an underlying fix somewhere else?
The likely cause is 87a6f2fa6e6c ("ALSA: usb-audio: Propagate write errors
in generic mixer put callbacks"). It is in 7.2 and was backported to 6.18.53
and 6.12.111. Before it, a failed SET_CUR in the mixer put callbacks was
ignored and userspace saw success. Now the error is returned unless
ignore_ctl_error is set, which is exactly what your workaround does. It is
the only functional change to sound/usb/mixer.c between 7.1.13 and 7.2.5.
Could you confirm by reverting just that commit on 7.2.y or 6.18.y and
testing without the quirk_flags option?
--
Thanks,
Sasha
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-09-27 14:26 ` Sasha Levin
@ 2026-09-27 22:50 ` Faaris Ansari
2026-09-28 16:46 ` Sasha Levin
0 siblings, 1 reply; 16+ messages in thread
From: Faaris Ansari @ 2026-09-27 22:50 UTC (permalink / raw)
To: Sasha Levin
Cc: stable, regressions, linux-sound, Cássio Gabriel,
Takashi Iwai, Jaroslav Kysela
Hi Sasha,
It seems you're right. Reverting that change has fixed the volume
control with my interface - I made sure to remove the quirk flags
whilst testing.
What are the next steps here? Is there a problem with that patch, or
do we need to add a quirk for the EVO4 in the kernel?
Faaris
On Sun, 27 Sept 2026 at 15:27, Sasha Levin <sashal@kernel.org> wrote:
>
> > I was able to work around the issue by adding extra modprobe config to
> > my system, specifically the below:
> >
> > options snd_usb_audio quirk_flags=2708:0006:ignore_ctl_error
> >
> > Does this quirk need to be added to the snd_usb_audio module or is
> > there an underlying fix somewhere else?
>
> The likely cause is 87a6f2fa6e6c ("ALSA: usb-audio: Propagate write errors
> in generic mixer put callbacks"). It is in 7.2 and was backported to 6.18.53
> and 6.12.111. Before it, a failed SET_CUR in the mixer put callbacks was
> ignored and userspace saw success. Now the error is returned unless
> ignore_ctl_error is set, which is exactly what your workaround does. It is
> the only functional change to sound/usb/mixer.c between 7.1.13 and 7.2.5.
>
> Could you confirm by reverting just that commit on 7.2.y or 6.18.y and
> testing without the quirk_flags option?
>
> --
> Thanks,
> Sasha
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-09-27 22:50 ` Faaris Ansari
@ 2026-09-28 16:46 ` Sasha Levin
2026-09-28 16:53 ` Faaris Ansari
0 siblings, 1 reply; 16+ messages in thread
From: Sasha Levin @ 2026-09-28 16:46 UTC (permalink / raw)
To: Faaris Ansari
Cc: Sasha Levin, stable, regressions, linux-sound,
Cássio Gabriel, Takashi Iwai, Jaroslav Kysela
> It seems you're right. Reverting that change has fixed the volume
> control with my interface - I made sure to remove the quirk flags
> whilst testing.
>
> What are the next steps here? Is there a problem with that patch, or
> do we need to add a quirk for the EVO4 in the kernel?
Thanks for testing.
Takashi, Cássio: before 87a6f2fa6e6c ("ALSA: usb-audio: Propagate write
errors in generic mixer put callbacks"), a failed SET_CUR in the mixer
put callbacks was ignored. Now it is returned to userspace, and on the
EVO4 (2708:0006) that breaks hardware volume control. Would you prefer a
QUIRK_FLAG_IGNORE_CTL_ERROR entry for 2708:0006, or a revert or rework
of that commit? Any other device that rejects SET_CUR on a single
control or channel will regress the same way.
Faaris, to help with that decision, could you send:
1. dmesg with snd_usb_audio debug output enabled while you change the
volume without the quirk, using
echo 'module snd_usb_audio +p' > /sys/kernel/debug/dynamic_debug/control
(the "cannot set ctl value" lines are the useful ones)
2. lsusb -v -d 2708:0006
3. amixer -c <card> contents
--
Thanks,
Sasha
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-09-28 16:46 ` Sasha Levin
@ 2026-09-28 16:53 ` Faaris Ansari
2026-09-28 22:39 ` Sasha Levin
0 siblings, 1 reply; 16+ messages in thread
From: Faaris Ansari @ 2026-09-28 16:53 UTC (permalink / raw)
To: Sasha Levin, Faaris Ansari
Cc: stable, regressions, linux-sound, Cássio Gabriel,
Takashi Iwai, Jaroslav Kysela
Hi, yeah of course I can provide you with this info - I installed the
latest 7.3-rc5 for testing.
Below are the dmesg logs that you requested:
[ 80.940668] usb 3-1: cannot set ctl value: req = 0x1, wValue = 0x203,
wIndex = 0xa00, type = 4, data = 0x0/0x81
[ 80.944292] usb 3-1: cannot set ctl value: req = 0x1, wValue = 0x203,
wIndex = 0xa00, type = 4, data = 0x0/0x81
[ 80.947542] usb 3-1: cannot set ctl value: req = 0x1, wValue = 0x203,
wIndex = 0xa00, type = 4, data = 0x0/0xdc
[ 80.950794] usb 3-1: cannot set ctl value: req = 0x1, wValue = 0x203,
wIndex = 0xa00, type = 4, data = 0x0/0x81
Below is the output of lsusb -v -d 2708:0006:
Bus 003 Device 002: ID 2708:0006 Audient EVO4
Negotiated speed: High Speed (480Mbps)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 [unknown]
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x2708 Audient
idProduct 0x0006 EVO4
bcdDevice 1.4c
iManufacturer 1 Audient
iProduct 3 EVO4
iSerial 0
bNumConfigurations 2
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x01d6
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 3
bFunctionClass 1 Audio
bFunctionSubClass 0 [unknown]
bFunctionProtocol 32
iFunction 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 32
iInterface 3
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 2.00
bCategory 8
wTotalLength 0x0100
bmControls 0x01
Latency control Control (read-only)
AudioControl Interface Descriptor:
bLength 8
bDescriptorType 36
bDescriptorSubtype 10 (CLOCK_SOURCE)
bClockID 41
bmAttributes 3 Internal programmable clock
bmControls 0x07
Clock Frequency Control (read/write)
Clock Validity Control (read-only)
bAssocTerminal 0
iClockSource 9
AudioControl Interface Descriptor:
bLength 8
bDescriptorType 36
bDescriptorSubtype 11 (CLOCK_SELECTOR)
bClockID 40
bNrInPins 1
baCSourceID(0) 41
bmControls 0x03
Clock Selector Control (read/write)
iClockSelector 8
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 2
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bCSourceID 40
bNrChannels 4
bmChannelConfig 0x00000000
iChannelNames 11
bmControls 0x0000
iTerminal 6
AudioControl Interface Descriptor:
bLength 26
bDescriptorType 36
bDescriptorSubtype 6 (FEATURE_UNIT)
bUnitID 10
bSourceID 2
bmaControls(0) 0x00000000
bmaControls(1) 0x0000000c
Volume Control (read/write)
bmaControls(2) 0x0000000c
Volume Control (read/write)
bmaControls(3) 0x0000000c
Volume Control (read/write)
bmaControls(4) 0x0000000c
Volume Control (read/write)
iFeature 0
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 20
wTerminalType 0x0301 Speaker
bAssocTerminal 0
bSourceID 59
bCSourceID 40
bmControls 0x0000
iTerminal 0
AudioControl Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 9 (EXTENSION_UNIT)
bUnitID 59
wExtensionCode 0x0000
bNrInPins 1
baSourceID(0) 56
bNrChannels 2
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x3f
Enable Control (read/write)
Cluster Control (read/write)
Underflow Control (read/write)
iExtension 0
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 1
wTerminalType 0x0201 Microphone
bAssocTerminal 0
bCSourceID 40
bNrChannels 4
bmChannelConfig 0x00000000
iChannelNames 15
bmControls 0x0000
iTerminal 0
AudioControl Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 9 (EXTENSION_UNIT)
bUnitID 58
wExtensionCode 0x0000
bNrInPins 1
baSourceID(0) 1
bNrChannels 2
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0xff
Enable Control (read/write)
Cluster Control (read/write)
Underflow Control (read/write)
Overflow Control (read/write)
iExtension 0
AudioControl Interface Descriptor:
bLength 26
bDescriptorType 36
bDescriptorSubtype 6 (FEATURE_UNIT)
bUnitID 11
bSourceID 1
bmaControls(0) 0x00000000
bmaControls(1) 0x0000000c
Volume Control (read/write)
bmaControls(2) 0x0000000c
Volume Control (read/write)
bmaControls(3) 0x0000000c
Volume Control (read/write)
bmaControls(4) 0x0000000c
Volume Control (read/write)
iFeature 0
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 22
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bSourceID 60
bCSourceID 40
bmControls 0x0000
iTerminal 7
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 9 (EXTENSION_UNIT)
bUnitID 50
wExtensionCode 0x0000
bNrInPins 2
baSourceID(0) 11
baSourceID(1) 10
bNrChannels 6
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x03
Enable Control (read/write)
iExtension 0
AudioControl Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 4 (MIXER_UNIT)
bUnitID 60
bNrInPins 1
baSourceID(0) 50
bNrChannels 2
bmChannelConfig 0x00000000
iChannelNames 19
bmMixerControls(0) 0xff
bmControls 0xff
Cluster Control (read/write)
Underflow Control (read/write)
Overflow Control (read/write)
iMixer 0
Warning: Junk at end of descriptor (1 bytes):
00
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 9 (EXTENSION_UNIT)
bUnitID 56
wExtensionCode 0x0000
bNrInPins 2
baSourceID(0) 11
baSourceID(1) 10
bNrChannels 2
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x00
iExtension 0
AudioControl Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 9 (EXTENSION_UNIT)
bUnitID 57
wExtensionCode 0x0000
bNrInPins 1
baSourceID(0) 2
bNrChannels 0
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x00
iExtension 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0006 1x 6 bytes
bInterval 8
INTERFACE CLASS: 10 24 09 3e 00 00 01 01 01 00 00 00 00 00 00 00
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 4
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 2
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 4
bmChannelConfig 0x00000000
iChannelNames 11
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 4
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x00d0 1x 208 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 0x0008
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 17
Transfer Type Isochronous
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 2
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 4
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 2
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 4
bmChannelConfig 0x00000000
iChannelNames 11
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 2
bBitResolution 16
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0068 1x 104 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 0x0008
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 17
Transfer Type Isochronous
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 5
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 5
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 22
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 4
bmChannelConfig 0x00000000
iChannelNames 15
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 4
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x00d0 1x 208 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 0x0008
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 254 Application Specific Interface
bInterfaceSubClass 1 Device Firmware Update
bInterfaceProtocol 1
iInterface 10
Device Firmware Upgrade Interface Descriptor:
bLength 9
bDescriptorType 33
bmAttributes 7
Will Not Detach
Manifestation Tolerant
Upload Supported
Download Supported
wDetachTimeout 250 milliseconds
wTransferSize 64 bytes
bcdDFUVersion 1.10
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x01d6
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 3
bFunctionClass 1 Audio
bFunctionSubClass 0 [unknown]
bFunctionProtocol 32
iFunction 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 32
iInterface 3
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 2.00
bCategory 8
wTotalLength 0x0100
bmControls 0x01
Latency control Control (read-only)
AudioControl Interface Descriptor:
bLength 8
bDescriptorType 36
bDescriptorSubtype 10 (CLOCK_SOURCE)
bClockID 41
bmAttributes 3 Internal programmable clock
bmControls 0x07
Clock Frequency Control (read/write)
Clock Validity Control (read-only)
bAssocTerminal 0
iClockSource 9
AudioControl Interface Descriptor:
bLength 8
bDescriptorType 36
bDescriptorSubtype 11 (CLOCK_SELECTOR)
bClockID 40
bNrInPins 1
baCSourceID(0) 41
bmControls 0x03
Clock Selector Control (read/write)
iClockSelector 8
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 2
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bCSourceID 40
bNrChannels 4
bmChannelConfig 0x00000000
iChannelNames 11
bmControls 0x0000
iTerminal 6
AudioControl Interface Descriptor:
bLength 26
bDescriptorType 36
bDescriptorSubtype 6 (FEATURE_UNIT)
bUnitID 10
bSourceID 2
bmaControls(0) 0x00000000
bmaControls(1) 0x0000000c
Volume Control (read/write)
bmaControls(2) 0x0000000c
Volume Control (read/write)
bmaControls(3) 0x0000000c
Volume Control (read/write)
bmaControls(4) 0x0000000c
Volume Control (read/write)
iFeature 0
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 20
wTerminalType 0x0301 Speaker
bAssocTerminal 0
bSourceID 59
bCSourceID 40
bmControls 0x0000
iTerminal 0
AudioControl Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 9 (EXTENSION_UNIT)
bUnitID 59
wExtensionCode 0x0000
bNrInPins 1
baSourceID(0) 56
bNrChannels 2
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x3f
Enable Control (read/write)
Cluster Control (read/write)
Underflow Control (read/write)
iExtension 0
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 1
wTerminalType 0x0201 Microphone
bAssocTerminal 0
bCSourceID 40
bNrChannels 4
bmChannelConfig 0x00000000
iChannelNames 15
bmControls 0x0000
iTerminal 0
AudioControl Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 9 (EXTENSION_UNIT)
bUnitID 58
wExtensionCode 0x0000
bNrInPins 1
baSourceID(0) 1
bNrChannels 2
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0xff
Enable Control (read/write)
Cluster Control (read/write)
Underflow Control (read/write)
Overflow Control (read/write)
iExtension 0
AudioControl Interface Descriptor:
bLength 26
bDescriptorType 36
bDescriptorSubtype 6 (FEATURE_UNIT)
bUnitID 11
bSourceID 1
bmaControls(0) 0x00000000
bmaControls(1) 0x0000000c
Volume Control (read/write)
bmaControls(2) 0x0000000c
Volume Control (read/write)
bmaControls(3) 0x0000000c
Volume Control (read/write)
bmaControls(4) 0x0000000c
Volume Control (read/write)
iFeature 0
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 22
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bSourceID 60
bCSourceID 40
bmControls 0x0000
iTerminal 7
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 9 (EXTENSION_UNIT)
bUnitID 50
wExtensionCode 0x0000
bNrInPins 2
baSourceID(0) 11
baSourceID(1) 10
bNrChannels 6
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x03
Enable Control (read/write)
iExtension 0
AudioControl Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 4 (MIXER_UNIT)
bUnitID 60
bNrInPins 1
baSourceID(0) 50
bNrChannels 2
bmChannelConfig 0x00000000
iChannelNames 19
bmMixerControls(0) 0xff
bmControls 0xff
Cluster Control (read/write)
Underflow Control (read/write)
Overflow Control (read/write)
iMixer 0
Warning: Junk at end of descriptor (1 bytes):
00
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 9 (EXTENSION_UNIT)
bUnitID 56
wExtensionCode 0x0000
bNrInPins 2
baSourceID(0) 11
baSourceID(1) 10
bNrChannels 2
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x00
iExtension 0
AudioControl Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 9 (EXTENSION_UNIT)
bUnitID 57
wExtensionCode 0x0000
bNrInPins 1
baSourceID(0) 2
bNrChannels 0
bmChannelConfig 0x00000000
iChannelNames 0
bmControls 0x00
iExtension 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0006 1x 6 bytes
bInterval 8
INTERFACE CLASS: 10 24 09 3e 00 00 01 01 01 00 00 00 00 00 00 00
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 4
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 2
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 4
bmChannelConfig 0x00000000
iChannelNames 11
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 4
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x00d0 1x 208 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 0x0008
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 17
Transfer Type Isochronous
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 2
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 4
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 2
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 4
bmChannelConfig 0x00000000
iChannelNames 11
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 2
bBitResolution 16
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0068 1x 104 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 0x0008
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 17
Transfer Type Isochronous
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 5
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 1
bNumEndpoints 1
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 5
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 22
bmControls 0x00
bFormatType 1
bmFormats 0x00000001
PCM
bNrChannels 4
bmChannelConfig 0x00000000
iChannelNames 15
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
bFormatType 1 (FORMAT_TYPE_I)
bSubslotSize 4
bBitResolution 24
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x00d0 1x 208 bytes
bInterval 1
AudioStreaming Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bmControls 0x00
bLockDelayUnits 2 Decoded PCM samples
wLockDelay 0x0008
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 254 Application Specific Interface
bInterfaceSubClass 1 Device Firmware Update
bInterfaceProtocol 1
iInterface 10
Device Firmware Upgrade Interface Descriptor:
bLength 9
bDescriptorType 33
bmAttributes 7
Will Not Detach
Manifestation Tolerant
Upload Supported
Download Supported
wDetachTimeout 250 milliseconds
wTransferSize 64 bytes
bcdDFUVersion 1.10
And here is the output of amixer -c EVO4 contents
numid=6,iface=CARD,name='Audient Internal Clock Validity'
; type=BOOLEAN,access=r-------,values=1
: values=on
numid=3,iface=MIXER,name='Mic Playback Volume'
; type=INTEGER,access=rw---R--,values=4,min=0,max=116,step=0
: values=96,0,0,0
| dBminmax-min=-8.00dB,max=50.00dB
numid=4,iface=MIXER,name='EVO4 Playback Volume'
; type=INTEGER,access=rw---R--,values=4,min=0,max=254,step=0
: values=182,182,0,0
| dBminmax-min=-127.00dB,max=0.00dB
numid=5,iface=MIXER,name='Extension Unit Switch'
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=2,iface=PCM,name='Capture Channel Map'
; type=INTEGER,access=r--v-R--,values=4,min=0,max=36,step=0
: values=0,0,0,0
| container
| chmap-fixed=FL,FR,FC,LFE
numid=1,iface=PCM,name='Playback Channel Map'
; type=INTEGER,access=r--v-R--,values=4,min=0,max=36,step=0
: values=0,0,0,0
| container
| chmap-fixed=FL,FR,FC,LFE
Thank you for your help debugging this issue,
Faaris
On 28/09/2026 17:46, Sasha Levin wrote:
>> It seems you're right. Reverting that change has fixed the volume
>> control with my interface - I made sure to remove the quirk flags
>> whilst testing.
>>
>> What are the next steps here? Is there a problem with that patch, or
>> do we need to add a quirk for the EVO4 in the kernel?
> Thanks for testing.
>
> Takashi, Cássio: before 87a6f2fa6e6c ("ALSA: usb-audio: Propagate write
> errors in generic mixer put callbacks"), a failed SET_CUR in the mixer
> put callbacks was ignored. Now it is returned to userspace, and on the
> EVO4 (2708:0006) that breaks hardware volume control. Would you prefer a
> QUIRK_FLAG_IGNORE_CTL_ERROR entry for 2708:0006, or a revert or rework
> of that commit? Any other device that rejects SET_CUR on a single
> control or channel will regress the same way.
>
> Faaris, to help with that decision, could you send:
>
> 1. dmesg with snd_usb_audio debug output enabled while you change the
> volume without the quirk, using
> echo 'module snd_usb_audio +p' > /sys/kernel/debug/dynamic_debug/control
> (the "cannot set ctl value" lines are the useful ones)
> 2. lsusb -v -d 2708:0006
> 3. amixer -c <card> contents
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-09-28 16:53 ` Faaris Ansari
@ 2026-09-28 22:39 ` Sasha Levin
2026-09-29 5:58 ` Takashi Iwai
0 siblings, 1 reply; 16+ messages in thread
From: Sasha Levin @ 2026-09-28 22:39 UTC (permalink / raw)
To: Faaris Ansari
Cc: Sasha Levin, stable, regressions, linux-sound,
Cássio Gabriel, Takashi Iwai, Jaroslav Kysela, Faaris Ansari
> [ 80.940668] usb 3-1: cannot set ctl value: req = 0x1, wValue = 0x203,
> wIndex = 0xa00, type = 4, data = 0x0/0x81
[...]
> numid=4,iface=MIXER,name='EVO4 Playback Volume'
> ; type=INTEGER,access=rw---R--,values=4,min=0,max=254,step=0
> : values=182,182,0,0
Thanks, that narrows it down.
Every failure is SET_CUR of the Volume control on feature unit 10, channel 3
(wValue 0x0203, wIndex 0x0a00). That unit is 'EVO4 Playback Volume' and
advertises read/write volume on all four channels. mixer_ctl_feature_put()
writes channels 1 and 2, then returns the channel 3 error, so the hardware
volume changes while userspace is told the write failed and adds software
attenuation on top. Faaris sees the same on 7.3-rc5, so this is a mainline
regression from 87a6f2fa6e6c ("ALSA: usb-audio: Propagate write errors in
generic mixer put callbacks").
--
Thanks,
Sasha
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-09-28 22:39 ` Sasha Levin
@ 2026-09-29 5:58 ` Takashi Iwai
2026-09-29 12:38 ` Takashi Iwai
0 siblings, 1 reply; 16+ messages in thread
From: Takashi Iwai @ 2026-09-29 5:58 UTC (permalink / raw)
To: Sasha Levin
Cc: Faaris Ansari, stable, regressions, linux-sound,
Cássio Gabriel, Takashi Iwai, Jaroslav Kysela, Faaris Ansari
On Tue, 29 Sep 2026 00:39:05 +0200,
Sasha Levin wrote:
>
> > [ 80.940668] usb 3-1: cannot set ctl value: req = 0x1, wValue = 0x203,
> > wIndex = 0xa00, type = 4, data = 0x0/0x81
> [...]
> > numid=4,iface=MIXER,name='EVO4 Playback Volume'
> > ; type=INTEGER,access=rw---R--,values=4,min=0,max=254,step=0
> > : values=182,182,0,0
>
> Thanks, that narrows it down.
>
> Every failure is SET_CUR of the Volume control on feature unit 10, channel 3
> (wValue 0x0203, wIndex 0x0a00). That unit is 'EVO4 Playback Volume' and
> advertises read/write volume on all four channels. mixer_ctl_feature_put()
> writes channels 1 and 2, then returns the channel 3 error, so the hardware
> volume changes while userspace is told the write failed and adds software
> attenuation on top. Faaris sees the same on 7.3-rc5, so this is a mainline
> regression from 87a6f2fa6e6c ("ALSA: usb-audio: Propagate write errors in
> generic mixer put callbacks").
Right. So a simple fix would be to just to set the IGNORE_CTL_ERROR
quirk flag like below. One of iD14 models has already this flag, so
it might be safer to set to all Audient devices.
thanks,
Takashi
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -2690,6 +2690,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
QUIRK_FLAG_DSD_RAW),
DEVICE_FLG(0x2708, 0x0002, /* Audient iD14 */
QUIRK_FLAG_IGNORE_CTL_ERROR),
+ DEVICE_FLG(0x2708, 0x0006, /* Audient EV04 */
+ QUIRK_FLAG_IGNORE_CTL_ERROR),
DEVICE_FLG(0x2772, 0x0502, /* Musical Fidelity M6s DAC */
0), /* for avoiding QUIRK_FLAG_DSD_RAW with vendor match */
DEVICE_FLG(0x2912, 0x30c8, /* Audioengine D1 */
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-09-29 5:58 ` Takashi Iwai
@ 2026-09-29 12:38 ` Takashi Iwai
2026-09-29 13:14 ` Takashi Iwai
0 siblings, 1 reply; 16+ messages in thread
From: Takashi Iwai @ 2026-09-29 12:38 UTC (permalink / raw)
To: Faaris Ansari
Cc: Sasha Levin, stable, regressions, linux-sound,
Cássio Gabriel, Takashi Iwai, Jaroslav Kysela, Faaris Ansari
On Tue, 29 Sep 2026 07:58:03 +0200,
Takashi Iwai wrote:
>
> On Tue, 29 Sep 2026 00:39:05 +0200,
> Sasha Levin wrote:
> >
> > > [ 80.940668] usb 3-1: cannot set ctl value: req = 0x1, wValue = 0x203,
> > > wIndex = 0xa00, type = 4, data = 0x0/0x81
> > [...]
> > > numid=4,iface=MIXER,name='EVO4 Playback Volume'
> > > ; type=INTEGER,access=rw---R--,values=4,min=0,max=254,step=0
> > > : values=182,182,0,0
> >
> > Thanks, that narrows it down.
> >
> > Every failure is SET_CUR of the Volume control on feature unit 10, channel 3
> > (wValue 0x0203, wIndex 0x0a00). That unit is 'EVO4 Playback Volume' and
> > advertises read/write volume on all four channels. mixer_ctl_feature_put()
> > writes channels 1 and 2, then returns the channel 3 error, so the hardware
> > volume changes while userspace is told the write failed and adds software
> > attenuation on top. Faaris sees the same on 7.3-rc5, so this is a mainline
> > regression from 87a6f2fa6e6c ("ALSA: usb-audio: Propagate write errors in
> > generic mixer put callbacks").
>
> Right. So a simple fix would be to just to set the IGNORE_CTL_ERROR
> quirk flag like below. One of iD14 models has already this flag, so
> it might be safer to set to all Audient devices.
... and below is such a version to cover all Audient devices:
Faaris, please let us know if this (or previous) one actually works
for you. Once after confirmation, I'll submit the proper patch for
upstream.
thanks,
Takashi
-- 8< --
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -2688,8 +2688,6 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
QUIRK_FLAG_FORCE_IFACE_RESET | QUIRK_FLAG_IFACE_DELAY),
DEVICE_FLG(0x262a, 0x9302, /* ddHiFi TC44C */
QUIRK_FLAG_DSD_RAW),
- DEVICE_FLG(0x2708, 0x0002, /* Audient iD14 */
- QUIRK_FLAG_IGNORE_CTL_ERROR),
DEVICE_FLG(0x2772, 0x0502, /* Musical Fidelity M6s DAC */
0), /* for avoiding QUIRK_FLAG_DSD_RAW with vendor match */
DEVICE_FLG(0x2912, 0x30c8, /* Audioengine D1 */
@@ -2788,6 +2786,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
QUIRK_FLAG_DSD_RAW),
VENDOR_FLG(0x2622, /* IAG Limited devices */
QUIRK_FLAG_DSD_RAW),
+ VENDOR_FLG(0x2708, /* Audient devices */
+ QUIRK_FLAG_IGNORE_CTL_ERROR),
VENDOR_FLG(0x2772, /* Musical Fidelity devices */
QUIRK_FLAG_DSD_RAW),
VENDOR_FLG(0x278b, /* Rotel? */
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-09-29 12:38 ` Takashi Iwai
@ 2026-09-29 13:14 ` Takashi Iwai
2026-09-29 14:24 ` Faaris Ansari
0 siblings, 1 reply; 16+ messages in thread
From: Takashi Iwai @ 2026-09-29 13:14 UTC (permalink / raw)
To: Faaris Ansari
Cc: Sasha Levin, stable, regressions, linux-sound,
Cássio Gabriel, Takashi Iwai, Jaroslav Kysela, Faaris Ansari
On Tue, 29 Sep 2026 14:38:03 +0200,
Takashi Iwai wrote:
>
> On Tue, 29 Sep 2026 07:58:03 +0200,
> Takashi Iwai wrote:
> >
> > On Tue, 29 Sep 2026 00:39:05 +0200,
> > Sasha Levin wrote:
> > >
> > > > [ 80.940668] usb 3-1: cannot set ctl value: req = 0x1, wValue = 0x203,
> > > > wIndex = 0xa00, type = 4, data = 0x0/0x81
> > > [...]
> > > > numid=4,iface=MIXER,name='EVO4 Playback Volume'
> > > > ; type=INTEGER,access=rw---R--,values=4,min=0,max=254,step=0
> > > > : values=182,182,0,0
> > >
> > > Thanks, that narrows it down.
> > >
> > > Every failure is SET_CUR of the Volume control on feature unit 10, channel 3
> > > (wValue 0x0203, wIndex 0x0a00). That unit is 'EVO4 Playback Volume' and
> > > advertises read/write volume on all four channels. mixer_ctl_feature_put()
> > > writes channels 1 and 2, then returns the channel 3 error, so the hardware
> > > volume changes while userspace is told the write failed and adds software
> > > attenuation on top. Faaris sees the same on 7.3-rc5, so this is a mainline
> > > regression from 87a6f2fa6e6c ("ALSA: usb-audio: Propagate write errors in
> > > generic mixer put callbacks").
> >
> > Right. So a simple fix would be to just to set the IGNORE_CTL_ERROR
> > quirk flag like below. One of iD14 models has already this flag, so
> > it might be safer to set to all Audient devices.
>
> ... and below is such a version to cover all Audient devices:
>
> Faaris, please let us know if this (or previous) one actually works
> for you. Once after confirmation, I'll submit the proper patch for
> upstream.
... or if you have a chance to test Christian's patch set and verify
whether the problem is fixed there, we can avoid other changes:
https://lore.kernel.org/20260919151840.24371-1-arc@gmx.li
Takashi
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-09-29 13:14 ` Takashi Iwai
@ 2026-09-29 14:24 ` Faaris Ansari
2026-09-29 14:28 ` Takashi Iwai
0 siblings, 1 reply; 16+ messages in thread
From: Faaris Ansari @ 2026-09-29 14:24 UTC (permalink / raw)
To: Takashi Iwai, Faaris Ansari
Cc: Sasha Levin, stable, regressions, linux-sound,
Cássio Gabriel, Takashi Iwai, Jaroslav Kysela
Thanks Takashi and Sasha,
> Faaris, please let us know if this (or previous) one actually works
> for you. Once after confirmation, I'll submit the proper patch for
> upstream.
I tested your latest patch where you removed the quirk for the iD14
alone, and instead set it for all Audient devices.
I can confirm that this has indeed fixed the problem, and I can now
correctly control my hardware volume without problems, thank you!
> ... or if you have a chance to test Christian's patch set and verify
> whether the problem is fixed there, we can avoid other changes:
> https://lore.kernel.org/20260919151840.24371-1-arc@gmx.li
I tested Christian's patch alone, without any other changes. The problem
still occurred with those patches.
This was also noted by Christian:
> As a matter of fact, I made a similar
> observation to yours when testing the patch set on the 'sound' kernel tree
> and the (very sporadic) issue did not disappear after applying the
> patches.
And further discussion below:
https://lore.kernel.org/all/CANBVYRAr8iFGFDgdTcDXuQyXt5M4TddZetsG9o1wbFao03R0yw@mail.gmail.com/
However, using both patches together (as well as a small patch for
alsa-ucm-conf) has made my interface work very well - I'm very happy
with these changes :)
Thank you for your work, Sasha, Takashi, and Christian,
Faaris
On 29/09/2026 14:14, Takashi Iwai wrote:
> On Tue, 29 Sep 2026 14:38:03 +0200,
> Takashi Iwai wrote:
>> On Tue, 29 Sep 2026 07:58:03 +0200,
>> Takashi Iwai wrote:
>>> On Tue, 29 Sep 2026 00:39:05 +0200,
>>> Sasha Levin wrote:
>>>>> [ 80.940668] usb 3-1: cannot set ctl value: req = 0x1, wValue = 0x203,
>>>>> wIndex = 0xa00, type = 4, data = 0x0/0x81
>>>> [...]
>>>>> numid=4,iface=MIXER,name='EVO4 Playback Volume'
>>>>> ; type=INTEGER,access=rw---R--,values=4,min=0,max=254,step=0
>>>>> : values=182,182,0,0
>>>> Thanks, that narrows it down.
>>>>
>>>> Every failure is SET_CUR of the Volume control on feature unit 10, channel 3
>>>> (wValue 0x0203, wIndex 0x0a00). That unit is 'EVO4 Playback Volume' and
>>>> advertises read/write volume on all four channels. mixer_ctl_feature_put()
>>>> writes channels 1 and 2, then returns the channel 3 error, so the hardware
>>>> volume changes while userspace is told the write failed and adds software
>>>> attenuation on top. Faaris sees the same on 7.3-rc5, so this is a mainline
>>>> regression from 87a6f2fa6e6c ("ALSA: usb-audio: Propagate write errors in
>>>> generic mixer put callbacks").
>>> Right. So a simple fix would be to just to set the IGNORE_CTL_ERROR
>>> quirk flag like below. One of iD14 models has already this flag, so
>>> it might be safer to set to all Audient devices.
>> ... and below is such a version to cover all Audient devices:
>>
>> Faaris, please let us know if this (or previous) one actually works
>> for you. Once after confirmation, I'll submit the proper patch for
>> upstream.
> ... or if you have a chance to test Christian's patch set and verify
> whether the problem is fixed there, we can avoid other changes:
> https://lore.kernel.org/20260919151840.24371-1-arc@gmx.li
>
>
> Takashi
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-09-29 14:24 ` Faaris Ansari
@ 2026-09-29 14:28 ` Takashi Iwai
2026-09-29 19:46 ` Christian Ruppert
2026-10-02 14:19 ` Sasha Levin
0 siblings, 2 replies; 16+ messages in thread
From: Takashi Iwai @ 2026-09-29 14:28 UTC (permalink / raw)
To: Faaris Ansari
Cc: Takashi Iwai, Faaris Ansari, Sasha Levin, stable, regressions,
linux-sound, Cássio Gabriel, Takashi Iwai, Jaroslav Kysela
On Tue, 29 Sep 2026 16:24:24 +0200,
Faaris Ansari wrote:
>
> Thanks Takashi and Sasha,
>
>
> > Faaris, please let us know if this (or previous) one actually works
> > for you. Once after confirmation, I'll submit the proper patch for
> > upstream.
>
> I tested your latest patch where you removed the quirk for the iD14
> alone, and instead set it for all Audient devices.
>
> I can confirm that this has indeed fixed the problem, and I can now
> correctly control my hardware volume without problems, thank you!
>
>
> > ... or if you have a chance to test Christian's patch set and verify
> > whether the problem is fixed there, we can avoid other changes:
> > https://lore.kernel.org/20260919151840.24371-1-arc@gmx.li
> I tested Christian's patch alone, without any other changes. The
> problem still occurred with those patches.
>
> This was also noted by Christian:
>
> > As a matter of fact, I made a similar
> > observation to yours when testing the patch set on the 'sound' kernel tree
> > and the (very sporadic) issue did not disappear after applying the
> > patches.
> And further discussion below:
>
> https://lore.kernel.org/all/CANBVYRAr8iFGFDgdTcDXuQyXt5M4TddZetsG9o1wbFao03R0yw@mail.gmail.com/
>
>
> However, using both patches together (as well as a small patch for
> alsa-ucm-conf) has made my interface work very well - I'm very happy
> with these changes :)
>
>
> Thank you for your work, Sasha, Takashi, and Christian,
>
> Faaris
Thanks for clarification. Then we need a fix like mine in anyway.
I'm going to submit the proper patch.
Takashi
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-09-29 14:28 ` Takashi Iwai
@ 2026-09-29 19:46 ` Christian Ruppert
2026-10-02 14:19 ` Sasha Levin
1 sibling, 0 replies; 16+ messages in thread
From: Christian Ruppert @ 2026-09-29 19:46 UTC (permalink / raw)
To: Takashi Iwai
Cc: Faaris Ansari, Faaris Ansari, Sasha Levin, stable, regressions,
linux-sound, Cássio Gabriel, Takashi Iwai, Jaroslav Kysela
On Tue, Sep 29, 2026 at 04:28:59PM +0200, Takashi Iwai wrote:
> On Tue, 29 Sep 2026 16:24:24 +0200,
> Faaris Ansari wrote:
> >
> > Thanks Takashi and Sasha,
> >
> >
> > > Faaris, please let us know if this (or previous) one actually works
> > > for you. Once after confirmation, I'll submit the proper patch for
> > > upstream.
> >
> > I tested your latest patch where you removed the quirk for the iD14
> > alone, and instead set it for all Audient devices.
> >
> > I can confirm that this has indeed fixed the problem, and I can now
> > correctly control my hardware volume without problems, thank you!
On the surface, this does seem to fix the issue but after looking into it
a bit more in detail, the EVO4 is a bit quirky but its behaviour actually
coherent and expected. I wonder if this should be fixed by simply
disabling error propagation or if it's rather an issue with UCMs. The
situation is as follows:
- The EVO4 presents two PCM devices, each with four channels ("EVO4 " for
playback and "Mic" for capture).
- In both devices, only the volume of the first two channels can be
adjusted (Stereo master playback volume for "EVO4 " and two microphone
gains in "Mic").
- The other two channels of each device are mapped to digital loopback
(playback) and the digital mixer matrix output (capture) which don't
have volume controls. Trying to adjust these two is thus invalid and the
device rightly returns an error.
It is true that the "logical" thing would have been to split everything
into four dual-channel PCM devices, two with adjustable volumes and two
without. For some reason, Audient didn't make that design choice and as
things are the situation is perfectly manageable with UCM and correctly
described in
https://github.com/alsa-project/alsa-ucm-conf/blob/master/ucm2/USB-Audio/Audient/Audient-EVO4-HiFi-0006.conf).
The question is now why the UCM tries to adjust mixer channels which are
clearly not declared as part of the respective "split channel" in that
file. I would argue this is rather a bug in UCM (or possibly an overly
eager "put" function in the generic mixer driver) than in the EVO firmware
or the error propagation. In practice, the error disappears either way but
I suspect that at least part of the motivation behind UCM was to address
exactly this type of issues.
This is rather philosophical and my background on UCM is basically nil so
I would be interested in more educated opinions.
> > > ... or if you have a chance to test Christian's patch set and verify
> > > whether the problem is fixed there, we can avoid other changes:
> > > https://lore.kernel.org/20260919151840.24371-1-arc@gmx.li
> > I tested Christian's patch alone, without any other changes. The
> > problem still occurred with those patches.
> >
> > This was also noted by Christian:
> >
> > > As a matter of fact, I made a similar
> > > observation to yours when testing the patch set on the 'sound' kernel tree
> > > and the (very sporadic) issue did not disappear after applying the
> > > patches.
> > And further discussion below:
> >
> > https://lore.kernel.org/all/CANBVYRAr8iFGFDgdTcDXuQyXt5M4TddZetsG9o1wbFao03R0yw@mail.gmail.com/
> >
> >
> > However, using both patches together (as well as a small patch for
> > alsa-ucm-conf) has made my interface work very well - I'm very happy
> > with these changes :)
> >
> >
> > Thank you for your work, Sasha, Takashi, and Christian,
> >
> > Faaris
>
> Thanks for clarification. Then we need a fix like mine in anyway.
> I'm going to submit the proper patch.
>
>
> Takashi
--
Christian Ruppert <arc@gmx.li>
This message is digitally signed with GnuPG.
GPG/PGP Key fingerprint = 4492 2196 75F0 EAA0 981E B661 1476 F17A 975F 587B
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-09-29 14:28 ` Takashi Iwai
2026-09-29 19:46 ` Christian Ruppert
@ 2026-10-02 14:19 ` Sasha Levin
2026-10-02 14:37 ` Takashi Iwai
1 sibling, 1 reply; 16+ messages in thread
From: Sasha Levin @ 2026-10-02 14:19 UTC (permalink / raw)
To: Faaris Ansari
Cc: Sasha Levin, Takashi Iwai, Faaris Ansari, stable, regressions,
linux-sound, Cássio Gabriel, Takashi Iwai, Jaroslav Kysela
> Thanks for clarification. Then we need a fix like mine in anyway.
> I'm going to submit the proper patch.
Thanks Takashi. a154f7b9f197 ("ALSA: usb-audio: Apply IGNORE_CTL_ERROR
quirk to all Audient devices") is in your for-linus branch, but it
isn't in Linus' tree yet.
87a6f2fa6e6c ("ALSA: usb-audio: Propagate write errors in generic mixer
put callbacks") is already in 7.2, 6.18 and 6.12, and it is in the
current 6.6, 6.1, 5.15 and 5.10 -rc1 releases. I'll queue the quirk
change for the stable trees as soon as it lands upstream.
--
Thanks,
Sasha
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-10-02 14:19 ` Sasha Levin
@ 2026-10-02 14:37 ` Takashi Iwai
2026-10-02 21:10 ` Sasha Levin
0 siblings, 1 reply; 16+ messages in thread
From: Takashi Iwai @ 2026-10-02 14:37 UTC (permalink / raw)
To: Sasha Levin
Cc: Faaris Ansari, Takashi Iwai, Faaris Ansari, stable, regressions,
linux-sound, Cássio Gabriel, Takashi Iwai, Jaroslav Kysela
On Fri, 02 Oct 2026 16:19:45 +0200,
Sasha Levin wrote:
>
> > Thanks for clarification. Then we need a fix like mine in anyway.
> > I'm going to submit the proper patch.
>
> Thanks Takashi. a154f7b9f197 ("ALSA: usb-audio: Apply IGNORE_CTL_ERROR
> quirk to all Audient devices") is in your for-linus branch, but it
> isn't in Linus' tree yet.
Yes, and I sent a PR right now to Linus, so hopefully included in
7.3-rc6.
> 87a6f2fa6e6c ("ALSA: usb-audio: Propagate write errors in generic mixer
> put callbacks") is already in 7.2, 6.18 and 6.12, and it is in the
> current 6.6, 6.1, 5.15 and 5.10 -rc1 releases. I'll queue the quirk
> change for the stable trees as soon as it lands upstream.
Thanks!
Takashi
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-10-02 14:37 ` Takashi Iwai
@ 2026-10-02 21:10 ` Sasha Levin
2026-10-03 1:30 ` Sasha Levin
0 siblings, 1 reply; 16+ messages in thread
From: Sasha Levin @ 2026-10-02 21:10 UTC (permalink / raw)
To: Takashi Iwai
Cc: Sasha Levin, Faaris Ansari, Faaris Ansari, stable, regressions,
linux-sound, Cássio Gabriel, Takashi Iwai, Jaroslav Kysela
> Yes, and I sent a PR right now to Linus, so hopefully included in
> 7.3-rc6.
Linus merged it, so I've queued it for 7.2, 6.18, 6.12, 6.6, 6.1 and
5.15, thanks. 5.10 doesn't have the quirk flags table, so this fix
doesn't apply there.
--
Thanks,
Sasha
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [REGRESSION] Audient EVO4 hardware volume control now requires quirk
2026-10-02 21:10 ` Sasha Levin
@ 2026-10-03 1:30 ` Sasha Levin
0 siblings, 0 replies; 16+ messages in thread
From: Sasha Levin @ 2026-10-03 1:30 UTC (permalink / raw)
To: Takashi Iwai
Cc: Sasha Levin, Faaris Ansari, Faaris Ansari, stable, regressions,
linux-sound, Cássio Gabriel, Takashi Iwai, Jaroslav Kysela
> Linus merged it, so I've queued it for 7.2, 6.18, 6.12, 6.6, 6.1 and
> 5.15, thanks. 5.10 doesn't have the quirk flags table, so this fix
> doesn't apply there.
A follow-up on the older trees: since a154f7b9f197 ("ALSA: usb-audio:
Apply IGNORE_CTL_ERROR quirk to all Audient devices") can't go into
5.10, I've dropped 87a6f2fa6e6c ("ALSA: usb-audio: Propagate write
errors in generic mixer put callbacks") from the 5.10 queue instead,
so 5.10 doesn't pick up the regression at all.
On 6.6, 6.1 and 5.15, 87a6f2fa6e6c is in the releases now under
review, and a154f7b9f197 (now in mainline) follows in the next
release.
--
Thanks,
Sasha
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2026-10-03 1:30 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-26 13:03 [REGRESSION] Audient EVO4 hardware volume control now requires quirk Faaris Ansari
2026-09-27 14:26 ` Sasha Levin
2026-09-27 22:50 ` Faaris Ansari
2026-09-28 16:46 ` Sasha Levin
2026-09-28 16:53 ` Faaris Ansari
2026-09-28 22:39 ` Sasha Levin
2026-09-29 5:58 ` Takashi Iwai
2026-09-29 12:38 ` Takashi Iwai
2026-09-29 13:14 ` Takashi Iwai
2026-09-29 14:24 ` Faaris Ansari
2026-09-29 14:28 ` Takashi Iwai
2026-09-29 19:46 ` Christian Ruppert
2026-10-02 14:19 ` Sasha Levin
2026-10-02 14:37 ` Takashi Iwai
2026-10-02 21:10 ` Sasha Levin
2026-10-03 1:30 ` Sasha Levin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox