Pulseaudio 毁掉了我最后的 Audigy 2 声卡,它这样做是因为它不断将声卡上的 PCM 调至最大音量,并且每次我切换音频应用程序时(例如从 Firefox youtube 视频切换到 Audacious),它都会自动更改音频级别。无论如何,这是一张旧卡,盖子已经变干了,但将音量重置为高是棺材上的最后一颗钉子,最终它开始听起来像埃里克卡特曼吹长号。然后,一些线路输出一侧的音频消失,所有其他输出的音质开始恢复。我已经摆脱了pulseaudio,这样就不会重复这种情况,并且我不会再使用pulseaudio。
我最近购买了一块 Asus Strix Soar 7.1 声卡。当且仅当启用了 Realtek 板载声卡时,ALSA 才会检测到它。如果在系统 UEFI 中禁用板载声音,则不会检测到声卡。 Asus Strix Soar 是一款基于 USB 的声卡,位于 PCIe PCB 上。我已经测试过它,它工作正常,并且当我告诉 Audacious 使用该卡上的 PCM 时听起来很合理。但许多应用程序都希望使用默认声卡,这不可避免地成为第一个声音设备。
如果我将板载声音的所有内核模块列入黑名单,则 Alsa 会停止检测我的 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 Audio 我得到以下信息:
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
aplay -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,我就无法将板载声音内核模块列入黑名单。
- 我无法确定 alsa-base.conf 中需要哪些内核模块来将 Realtek 声卡移出默认值。
我想做的事:
我想要做的是禁用板载音频或将其从默认声音设备中删除,以便我的 Strix Soar 成为默认声卡。但我不知道这个的内核模块。
有什么方法可以找出内核模块是什么,以便我可以移动它?或者有什么方法可以在不禁用 Strix Soar 的情况下禁用板载音频?
我不可能是唯一有这个问题的人。
编辑感谢尼克接受的答案,它让我走上了正确的道路,解决方案是更改为/etc/modprobe.d/alsa-base.conf
:
options snd_usb_audio index=0 model=auto
options snd_hda_intel index=3 model=auto
options snd_hda_intel index=4 model=auto
这解决了一切。 Strix 现在是第一。
答案1
板载 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_intel