Âm thanh không hoạt động khi cả card âm thanh và HDMI đều sử dụng trình điều khiển Intel HDA. Làm thế nào để trao đổi thứ tự tải thiết bị của họ?


10

Tôi có một chiếc netbook Acer Aspire One 522 có card âm thanh Intel HDA dựa trên chipset Conexant CX20584. Mặc dù KDE phát ra âm thanh khi khởi động, flash và có thể nhiều ứng dụng khác tìm kiếm /dev/dspthiết bị không thể phát ra âm thanh qua nó, mang lại trải nghiệm đa phương tiện khá vô dụng.

Khi tôi kiểm tra các thiết bị phát lại ALSA của mình aplay -l, tôi có thể thấy thiết bị âm thanh chính được nhận dạng là thẻ 1 thay vì 0, được nối với HDMI thay thế:

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

Bằng cách đó tôi nhận được một /dev/dsp1, nhưng có vẻ như hầu hết các ứng dụng chỉ được mã hóa cứng để sử dụng /dev/dsp, vì vậy tôi đã tìm kiếm một số cách để trao đổi các chỉ số thẻ. Sau một số nghiên cứu thông qua tài liệu ALSA, tôi đã cố gắng gán chỉ mục cho các mô-đun trình điều khiển được sử dụng bởi HDMI và Intel HDA với /etc/modprobe.d/asound.conftệp này :

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

Mặc dù vậy, điều đó không hiệu quả, và dựa trên một số liên kết bị lãng quên trong câu trả lời vô tận của tôi để tìm câu trả lời, có vẻ là do các indexchỉ thị này được cho là phối hợp thứ tự tải mô-đun, nhưng cả hai codec Conexant và HDMI này đều sử dụng cùng một HDA Intel mô-đun trình điều khiển, vì vậy nó dường như không áp dụng trong trường hợp này.

Điều đó nói rằng, có cách nào để xác định chỉ mục thẻ chính xác khi các thiết bị sử dụng cùng mô-đun trình điều khiển ALSA (intel HDA trong trường hợp này) không?

Câu trả lời:


10

Cuối cùng tôi đã tìm thấy câu trả lời cho vấn đề này dựa trên bài đăng này từ một diễn đàn khác (xem "Cố gắng 1b" để tham khảo). Theo nó, người ta có thể chỉ định id mô-đun, ngay cả khi trình điều khiển được sử dụng giống nhau:

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

do đó, sắp xếp thứ tự thẻ chính xác và làm cho âm thanh hoạt động như mong đợi:

$ 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

Để áp dụng cho các trường hợp tương tự khác, bạn có thể kiểm tra /proc/asoundcác liên kết tượng trưng cho thẻ của mình, chúng sẽ là ID mô-đun mong muốn của bạn:

$ 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.