From: Will Porter <mrwillporter@gmail.com>
To: Takashi Iwai <tiwai@suse.com>, Jaroslav Kysela <perex@perex.cz>
Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org,
Neil Andrews <neil@androos.io>, Christian Ruppert <arc@gmx.li>,
Will Porter <mrwillporter@gmail.com>
Subject: [PATCH 0/5] ALSA: usb-audio: Audient iD14 MkI vendor controls
Date: Mon, 19 Oct 2026 18:01:54 -0500 [thread overview]
Message-ID: <20261019230159.834954-1-mrwillporter@gmail.com> (raw)
The Audient iD14 MkI (2708:0002) keeps its monitor section, output
routing, mixer and input options on vendor extension units. It also
uses feature units whose descriptors declare no controls. On Linux a
user cannot change the routing. The device powers up with every output
on DAW Thru, which bypasses the volume knob.
This series adds those controls in a new mixer_audient_id.c, one group
per patch. A MkI-only name map hides the generic controls that each
group replaces. The MkII keeps audient_id14_map.
Scope: only the iD14 MkI is supported, and only its USB ID reaches the
new code. Other Audient iD models keep the generic driver. Their units
may differ, and this series does not cover them. The file follows
mixer_scarlett2.c, which began with one model and added others through
per-model tables. Names with id14_ hold the MkI's unit IDs and tables. A
later iD model can add its own tables to this file.
sound for-next also has mixer_evo.c for the Audient EVO 4 (2708:0006).
EVO and iD are separate Audient product lines. The iD14 MkI uses other
units and a larger control set: a monitor controller, output routing, a
14 x 4 mixer and write-only controls. So this series keeps the iD line
in its own file.
At probe the driver writes only controls that it cannot read back: the
write-only controls (patch 4) and FU 12 (patch 5). They get the launch
values of Audient's iD application. If a probe write fails, the control
shows the fallback value that those patches describe. The driver does
not write the routing or the mix. User space (alsactl, an application)
sets the rest of the iD application's launch state.
There is no resume code. Every write to a write-only control reaches
the device, so alsactl restore also repairs a device that was reset.
The state across a suspend depends on the power source:
- On USB bus power, a system suspend re-enumerates the device.
- With its mains adapter connected, the device keeps its state across a
system suspend. This is also true when the host controller resets the
device and the card stays. The sampled readable controls did not
change.
- A runtime suspend left the readable controls unchanged on both power
sources, with no reset logged. A runtime suspend is possible only
after usbhid releases the HID interface.
Patch 5 replaces the generic "Monitor Mix Playback Volume" (FU 12) with
one of the same name, count and range. FU 12 GET CUR returns stale data
from other units. Its Main L channel ignores writes, but Main R applies
them. audient_id14_map already notes this asymmetry. The new control
holds Main at 0 dB. This is a deliberate change for existing users: a
Main R attenuation set through the generic control no longer applies.
The protocol comes from Audient's iD application (version 4.4.5 for
macOS). USB captures of the application confirmed it.
Test setup:
- iD14 MkI, firmware 1.1.1
- Bazzite 44, kernel 7.2.9-ogc3.1.fc44
- snd-usb-audio built out of tree from the v7.2.9 sound/usb sources
with this series applied
Tests:
- listening tests: routing, dim, talkback, Cue
- a loopback cable: gain boost, polarity, FU 12 per channel
- alsactl store and restore across a replug
- an out-of-list routing value
- a runtime suspend
- three system suspends (S3) with control reads running at about 3000
per second: no read failed after a resume
- the optical power-on mode, read on macOS 27.0.1 with no Audient
software running
The series is based on sound for-next a4ef328ce3b3. Each patch builds
on its own there with make W=1 sound/usb/. The hardware tests used the
complete series on 7.2.9 sources, where snd_usb_mixer_add_list() has no
look_for_empty argument. The series passes true, which keeps that
behaviour.
Will Porter (5):
ALSA: usb-audio: Give the Audient iD14 MkI its own mixer map
ALSA: usb-audio: Add Audient iD14 MkI monitor and routing controls
ALSA: usb-audio: Add Audient iD14 MkI mixer matrix
ALSA: usb-audio: Add Audient iD14 MkI write-only controls
ALSA: usb-audio: Replace the Audient iD14 MkI FU 12 control
sound/usb/Makefile | 1 +
sound/usb/mixer_audient_id.c | 790 +++++++++++++++++++++++++++++++++++
sound/usb/mixer_audient_id.h | 7 +
sound/usb/mixer_maps.c | 10 +-
sound/usb/mixer_quirks.c | 4 +
5 files changed, 811 insertions(+), 1 deletion(-)
create mode 100644 sound/usb/mixer_audient_id.c
create mode 100644 sound/usb/mixer_audient_id.h
base-commit: a4ef328ce3b3ab1bf63c6350e890f13b9b25e3f1
--
2.47.3
next reply other threads:[~2026-10-19 23:02 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-19 23:01 Will Porter [this message]
2026-10-19 23:01 ` [PATCH 1/5] ALSA: usb-audio: Give the Audient iD14 MkI its own mixer map Will Porter
2026-10-19 23:01 ` [PATCH 2/5] ALSA: usb-audio: Add Audient iD14 MkI monitor and routing controls Will Porter
2026-10-19 23:01 ` [PATCH 3/5] ALSA: usb-audio: Add Audient iD14 MkI mixer matrix Will Porter
2026-10-19 23:01 ` [PATCH 4/5] ALSA: usb-audio: Add Audient iD14 MkI write-only controls Will Porter
2026-10-19 23:01 ` [PATCH 5/5] ALSA: usb-audio: Replace the Audient iD14 MkI FU 12 control Will Porter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261019230159.834954-1-mrwillporter@gmail.com \
--to=mrwillporter@gmail.com \
--cc=arc@gmx.li \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=neil@androos.io \
--cc=perex@perex.cz \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®