archlinux机械革命15x音频修复2
之前的解决方案:
目前解决方案
经过3个月左右测试,机械革命15X的音频问题,目前采用的是:
- 延迟加载驱动
- HDA驱动参数
- 禁用SOF驱动
- WirePlumber配置
方案变化
问题定位
15X的音频问题主要源于:
- 冷启动初始化不稳定:Conexant SN6140 codec探测超时
- 引脚配置:BIOS没适配引脚
- 电源管理冲突:DMA位置报告错误,输出垃圾数据导致扬声器爆鸣
解决思路
通过延迟驱动加载绕过 BIOS 初始化的不稳定期
完整配置
1. HDA 驱动参数
文件路径:/etc/modprobe.d/alsa-hda.conf
1 | |
说明:
single_cmd=1:使用单命令模式power_save=0:禁用 codec 空闲省电,保持始终工作状态power_save_controller=N:禁止 HDA 控制器进入节能状态model=,laptop-amic:第一个逗号跳过 HDMI codec,第二个参数为 SN6140 指定笔记本模拟麦克风配置probe_mask=1:只探测第一个 codec,避免 HDMI 与内置声卡竞争position_fix=1:使用 LPIB 寄存器读取 DMA 位置,缓解爆音问题
2. 禁用SOF驱动
文件路径:/etc/modprobe.d/blacklist-sof.conf
1 | |
说明:SOF (Sound Open Firmware) 驱动对 Conexant SN6140 支持不完善,强制使用传统 HDA 驱动。
3. 延迟加载 HDA 驱动
这是解决冷启动 “no codecs found” 问题的。
步骤 1:黑名单早期加载
文件路径:/etc/modprobe.d/blacklist-hda-early.conf
1 | |
作用:阻止 initramfs 阶段自动加载 snd_hda_intel,为延迟加载腾出空间。
步骤 2:创建 systemd 延迟加载服务
文件路径:/etc/systemd/system/audio-delayed-load.service
1 | |
原理:
1 | |
步骤 3:启用服务并重建 initramfs
1 | |
4. WirePlumber 配置(可选,防止暂停导致爆音)
文件路径:~/.config/wireplumber/wireplumber.conf.d/disable-suspension.conf
1 | |
应用配置:
1 | |
验证:使用 pw-top 观察,停止播放后节点应保持 Idle (I) 状态,而非 Suspended (S)。
验证配置
1 | |
最近内核更新的情况
Linux 6.19.6-zen1(2026年3月),内核包含了以下针对Conexant SN6140的修复:
- 耳机自动检测修复(OMTP/CTIA 识别)
- 轮询模式检测改进
但没有针对WUJIE15XA冷启动初始化修复
所以目前就这样先用着,近几个月没有出过问题,目前看延迟加载还是有用的,如果有其他的问题继续更新~
最后更新:2026-03-14
环境:Arch Linux, Kernel 6.19.6-zen1-1, MECHREVO WUJIE15XA
archlinux机械革命15x音频修复2
https://inkcodes.com/2026/03/14/archlinux机械革命15x音频修复2/