禁用板載聲音,以便我可以使用 ASUS Strix Soar 作為預設音效卡
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音效卡的核心模組是什麼,所以我不能移動它。
當我執行 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 的情況下禁用板載音頻的方法?
我不能是唯一有這個問題的人。
編輯感謝 Nik 接受的答案,這讓我走上了正確的道路,解決方案是改為
/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 現在是第一。
板載 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