运行 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而言。