Manjaro Linux 识别不到声音设备

前段时间给两台机器装了 Manjaro,公司台式主机和 Redmi G 笔记本,使用的桌面环境是 KDE 发现两台机器都不能正常识别声音设备,笔记本是因为直接识别不到声卡,这个问题下一篇文章说一下解决方法,这里先说台式主机的问题。

使用的扬声器其实就是个 3.5 毫米的耳机,在给这台机器重装之前使用的是 deepin 系统,这个耳机是可以正常工作的(虽然不常用,但印象里是可以工作的),但是在 Manjaro 里 KDE 提示找不到声音设备,经过测试当把耳机插入主机后面的插口时是可以工作的,这也说明系统是可以识别到声卡的,谷歌了一圈发现可以给声卡驱动添加启动参数针对一些设备的兼容。这台机器的声卡是 ALC887,可以通过执行一下命令查看开机日志,并搜索 audio 来找出声卡型号:

1
sudo journalctl -xb

然后执行以下命令可以查看内核为这个声卡加载的驱动:

1
2
3
4
5
6
7
8
# lspci -v
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
Subsystem: Gigabyte Technology Co., Ltd Device a182
Flags: bus master, fast devsel, latency 0, IRQ 31
Memory at f7d10000 (64-bit, non-prefetchable) [size=16K]
Capabilities: <access denied>
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel

可以发现使用的驱动是 snd_hda_intel,在内核 alsa 相关文档中可以找到有哪些选项:

https://www.kernel.org/doc/html/v5.7/sound/hd-audio/models.html

按照声卡型号搜索,找到对应的选项:

https://www.kernel.org/doc/html/v5.7/sound/hd-audio/models.html#alc88x-898-1150-1220

之后编辑 /etc/modprobe.d/alsa-base.conf 文件(没有则创建),添加以下内容:

1
options snd-hda-intel model=acer-aspire-4930g

注意替换 model 选项的值到对应声卡驱动的可选值。修改完成之后保存退出并重启系统,如果仍然识别不到声音设备可以继续修改选项的值。

当终于找到一个合适的值让 alsa 可以识别播放设备了,但发现没有声音,可以执行命令 sudo alsamixer 命令手动取消对应设备的静音状态,处于静音状态的设备会标记为 MM,使用左右键切换到对应设备,按一下 m 键即可取消静音,取消静音之后 MM 会变成 00