** Description changed: - Since alsa-ucm-conf 1.2.10, splitPCM devices doesn't work. - Bug reported here https://github.com/alsa-project/alsa-ucm-conf/issues/346 and https://github.com/GoXLR-on-Linux/goxlr-on-linux/issues/50 + [ Impact ] + Since alsa-ucm-conf 1.2.10 the SplitPCMDevice macro in + ucm2/common/pcm/split.conf references its optional Device argument as + ${var:__Device} rather than ${var:-__Device}. In alsa-lib's UCM + substitution the strict form on an undefined variable is a hard error, + so the substitution fails with -EINVAL, parse_verb_config drops the + verb, and snd_use_case_mgr_open fails for the whole card. The failure is + not partial: nothing from the profile survives. - Fixed by one liner here : https://github.com/alsa-project/alsa-ucm-conf/commit/b68aa52acdd2763fedad5eec0f435fbf43e5ccc6 + No caller in the shipped tree passes Device, so every USB audio + interface with a SplitPCM profile loses all of its UCM profiles. That is + 18 profiles: GoXLR, MOTU M2 and M4, Behringer UMC202HD, UMC204HD, Flow8 + Streaming and Flow8 Recording, Focusrite Scarlett 2i, Steinberg UR24C + and UR44, Audient iD4 (both variants), Arturia MiniFuse 1-2 and MiniFuse + 4, Roland BridgeCast, Universal Audio Volt 2, Digidesign Mbox 3, and the + Native Instruments Traktor Kontrol Z1. To the user the card appears in + PipeWire or PulseAudio with no usable profiles, so it cannot be selected + for playback or capture in Settings -> Sound. - This affects Noble / Oracular, not Mantic as it's based on 1.2.9 + The regression arrived with upstream commit 10967ea, released in 1.2.10 + on 2023-09-01, and was fixed by b68aa52 three days later, released in + 1.2.11 on 2024-01-29. Noble carries 1.2.10 and is the only supported + series cut inside that window: + + jammy 1.2.6.3-1ubuntu1.12 unaffected, macro absent + noble 1.2.10-1ubuntu5.14 affected + resolute 1.2.15.3-1ubuntu1.5 already fixed + stonking 1.2.16.1-1 already fixed + + Oracular was affected and is EOL; that task is already Won't Fix. + + The upload cherry-picks upstream b68aa52 unchanged. It is a one- + character change: ${var:__Device} becomes ${var:-__Device}, which is the + tolerant form alsa-lib provides for exactly this case, and which the + same file already uses for the equally optional Channel1 argument two + branches down. + + [ Test Plan ] + + With any of the interfaces listed above attached, on noble: + + 1. Find the card number: + + aplay -l + + 2. Confirm the failure with the package currently in noble-updates + (1.2.10-1ubuntu5.14), where N is that card number: + + alsaucm -c hw:N list _verbs + + It fails with + + variable '${var:__Device}' is not defined in this context! + failed to import hw:N use case configuration -22 + + and the card shows no profiles in "pactl list cards" or in + Settings -> Sound. + + 3. Enable noble-proposed and install alsa-ucm-conf 1.2.10-1ubuntu5.15, + then restart the audio stack: + + systemctl --user restart pipewire pipewire-pulse wireplumber + + 4. Repeat step 2. The HiFi verb is now listed, and + + alsaucm -c hw:N set _verb HiFi list _devices + + enumerates the interface's split PCM devices. The card's profiles and + ports appear in "pactl list cards" and are selectable in Settings -> + Sound. + + 5. Play and record on the restored profiles and confirm audio reaches + the expected physical outputs and inputs. + + Without the hardware, the parse failure alone can be reproduced on any + ALSA card, because the defect is a config parse failure rather than + anything device specific. Copy /usr/share/alsa/ucm2 to a scratch + directory, read the card's Components string from + + amixer -c N info + + edit the GoXLR dispatch regex in USB-Audio/USB-Audio.conf in that copy + to match that string, and run + + ALSA_CONFIG_UCM2=/path/to/scratch/ucm2 alsaucm -c hw:N list _verbs + + before and after the update. + + This was done during triage, in a noble container running noble's own + alsa-ucm-conf 1.2.10-1ubuntu5.14 and libasound2t64 1.2.11-1ubuntu0.3, + with the control node of an ordinary C-Media USB PnP Audio Device passed + through. The stock package fails with + + ALSA lib ucm_subs.c:807:(uc_mgr_get_substituted_value) variable '${var:__Device}' is not defined in this context! + ALSA lib parser.c:2024:(parse_verb_file) error: /USB-Audio/GoXLR/GoXLR-HiFi.conf failed to parse device + ALSA lib main.c:1554:(snd_use_case_mgr_open) error: failed to import hw:5 use case configuration -22 + + and 1.2.10-1ubuntu5.15 lists the HiFi verb and all eight GoXLR split + devices. That establishes the parse fix on the alsa-lib noble actually + ships. It does not establish that a real interface routes audio + correctly on the restored profiles, which is what the hardware steps + above are for. + + [ Where problems could occur ] + + The change makes an undefined __Device tolerated and defaulted to 0 + rather than aborting the parse, so any regression lands in UCM parsing + for USB audio interfaces. + + If the defaulting were wrong for some caller, the failure mode would + change from "no profiles at all" to "profiles present but pointing at + the wrong hardware PCM device". On a card with more than one PCM device + that would present as a profile that appears correctly in Settings -> + Sound but whose playback is silent, whose capture returns nothing, or + whose audio arrives at the wrong physical output. Regression testers + should therefore check that restored profiles actually pass audio on the + expected connectors, not merely that they appear. + + The macro is shared, so the change is reached by every UCM profile that + includes common/pcm/split.conf. That is the whole USB-Audio SplitPCM set + listed under [ Impact ], not only the GoXLR that prompted the report, so + a mistake here would affect all 18 interfaces at once rather than one + model. Cards outside that set do not include the file and are untouched. + Internal audio, HDA, SOF and SoundWire configurations are not affected + by this code path. + + Because the whole card is currently rejected, some users may have worked + around the bug with a local /usr/share/alsa/ucm2 override, a hand- + applied copy of this same patch, or PipeWire or PulseAudio configuration + pinning the card to a raw multichannel device. Such users could see + their workaround interact with the now-working profiles, for instance a + stale override shadowing the updated file, or a pinned configuration + that no longer matches the profile set that has reappeared. + + The package is architecture-independent configuration data with no + maintainer scripts and no compiled code, so there is no ABI, symbol or + dependency surface to consider. A bad configuration change is felt at + the next snd_use_case_mgr_open, which means at PipeWire or PulseAudio + start or on device hotplug, and is fully reverted by downgrading the + package and restarting the audio stack. + + [ Other Info ] + + The patch is upstream commit b68aa52acdd2763fedad5eec0f435fbf43e5ccc6, + cherry-picked without modification: + + https://github.com/alsa-project/alsa-ucm- + conf/commit/b68aa52acdd2763fedad5eec0f435fbf43e5ccc6 + + Upstream report: + + https://github.com/alsa-project/alsa-ucm-conf/issues/346 + + and the downstream GoXLR report it was found through: + + https://github.com/GoXLR-on-Linux/goxlr-on-linux/issues/50 + + The package has no debian/tests, so there is no autopkgtest to run for it. lintian reports + patch-file-present-but-not-mentioned-in-series for debian/patches/0001-sof-soundwire-Add-LED-support-for-cs35l56-amplifiers.patch; that orphan file predates this upload, has been present since 1.2.10-1ubuntu5.5, is inert, and is deliberately left untouched here to keep the SRU diff to the fix itself. + + Verification will need someone with affected hardware. Any one of the 18 + interfaces listed under [ Impact ] is sufficient, since the defect is in + the shared macro rather than in any per-device profile.
** Summary changed: - SplitPCM devices missing profiles since 1.2.10 + [SRU] alsa-ucm-conf: USB audio interfaces lose all profiles on noble (GoXLR, MOTU, Scarlett, Behringer, Steinberg) ** Tags added: noble -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2068911 Title: [SRU] alsa-ucm-conf: USB audio interfaces lose all profiles on noble (GoXLR, MOTU, Scarlett, Behringer, Steinberg) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/alsa-ucm-conf/+bug/2068911/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
