声卡和HDMI都使用Intel HDA驱动程序时,声音不起作用。如何交换设备加载顺序?


10

我有一台Acer Aspire One 522上网本,其中有一个基于Conexant CX20584芯片组的Intel HDA声卡。尽管KDE在启动时确实会输出声音,但是Flash和其他可能寻找/dev/dsp设备的其他应用程序却无法通过它输出声音,从而带来了几乎无用的多媒体体验。

当我使用来检查我的ALSA播放设备时aplay -l,我可以看到主要音频设备被识别为卡1而不是0,而卡已被连接到HDMI:

**** List of PLAYBACK Hardware Devices ****
card 0: Generic [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: SB [HDA ATI SB], device 0: CONEXANT Analog [CONEXANT Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

这样我得到一个/dev/dsp1,但是似乎大多数应用程序都只是硬编码使用的/dev/dsp,所以我一直在寻找某种交换卡索引的方法。在通过ALSA文档进行了一些研究之后,我尝试使用该/etc/modprobe.d/asound.conf文件为HDMI和Intel HDA使用的驱动程序模块分配索引:

options snd cards_limit=2
options snd-hda-codec-conexant index=0
options snd-hda-codec-hdmi index=1
options snd slots=snd-hda-codec-conexant,snd-hda-codec-hdmi

但这没有用,并且基于我无休止地寻求答案的一些被遗忘的链接,似乎是因为这些index指令应该协调模块的加载顺序,但是这些Conexant和HDMI编解码器恰好使用相同的Intel HDA驱动程序模块,因此似乎不适用于这种情况。

也就是说,当设备使用相同的ALSA驱动程序模块(在这种情况下为Intel HDA)时,是否可以定义正确的卡索引?

Answers:


10

我终于从另一个论坛的这篇帖子中找到了这个问题的答案(请参阅“尝试1b”以供参考)。据此,即使使用的驱动程序相同,也可以指定模块ID:

alias char-major-116 snd
alias snd-card-0 snd-hda-intel
alias snd-card-1 snd-hda-intel

options snd cards_limit=2

options snd-hda-intel id=SB index=0
options snd-hda-intel id=HDMI index=1

从而产生正确的卡订购并按预期运行声音:

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: SB [HDA ATI SB], device 0: CONEXANT Analog [CONEXANT Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HDMI [HD-Audio Generic], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

对于其他类似情况,您可以检查/proc/asound卡的符号链接,它们将是您所需的模块ID:

$ ls -l /proc/asound/
total 0
lrwxrwxrwx 1 root root 5 Jan 26 19:19 HDMI -> card1
lrwxrwxrwx 1 root root 5 Jan 26 19:19 SB -> card0
dr-xr-xr-x 4 root root 0 Jan 26 19:19 card0
dr-xr-xr-x 3 root root 0 Jan 26 19:19 card1
-r--r--r-- 1 root root 0 Jan 26 19:19 cards
-r--r--r-- 1 root root 0 Jan 26 19:19 devices
-r--r--r-- 1 root root 0 Jan 26 19:19 hwdep
-r--r--r-- 1 root root 0 Jan 26 19:19 modules
dr-xr-xr-x 2 root root 0 Jan 26 19:19 oss
-r--r--r-- 1 root root 0 Jan 26 19:19 pcm
dr-xr-xr-x 2 root root 0 Jan 26 19:19 seq
-r--r--r-- 1 root root 0 Jan 26 19:19 timers
-r--r--r-- 1 root root 0 Jan 26 19:19 version
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.