Linux Sound subsystem development
 help / color / mirror / Atom feed
* [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