Last updated: Thu May 08 2025

Audient iD14 on Linux, with Pipewire or PulseAudio

Overall I wouldn't recommend the Audient iD14 to Linux users because its compatibility out of the box is not good, but if you have one, it is possible to tweak it into working properly.

There are two problems with audio playback on the iD14.

The first and most obvious is that the left and right channels are not balanced. At full volume they are equal but at lower volumes they are not.

The second and less obvious problem is that the iD14 gets treated as a 4 channel surround sound device. You might not notice this depending on your usage, but if you do, it's very annoying. It is likely recognised as a surround sound device because it has four output channels (headphones L+R, and speakers L+R), but this is really just two stereo outputs, not a four channel surround output.

Balancing left and right volume

Rebalancing the left and right channel audio volume can be done relatively easily in amixer by setting the output to 100%. This puts both channels at 100%. Note: this does not mean you need your volume at 100% - you can increase or decrease the volume as normal in KDE or in applications.

# ~/.local/bin/id14-channel-fix.sh
# --------------------------------

#!/usr/bin/env bash

card=$(aplay -l | grep 'iD14' | sed 's/:.*$//g'| sed 's/card //')
amixer -c $card sset 'Speaker' 100%

Put this in a file and set it to run at login in your desktop environment, and/or manually invoke when necessary.

(The most robust way would probably be to use a udev rule to invoke it when the hardware is connected and add a systemd wakeup hook to check if it had been connected during sleep, but that's beyond the scope of this article)

Remapping the surround channels to stereo

Both Pipewire and PulseAudio offer ways to remap the device channels into a new virtual device with only two channels.

Pipewire

Pipewire is fairly straightforward to configure.

Place the following in ~/.config/pipewire/pipewire.conf.d/id14.conf (create the directories if necessary).

# ~/.config/pipewire/pipewire.conf.d/id14.conf
# --------------------------------------------

context.modules = [
    {   name = libpipewire-module-loopback
        args = {
            node.description = "Audient iD14 Stereo"
            capture.props = {
                node.name = "iD14_Stereo"
                media.class = "Audio/Sink"
                audio.position = [ FL FR ]
            }
            playback.props = {
                node.name = "playback.iD14_Stereo"
                audio.position = [ FL FR ]
                target.object = "alsa_output.usb-Audient_Audient_iD14-00.analog-surround-40"
                stream.dont-remix = true
                node.passive = true
                priority.driver = 2000
                priority.session = 2000
            }
        }
    }
]

Restart pipewire with:

systemctl --user restart pipewire.service

You should now have a virtual device called iD14 Stereo. The priority settings assign a higher priority to the virtual device than the hardware, meaning it should be selected for playback by default. The hardware device will still be visible.

iD14 stereo

If you find this doesn't show up in the tray widget, you will need to right click the icon and tick "Show virtual devices":

KDE virtual audio devices

PulseAudio

I'm less sure of the PulseAudio config. I'm not sure that all of this is necessary or that it's the most straightforward way to achieve it, but it seems to work and I haven't tried simplifying it.

Firstly, in /etc/pulse/daemon.conf, set:

# /etc/pulse/daemon.conf
# ----------------------

enable-remixing = no
remixing-use-all-sink-channels = no

Then create a profile in PulseAudio:

/etc/pulse/profile-sets/audient-id14.conf

# /etc/pulse/profile-sets/audient-id14.conf
# -----------------------------------------

[General]
auto-profiles = no

[Mapping mic-input]
device-strings = hw:%f
channel-map = left,right,rear-left,rear-right
exact-channels = false
fallback = yes
priority = 1
direction = input

[Mapping stereo-output]
description = Stereo output
device-strings = hw:%f
channel-map = front-left,front-right
paths-output = analog-output
paths-input = analog-input
direction = output
priority = 1
exact-channels = false

[Profile output:stereo-output+input:mic-input]
description = Stereo Output + Mic Input
output-mappings = stereo-output
input-mappings = mic-input
priority = 100
skip-probe = no

Now create a udev rule to use this profile when the iD14 is connected:

/etc/udev/rules.d/91-pulseaudio-custom-profiles.rules

# /etc/udev/rules.d/91-pulseaudio-custom-profiles.rules
# -----------------------------------------------------

SUBSYSTEM=="sound", SUBSYSTEMS=="usb", ACTION=="change", KERNEL=="card*", ENV{ID_VENDOR}=="Audient", ENV{ID_MODEL}=="Audient_iD14", ENV{PULSE_PROFILE_SET}="/etc/pulse/profile-sets/audient-id14.conf"

And finally create a script to tie it all together and set the default device, and set it to run at login in your desktop environment, and/or manually invoke when necessary.

# ~/.local/bin/pulse-remap.sh
# ---------------------------

#!/bin/env bash

pacmd unload-module module-remap-source
pacmd load-module module-remap-source source_name=AudientiD14_mic master=alsa_input.usb-Audient_Audient_iD14-00.mic-input master_channel_map=front-right,front-right channel_map=front-left,front-right

pacmd unload-module module-remap-sink
pacmd load-module module-remap-sink sink_name=AudientiD14_headphones master=alsa_output.usb-Audient_Audient_iD14-00.stereo-output master_channel_map=left,front-right channel_map=front-left,front-right

pacmd set-default-sink AudientiD14_headphones
pacmd set-default-source AudientiD14_mic

Restart your PC, or reload udev and PulseAudio with:

sudo udevadm control --reload
sudo udevadm trigger --subsystem-match=sound
pulseaudio --kill

iD14 stereo