Fixing Focusrite Vocaster Two UCM2 Profiles on openSUSE Tumbleweed | filipe's blog
Logo
Overview

Fixing Focusrite Vocaster Two UCM2 Profiles on openSUSE Tumbleweed

February 15, 2026
7 min read

The Problem

Out of the box, the Focusrite Vocaster Two USB shows up on Linux with a generic “Pro Audio” profile. Instead of properly named channels (Host Mic, Guest Mic, Loopback, etc.), you end up with a wall of anonymous “Auxiliary 0” through “Auxiliary 13”.

It is simply unusable: the channels are completely unidentifiable, making any configuration impossible.

Before: Generic Pro Audio profile with Auxiliary channels

The alsa-ucm-conf project includes a dedicated UCM2 profile for the Vocaster, but on openSUSE Tumbleweed with PipeWire, two issues prevent it from loading:

  1. The alsa-ucm-conf package shipped by openSUSE often lags behind the GitHub repository and may not include the Vocaster profile yet.
  2. Even after manually installing the UCM2 files, PipeWire does not use the ACP backend by default for USB audio devices (at least in my experience on openSUSE Tumbleweed — this may vary depending on your version and configuration), which prevents UCM2 profiles from being loaded.

Prerequisites

  • openSUSE Tumbleweed with KDE Plasma
  • PipeWire + WirePlumber (installed by default)
  • Focusrite Vocaster Two USB plugged in
  • git installed (sudo zypper install git if needed)

Step 1: Update the UCM2 Files

Back up the current files, then replace them with the latest from GitHub:

Terminal window
# Backup
sudo cp -r /usr/share/alsa/ucm2 /usr/share/alsa/ucm2.backup
# Download the latest version
cd /tmp
git clone https://github.com/alsa-project/alsa-ucm-conf.git
# Replace the files
sudo rm -rf /usr/share/alsa/ucm2/*
sudo cp -r /tmp/alsa-ucm-conf/ucm2/* /usr/share/alsa/ucm2/
# Cleanup
rm -rf /tmp/alsa-ucm-conf

Note: This replaces all UCM2 profiles on the system, not just the Vocaster ones. If other devices depend on distribution-specific patches to their UCM2 profiles, this could affect them. The backup ensures you can always roll back.

Verify that the Vocaster files are present:

Terminal window
find /usr/share/alsa/ucm2 -iname "*vocaster*"

UCM2 Vocaster files found

You should see four files: Vocaster-Two.conf, Vocaster-Two-HiFi.conf, and their Vocaster One equivalents.

At this point, you can confirm that ALSA itself can load the profiles:

Terminal window
ALSA_CONFIG_UCM2=/usr/share/alsa/ucm2 alsaucm -c "USB-Audio" list _verbs

Expected output:

0: HiFi Default
1: Direct Direct Vocaster Two USB

Note: The -c "USB-Audio" argument uses the ALSA driver name for the card. This worked on my setup, but depending on your kernel version or ALSA configuration, you might need to use the hw:X format instead (where X is your card number, visible in /proc/asound/cards).

If you see this, the UCM2 files are correct. The remaining issue is getting PipeWire to actually use them.

Step 2: Force PipeWire to Use the ACP Backend with UCM

This is the key step. On my openSUSE Tumbleweed installation, PipeWire was not using the ACP (ALSA Card Profiles) backend for the Vocaster, which meant UCM2 profiles were ignored entirely. The symptom is that only “on” and “off” profiles appear for the device, with generic Auxiliary channels.

Note: The default value of api.alsa.use-acp may vary between distributions and WirePlumber versions. On some distributions, ACP is enabled by default for all devices. If your Vocaster already shows named profiles (HiFi, Direct) without any configuration, you may not need this step. The quick way to check: run pactl list cards | grep -A20 "Vocaster" and look at the available profiles.

We need to force PipeWire to use the ACP backend, which knows how to read UCM2 profiles.

First, find your device name:

Terminal window
pw-cli list-objects | grep "device.name.*Vocaster"

You should see something like:

device.name = "alsa_card.usb-Focusrite_Vocaster_Two_USB_VBWU8YJ2A01F2F-00"

The string after usb-Focusrite_Vocaster_Two_USB_ and before -00 is your Vocaster’s serial number. Note down the full device.name value.

Now create the WirePlumber configuration file:

Terminal window
mkdir -p ~/.config/wireplumber/wireplumber.conf.d/
cat > ~/.config/wireplumber/wireplumber.conf.d/50-vocaster-ucm.conf << 'EOF'
monitor.alsa.rules = [
{
matches = [
{
device.name = "alsa_card.usb-Focusrite_Vocaster_Two_USB_VBWU8YJ2A01F2F-00"
}
]
actions = {
update-props = {
api.alsa.use-acp = true
api.alsa.use-ucm = true
}
}
}
]
EOF

Important: Replace the device.name value with the one you found above if it differs.

Step 3: Restart PipeWire and Activate the HiFi Profile

Terminal window
# Restart the audio services
systemctl --user restart pipewire pipewire-pulse wireplumber
# Wait a few seconds, then activate the HiFi profile
sleep 2
pactl set-card-profile alsa_card.usb-Focusrite_Vocaster_Two_USB_VBWU8YJ2A01F2F-00 HiFi

Verification

Check that the profiles are available:

Terminal window
pactl list cards | grep -A60 "Name: alsa_card.usb-Focusrite"

In the “Profiles” section, you should now see:

Profiles:
off: Off
HiFi: Default
Direct: Direct Vocaster Two USB
pro-audio: Pro Audio
Active Profile: HiFi

And in the KDE audio settings (System Settings > Sound), the channels should now have proper names:

After: HiFi profile with properly named channels

This configuration ensures that any application requesting microphone access will now display a clear list of all available input channels, allowing you to select exactly what you need (e.g., just your Host Mic, the full Show Mix, or even the Bluetooth/Aux inputs) instead of guessing between generic “Auxiliary” ports.

Input channels as seen in an application

You should see the following recording devices:

  • Vocaster Two USB Host Mic — your main microphone input
  • Vocaster Two USB Guest Mic — second microphone input
  • Vocaster Two USB Mic In 1-2 — combined mic inputs
  • Vocaster Two USB Show Mix — the full show mix
  • Vocaster Two USB Loopback 1 & 2 — loopback channels for routing audio
  • Vocaster Two USB Video Call — dedicated video call channel
  • Vocaster Two USB Bluetooth — Bluetooth audio passthrough
  • Vocaster Two USB Aux — auxiliary channel

Troubleshooting

Restore the UCM2 Backup

If something goes wrong with the UCM2 files:

Terminal window
sudo rm -rf /usr/share/alsa/ucm2/*
sudo cp -r /usr/share/alsa/ucm2.backup/* /usr/share/alsa/ucm2/

Remove the WirePlumber Config

To revert to the default behavior:

Terminal window
rm ~/.config/wireplumber/wireplumber.conf.d/50-vocaster-ucm.conf
systemctl --user restart pipewire pipewire-pulse wireplumber

Only “on” and “off” Profiles Appear

This means PipeWire is trying to use UCM but failing silently. The most likely cause is that api.alsa.use-acp is set to false. Make sure your WirePlumber config has both properties set:

api.alsa.use-acp = true
api.alsa.use-ucm = true

Setting use-ucm = true alone is not enough — the ACP backend must also be enabled.

Useful Diagnostic Commands

Terminal window
# Check the Vocaster's USB ID
cat /proc/asound/cards
cat /proc/asound/USB/usbid
# Test UCM loading manually
ALSA_CONFIG_UCM2=/usr/share/alsa/ucm2 alsaucm -c "USB-Audio" list _verbs
# List available profiles via SPA
spa-acp-tool -c 2 list-profiles
# Check device properties in PipeWire
pw-dump | grep -A40 "Vocaster"
# Check PipeWire logs for errors
journalctl --user -u pipewire -u wireplumber -b | grep -i "vocaster\|ucm\|spa.alsa"

Identifying your sound card in /proc/asound/cards

Why It Doesn’t Work Out of the Box

The root cause is in how WirePlumber configures the ALSA monitor.

When api.alsa.use-acp is false (which appeared to be the default for USB audio devices on my openSUSE Tumbleweed installation), PipeWire exposes raw PCM channels directly, with no profile intelligence — hence the generic “Auxiliary” channels and only “on/off” profiles.

When use-acp is true, PipeWire switches to the ACP (ALSA Card Profiles) device factory, which is capable of reading UCM2 profiles from /usr/share/alsa/ucm2/ and exposing the properly named channels defined in the Vocaster’s UCM2 configuration.

The api.alsa.use-ucm = true property tells the ACP backend to prefer UCM2 profiles over the default card profile detection. But without use-acp = true, this property is simply ignored because the ACP backend is never loaded in the first place.

Note on WirePlumber versions: Older versions of WirePlumber (0.4.x) used Lua scripts for ALSA monitor configuration (notably /usr/share/wireplumber/scripts/monitors/alsa.lua). Newer versions (0.5+) use declarative configuration files instead. The WirePlumber config file format used in this guide (wireplumber.conf.d/) works with WirePlumber 0.5+, which is what ships with current openSUSE Tumbleweed. If you’re on an older version, the configuration syntax may differ — check the WirePlumber documentation for your version.

Note on System Updates

Since we replaced the contents of /usr/share/alsa/ucm2/ manually, a system update of the alsa-ucm-conf package will overwrite our changes. When that happens, you have two options:

  1. If the updated package now includes the Vocaster profile (check with find /usr/share/alsa/ucm2 -iname "*vocaster*"), you don’t need to do anything — the WirePlumber config file will keep working.
  2. If the Vocaster profile is missing after the update, re-run Step 1 to pull the latest files from GitHub.

The WirePlumber configuration in ~/.config/wireplumber/wireplumber.conf.d/ is safe from system updates and will persist.

References