解决Linux只有Nvidia HDM声卡输出的现象#
这篇文章在 CSDN 未经我同意变成付费文章了。 原文地址:https://blog.csdn.net/weixin_43594034/article/details/104855855?spm=1001.2014.3001.5501
起因#
前几天刚刚重装了ArchLinux然后安装桌面后发现声卡不能用,一直在网上找教程找了几天,问题都对不上。倒是在archlinuxcn论坛找到了一个相同问题的,但是那个帖子莫得回复。
说实话一开始我以为是驱动没装好,把pulseaudio卸了装、装了卸折腾了好几遍,alsamixer里该解开的静音也都解开了,声音就是出不来。耳机插上去也没反应,外放也没反应,pavucontrol里翻来覆去就只有一个设备能选。
就在我苦恼的时候,我想起还有Google这个东西,立马aplay -l一下,把输出放到Google就硬搜。
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 1: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
Subdevices: 1/1
Subdevice #0: subdevice #0bash其实还是毫无结果,但是我在一个帖子里发现了一个东西:sof-audio-pci。这是一个内核模块,我的电脑只显示Nvidia声卡的原因似乎就因为这个。
真棒!
我不知道原理,但是我猜大概就是Intel那个板载声卡的驱动没有正常加载,或者是被什么东西挡住了,导致系统就只认到Nvidia显卡里那个专门用来走HDMI音频的声卡。反正折腾到这个份上我已经不管三七二十一了,看到帖子里说改一下内核启动参数能解决,我就直接抄了。
解决方案#
上面水了那么多字数,其实下面才是解决方案:
编辑Linux Kernel启动项:这里以使用人数最多的Grub2为例子:
在/etc/default/grub里编辑,在GRUB_CMDLINE_LINUX_DEFAULT加上
snd_hda_intel.dmic_detect=0bash然后保存退出,重新生成Grub Config:(注意提权)
grub-mkconfig -o /boot/grub/grub.cfgbash重启一下,就能看到Intel的声卡控制芯片了~

再aplay -l一下,Intel那张卡就出现了,耳机、外放全都正常出声,折腾了好几天的问题就这么一行参数解决了。属实是离谱。
日后谈#
注意一下,我的电脑只是aplay -l显示不出设备,但是在lspci | grep audio能够显示出来
00:1f.3 Multimedia audio controller: Intel Corporation Cannon Lake PCH cAVS (rev 10)bash