Skip to content

uefi-common: install alsa-ucm-conf so PipeWire can route SOF cards#9858

Closed
igorpecovnik wants to merge 1 commit into
mainfrom
uefi-common-add-alsa-ucm-conf
Closed

uefi-common: install alsa-ucm-conf so PipeWire can route SOF cards#9858
igorpecovnik wants to merge 1 commit into
mainfrom
uefi-common-add-alsa-ucm-conf

Conversation

@igorpecovnik

@igorpecovnik igorpecovnik commented May 18, 2026

Copy link
Copy Markdown
Member

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

  • Build UEFI x86 desktop on noble / resolute; confirm `dpkg -l alsa-ucm-conf` shows installed
  • Boot on any SOF-equipped UEFI laptop (Meteor/Lunar/Panther Lake, recent ThinkPad / Latitude / EliteBook); confirm GNOME Sound shows a Speaker sink instead of Dummy Output
  • Confirm no regression on UEFI builds without SOF hardware (cloud VMs, generic UEFI x86 servers) — package is inert there

Summary by CodeRabbit

  • Bug Fixes

    • Fixed audio output issue on UEFI x86 laptops where speakers remained silent due to missing per-machine audio routing configuration for SOF audio components.
  • Documentation

    • Added documentation explaining audio component detection behavior and fallback scenarios.

Review Change Stack

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.
@coderabbitai

coderabbitai Bot commented May 18, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 8ec914eb-dfbd-4c80-bd22-55ef848054b3

📥 Commits

Reviewing files that changed from the base of the PR and between b791830 and ca99a43.

📒 Files selected for processing (1)
  • config/sources/families/include/uefi_common.inc

📝 Walkthrough

Walkthrough

The UEFI common image configuration now includes the alsa-ucm-conf package to ensure proper audio routing on UEFI x86 systems. Documentation explains that without this package, PipeWire and wireplumber may detect audio components but lack machine-specific UCM routing tables, causing silent speaker output via fallback behavior.

Changes

UEFI Audio Configuration

Layer / File(s) Summary
ALSA UCM configuration dependency
config/sources/families/include/uefi_common.inc
The alsa-ucm-conf package is added to the UEFI image via add_packages_to_image, with comments documenting the UCM routing failure mode on affected x86 systems where PipeWire/wireplumber would otherwise select null audio output.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Suggested reviewers

  • rpardini

Poem

🎵 A tiny package, yet so grand,
Brings audio back to UEFI land,
Where UCM routes must have their say,
No silent speakers come this day! 🐰

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the main change: adding alsa-ucm-conf package to uefi-common to enable PipeWire audio routing for SOF cards.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch uefi-common-add-alsa-ucm-conf

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot added 05 Milestone: Second quarter release size/small PR with less then 50 lines Needs review Seeking for review Hardware Hardware related like kernel, U-Boot, ... labels May 18, 2026
@igorpecovnik igorpecovnik deleted the uefi-common-add-alsa-ucm-conf branch May 18, 2026 07:43
igorpecovnik added a commit to armbian/configng that referenced this pull request May 18, 2026
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).
igorpecovnik added a commit to armbian/configng that referenced this pull request May 18, 2026
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).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

05 Milestone: Second quarter release Hardware Hardware related like kernel, U-Boot, ... Needs review Seeking for review size/small PR with less then 50 lines

Development

Successfully merging this pull request may close these issues.

1 participant