From: willyp713 Date: Sun, 23 Aug 2026 18:59:46 +0000 (-0500) Subject: USB-Audio: Add Audient iD14 MkI profile (2708:0002) X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=b9e082e93c15ed4d2f28ba441a8e445cecddca9e;p=alsa-ucm-conf.git USB-Audio: Add Audient iD14 MkI profile (2708:0002) Expose two logical stereo USB playback pairs, two mono analogue inputs, and a Direct use case for the raw 4-output/10-input stream. The device firmware applies monitor-mix attenuation asymmetrically. Initialize all four gains to unity on every boot or hotplug because the Direct use case has no verb. Reapply unity when HiFi is selected. Support both the historical Speaker Playback Volume name and the Monitor Mix Playback Volume name used by the accepted kernel quirk. Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/836 Signed-off-by: willyp713 Signed-off-by: Jaroslav Kysela --- diff --git a/ucm2/USB-Audio/Audient/Audient-iD14-0002.conf b/ucm2/USB-Audio/Audient/Audient-iD14-0002.conf new file mode 100644 index 0000000..d53de7d --- /dev/null +++ b/ucm2/USB-Audio/Audient/Audient-iD14-0002.conf @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: BSD-3-Clause + +Comment "Audient iD14 USB-Audio" + +# The iD14 firmware applies FU12 attenuation to the right channel of each +# stereo pair but ignores the matching left-channel write. Linux kernels with +# the upstream mixer-map quirk call this control "Monitor Mix Playback Volume"; +# older kernels call it "Speaker Playback Volume". Keep all four gains at +# unity under either name. This also restores a balanced state left by an +# unquirked PipeWire session. +Define.MonitorMixVolume "Speaker Playback Volume" + +If.renamed-monitor-mix-volume { + Condition { + Type ControlExists + Control "name='Monitor Mix Playback Volume'" + } + True.Define.MonitorMixVolume "Monitor Mix Playback Volume" +} + +FixedBootSequence [ + cset "name='${var:MonitorMixVolume}' 127,127,127,127" +] + +SectionUseCase."HiFi" { + Comment "Default" + File "/USB-Audio/Audient/Audient-iD14-HiFi-0002.conf" +} + +Include.dhw.File "/common/directm.conf" + +Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=4 CaptureChannels=10 } diff --git a/ucm2/USB-Audio/Audient/Audient-iD14-HiFi-0002.conf b/ucm2/USB-Audio/Audient/Audient-iD14-HiFi-0002.conf new file mode 100644 index 0000000..902e9ba --- /dev/null +++ b/ucm2/USB-Audio/Audient/Audient-iD14-HiFi-0002.conf @@ -0,0 +1,116 @@ +# SPDX-License-Identifier: BSD-3-Clause + +Include.pcm_split.File "/common/pcm/split.conf" + +SectionVerb { + EnableSequence [ + cset "name='${var:MonitorMixVolume}' 127,127,127,127" + ] +} + +Macro [ + { + SplitPCM { + Name "id14mk1_mono_in" + Direction Capture + Format S32_LE + Channels 1 + HWChannels 10 + HWChannelPos0 MONO + HWChannelPos1 MONO + HWChannelPos2 MONO + HWChannelPos3 MONO + HWChannelPos4 MONO + HWChannelPos5 MONO + HWChannelPos6 MONO + HWChannelPos7 MONO + HWChannelPos8 MONO + HWChannelPos9 MONO + } + } + { + SplitPCM { + Name "id14mk1_stereo_out" + Direction Playback + Format S32_LE + Channels 2 + HWChannels 4 + HWChannelPos0 FL + HWChannelPos1 FR + HWChannelPos2 FL + HWChannelPos3 FR + } + } +] + +SectionDevice."USB 1" { + Comment "Output 1/2" + + Value { + PlaybackPriority 200 + PlaybackChannels 2 + } + Macro.pcm_split.SplitPCMDevice { + Name "id14mk1_stereo_out" + Direction Playback + HWChannels 4 + Channels 2 + Channel0 0 + Channel1 1 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."USB 2" { + Comment "Output 3/4" + + Value { + PlaybackPriority 100 + PlaybackChannels 2 + } + Macro.pcm_split.SplitPCMDevice { + Name "id14mk1_stereo_out" + Direction Playback + HWChannels 4 + Channels 2 + Channel0 2 + Channel1 3 + ChannelPos0 FL + ChannelPos1 FR + } +} + +SectionDevice."Mic1" { + Comment "Mic/Line Input 1" + + Value { + CapturePriority 200 + CaptureChannels 1 + } + Macro.pcm_split.SplitPCMDevice { + Name "id14mk1_mono_in" + Direction Capture + HWChannels 10 + Channels 1 + Channel0 0 + ChannelPos0 MONO + } +} + +SectionDevice."Mic2" { + Comment "Mic/Line Input 2" + + Value { + CapturePriority 100 + CaptureChannels 1 + } + Macro.pcm_split.SplitPCMDevice { + Name "id14mk1_mono_in" + Direction Capture + HWChannels 10 + Channels 1 + Channel0 1 + ChannelPos0 MONO + } +} diff --git a/ucm2/USB-Audio/USB-Audio.conf b/ucm2/USB-Audio/USB-Audio.conf index 7a99e9c..a724879 100644 --- a/ucm2/USB-Audio/USB-Audio.conf +++ b/ucm2/USB-Audio/USB-Audio.conf @@ -272,6 +272,7 @@ Macro.zedi10.StringMatch "Id='22f0:0016' Profile='AllenAndHeath/Zedi10'" Macro.evo4-0006.StringMatch "Id='2708:0006' Profile='Audient/Audient-EVO4-0006'" Macro.id4-0003.StringMatch "Id='2708:0003' Profile='Audient/Audient-iD4-0003'" Macro.id4-0009.StringMatch "Id='2708:0009' Profile='Audient/Audient-iD4-0009'" +Macro.id14-0002.StringMatch "Id='2708:0002' Profile='Audient/Audient-iD14-0002'" Macro.id14-0008.StringMatch "Id='2708:0008' Profile='Audient/Audient-iD14-0008'" Macro.fireface-ucx.StringMatch "Id='0424:3fb9' Profile='RME/Fireface-UCX'" Macro.fireface-ucx-ii.StringMatch "Id='2a39:3fd9' Profile='RME/Fireface-UCX-II'"