]> git.alsa-project.org Git - alsa-ucm-conf.git/commitdiff
USB-Audio: add Steinberg UR44C profile
authorPolyvox <obsidianzero@gmail.com>
Sat, 22 Aug 2026 14:10:51 +0000 (16:10 +0200)
committerJaroslav Kysela <perex@perex.cz>
Fri, 9 Oct 2026 08:42:52 +0000 (10:42 +0200)
The UR44C exposes six playback and eight capture channels, while the
UR44 UCM profile defines only four playback and six capture channels.
This causes PipeWire and WirePlumber to reject the UCM profile.

Add a dedicated UR44C profile with split PCMs for its DAW Mix 1,
DAW Mix 2, and FX Bus playback pairs, plus its six direct and two
streaming capture channels.

Closes: https://github.com/alsa-project/alsa-ucm-conf/pull/835
Fixes: https://github.com/alsa-project/alsa-ucm-conf/issues/799
Signed-off-by: Polyvox <obsidianzero@gmail.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
ucm2/USB-Audio/Steinberg/UR44C-HiFi.conf [new file with mode: 0644]
ucm2/USB-Audio/Steinberg/UR44C.conf [new file with mode: 0644]
ucm2/USB-Audio/USB-Audio.conf

diff --git a/ucm2/USB-Audio/Steinberg/UR44C-HiFi.conf b/ucm2/USB-Audio/Steinberg/UR44C-HiFi.conf
new file mode 100644 (file)
index 0000000..bca1e9f
--- /dev/null
@@ -0,0 +1,272 @@
+Include.pcm_split.File "/common/pcm/split.conf"
+
+Macro [
+       {
+               SplitPCM {
+                       Name "steinberg_ur44c_stereo_out"
+                       Direction Playback
+                       Channels 2
+                       HWChannels 6
+                       HWChannelPos0 FL
+                       HWChannelPos1 FR
+                       HWChannelPos2 FL
+                       HWChannelPos3 FR
+                       HWChannelPos4 FL
+                       HWChannelPos5 FR
+               }
+       }
+       {
+               SplitPCM {
+                       Name "steinberg_ur44c_stereo_in"
+                       Direction Capture
+                       Channels 2
+                       HWChannels 8
+                       HWChannelPos0 FL
+                       HWChannelPos1 FR
+                       HWChannelPos2 FL
+                       HWChannelPos3 FR
+                       HWChannelPos4 FL
+                       HWChannelPos5 FR
+                       HWChannelPos6 FL
+                       HWChannelPos7 FR
+               }
+       }
+       {
+               SplitPCM {
+                       Name "steinberg_ur44c_mono_in"
+                       Direction Capture
+                       Channels 1
+                       HWChannels 8
+                       HWChannelPos0 MONO
+                       HWChannelPos1 MONO
+                       HWChannelPos2 MONO
+                       HWChannelPos3 MONO
+                       HWChannelPos4 MONO
+                       HWChannelPos5 MONO
+                       HWChannelPos6 MONO
+                       HWChannelPos7 MONO
+               }
+       }
+]
+
+SectionDevice."Line 1" {
+       Comment "DAW Mix 1"
+
+       Value {
+               PlaybackPriority 300
+       }
+       Macro.pcm_split.SplitPCMDevice {
+               Name "steinberg_ur44c_stereo_out"
+               Direction Playback
+               HWChannels 6
+               Channels 2
+               Channel0 0
+               Channel1 1
+               ChannelPos0 FL
+               ChannelPos1 FR
+       }
+}
+
+SectionDevice."Line 2" {
+       Comment "DAW Mix 2"
+
+       Value {
+               PlaybackPriority 200
+       }
+       Macro.pcm_split.SplitPCMDevice {
+               Name "steinberg_ur44c_stereo_out"
+               Direction Playback
+               HWChannels 6
+               Channels 2
+               Channel0 2
+               Channel1 3
+               ChannelPos0 FL
+               ChannelPos1 FR
+       }
+}
+
+SectionDevice."Line 3" {
+       Comment "FX Bus"
+
+       Value {
+               PlaybackPriority 100
+       }
+       Macro.pcm_split.SplitPCMDevice {
+               Name "steinberg_ur44c_stereo_out"
+               Direction Playback
+               HWChannels 6
+               Channels 2
+               Channel0 4
+               Channel1 5
+               ChannelPos0 FL
+               ChannelPos1 FR
+       }
+}
+
+SectionDevice."Line 4" {
+       Comment "Direct Out 1"
+
+       Value {
+               CapturePriority 1000
+       }
+       Macro.pcm_split.SplitPCMDevice {
+               Name "steinberg_ur44c_mono_in"
+               Direction Capture
+               HWChannels 8
+               Channels 1
+               Channel0 0
+               ChannelPos0 MONO
+       }
+}
+
+SectionDevice."Line 5" {
+       Comment "Direct Out 2"
+
+       Value {
+               CapturePriority 900
+       }
+       Macro.pcm_split.SplitPCMDevice {
+               Name "steinberg_ur44c_mono_in"
+               Direction Capture
+               HWChannels 8
+               Channels 1
+               Channel0 1
+               ChannelPos0 MONO
+       }
+}
+
+SectionDevice."Line 6" {
+       Comment "Direct Out 3"
+
+       Value {
+               CapturePriority 800
+       }
+       Macro.pcm_split.SplitPCMDevice {
+               Name "steinberg_ur44c_mono_in"
+               Direction Capture
+               HWChannels 8
+               Channels 1
+               Channel0 2
+               ChannelPos0 MONO
+       }
+}
+
+SectionDevice."Line 7" {
+       Comment "Direct Out 4"
+
+       Value {
+               CapturePriority 700
+       }
+       Macro.pcm_split.SplitPCMDevice {
+               Name "steinberg_ur44c_mono_in"
+               Direction Capture
+               HWChannels 8
+               Channels 1
+               Channel0 3
+               ChannelPos0 MONO
+       }
+}
+
+SectionDevice."Line 8" {
+       Comment "Direct Out 5"
+
+       Value {
+               CapturePriority 600
+       }
+       Macro.pcm_split.SplitPCMDevice {
+               Name "steinberg_ur44c_mono_in"
+               Direction Capture
+               HWChannels 8
+               Channels 1
+               Channel0 4
+               ChannelPos0 MONO
+       }
+}
+
+SectionDevice."Line 9" {
+       Comment "Direct Out 6"
+
+       Value {
+               CapturePriority 500
+       }
+       Macro.pcm_split.SplitPCMDevice {
+               Name "steinberg_ur44c_mono_in"
+               Direction Capture
+               HWChannels 8
+               Channels 1
+               Channel0 5
+               ChannelPos0 MONO
+       }
+}
+
+SectionDevice."Line 10" {
+       Comment "Direct Out 1 & 2"
+
+       Value {
+               CapturePriority 400
+       }
+       Macro.pcm_split.SplitPCMDevice {
+               Name "steinberg_ur44c_stereo_in"
+               Direction Capture
+               HWChannels 8
+               Channels 2
+               Channel0 0
+               Channel1 1
+               ChannelPos0 FL
+               ChannelPos1 FR
+       }
+}
+
+SectionDevice."Line 11" {
+       Comment "Direct Out 3 & 4"
+
+       Value {
+               CapturePriority 300
+       }
+       Macro.pcm_split.SplitPCMDevice {
+               Name "steinberg_ur44c_stereo_in"
+               Direction Capture
+               HWChannels 8
+               Channels 2
+               Channel0 2
+               Channel1 3
+               ChannelPos0 FL
+               ChannelPos1 FR
+       }
+}
+
+SectionDevice."Line 12" {
+       Comment "Direct Out 5 & 6"
+
+       Value {
+               CapturePriority 200
+       }
+       Macro.pcm_split.SplitPCMDevice {
+               Name "steinberg_ur44c_stereo_in"
+               Direction Capture
+               HWChannels 8
+               Channels 2
+               Channel0 4
+               Channel1 5
+               ChannelPos0 FL
+               ChannelPos1 FR
+       }
+}
+
+SectionDevice."Line 13" {
+       Comment "Streaming"
+
+       Value {
+               CapturePriority 100
+       }
+       Macro.pcm_split.SplitPCMDevice {
+               Name "steinberg_ur44c_stereo_in"
+               Direction Capture
+               HWChannels 8
+               Channels 2
+               Channel0 6
+               Channel1 7
+               ChannelPos0 FL
+               ChannelPos1 FR
+       }
+}
diff --git a/ucm2/USB-Audio/Steinberg/UR44C.conf b/ucm2/USB-Audio/Steinberg/UR44C.conf
new file mode 100644 (file)
index 0000000..2b1e377
--- /dev/null
@@ -0,0 +1,10 @@
+Comment "Steinberg UR44C USB-Audio"
+
+SectionUseCase."HiFi" {
+       Comment "Default"
+       File "/USB-Audio/Steinberg/UR44C-HiFi.conf"
+}
+
+Include.dhw.File "/common/directm.conf"
+
+Macro.0.DirectUseCase { Id="Direct" PlaybackChannels=6 CaptureChannels=8 }
index 476e679c547be3b865c35c4810ca83d36820f6cc..3787fcb01e99f538bbd178de71691fc90c723376 100644 (file)
@@ -142,7 +142,8 @@ Macro.creative-g8.StringMatch               "Id='041e:329b' Profile='Creative/SoundBlaster-G8
 Macro.steinberg-ur22c.StringMatch      "Id='0499:172f' Profile='Steinberg/UR22C'"
 Macro.steinberg-ur22mkii.StringMatch   "Id='0499:170f' Profile='Steinberg/UR22mkII'"
 Macro.steinberg-ur24c.StringMatch      "Id='0499:174d' Profile='Steinberg/UR24C'"
-Macro.steinberg-ur44.RegexMatch                "Id='0499:17((00)|(30)|(04))' Profile='Steinberg/UR44'"
+Macro.steinberg-ur44c.StringMatch      "Id='0499:1730' Profile='Steinberg/UR44C'"
+Macro.steinberg-ur44.RegexMatch                "Id='0499:17((00)|(04))' Profile='Steinberg/UR44'"
 Macro.sony-inzone-h9-h7.StringMatch    "Id='054c:0e53' Profile='Sony/Inzone-H9-H7'"
 
 # 054c:0ce6 Sony Corp. DualSense wireless controller (PS5)