如何让我的不受支持的声卡与 ALSA 一起工作?

如何让我的不受支持的声卡与 ALSA 一起工作?

我的 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-verbalsa-tools软件包中获取(至少在 Debian 上是这样调用的)也可能有帮助。

您可以通过谷歌搜索旧编解码器的数据表来了解它们的工作原理。

相关内容