alsa-ucm-conf icon indicating copy to clipboard operation
alsa-ucm-conf copied to clipboard

Steinberg UR22C: Version 1.2.14 introduced "[ALSA UCM error]" on older firmware.

Open NoXPhasma opened this issue 8 months ago • 14 comments

Since version 1.2.14 the node.description of the Steinberg UR22C shows [ALSA UCM error]:

node.description = "Steinberg UR22C [ALSA UCM error] Direct Steinberg UR22C"
> journalctl --user -u wireplumber --boot 0

systemd[1286]: Started Multimedia Service Session Manager.
wp-internal-comp-loader: Loading profile 'main'
spa.alsa: Error in ALSA UCM profile for _ucm0001.hw:UR22C,0 (HiFi: Line 3: source): CaptureChannels=4 > avail 2
spa.alsa: Errors in ALSA UCM profile for card Steinberg UR22C
wireplumber[1359]: wp-device: SPA handle 'api.libcamera.enum.manager' could not be loaded; is it installed?
wireplumber[1359]: s-monitors-libcamera: PipeWire's libcamera SPA plugin is missing or broken. Some camera types may not be supported.
wireplumber[1359]: default: Failed to get percentage from UPower: org.freedesktop.DBus.Error.NameHasNoOwner
wireplumber[1359]: spa.bluez5: BlueZ system service is not available

Reverting to version 1.2.13 fixes this issue.

NoXPhasma avatar Apr 15 '25 17:04 NoXPhasma

Changing HWChannels from 4 to 2 in UR22C-HiFi.conf fixes it.

This was introduced with https://github.com/alsa-project/alsa-ucm-conf/commit/2f0c858ed799b53864f9e0da53d125419fce8ee9

I'm not sure why it was changed to 4 channels, but that is definitely wrong, even on the hardware level. Yes, the device has 2x XLR and 2x Jack, but both use the same channel. It's even physically impossible to use XLR and Jack at the same time, as the Jack are inside the XLR port.

NoXPhasma avatar Apr 15 '25 17:04 NoXPhasma

There's maybe multiple variants of the hardware/firmware then, or there is some kernel driver change. What number of channels the audio HW exposes on USB is separate question from how many physical ports the card has.

pv avatar Apr 15 '25 18:04 pv

I think there is only one variant of the UR22C, but there are other UR devices: https://www.steinberg.net/audio-interfaces/ur-c-series/

There are also only two input channels exposed for me. Those are combined as a stereo input device.

NoXPhasma avatar Apr 15 '25 18:04 NoXPhasma

You should to attach more information about your hardware: In https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/4609 there's proof of a "Steinberg UR22C" with 4 capture channels.

  • alsa-info.sh
  • spa-acp-tool -p "api.alsa.split-enable=true" -c 0 -v -v -v -v lv > acp-lv.log 2>&1 (replace 0 with the actual ALSA card number for your case, output will contain "Steinberg UR22C")

pv avatar Apr 15 '25 18:04 pv

@pv Found the cause. My device was still on firmware version 2.00. Updated it to the latest (3.20) and now it wants those 4 channels. The two input channels are also not shown as one Stereo input device anymore, but two mono.

Unfortunately, the firmware can only be updated through their proprietary Windows software.

NoXPhasma avatar Apr 15 '25 19:04 NoXPhasma

If there's access to older firmware, we can try to detect it. Attach alsa-info.sh --no-upload output for both older and newer firmware files.

perexg avatar Apr 24 '25 10:04 perexg

Firmware 2.00: alsa-info_2.00.txt Firmware 3.20: alsa-info_3.20.txt

NoXPhasma avatar Apr 24 '25 10:04 NoXPhasma

It seems that the firmware version can be identified using bcdDevice descriptor:

 Device Descriptor:
   bLength                18
   bDescriptorType         1
-  bcdUSB               2.10
+  bcdUSB               3.10
   bDeviceClass          239 Miscellaneous Device
   bDeviceSubClass         2 [unknown]
   bDeviceProtocol         1 Interface Association
-  bMaxPacketSize0        64
+  bMaxPacketSize0         9
   idVendor           0x0499 Yamaha Corp.
   idProduct          0x172f Steinberg UR22C
-  bcdDevice            2.00
+  bcdDevice            3.20
   iManufacturer           1 Yamaha Corporation
   iProduct                2 Steinberg UR22C
   iSerial                 0 

EDIT: It means sysfs path /sys/class/sound/cardX/device/../bcdDevice .

perexg avatar Apr 24 '25 11:04 perexg

Fix is available in above PR, but the very latest alsa-lib sources must be used for tests.

perexg avatar Apr 24 '25 11:04 perexg

FWIW, I'm on an SSL 2 USB interface and I have the same problem.

Aug 17 09:06:21 bazzite systemd[2227]: Started wireplumber.service - Multimedia Service Session Manager.
Aug 17 09:06:21 bazzite wireplumber[2415]: wp-internal-comp-loader: Loading profile 'main'
Aug 17 09:08:07 bazzite wireplumber[2415]: spa.alsa: Error in ALSA UCM profile for _ucm0004.hw:S2,0 (HiFi: Mic2: source): CaptureChannels=4 > avail 2
Aug 17 09:08:08 bazzite wireplumber[2415]: spa.alsa: Errors in ALSA UCM profile for card SSL 2

Bus 005 Device 002: ID 31e9:0001 Solid State Logic SSL 2

jarcane avatar Aug 17 '25 14:08 jarcane

alsa-info.txt

Simple fix on my Fedora 42/43

change HWChannels 4 to HWChannels 2 in /usr/share/alsa/ucm2/USB-Audio/Steinberg/UR22C-HiFi.conf

OS: Fedora Linux 43 (Workstation Edition) x86_64
Host: HP ZBook Firefly 14 inch G10 A Mobile Workstation PC (SBKPF,SBKPFV2)
Kernel: Linux 6.17.1-300.fc43.x86_64
Uptime: 5 hours, 16 mins
Packages: 2480 (rpm), 14 (flatpak)
Shell: bash 5.3.0
Display (GIGA-BYTE TECHNOLOGY CO., LTD. 32"): 3840x2160 @ 120 Hz (as 2560x1440) in 32" [External]
DE: GNOME 49.0
WM: Mutter (Wayland)
WM Theme: Adwaita
Theme: Adwaita [GTK2/3/4]
Icons: Adwaita [GTK2/3/4]
Font: Adwaita Sans (11pt) [GTK2/3/4]
Cursor: Adwaita (24px)
Terminal: Ptyxis 49.1
Terminal Font: Adwaita Mono (11pt)
CPU: AMD Ryzen 7 PRO 7840HS (16) @ 5.14 GHz
GPU: AMD Radeon 780M Graphics [Integrated]
Memory: 6.23 GiB / 54.68 GiB (11%)
Swap: 0 B / 8.00 GiB (0%)
Disk (/): 12.56 GiB / 78.19 GiB (16%) - ext4
Disk (/home): 11.71 GiB / 124.93 GiB (9%) - ext4
Disk (/home/shared): 536.22 GiB / 617.08 GiB (87%) - ext4
Disk (/mnt/f42/root): 23.49 GiB / 78.19 GiB (30%) - ext4
Disk (/mnt/nas-homes): 2.40 TiB / 3.48 TiB (69%) - fuse.sshfs
Disk (/usr/local): 2.15 MiB / 15.58 GiB (0%) - ext4
Disk (/var): 5.23 GiB / 97.87 GiB (5%) - ext4
Local IP (enp197s0f4u1u2): 192.168.79.111/24
Battery (Primary): 97% [AC Connected]
Locale: en_US.UTF-84

I am going to try to update FW and later will send feedback.

tomasmark79 avatar Oct 14 '25 14:10 tomasmark79

Steinberg UR22C Firmware Upgraded to 3.20

journalctl -b |grep UCM
Oct 14 16:51:34 whitediamond wireplumber[4564]: spa.alsa: Error in ALSA UCM profile for _ucm0009.hw:UR22C,0 (HiFi: Line 3: source): CaptureChannels=2 < avail 4
Oct 14 16:51:35 whitediamond wireplumber[4564]: spa.alsa: Errors in ALSA UCM profile for card Steinberg UR22C

I have to switch back from manually changed 2 to 4 channels to fix this issue and all will be fine.

This means, total channels is firmware dependent.

tomasmark79 avatar Oct 14 '25 14:10 tomasmark79

Steinberg UR22C Firmware Upgraded to 3.01

Current firmware version - 3.20.

AdrianusWest avatar Oct 14 '25 16:10 AdrianusWest

Ach yes, misstypo. 3.20.

tomasmark79 avatar Oct 14 '25 16:10 tomasmark79