L'audio non funziona quando sia la scheda audio che HDMI utilizzano il driver Intel HDA. Come scambiare l'ordine di caricamento del dispositivo?


10

Ho un netbook Acer Aspire One 522 che ha una scheda audio Intel HDA basata sul chipset Conexant CX20584. Anche se KDE emette l'audio all'avvio, flash e probabilmente molte altre app che cercano un /dev/dspdispositivo non riescono a trasmettere l'audio attraverso di esso, rendendo un'esperienza multimediale praticamente inutile.

Quando ho controllato i miei dispositivi di riproduzione ALSA con aplay -l, ho potuto vedere il dispositivo audio principale essere riconosciuto come scheda 1 invece di 0, che invece era collegato a 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

In questo modo ottengo un /dev/dsp1, ma sembra che la maggior parte delle app sia solo hardcoded da usare /dev/dsp, quindi sono andato alla ricerca di un modo di scambiare gli indici delle carte. Dopo alcune ricerche attraverso la documentazione ALSA, ho provato ad assegnare indici ai moduli driver utilizzati da HDMI e Intel HDA con questo /etc/modprobe.d/asound.conffile:

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

Tuttavia, ciò non ha funzionato, e sulla base di un link dimenticato sulla mia ricerca infinita di una risposta, sembra che queste indexdirettive debbano coordinare l'ordine di caricamento del modulo, ma sia questi codec Conexant che HDMI utilizzano lo stesso Intel HDA modulo driver, quindi sembra non essere applicabile in questo caso.

Detto questo, esiste un modo per definire gli indici delle carte corretti quando i dispositivi utilizzano lo stesso modulo driver ALSA (Intel HDA in questo caso)?

Risposte:


10

Ho finalmente trovato una risposta a questo problema sulla base di questo post da un altro forum (vedi "Tentativo 1b" per riferimento). Secondo esso, si può specificare l'id del modulo, anche se il driver utilizzato è lo stesso:

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

in tal modo assicurando il corretto ordinamento delle carte e facendo funzionare il suono come previsto:

$ 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

Per fare domanda per altri casi simili, puoi controllare i /proc/asoundcollegamenti simbolici alle tue carte, saranno gli ID dei moduli desiderati:

$ 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.