Audio
音效卡和 HDMI 都使用 Intel HDA 驅動程序時聲音不工作。如何交換他們的設備載入順序?
我有一個 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
指令應該協調模組載入順序,但是這些科勝訊和 HDMI 編解碼器碰巧使用相同的英特爾 HDA驅動模組,所以它似乎不適用於這種情況。也就是說,當設備使用相同的 ALSA 驅動程序模組(在這種情況下為英特爾 HDA)時,有什麼方法可以定義正確的卡索引?
我終於根據另一個論壇的這篇文章找到了這個問題的答案(參見“嘗試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