我的 Lenovo Legion 7i 笔记本电脑的扬声器没有声音,alsamixer 告诉我正在使用瑞昱ALC287。
我尝试过各种 Linux 发行版和内核组合,包括 Ubuntu 16.04、18.04 和 20.04,同时使用默认内核和主线内核(5.7.x 和 5.8.x),以及使用 5.6.x、5.7.x 和 5.8.x 的 Manjaro内核。
在每种情况下,我都确保禁用 alsamixer 中的自动静音,并将所有音量级别调至最大。在所有情况下,我都没有从扬声器发出声音(运行扬声器测试、播放音乐等)。我是能够通过耳机和 HDMI 获取声音(尽管我相信 HDMI 是通过不同的声卡)。
另外,当我查看 pavucontrol(指示正在播放声音的红橙色条)时,我可以看到出现某种声音活动,但扬声器没有发出实际的声音。
我的 alsa-info.sh 结果(来自 2015 年 6 月 5 日的 Manjaro)在这里(忽略这一点,下面是较新的结果):
http://alsa-project.org/db/?f=ba86fe76a9d9cf1cced56600edf82eb206a36a72
我很高兴从不同的发行版/内核组合再次运行脚本(或任何其他工具),请告诉我什么会有帮助。
我已经提交了包含相同信息的错误报告,但遗憾的是,唯一的回应来自其他有同样问题的人。
我该怎么做才能让我的声音正常工作?我在软件开发方面有经验,但在驱动程序或内核空间方面没有经验。此时愿意学习和尝试任何事情。
更新
alsa-info.sh 使用更新的内核:
http://alsa-project.org/db/?f=4272343a3590cc08f192f98113dedfc0418afe52
答案1
部分答案:
您提供的信息有一个关于编解码器的部分,它告诉您该特定编解码器无法识别:
Codec: Realtek Generic
...
Vendor Id: 0x10ec0287
Subsystem Id: 0x17aa3813
Revision Id: 0x100002
在我的系统上,第一行说
Codec: Realtek ALC892
处理各种编解码器的补丁代码位于 中/sound/pci/hda/patch_realtek.c
,至少对于我目前使用的相对较旧的内核来说是这样。
因此,为了让声音正常工作,您需要调试编解码器的问题,然后编写补丁,并将其包含在代码中,以便其他拥有该硬件的人都可以使其正常工作。
编解码器信息可以使用 转储cat /proc/asound/card*/codec\#*
。了解英特尔 HDA 编解码器的工作原理并进行调试。
我建议禁用 Pulseaudio。hda-verb
从alsa-tools
软件包中获取(至少在 Debian 上是这样调用的)也可能有帮助。
您可以通过谷歌搜索旧编解码器的数据表来了解它们的工作原理。