** 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

Reply via email to