Вопрос или проблема
После обновления до версии 24.04 я не могу заставить HDMI-аудиовыход работать с pulseaudio. Я не использую pipewire. Alsa работает нормально. Я пробовал менять профили и изменять ядра до 5.15 и 6.13, безрезультатно. Любая помощь приветствуется.
$ inxi -A
Audio:
Device-1: Intel Xeon E3-1200 v3/4th Gen Core Processor HD Audio driver: snd_hda_intel
Device-2: Intel 9 Series Family HD Audio driver: snd_hda_intel
API: ALSA v: k6.13.0-061300-generic status: kernel-api
Server-1: PulseAudio v: 16.1 status: active
$ aplay -L | grep hdmi
hdmi:CARD=HDMI,DEV=0
hdmi:CARD=HDMI,DEV=1
hdmi:CARD=HDMI,DEV=2
$ pacmd list-cards
1 card(s) available.
index: 0
name: <alsa_card.pci-0000_00_03.0>
driver: <module-alsa-card.c>
owner module: 8
properties:
alsa.card = "1"
alsa.card_name = "HDA Intel HDMI"
alsa.long_card_name = "HDA Intel HDMI at 0xf7c34000 irq 31"
alsa.driver_name = "snd_hda_intel"
device.bus_path = "pci-0000:00:03.0"
sysfs.path = "/devices/pci0000:00/0000:00:03.0/sound/card1"
device.bus = "pci"
device.vendor.id = "8086"
device.vendor.name = "Intel Corporation"
device.product.id = "0c0c"
device.product.name = "Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller"
device.form_factor = "internal"
device.string = "1"
device.description = "Built-in Audio"
module-udev-detect.discovered = "1"
device.icon_name = "audio-card-pci"
profiles:
output:hdmi-stereo-extra1: Digital Stereo (HDMI 2) Output (priority 5700, available: no)
output:hdmi-surround-extra1: Digital Surround 5.1 (HDMI 2) Output (priority 600, available: no)
output:hdmi-surround71-extra1: Digital Surround 7.1 (HDMI 2) Output (priority 600, available: no)
output:hdmi-stereo-extra2: Digital Stereo (HDMI 3) Output (priority 5700, available: no)
output:hdmi-surround-extra2: Digital Surround 5.1 (HDMI 3) Output (priority 600, available: no)
output:hdmi-surround71-extra2: Digital Surround 7.1 (HDMI 3) Output (priority 600, available: no)
off: Off (priority 0, available: unknown)
active profile: <output:hdmi-stereo-extra2>
sinks:
alsa_output.pci-0000_00_03.0.hdmi-stereo-extra2/#11: Built-in Audio Digital Stereo (HDMI 3)
sources:
alsa_output.pci-0000_00_03.0.hdmi-stereo-extra2.monitor/#11: Monitor of Built-in Audio Digital Stereo (HDMI 3)
ports:
hdmi-output-1: HDMI / DisplayPort 2 (priority 5800, latency offset 0 usec, available: no)
properties:
device.icon_name = "video-display"
hdmi-output-2: HDMI / DisplayPort 3 (priority 5700, latency offset 0 usec, available: no)
properties:
device.icon_name = "video-display"
# обратите внимание 'available: no' на всех профилях.
$ pacmd list-sinks
1 sink(s) available.
* index: 15
name: <alsa_output.pci-0000_00_03.0.hdmi-stereo-extra2>
driver: <module-alsa-card.c>
flags: HARDWARE DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
state: IDLE
suspend cause: (none)
priority: 9030
volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
base volume: 65536 / 100% / 0.00 dB
volume steps: 65537
muted: no
current latency: 35.38 ms
max request: 6 KiB
max rewind: 6 KiB
monitor source: 15
sample spec: s16le 2ch 44100Hz
channel map: front-left,front-right
Stereo
used by: 0
linked by: 1
configured latency: 40.00 ms; range is 0.50 .. 1999.82 ms
card: 0 <alsa_card.pci-0000_00_03.0>
module: 8
properties:
alsa.resolution_bits = "16"
device.api = "alsa"
device.class = "sound"
alsa.class = "generic"
alsa.subclass = "generic-mix"
alsa.name = "HDMI 2"
alsa.id = "HDMI 2"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.device = "8"
alsa.card = "1"
alsa.card_name = "HDA Intel HDMI"
alsa.long_card_name = "HDA Intel HDMI at 0xf7c34000 irq 31"
alsa.driver_name = "snd_hda_intel"
device.bus_path = "pci-0000:00:03.0"
sysfs.path = "/devices/pci0000:00/0000:00:03.0/sound/card1"
device.bus = "pci"
device.vendor.id = "8086"
device.vendor.name = "Intel Corporation"
device.product.id = "0c0c"
device.product.name = "Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller"
device.form_factor = "internal"
device.string = "hdmi:1,2"
device.buffering.buffer_size = "352768"
device.buffering.fragment_size = "176384"
device.access_mode = "mmap+timer"
device.profile.name = "hdmi-stereo-extra2"
device.profile.description = "Digital Stereo (HDMI 3)"
device.description = "Built-in Audio Digital Stereo (HDMI 3)"
module-udev-detect.discovered = "1"
device.icon_name = "audio-card-pci"
ports:
hdmi-output-2: HDMI / DisplayPort 3 (priority 5700, latency offset 0 usec, available: no)
properties:
device.icon_name = "video-display"
active port: <hdmi-output-2>
$ journalctl -k | grep -iE '00:03.0|00:1b.0|snd|hda|alsa|sof|sound|hdmi|codec'
Feb 12 23:17:56 htpc kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-6.13.0-061300-generic root=UUID=724653e7-68e6-4f2f-8616-63cf19d5160c ro nomdmonddf nomdmonisw nomdmonddf nomdmonisw mitigations=off snd-hda-intel.snoop=0
Feb 12 23:17:56 htpc kernel: Kernel command line: BOOT_IMAGE=/boot/vmlinuz-6.13.0-061300-generic root=UUID=724653e7-68e6-4f2f-8616-63cf19d5160c ro nomdmonddf nomdmonisw nomdmonddf nomdmonisw mitigations=off snd-hda-intel.snoop=0
Feb 12 23:17:56 htpc kernel: software IO TLB: area num 4.
Feb 12 23:17:56 htpc kernel: pci 0000:00:03.0: [8086:0c0c] type 00 class 0x040300 PCIe Root Complex Integrated Endpoint
Feb 12 23:17:56 htpc kernel: pci 0000:00:03.0: BAR 0 [mem 0xf7c34000-0xf7c37fff 64bit]
Feb 12 23:17:56 htpc kernel: pci 0000:00:1b.0: [8086:8ca0] type 00 class 0x040300 PCIe Root Complex Integrated Endpoint
Feb 12 23:17:56 htpc kernel: pci 0000:00:1b.0: BAR 0 [mem 0xf7c30000-0xf7c33fff 64bit]
Feb 12 23:17:56 htpc kernel: pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
Feb 12 23:17:56 htpc kernel: pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
Feb 12 23:17:56 htpc kernel: PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
Feb 12 23:17:56 htpc kernel: software IO TLB: mapped [mem 0x00000000c8beb000-0x00000000ccbeb000] (64MB)
Feb 12 23:17:58 htpc kernel: snd_hda_intel 0000:00:03.0: Force to non-snoop mode by module option
Feb 12 23:17:58 htpc kernel: snd_hda_intel 0000:00:1b.0: Force to non-snoop mode by module option
Feb 12 23:17:58 htpc kernel: snd_hda_intel 0000:00:03.0: Force to non-snoop mode by module option
Feb 12 23:17:58 htpc kernel: snd_hda_codec_generic hdaudioC0D0: autoconfig for Generic: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:line
Feb 12 23:17:58 htpc kernel: snd_hda_codec_generic hdaudioC0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
Feb 12 23:17:58 htpc kernel: snd_hda_codec_generic hdaudioC0D0: hp_outs=1 (0x1b/0x0/0x0/0x0/0x0)
Feb 12 23:17:58 htpc kernel: snd_hda_codec_generic hdaudioC0D0: mono: mono_out=0x0
Feb 12 23:17:58 htpc kernel: snd_hda_codec_generic hdaudioC0D0: dig-out=0x11/0x1e
Feb 12 23:17:58 htpc kernel: snd_hda_codec_generic hdaudioC0D0: inputs:
Feb 12 23:17:58 htpc kernel: snd_hda_codec_generic hdaudioC0D0: Rear Mic=0x18
Feb 12 23:17:58 htpc kernel: snd_hda_codec_generic hdaudioC0D0: Front Mic=0x19
Feb 12 23:17:58 htpc kernel: snd_hda_codec_generic hdaudioC0D0: Line=0x1a
Feb 12 23:17:58 htpc kernel: snd_hda_intel 0000:00:03.0: Force to non-snoop mode by module option
Feb 12 23:17:58 htpc kernel: input: HDA Intel PCH Rear Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input13
Feb 12 23:17:58 htpc kernel: input: HDA Intel PCH Front Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input14
Feb 12 23:17:58 htpc kernel: input: HDA Intel PCH Line as /devices/pci0000:00/0000:00:1b.0/sound/card0/input15
Feb 12 23:17:58 htpc kernel: input: HDA Intel PCH Line Out as /devices/pci0000:00/0000:00:1b.0/sound/card0/input16
Feb 12 23:17:58 htpc kernel: input: HDA Intel PCH Front Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input17
Feb 12 23:17:58 htpc kernel: snd_hda_intel 0000:00:03.0: Force to non-snoop mode by module option
Feb 12 23:17:58 htpc kernel: snd_hda_intel 0000:00:03.0: Force to non-snoop mode by module option
Feb 12 23:17:59 htpc kernel: snd_hda_intel 0000:00:03.0: Force to non-snoop mode by module option
Feb 12 23:17:59 htpc kernel: snd_hda_intel 0000:00:03.0: Force to non-snoop mode by module option
Feb 12 23:17:59 htpc kernel: snd_hda_intel 0000:00:03.0: Force to non-snoop mode by module option
Feb 12 23:17:59 htpc kernel: snd_hda_intel 0000:00:03.0: Force to non-snoop mode by module option
Feb 12 23:17:59 htpc kernel: snd_hda_intel 0000:00:03.0: Force to non-snoop mode by module option
Feb 12 23:17:59 htpc kernel: snd_hda_intel 0000:00:03.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
Feb 12 23:17:59 htpc kernel: input: HDA Intel HDMI HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:03.0/sound/card1/input20
Feb 12 23:17:59 htpc kernel: input: HDA Intel HDMI HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:03.0/sound/card1/input21
Feb 12 23:17:59 htpc kernel: input: HDA Intel HDMI HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:03.0/sound/card1/input22
Feb 12 23:17:59 htpc kernel: snd_hda_codec_hdmi hdaudioC1D0: HDMI: audio coding xtype 11 not expected
$ aplay -D "plughw:1,3" /usr/share/sounds/purple/login.wav
# это работает
$ paplay /usr/share/sounds/purple/login.wav
# это не работает
Только один раз у меня получилось заставить paplay
издать звук после выполнения команды pactl set-card-profile 0 "output:hdmi-stereo-extra2"
, но это больше не помогает.
Все каналы включены в alsamixer
.
pavucontrol
показывает все профили как “(неподключено)(недоступно)”
.
Ответ или решение
Обновление операционной системы до версии 24.04 привело к проблемам с выводом звука через HDMI, особенно используя PulseAudio. Ваше оборудование использует драйвер snd_hda_intel
для аудиоустройств, и хотя ALSA работает корректно, PulseAudio демонстрирует проблемы. Конфигурации ядра 5.15 и 6.13 не улучшили ситуацию. Рассмотрим возможные причины и решения данной проблемы.
Теория
Проблемы с HDMI-выходом могут возникать по нескольким причинам, включая несовместимость драйверов, недочёты в конфигурации PulseAudio или дефектное распознавание устройств. PulseAudio, будучи сервером звука, надстраивается над ALSA и должен корректно указывать устройства вывода. Если PulseAudio отображает HDMI-профили как "недоступные", это обычно указывает на то, что устройства не распознаются системой или у них некорректная конфигурация.
Ваши отчёты показывают, что в PulseAudio доступны только "недоступные" профили для HDMI, несмотря на то, что ALSA корректно идентифицирует HDMI устройства:
pacmd list-cards
иpacmd list-sinks
содержат профили для HDMI, но все они имеют статус "недоступно".pavucontrol
также показывает профили как "(не подключены)(недоступны)", указывая на проблему конфигурации или определения устройств.
Пример
На форуме Arch Linux и других сообществах Linux пользователи делятся схожими проблемами при переходе на новые версии дистрибутивов, особенно Ubuntu. Подобные случаи часто решаются через ручное вмешательство в настройки конфигурации PulseAudio или ALSA. Среди типичных рекомендаций:
- Обновление конфигурационных файлов.
- Проверка параметров загрузки ядра, особенно связанных с
snd_hda_intel
. - Переход на PipeWire при сохранении проблем с PulseAudio.
Применение
Чтобы решить вашу проблему, выполните следующие шаги:
-
Проверка конфигурации PulseAudio: Проверьте, есть ли изменения в конфигурации PulseAudio, которые могли произойти во время обновления. Для этого обратите внимание на файлы в директории
~/.config/pulse/
и восстановите их из резервной копии или переименуйте, чтобы PulseAudio создал новые. -
Перенастройка драйверов:
- Убедитесь, что не осталось старых установок или конфигурационных файлов, связанных с ALSA или PulseAudio, которые могут влиять на работу системы.
- Найдите команды, применяемые к
snd_hda_intel
, такие какsnoop
иnon-snoop
, и опытным путём попробуйте изменить их значения.
-
Проверка устройства и доступных профилей:
- Воспользуйтесь
alsa-tools
и другими утилитами, чтобы убедиться, что устройства правильно загружаются и отображаются. Попробуйте перезагрузить service PulseAudio:pulseaudio --kill pulseaudio --start
- Воспользуйтесь
-
Проверка HDMI-кабеля и порта: Попробуйте использовать другой HDMI-кабель или подключить к другому HDMI-порту, поскольку аппаратные неисправности также могут быть причиной.
-
Нахождение временного решения при помощи ALSA: Поскольку команды
aplay
работают корректно, можно использовать временные меры с ALSA, пока не решится проблема в PulseAudio. -
Использование PipeWire: Рассмотрите возможность перехода на PipeWire как современную альтернативу PulseAudio, если последние средства не приводят к улучшению. PipeWire более адаптивен к новым драйверам и устройствам.
-
Обновление и проверка программного обеспечения: Убедитесь, что программное обеспечение PulseAudio и ALSA находится в актуальном состоянии. Периодические обновления могут исправлять ошибки, включая вашу.
Таким образом, детализированное понимание конфигураций, активное участие в сообществе и пробные настройки помогут обеспечить стабильный звук через HDMI после обновления. Важно проверять каждое изменение и тестировать систему, чтобы чётко идентифицировать, что именно решило проблему.