如何将 Debian 中的默认声卡更改为外部 USB?

如何将 Debian 中的默认声卡更改为外部 USB?

运行 Jessie 并aplay -l给我这个:

**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC887-VD Analog [ALC887-VD Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC887-VD Digital [ALC887-VD Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [HDA ATI HDMI], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Device [USB Advanced Audio Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

USB 卡是我唯一的工作设备(alsaplayer -o alsa -d hw:2,0 rocknroll.mp3证实了这一点)

所以我想出了以下 /etc/modprobe.d/sound 文件并重新启动了pulseaudio:

options snd cards_limit=3
alias snd-card-0 snd-1
alias snd-card-1 snd-hdmi
alias snd-card-2 snd-usb
options snd slots=snd_usb_audio,snd_hd_intel,snd-1

但我的系统仍然没有声音。我不做什么?我必须创建上面的声音文件,因为以前没有。所以也许这是一种过时的做事方式。

答案1

我将在这里给出一个通用的答案,因为这个问题出现了很多次,并且多年来一直困扰着我。

本质上,我有一个带有 Xonar DX 声卡的系统、GPU 上的声音输出以及主板上的板载声卡。

将哪个声卡设置为默认值是完全随机的,因为它是启动期间的竞争条件。此外,我无法将 GPU 声音输出的内核模块列入黑名单,因为它使用与板载声卡相同的 snd_hda_intel 模块,所以我无法弄清楚如何在不禁用另一个的情况下禁用一个。

首先要做的就是弄清楚它们正在使用哪些内核模块。为此,请运行命令:

lspci -k 

这将显示您的 pci 设备使用的内核模块。如果您使用 USB 设备,则需要找到其他方法。如果未安装 lspci,请使用以下命令安装它:apt-get install pciutils。对于 USB 设备,请尝试:

lsmod | grep snd

可以帮助您缩小范围!

我的lspci -k输出如下所示:

...
06:04.0 Multimedia audio controller: C-Media Electronics Inc CMI8788 [Oxygen HD Audio]
        Subsystem: ASUSTeK Computer Inc. Virtuoso 100 (Xonar DX)
        Kernel driver in use: snd_virtuoso
        Kernel modules: snd_virtuoso
...
0a: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
...
0c: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
...

现在,我希望 Xonar DX 声卡成为第一个,因此我在 sound.conf 中插入以下内容:

# cat /etc/modprobe.d/sound.conf 
options snd cards_limit=3
options snd slots=snd_virtuoso,snd_hda_intel,snd_hda_intel

重新启动后,snd_virtuoso(即我的 xonar dx)首先出现。

请注意,此设置中不需要任何脉冲音频。这纯粹是就alsa而言。

相关内容