From b252946ba0c59ad53ed569163d327484104c634b Mon Sep 17 00:00:00 2001 From: Polyvox Date: Sat, 22 Aug 2026 16:10:51 +0200 Subject: [PATCH] USB-Audio: add Steinberg UR44C profile 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 Signed-off-by: Jaroslav Kysela --- ucm2/USB-Audio/Steinberg/UR44C-HiFi.conf | 272 +++++++++++++++++++++++ ucm2/USB-Audio/Steinberg/UR44C.conf | 10 + ucm2/USB-Audio/USB-Audio.conf | 3 +- 3 files changed, 284 insertions(+), 1 deletion(-) create mode 100644 ucm2/USB-Audio/Steinberg/UR44C-HiFi.conf create mode 100644 ucm2/USB-Audio/Steinberg/UR44C.conf diff --git a/ucm2/USB-Audio/Steinberg/UR44C-HiFi.conf b/ucm2/USB-Audio/Steinberg/UR44C-HiFi.conf new file mode 100644 index 0000000..bca1e9f --- /dev/null +++ b/ucm2/USB-Audio/Steinberg/UR44C-HiFi.conf @@ -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 index 0000000..2b1e377 --- /dev/null +++ b/ucm2/USB-Audio/Steinberg/UR44C.conf @@ -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 } diff --git a/ucm2/USB-Audio/USB-Audio.conf b/ucm2/USB-Audio/USB-Audio.conf index 476e679..3787fcb 100644 --- a/ucm2/USB-Audio/USB-Audio.conf +++ b/ucm2/USB-Audio/USB-Audio.conf @@ -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) -- 2.52.0