From nobody Mon Jun 8 08:36:18 2026 Received: from sender4-op-o15.zoho.com (sender4-op-o15.zoho.com [136.143.188.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5E45630EF77; Sat, 30 May 2026 20:57:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780174630; cv=pass; b=b4nSNwHcxwYBPcMqZBUCWURJt9eOIwvvQvTg1dKLMR3Or37DbRfchYKwGJhatv0gxK4VgRYcFt7Z1+sGCoIaN35XcU/BZTi65zNID0VI4Aocu7qSD4AI9fDRAeyZbp+8o+nfa3z+w/1BFooNEf+qzcSH2SLRysDKVtsY9q8Uv6g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780174630; c=relaxed/simple; bh=s0sqvBMhZEKdfrHA9gwYy10ry2QnIOEtupJBt1Hpeik=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=q7HPKAwBCHClhfKtWpPugLuV10byZ5NhFUxb5h+QxybYhr6FJOAPxoHPW9h2vANBT3YWvOAgkYJvX7joHpAHjq8HFrP3QVWemivleJETvutAvhQeh2gFrkDcpWb/8yAXj9+nhkHS97Kbw60d0LP2X5kUgomzawTeGjCEjr6RU8I= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rong.moe; spf=pass smtp.mailfrom=rong.moe; dkim=pass (2048-bit key) header.d=rong.moe header.i=i@rong.moe header.b=QtkmiJRO; arc=pass smtp.client-ip=136.143.188.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rong.moe Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rong.moe Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rong.moe header.i=i@rong.moe header.b="QtkmiJRO" ARC-Seal: i=1; a=rsa-sha256; t=1780174624; cv=none; d=zohomail.com; s=zohoarc; b=aQq4VuM6cKexvG6yJc7hjymSc6wjIoqk08vIo/CHVI7UuHqxevINndIPqiOVKbyG15gDomcRVS8YTZkFKvgvo5n8JidkUlZ0+1200ddi7S4zqxLSDTOll3QjLzEIkbnv5VD0cAnfEhZMg9vFxyFxgOsvncPe/hcPtMfSijA1KMY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780174624; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=n094JIXlX4/FR7OxEyKRKKtoFMGNu8witLe5lTgoznU=; b=auPHnsEjiHixNaQsylGWMY+33SdlSG/5CMSwZ6Zb85qIyj4ZXCGZD2h3YUo6UYIIPHW3BUzBGMHxsFb6BbMiYfQnNkFjaDsRSxMFktjt6xtxdOmfGoVzUis0EYAKacYTUGeHDLsqBAW/b8X6AsMTCN+ZkVNM46VyLxm5yJfhLvE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=rong.moe; spf=pass smtp.mailfrom=i@rong.moe; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1780174624; s=zmail2048; d=rong.moe; i=i@rong.moe; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=n094JIXlX4/FR7OxEyKRKKtoFMGNu8witLe5lTgoznU=; b=QtkmiJRO6PyhARh+EPhTKh5oLIuA6naqLCmGt4hLNx8M7f+w7GB4Mo0tEaY9gWnq cx5YVe8qG3X6q7LrS7oH6PqvVKRYZjzaTR3xYtlflIlULHDARN9BbI/P1YT0ANjThdi N5tu43ObrK38/VqwYpY8B9mFyygRf+JJX396/7bOPXJ/xcG/l384LhC6b2q+wAq88WP g0KWWpkjtsVNvSnuD/TiZSieBo9e/zO/b8pSmAl+UNIyeCrWgVTUMmlo4+60uVFBBoZ KzRsESlKWdDK1N8/u3EsC/QLhc/BOXNWxlMvHrOMFp+qPExIpT6UO5l6zUYC6C+Dvce RAvo0OW0rg== Received: by mx.zohomail.com with SMTPS id 178017462238667.7389004829646; Sat, 30 May 2026 13:57:02 -0700 (PDT) From: Rong Zhang Date: Sun, 31 May 2026 04:56:43 +0800 Subject: [PATCH 1/2] ALSA: usb-audio: Add quirk flag for Edifier MF200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260531-uac-edifier-mf200-v1-1-be69657c3f87@rong.moe> References: <20260531-uac-edifier-mf200-v1-0-be69657c3f87@rong.moe> In-Reply-To: <20260531-uac-edifier-mf200-v1-0-be69657c3f87@rong.moe> To: Jaroslav Kysela , Takashi Iwai Cc: Takashi Iwai , Steve Smith , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, Rong Zhang X-Mailer: b4 0.16-dev-d5d98 X-ZohoMailClient: External The UAC mixer of Edifier MF200 works fine except that its volume GET_CUR method is somehow stubbed and returns a constant value. Since commit 86aa1ea1f15c ("ALSA: usb-audio: Do not expose sticky mixers"), the sticky check considers the mixer to be sticky and unnecessarily disables the mixer. Add a quirk table entry matching VID/PID=3D0x2d99/0xa024 and applying the MIXER_SKIP_GET_CUR_VOL quirk flag, so that the mixer is usable again. Quirky device sample: usb 1-3.2: new full-speed USB device number 7 using xhci_hcd usb 1-3.2: New USB device found, idVendor=3D2d99, idProduct=3Da024, bcdDe= vice=3D 0.00 usb 1-3.2: New USB device strings: Mfr=3D1, Product=3D2, SerialNumber=3D3 usb 1-3.2: Product: EDIFIER MF200 usb 1-3.2: Manufacturer: EDIFIER usb 1-3.2: SerialNumber: EDI00000X06 input: EDIFIER EDIFIER MF200 Consumer Control as /devices/pci0000:00/0000= :00:02.1/0000:05:00.0/0000:06:0c.0/0000:0e:00.0/usb1/1-3/1-3.2/1-3.2:1.0/00= 03:2D99:A024.0003/input/input8 input: EDIFIER EDIFIER MF200 Mouse as /devices/pci0000:00/0000:00:02.1/00= 00:05:00.0/0000:06:0c.0/0000:0e:00.0/usb1/1-3/1-3.2/1-3.2:1.0/0003:2D99:A02= 4.0003/input/input9 input: EDIFIER EDIFIER MF200 Keyboard as /devices/pci0000:00/0000:00:02.1= /0000:05:00.0/0000:06:0c.0/0000:0e:00.0/usb1/1-3/1-3.2/1-3.2:1.0/0003:2D99:= A024.0003/input/input10 input: EDIFIER EDIFIER MF200 as /devices/pci0000:00/0000:00:02.1/0000:05:= 00.0/0000:06:0c.0/0000:0e:00.0/usb1/1-3/1-3.2/1-3.2:1.0/0003:2D99:A024.0003= /input/input11 input: EDIFIER EDIFIER MF200 as /devices/pci0000:00/0000:00:02.1/0000:05:= 00.0/0000:06:0c.0/0000:0e:00.0/usb1/1-3/1-3.2/1-3.2:1.0/0003:2D99:A024.0003= /input/input12 hid-generic 0003:2D99:A024.0003: input,hiddev1,hidraw2: USB HID v1.10 Mou= se [EDIFIER EDIFIER MF200] on usb-0000:0e:00.0-3.2/input0 usb 1-3.2: 9:1: sticky mixer values (-32768/-32513/1 =3D> -32702), disabl= ing Reported-by: Steve Smith Closes: https://lore.kernel.org/r/CAHLWS5FJCx66GQ-O10pu+nEudEo_QgQAM9vt76T7= vT0zGPPC1g@mail.gmail.com Tested-by: Steve Smith Signed-off-by: Rong Zhang --- sound/usb/quirks.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 149f2009df12..22f9e099bf4e 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -2475,6 +2475,8 @@ static const struct usb_audio_quirk_flags_table quirk= _flags_table[] =3D { QUIRK_FLAG_CTL_MSG_DELAY_1M), DEVICE_FLG(0x2d99, 0x0026, /* HECATE G2 GAMING HEADSET */ QUIRK_FLAG_MIXER_PLAYBACK_MIN_MUTE), + DEVICE_FLG(0x2d99, 0xa024, /* Edifier MF200 */ + QUIRK_FLAG_MIXER_GET_CUR_BROKEN), DEVICE_FLG(0x2fc6, 0xf06b, /* MOONDROP Moonriver2 Ti */ QUIRK_FLAG_CTL_MSG_DELAY), DEVICE_FLG(0x2fc6, 0xf0b7, /* iBasso DC07 Pro */ --=20 2.53.0 From nobody Mon Jun 8 08:36:18 2026 Received: from sender4-op-o15.zoho.com (sender4-op-o15.zoho.com [136.143.188.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BF16330676E; Sat, 30 May 2026 20:57:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780174634; cv=pass; b=pJLdpz1cGw28MvNMumbVYTQbFXGoG2Z4g88+2GVlJ95NdXYYXk317g9fOduvEjiHOnPqyWLPIfFCqe6Yf8Yc4F4Df+nxj31wnXyAdEOmLrBO+3AB45jDVl/19ryOdpxlPgLHKhX+kSw44X7LO7gPR5CINhU76UP8bHaYrA+Mprw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780174634; c=relaxed/simple; bh=51cms1ifW1H9SfocBkphuM+I2vm8PbuTNsZtmqBdX5U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ro9j5Kq2XZ0HheTEhsC1SwmNxfJVZivjBl4J1Fs/tiCLdPzMXas3txog5C22D9s0sInu1FQiJo6du4kepFebdmWFOqLSQVsNbg8mM8mtCe0JDGtniR3JG9Mqlge09axot2dESnjYrEhQ9I2bO4Vox/701bx7qdR0C6xgZ4ao7ec= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rong.moe; spf=pass smtp.mailfrom=rong.moe; dkim=pass (2048-bit key) header.d=rong.moe header.i=i@rong.moe header.b=F11aTkiZ; arc=pass smtp.client-ip=136.143.188.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rong.moe Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rong.moe Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rong.moe header.i=i@rong.moe header.b="F11aTkiZ" ARC-Seal: i=1; a=rsa-sha256; t=1780174626; cv=none; d=zohomail.com; s=zohoarc; b=MvHKRrBWcW+35D4x/NyK6lNfJhqPd4EvJZklrKmuLX7RqFjQyicd0nJuTuWGTvlhedhW4/2nNyqis+uDQ/AktN1H9oQw9bTKMJtdFH2dR/lnfR8a6c/J+QKX1C07b0X1yoOv9RqDb1EQlTzF8dVdJCXo511vGS1Qp77MG7TrQS0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780174626; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=R6ifB6WhpsSQciqK7jC3I3x4lKJ+4KprPlIHDhtVO3A=; b=QmZoAXZT3HL0AKd/5HIaolLGQz9MiIv84lK4jyWKR6EBQO6YmLd/hQ+G7fquXfPzTDj2TsjuXY9dI/5GtELcUjpU0AY2A+vSsv3nmFB8O1t/fMJFyz6dz/l1kdqXU8TSsm+z6Fdahj9Tg3AYYCbzT1dBK35LXYFy3E8I4qJuRDM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=rong.moe; spf=pass smtp.mailfrom=i@rong.moe; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1780174626; s=zmail2048; d=rong.moe; i=i@rong.moe; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:References:In-Reply-To:To:To:Cc:Cc:Reply-To; bh=R6ifB6WhpsSQciqK7jC3I3x4lKJ+4KprPlIHDhtVO3A=; b=F11aTkiZ6m0H1HJzdiYLA/RQXLeGfqwDUWoECnD9AYEWRl9lQHX45PumrsQL7Ici Q/24wpyPxjjBJa76IFunYn6ig3oTUqHO6jGnXASsvd7TGauap8ZfWSZjVzMh2O17xBo 7cI7DE6UXq+jCE9iWWKULC/2BpJLytium70aChntx4VQzKp7iKsmbUzh9cX6JITbAf0 oRAmeVz40iu3SwJEeongKOUO83P/zqKaoJI2axDAgVmhZc3BTgzAdXnV4PnyvjVlHyD Jgs4hHZgc7AAgSz8X86fE6EtxPh4L9AeiotGSOELR93u1X/4yDx5xHw8Ly7i/KN+M31 LMiPjmygUw== Received: by mx.zohomail.com with SMTPS id 1780174624744206.68059972497815; Sat, 30 May 2026 13:57:04 -0700 (PDT) From: Rong Zhang Date: Sun, 31 May 2026 04:56:44 +0800 Subject: [PATCH 2/2] ALSA: usb-audio: Prompt users to check MIXER_GET_CUR_BROKEN for potential sticky mixers Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260531-uac-edifier-mf200-v1-2-be69657c3f87@rong.moe> References: <20260531-uac-edifier-mf200-v1-0-be69657c3f87@rong.moe> In-Reply-To: <20260531-uac-edifier-mf200-v1-0-be69657c3f87@rong.moe> To: Jaroslav Kysela , Takashi Iwai Cc: Takashi Iwai , Steve Smith , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, Rong Zhang X-Mailer: b4 0.16-dev-d5d98 X-ZohoMailClient: External The UAC mixer core utilizes volume SET_CUR and GET_CUR to identify devices with sticky mixers, i.e., consider a mixer as sticky if its GET_CUR always returns a constant despite SET_CUR has been emitted. Unfortunately, the methodology can't distinguish between sticky mixers and working SET_CUR but broken GET_CUR, so a quirk flag (MIXER_GET_CUR_BROKEN) has been added to tell that the device should fall into the second category when GET_CUR returns a constant value, so that the mixer is still usable. While the case is relatively rare, two different devices have been reported as requiring the quirk flag. Add an info message prompting users to check MIXER_GET_CUR_BROKEN for potential sticky mixers, so that users can learn how to do some experiments to determine what's going on. If the mixer surprisingly turns out to be non-sticky, they can submit a patch for a new quirk table entry. Signed-off-by: Rong Zhang --- sound/usb/mixer.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c index b98222e5f697..a2a499ecd267 100644 --- a/sound/usb/mixer.c +++ b/sound/usb/mixer.c @@ -1285,6 +1285,8 @@ static int check_sticky_volume_control(struct usb_mix= er_elem_info *cval, "%d:%d: sticky mixer values (%d/%d/%d =3D> %d), disabling\n", cval->head.id, mixer_ctrl_intf(cval->head.mixer), cval->min, cval->max, cval->res, saved); + usb_audio_info(cval->head.mixer->chip, + "check MIXER_GET_CUR_BROKEN if you believe the mixer is non-stick= y"); =20 return -ENODEV; } --=20 2.53.0