![禁用模拟音频,强制默认 HDMI 音频 - 禁用/黑名单 snd_hda_intel 模块](https://linux22.com/image/196553/%E7%A6%81%E7%94%A8%E6%A8%A1%E6%8B%9F%E9%9F%B3%E9%A2%91%EF%BC%8C%E5%BC%BA%E5%88%B6%E9%BB%98%E8%AE%A4%20HDMI%20%E9%9F%B3%E9%A2%91%20-%20%E7%A6%81%E7%94%A8%2F%E9%BB%91%E5%90%8D%E5%8D%95%20snd_hda_intel%20%E6%A8%A1%E5%9D%97.png)
我在 Debian 11 安装中遇到问题,无法恢复到 3.5 毫米模拟音频输出,尽管 HDMI 已插入并且我希望音频从其中输出。 Debian GUI 没有常用的方法来禁用输出设备。通常声音区域的设置会保持不变,但最近并非总是如此。
通过 alsa 或脉冲工具使用 CLI 来完成此操作甚至很棘手,因为我们不处理不同的声卡,正如大多数在线示例所处理的那样,但 HDMI 输出和模拟输出都是一个 HDA Intel PCH 设备的不同设备。
这是aplay -l 的结果
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC662 rev3 Analog [ALC662 rev3 Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
答案1
我解决这个问题的方法是禁用与 ALC662 设备相关的模块/驱动程序,幸运的是,这在保持 HDMI 声音正常工作的情况下有效。
首先,我尝试了您会发现很多示例的方法,即将“blacklist [module_name]”添加到 /etc/modprobe.d/ 中的 .conf 文件中
我发现这适用于声音模块的某些级别,但并非全部。它在 snd_hda_codec_realtek 上有效,但这还不够,因为随后 ALC662 恢复为 Generic,并且将 snd_hda_codec_generic 列入黑名单不起作用。
诀窍是在 .conf 中也使用此行来阻止加载 snd_hda_codec_generic。
blacklist snd_hda_codec_generic
install snd_hda_codec_generic /bin/false
或者,只需重命名 /lib/modules/5.10.0-8-amd64/kernel/sound/pci/hda/snd-hda-codec-generic.ko (由 /usr/sbin/modinfo snd_hda_codec_generic 找到)就可以了,但上面的似乎如果有人想知道为什么模拟声音在他们需要的时候不起作用,那么将来会不那么野蛮,更容易找到。