Suara tidak berfungsi saat kartu suara dan HDMI menggunakan driver Intel HDA. Bagaimana cara menukar pesanan pemuatan perangkat mereka?

10

Saya memiliki netbook Acer Aspire One 522 yang memiliki kartu suara Intel HDA berdasarkan chipset Conexant CX20584. Meskipun KDE memang mengeluarkan suara saat memulai, mem-flash dan mungkin banyak aplikasi lain yang mencari /dev/dspperangkat tidak bisa mengeluarkan suara melalui itu, menjadikan pengalaman multimedia yang tidak berguna.

Ketika saya memeriksa perangkat pemutaran ALSA saya aplay -l, saya bisa melihat perangkat audio utama dikenali sebagai kartu 1 bukannya 0, yang dihubungkan ke HDMI sebagai gantinya:

**** 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

Dengan begitu saya mendapatkan /dev/dsp1, tetapi sepertinya sebagian besar aplikasi hanya menggunakan hardcoded /dev/dsp, jadi saya pergi mencari beberapa cara pertukaran indeks kartu. Setelah beberapa penelitian melalui dokumentasi ALSA, saya mencoba untuk menetapkan indeks ke modul driver yang digunakan oleh HDMI dan Intel HDA dengan /etc/modprobe.d/asound.conffile ini :

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

Namun itu tidak berhasil, dan berdasarkan beberapa tautan yang terlupakan pada pencarian saya yang tak ada habisnya untuk sebuah jawaban, tampaknya karena indexarahan ini seharusnya mengoordinasikan urutan pemuatan modul, tetapi kedua codec Conexant dan HDMI ini kebetulan menggunakan Intel HDA yang sama modul driver, jadi sepertinya tidak berlaku dalam kasus ini.

Yang mengatakan, apakah ada cara untuk menentukan indeks kartu yang benar ketika perangkat menggunakan modul driver ALSA yang sama (intel HDA dalam kasus ini)?

Claudio
sumber

Jawaban:

10

Saya akhirnya menemukan jawaban untuk masalah ini berdasarkan posting ini dari forum lain (lihat "Mencoba 1b" untuk referensi). Menurutnya, seseorang dapat menentukan id modul, bahkan jika driver yang digunakan adalah sama:

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

dengan demikian atur pemesanan kartu yang benar dan buat suara bekerja seperti yang diharapkan:

$ 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

Untuk menerapkan ke kasus serupa lainnya, Anda dapat memeriksa /proc/asoundsymlink ke kartu Anda, mereka akan menjadi ID modul yang Anda inginkan:

$ 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
Claudio
sumber