Pulse音频谋杀了我最后一张Audigy 2声卡,它之所以这么做,是因为它不断地将PCM转换到声卡上的最大音量,而且每次我切换音频应用程序时,它都会自动改变音频级别--例如从Firefox youtube视频切换到大胆的音频应用程序。不管怎么说,这是一张旧卡片,帽子都干了,但把音量调高是棺材里的最后一根钉子,最后听起来就像埃里克·卡特曼( Eric )把它放成长号一样。然后,一些线路的一边的音频熄灭,声音质量开始在所有其他的输出。我已经摆脱了脉冲音频,这样就不会重复,我也不会再使用脉冲音频了。
我最近买了华硕Strix Soar 7.1声卡。它是由ALSA检测的当且仅当里特克星上的声卡是启用的。如果在系统UEFI中禁用了机载声音,则不会检测到任何声卡。华硕Strix是一种基于USB的声卡,位于PCIe电路板上。我已经测试过它,它的工作很好,听起来合理,当我告诉大胆地使用PCM从那个卡。但是许多应用程序都希望使用默认的声卡,这将不可避免地成为第一个声音设备。
如果我黑名单上所有的内核模块上的声音,然后阿尔萨停止检测我的Strix Soar和它报告“没有混频器设备”,不会打开任何声音控制。当我在BIOS中禁用它时也会发生同样的情况;ALSA没有检测到它。
我也有一个NVidia显卡,这需要通过HDMI输出声音,这试图成为默认的声卡。
我已经阻止HDMI输出成为默认配置,配置如下:
options snd_hda_intel index=3 model=auto在/etc/modprobe.d/alsa-base.conf中,这会将hdmi输出移到卡3,这样它就在列表的后面,永远不会成为默认的声卡。万岁!
但是现在realtek声卡被列为第一个设备。我不知道realtek声卡的内核模块是什么,所以我不能移动它。
当我做一个lspci -k \ grep -A2音频时,我会得到以下内容:
09:00.1 Audio device: NVIDIA Corporation GK208 HDMI/DP Audio Controller (rev a1)
Subsystem: ASUSTeK Computer Inc. GK208 HDMI/DP Audio Controller
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel
--
0b:00.3 Audio device: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) HD Audio Controller
Subsystem: ASUSTeK Computer Inc. Family 17h (Models 00h-0fh) HD Audio Controller
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel当我做了一个lsmod \ grep snd时,我得到:
snd_hda_codec_hdmi 61440 1
snd_hda_codec_generic 86016 1
snd_usb_audio 262144 1
snd_hda_intel 49152 1
snd_usbmidi_lib 36864 1 snd_usb_audio
snd_hda_codec 151552 3 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel
snd_rawmidi 40960 1 snd_usbmidi_lib
snd_seq_device 16384 1 snd_rawmidi
snd_hda_core 94208 4 snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
snd_hwdep 16384 2 snd_usb_audio,snd_hda_codec
snd_pcm 114688 5 snd_hda_codec_hdmi,snd_hda_intel,snd_usb_audio,snd_hda_codec,snd_hda_core
snd_timer 36864 1 snd_pcm
snd 94208 15 snd_hda_codec_generic,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_usb_audio,snd_usbmidi_lib,snd_hda_codec,snd_timer,snd_pcm,snd_rawmidi
soundcore 16384 1 snd
usbcore 294912 5 xhci_hcd,snd_usb_audio,usbhid,snd_usbmidi_lib,xhci_pci播放-l的输出是:
**** List of PLAYBACK Hardware Devices ****
card 0: Generic [HD-Audio Generic], device 0: Generic Analog [Generic Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: Generic [HD-Audio Generic], device 1: Generic Digital [Generic Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: CARD [STRIX SOUND CARD], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: CARD [STRIX SOUND CARD], device 1: USB Audio [USB Audio #1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: CARD [STRIX SOUND CARD], device 2: USB Audio [USB Audio #2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0我想要做的是,要么禁用车载音频,要么将其从默认声音设备中清除,这样我的Strix Soar就是默认的声卡。但我不知道这个核心模块是什么。
有没有办法找出内核模块是什么,这样我就可以移动它了吗?或者以某种方式在不禁用Strix Soar的情况下禁用车载音频?
我不可能是唯一有这个问题的人。
编辑感谢Nik所接受的答案,它使我走上了正确的道路,解决方案是将/etc/modprobe.d/alsa-base.conf改为read:
options snd_usb_audio index=0 model=auto
options snd_hda_intel index=3 model=auto
options snd_hda_intel index=4 model=auto这个解决了所有的问题。斯特里克斯现在是第一名。
发布于 2021-03-24 23:39:48
车载Realtek和NVidia GPU都使用模块snd_hda_intel,而您想要的设备默认使用snd_usb_audio模块。
slots选项可以修复卡片顺序,以便snd_usb_audio获得第一个插槽(卡片0)。
编辑/etc/modprobe.d/alsa-base.conf并将问题中添加的选项替换为:
options snd slots=snd_usb_audio,snd_hda_intelhttps://unix.stackexchange.com/questions/639700
复制相似问题