uefi-common: install alsa-ucm-conf so PipeWire can route SOF cards#9858
uefi-common: install alsa-ucm-conf so PipeWire can route SOF cards#9858igorpecovnik wants to merge 1 commit into
Conversation
ThinkPad X9-15 (and almost certainly every other LNL/MTL/PTL UEFI laptop) booted Armbian with audio at kernel level fully alive: `aplay -l` enumerated all PCM devices including a working Speaker on hw:0,2, `speaker-test -D plughw:0,2` produced sound. But PipeWire / wireplumber only ever saw "auto_null" - no real sink - because the SOF card has six PCM devices (Jack Out, Speaker, 3x HDMI, Deepbuffer Jack Out) and userspace has no recipe for which one is the speaker output, which controls to unmute, or how to re-route on jack insert. alsa-ucm-conf ships those per-card recipes. With it installed, wireplumber picks "Speaker" as the default sink on cards whose ID self-identifies (e.g. LENOVO-21Q6001MGE-ThinkPadX9_15Gen1) and the rest of the audio stack just works. The package is Architecture: all and inert on machines without UCM profiles, so adding it unconditionally for every UEFI build is the right shape - same as the firmware-sof-signed line above. Verified on a ThinkPad X9-15 Gen 1 (LENOVO 21Q6001MGE, LNL): without this package, GNOME Sound shows "Dummy Output" only; with it, the Speaker sink appears and `speaker-test` via default device plays.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe UEFI common image configuration now includes the ChangesUEFI Audio Configuration
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Without alsa-ucm-conf installed, PipeWire / wireplumber see complex sound cards (Intel SOF on Lunar/Meteor/Panther Lake laptops, Qualcomm Snapdragon X, AMD ACP DSP, ...) but have no per-machine recipe for which PCM device is the speaker output, which controls to unmute, or how to route on jack-insert. Result: kernel-level audio is fully alive (aplay -l shows Speaker pcm; `speaker-test -D plughw:0,2` plays), but GNOME / KDE Sound shows only "Dummy Output" and the speakers stay silent. Verified on a ThinkPad X9-15 Gen 1 (LNL, CS42L43 jack + CS35L56 SPI amps): same kernel + same SOF firmware + same Cirrus blobs + same topology as a working Ubuntu OEM 6.17 boot of the same machine - the only difference between "silent" and "working" was this package. Mirrored in build's uefi_common.inc (armbian/build#9858) to cover image builds; here in common.yaml minimal tier so the runtime `armbian-config module_desktops install` path picks it up on any desktop / release / arch / DE combo. Inert on simpler audio chains (HDMI-only SBCs, USB DAC).
Without alsa-ucm-conf installed, PipeWire / wireplumber see complex sound cards (Intel SOF on Lunar/Meteor/Panther Lake laptops, Qualcomm Snapdragon X, AMD ACP DSP, ...) but have no per-machine recipe for which PCM device is the speaker output, which controls to unmute, or how to route on jack-insert. Result: kernel-level audio is fully alive (aplay -l shows Speaker pcm; `speaker-test -D plughw:0,2` plays), but GNOME / KDE Sound shows only "Dummy Output" and the speakers stay silent. Verified on a ThinkPad X9-15 Gen 1 (LNL, CS42L43 jack + CS35L56 SPI amps): same kernel + same SOF firmware + same Cirrus blobs + same topology as a working Ubuntu OEM 6.17 boot of the same machine - the only difference between "silent" and "working" was this package. Mirrored in build's uefi_common.inc (armbian/build#9858) to cover image builds; here in common.yaml minimal tier so the runtime `armbian-config module_desktops install` path picks it up on any desktop / release / arch / DE combo. Inert on simpler audio chains (HDMI-only SBCs, USB DAC).
The bug
ThinkPad X9-15 (LNL, CS42L43 jack + CS35L56 SPI amps) booted Armbian with kernel-level audio fully alive — `aplay -l` enumerated the Speaker PCM, `speaker-test -D plughw:0,2` made sound. But PipeWire / wireplumber only ever saw "auto_null" — no real sink — because the SOF card has six PCM devices (Jack Out, Speaker, three HDMI, Deepbuffer Jack Out) and userspace has no recipe for which one is the speaker output, which controls to unmute, or how to route on jack insert.
`alsa-ucm-conf` ships those per-card UCM profiles. Without it: "Dummy Output" only. With it: Speaker sink appears, audio works.
The fix
One line in `config/sources/families/include/uefi_common.inc`:
```bash
add_packages_to_image alsa-ucm-conf
```
Architecture: all package, inert on machines without UCM profiles. Lives next to the existing `firmware-sof-signed` line above — same scope, same rationale.
Verified on
Lenovo ThinkPad X9-15 Gen 1 (DMI `21Q6001MGE`, LNL), Armbian edge x86 7.0.9. Same kernel + same SOF firmware + same Cirrus blobs + same topology as a working Ubuntu OEM 6.17 boot of the same machine — the only difference between "silent" and "working" was this package.
Test plan
Summary by CodeRabbit
Bug Fixes
Documentation