* [PATCH] ALSA: usb-audio: Rename the Audient iD14 monitor mix volume control
@ 2026-08-13 20:41 Neil Andrews
2026-08-14 5:57 ` Takashi Iwai
0 siblings, 1 reply; 2+ messages in thread
From: Neil Andrews @ 2026-08-13 20:41 UTC (permalink / raw)
To: tiwai, perex; +Cc: linux-sound, linux-kernel, neil
On the Audient iD14 (2708:0008), feature unit 12 is traced through to
the Speaker output terminal and is therefore exported as "Speaker
Playback Volume". The name fits it badly. It advertises Volume on
only four of its six logical channels, which the driver records as
cmask=0xf, channels=4 on a 6-channel playback stream, and it sits on
the monitor mixer branch rather than in the direct playback path:
INPUT_TERMINAL 2 (USB streaming, 6ch) -> EXTENSION_UNIT 51 ->
FEATURE_UNIT 10 (no controls) -> OUTPUT_TERMINAL 20 (Speaker)
while FU 12 hangs off MIXER_UNIT 60 and feeds back into
EXTENSION_UNIT 51.
Userspace adopts the control as the stream's hardware playback volume,
so any setting below 0 dB attenuates part of the stream and not the
rest. Measured over the device's own digital loopback, with one
-12 dBFS tone per channel played straight to hw:, PCM channel 0 is
unaffected while channel 1 tracks the control: at 107/127 (-20 dB) the
two read -15.89 and -35.89 dBFS, a 20.00 dB imbalance, and at 127/127
both read -15.89 dBFS.
Give the unit a non-standard name so that it is no longer taken for
the stream's master volume. Dropping the control instead also fixes
the imbalance, but FU 12 keeps its value across a module reload, so
dropping it strands a device that is already attenuated with nothing
able to reset it. Renaming leaves the monitor gain reachable and that
recovery path intact.
The mapped name ends in "Playback" because a name from the map
suppresses the automatic " Playback" but still gets " Volume"
appended; the control comes out as "Monitor Mix Playback Volume".
Tested on the ACP path with PipeWire, which is where the problem
reproduces: the control now stays at 127 at every volume setting and
the imbalance is 0.00 dB, and setting it by hand to 107 and back to
127 gives 20.00 dB and 0.00 dB as before.
Link: https://lore.kernel.org/linux-sound/0102019fed22f9d3-fa294ec5-02f1-4fd3-b3fa-76efc14331cc-000000@eu-west-1.amazonses.com/T/#u
Signed-off-by: Neil Andrews <neil@androos.io>
---
sound/usb/mixer_maps.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/sound/usb/mixer_maps.c b/sound/usb/mixer_maps.c
index ce27fc871..8046d5987 100644
--- a/sound/usb/mixer_maps.c
+++ b/sound/usb/mixer_maps.c
@@ -505,6 +505,19 @@ static const struct usbmix_connector_map gigabyte_b450_connector_map[] = {
{}
};
+/* Audient iD14: FU 12 advertises Volume on only 4 of its 6 logical channels
+ * and sits on the monitor mixer branch, but it is traced through to the
+ * Speaker output terminal and gets named "Speaker Playback Volume". Userspace
+ * then adopts it as the stream's hardware volume, and any setting below 0 dB
+ * attenuates some channels but not others (20 dB imbalance at 80%). Give it a
+ * non-standard name so that it is no longer taken for the stream's master
+ * volume, while remaining reachable for anyone who wants the monitor gain.
+ */
+static const struct usbmix_name_map audient_id14_map[] = {
+ { 12, "Monitor Mix Playback" }, /* FU, partial coverage */
+ {}
+};
+
/*
* Control map entries
*/
@@ -588,6 +601,11 @@ static const struct usbmix_ctl_map usbmix_ctl_maps[] = {
.id = USB_ID(0x2573, 0x0008),
.map = maya44_map,
},
+ {
+ /* Audient iD14 */
+ .id = USB_ID(0x2708, 0x0008),
+ .map = audient_id14_map,
+ },
{
/* KEF X300A */
.id = USB_ID(0x27ac, 0x1000),
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] ALSA: usb-audio: Rename the Audient iD14 monitor mix volume control
2026-08-13 20:41 [PATCH] ALSA: usb-audio: Rename the Audient iD14 monitor mix volume control Neil Andrews
@ 2026-08-14 5:57 ` Takashi Iwai
0 siblings, 0 replies; 2+ messages in thread
From: Takashi Iwai @ 2026-08-14 5:57 UTC (permalink / raw)
To: Neil Andrews; +Cc: tiwai, perex, linux-sound, linux-kernel
On Thu, 13 Aug 2026 22:41:24 +0200,
Neil Andrews wrote:
>
> On the Audient iD14 (2708:0008), feature unit 12 is traced through to
> the Speaker output terminal and is therefore exported as "Speaker
> Playback Volume". The name fits it badly. It advertises Volume on
> only four of its six logical channels, which the driver records as
> cmask=0xf, channels=4 on a 6-channel playback stream, and it sits on
> the monitor mixer branch rather than in the direct playback path:
>
> INPUT_TERMINAL 2 (USB streaming, 6ch) -> EXTENSION_UNIT 51 ->
> FEATURE_UNIT 10 (no controls) -> OUTPUT_TERMINAL 20 (Speaker)
>
> while FU 12 hangs off MIXER_UNIT 60 and feeds back into
> EXTENSION_UNIT 51.
>
> Userspace adopts the control as the stream's hardware playback volume,
> so any setting below 0 dB attenuates part of the stream and not the
> rest. Measured over the device's own digital loopback, with one
> -12 dBFS tone per channel played straight to hw:, PCM channel 0 is
> unaffected while channel 1 tracks the control: at 107/127 (-20 dB) the
> two read -15.89 and -35.89 dBFS, a 20.00 dB imbalance, and at 127/127
> both read -15.89 dBFS.
>
> Give the unit a non-standard name so that it is no longer taken for
> the stream's master volume. Dropping the control instead also fixes
> the imbalance, but FU 12 keeps its value across a module reload, so
> dropping it strands a device that is already attenuated with nothing
> able to reset it. Renaming leaves the monitor gain reachable and that
> recovery path intact.
>
> The mapped name ends in "Playback" because a name from the map
> suppresses the automatic " Playback" but still gets " Volume"
> appended; the control comes out as "Monitor Mix Playback Volume".
>
> Tested on the ACP path with PipeWire, which is where the problem
> reproduces: the control now stays at 127 at every volume setting and
> the imbalance is 0.00 dB, and setting it by hand to 107 and back to
> 127 gives 20.00 dB and 0.00 dB as before.
>
> Link: https://lore.kernel.org/linux-sound/0102019fed22f9d3-fa294ec5-02f1-4fd3-b3fa-76efc14331cc-000000@eu-west-1.amazonses.com/T/#u
> Signed-off-by: Neil Andrews <neil@androos.io>
Applied to for-next branch. Thanks.
Takashi
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-08-14 5:57 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-13 20:41 [PATCH] ALSA: usb-audio: Rename the Audient iD14 monitor mix volume control Neil Andrews
2026-08-14 5:57 ` Takashi Iwai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox