Locale-dependent POSIX regex in sof-soundwire UCM fails under tr_TR.UTF-8 and prevents HiFi profile detection
GitHub issues - opened <[email protected]> Mon, 3 Aug 2026 22:01:59 +0200 (CEST)
| Newsgroups | org.alsa-project.alsa-devel |
|---|---|
| Message-ID | <[email protected]> |
alsa-project/alsa-ucm-conf issue #824 was opened from radiatez: ## Summary This issue is fully reproducible and the root cause has been isolated. The problem is caused by a locale-dependent POSIX regular expression in the SOF SoundWire UCM configuration. Under `tr_TR.UTF-8`, ALSA fails to import the UCM profile, preventing PipeWire/WirePlumber from exposing the normal HiFi profile. This report includes: - a minimal reproducer - the root cause - the diagnostic evidence - a tested fix --- ## Hardware - Laptop: Acer Swift SFG14-72 - Audio controller: Intel Meteor Lake-P HD Audio (`8086:7e28`) - Driver: `sof-audio-pci-intel-mtl` ### Packages - `alsa-ucm-conf 1.2.16.1-1` - `pipewire 1.6.8` - `wireplumber 0.5.15` --- ## Symptoms With `LANG=tr_TR.UTF-8`: PipeWire exposes only: - Off - HDMI - Pro Audio No **HiFi** profile appears. WirePlumber therefore selects `off`, resulting in: - Dummy Output - No speaker - No microphone The exact same hardware works correctly from the CachyOS Live ISO. --- ## Root cause The following regex in `sof-soundwire.conf`: ```text mic:([a-z0-9]+(-dmic)?+(-sdca)?) ``` depends on locale-sensitive POSIX character ranges. This behavior is independent of PipeWire and WirePlumber. Both components correctly report the ALSA UCM import failure. The parsing error originates inside the ALSA UCM configuration/parser under the Turkish locale. Under `tr_TR.UTF-8`, the expression matches: ```text dmic ``` as ```text dm ``` instead of ```text dmic ``` ALSA then attempts to load: ```text /usr/share/alsa/ucm2/sof-soundwire/dm.conf ``` which does not exist. The failed include aborts the UCM import, causing PipeWire to expose only legacy ACP profiles. --- ## Reproducer A small test using `setlocale()` and POSIX regex demonstrates the issue: ```text C -> dmic C.UTF-8 -> dmic en_US.UTF-8 -> dmic tr_TR.UTF-8 -> dm ``` --- ## Proposed fix Replace ```text [a-z0-9] ``` with ```text [[:alnum:]] ``` because POSIX character classes are locale-safe while `[a-z]` is locale-dependent. This change preserves the intended matching semantics while eliminating locale-specific behavior. --- ## Additional information I performed a full investigation eliminating: - kernel regression - SOF firmware - topology loading - PipeWire - WirePlumber - device permissions - package corruption The attached report contains the complete diagnostic process, evidence, commands executed, and validation. Please let me know if you would like the minimal reproducer or a patch. [AUDIO_ROOT_CAUSE.md](https://github.com/user-attachments/files/30677297/AUDIO_ROOT_CAUSE.md) Issue URL : https://github.com/alsa-project/alsa-ucm-conf/issues/824 Repository URL: https://github.com/alsa-project/alsa-ucm-conf