Звук не работает, когда звуковая карта и HDMI используют драйвер Intel HDA. Как обменять порядок загрузки устройства?


10

У меня нетбук Acer Aspire One 522 с звуковой картой Intel HDA на базе чипсета Conexant CX20584. Хотя 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 я попытался назначить индексы модулям драйверов, используемым HDMI и Intel HDA, с помощью этого /etc/modprobe.d/asound.confфайла:

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)?

Ответы:


10

Наконец-то я нашел ответ на эту проблему на основе этого поста из другого форума (см. «Попытка 1b»). В соответствии с этим можно указать идентификатор модуля, даже если использованный драйвер один и тот же:

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наличие символических ссылок на ваши карты, они будут идентификаторы ваших модулей:

$ 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.