Вопрос или проблема
Ubuntu и его производные, такие как Mint, недавно перешли с PulseAudio на PipeWire. Я пытаюсь ознакомиться с конфигурациями, и проблема в том, что у меня на MintBox 2 есть четыре различных звуковых выхода, и я вижу их все, а также еще два в ALSA:
**** Список Воспроизводящих Аппаратных Устройств ****
card 0: PCH [HDA Intel PCH], device 0: ALC1150 Analog [ALC1150 Analog]
Подустройства: 1/1
Подустройство #0: подустройство #0
card 0: PCH [HDA Intel PCH], device 1: ALC1150 Digital [ALC1150 Digital]
Подустройства: 1/1
Подустройство #0: подустройство #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [RX-A760]
Подустройства: 0/1
Подустройство #0: подустройство #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [SONY TV]
Подустройства: 1/1
Подустройство #0: подустройство #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
Подустройства: 1/1
Подустройство #0: подустройство #0
card 1: PCM2702 [Burr-Brown Japan PCM2702], device 0: USB Audio [USB Audio]
Подустройства: 1/1
Подустройство #0: подустройство #0
Здесь достаточно подсказок, чтобы я мог четко описать свои звуковые устройства, и я приму номенклатуру карты/устройства, которую использует aplay из ALSA для их идентификации (ALSA любит писать CARD=PCH,DEV=3, а я буду писать PCH/3):
Итак, у меня есть:
- PCH/0 — это разъем для наушников с 3,5-мм стереоAudio разъемом и подключенным устройством
- PCH/3 — это аудиовизуальный ресивер Yamaha RX-A760
- PCH/7 — это телевизор Sony Bravia
- PCM2702/1 — это USB Audio устройство (на базе Burr-Brown)
ALSA также идентифицирует устройства, у которых нет интерфейса на MintBox 2, но я предполагаю, что они поддерживаются платой:
- PCH/1, предположительно для порта S/PDIF, который отсутствует на корпусе, но поддерживается платой HDA Intel PCH
- PCH/8, предположительно третий HDMI порт, который также отсутствует на корпусе, но поддерживается платой HDA Intel PCH
Эти два я могу с радостью игнорировать.
Но когда я смотрю на PipeWire:
$ pw-cli ls Node
id 29, type PipeWire:Interface:Node/3
object.serial = "29"
factory.id = "10"
priority.driver = "20000"
node.name = "Dummy-Driver"
id 30, type PipeWire:Interface:Node/3
object.serial = "30"
factory.id = "10"
priority.driver = "19000"
node.name = "Freewheel-Driver"
id 39, type PipeWire:Interface:Node/3
object.serial = "39"
factory.id = "10"
client.id = "35"
priority.session = "100"
priority.driver = "1"
node.name = "Midi-Bridge"
media.class = "Midi/Bridge"
id 48, type PipeWire:Interface:Node/3
object.serial = "48"
object.path = "alsa:pcm:1:front:1:playback"
factory.id = "18"
client.id = "35"
device.id = "44"
priority.session = "1009"
priority.driver = "1009"
node.description = "PCM2702 16-bit stereo audio DAC Analog Stereo"
node.name = "alsa_output.usb-Burr-Brown_Japan_Burr-Brown_Japan_PCM2702-00.analog-stereo"
node.nick = "Burr-Brown Japan PCM2702"
media.class = "Audio/Sink"
id 53, type PipeWire:Interface:Node/3
object.serial = "153"
object.path = "alsa:pcm:0:front:0:capture"
factory.id = "18"
client.id = "35"
device.id = "43"
priority.session = "2009"
priority.driver = "2009"
node.description = "Built-in Audio Analog Stereo"
node.name = "alsa_input.pci-0000_00_0e.0.analog-stereo.3"
node.nick = "ALC1150 Analog"
media.class = "Audio/Source"
id 54, type PipeWire:Interface:Node/3
object.serial = "152"
object.path = "alsa:pcm:0:hdmi:0:playback"
factory.id = "18"
client.id = "35"
device.id = "43"
priority.session = "696"
priority.driver = "696"
node.description = "Built-in Audio Digital Stereo (HDMI)"
node.name = "alsa_output.pci-0000_00_0e.0.hdmi-stereo"
node.nick = "RX-A760"
media.class = "Audio/Sink"
id 61, type PipeWire:Interface:Node/3
object.serial = "272"
factory.id = "6"
client.id = "59"
client.api = "pipewire-pulse"
application.name = "ALSA plug-in [kodi.bin]"
node.name = "ALSA plug-in [kodi.bin]"
media.class = "Stream/Output/Audio"
media.category = "Manager"
Я вижу, что PipeWire создал множество узлов, которые меня не интересуют (Dummy-Driver, Freewheel-Driver, Midi/Bridge) и что у него есть два узла для моего Yamaha RX-A760 (54 для самого устройства с ALSA путем и 61, который Kodi сейчас проигрывает на RX-A760). Мы можем игнорировать последний и заметить, что PipeWire находит только 2 из 4 моих звуковых выходов и путает один из них как источник. Я могу сопоставить идентификаторы ALSA с идентификаторами узлов PipeWire (которые я буду обозначать PW/id):
- PCH/0 -> PW/53 – хотя у него есть только узел источника. Это устройство, конечно, является чипом RealTek ALC1150, который действительно представлен на корпусе как микрофон, так и разъем для наушников. Ирония в том, что у меня ничего не подключено к разъему микрофона, но есть устройство в разъеме для наушников, и я ожидаю узел Audio/Sink.
- PCH/3 -> PW/54
- PCH/7 -> отсутствует, у PipeWire нет узла для этого!
- PCM2702/1 -> PW/48
Итак, у меня два основных вопроса:
- Почему PipeWire не создает узел для PCH/7. Чтобы было понятно, к нему подключен телевизор Sony Bravia, и он включен, когда я провожу эти тесты, и фактически является одним из экранов, которые я могу использовать на своем устройстве, и я могу воспроизводить звук через него в своей системе Mint (он отображается в Настройках звука Cinnamon). Но что происходит с PipeWire в этом случае?
- Почему PipeWire создает Audio/Source для моего разъема микрофона, а не Audio/Sink для разъема для наушников? Опять же, я могу воспроизводить звук через это в своей системе Mint (он отображается в Настройках звука Cinnamon). Но что происходит с PipeWire в этом случае?
Я стремлюсь лучше понять PulseWire и то, что здесь происходит. Не в последнюю очередь потому, что WirePlumber также фиксирует эту проблему и видит всего два выхода:
$ wpctl status
PipeWire 'pipewire-0' [1.0.5, polyphemus@cyclops, cookie:2258751752]
└─ Клиенты:
32. xdg-desktop-portal [1.0.5, polyphemus@cyclops, pid:121629]
33. cinnamon-settings.py [1.0.5, polyphemus@cyclops, pid:267176]
34. WirePlumber [1.0.5, polyphemus@cyclops, pid:269937]
35. WirePlumber [export] [1.0.5, polyphemus@cyclops, pid:269937]
42. PulseAudio systray [1.0.5, polyphemus@cyclops, pid:1821]
47. wpctl [1.0.5, polyphemus@cyclops, pid:380732]
59. ALSA plug-in [kodi.bin] [1.0.5, polyphemus@cyclops, pid:7]
63. Blueman [1.0.5, polyphemus@cyclops, pid:1848]
64. Cinnamon Volume Control Media Keys [1.0.5, polyphemus@cyclops, pid:1508]
65. cinnamon [1.0.5, polyphemus@cyclops, pid:267176]
66. Cinnamon Volume Control [1.0.5, polyphemus@cyclops, pid:1689]
Аудио
├─ Устройства:
│ 43. Встроенный Звук [alsa]
│ 44. PCM2702 16-битный стерео аудио ЦАП [alsa]
│
├─ Выходы:
│ 48. PCM2702 16-битный стерео аудио ЦАП Аналоговое Стерео [вол: 0.40]
│ * 54. Встроенный Звук Цифровое Стерео (HDMI) [вол: 0.66]
│
├─ Конечные точки выходов:
│
├─ Источники:
│ * 53. Встроенный Звук Аналоговое Стерео [вол: 1.00]
│
├─ Конечные точки источников:
│
└─ Потоки:
61. ALSA plug-in [kodi.bin]
60. output_FL > RX-A760:playback_FL [активно]
74. output_FR > RX-A760:playback_FR [активно]
Видео
├─ Устройства:
│
├─ Выходы:
│
├─ Конечные точки выходов:
│
├─ Источники:
│
├─ Конечные точки источников:
│
└─ Потоки:
Настройки
└─ Настроенные имена узлов по умолчанию:
0. Audio/Sink alsa_output.pci-0000_00_0e.0.hdmi-stereo
Мы видим два выхода 48 и 54 и источник 53, для которого я хотел бы иметь выход (разъем для наушников) и отсутствующий выход PCH/7!
Ответ или решение
Ситуация, с которой вы сталкиваетесь, при использовании PipeWire вместо PulseAudio на дистрибутивах Ubuntu и Mint, может быть связана с несколькими аспектами конфигурации и возможностями PipeWire.
Ответы на ваши вопросы:
-
Почему PipeWire не создаёт узел для PCH/7 (Sony Bravia Television)?
Есть несколько причин, по которым PipeWire может не обнаруживать или не создавать узел для вашего телевизора Sony Bravia:
-
Неподдерживаемый HDMI-выход: Не все HDMI-устройства полностью поддерживают передачу аудио через ALSA. Убедитесь, что выбранный HDMI-выход активен и правильно настроен. Попробуйте подключить телевизор к другому HDMI-порту или сменить настройки в меню телевизора.
-
Конфигурационные файлы: Проверьте, не требуют ли ваши конфигурационные файлы ALSA или PipeWire специфических настроек или параметров. Иногда необходимо вручную указать, какие устройства могут быть активированы.
-
Проблемы совместимости: Если у вас есть обновления драйверов для вашего оборудования, убедитесь, что они установлены. Также стоит проверить наличие багов в проекте PipeWire, которые могут быть связаны с вашим программным обеспечением или оборудованием.
-
Получение информации о системе: Запустите команду
pw-dump
и проверьте структуру и доступные устройства, чтобы лучше понять, что PipeWire видит в вашей системе.
-
-
Почему PipeWire создаёт Audio/Source для микрофонного разъёма вместо Audio/Sink для разъёма наушников?
Это поведение связано с тем, как PipeWire обрабатывает аудиосистему и идентифицирует устройства. Вот несколько моментов, которые стоит учесть:
-
Неправильное определение устройства: PipeWire может неправильно интерпретировать устройство. Это может быть исправлено в конфигурации ALSA. Убедитесь, что ALSA правильно настроена для определения как выходных, так и входных устройств.
-
Конфигурация PipeWire: Возможно, понадобится изменить конфигурационные файлы PipeWire, чтобы корректно отобразить наушники как устройство вывода. Существует файл конфигурации
/etc/pipewire/pipewire.conf
, который может требовать корректировок. -
Задействованные модули: PipeWire использует несколько модулей для управления аудиопотоками. Убедитесь, что в настройках модули, отвечающие за управление устройствами вывода, активированы и работают правильно.
-
Рекомендации по устранению проблем:
-
Проверка конфигурации ALSA:
Попробуйте выполнить командуalsamixer
в терминале и проверьте уровень громкости и состояние ваших аудиоустройств, особенно для разъёма наушников. -
Использование
pw-cli
иwpctl
:
Используйте командыpw-cli
иwpctl
для получения дополнительной информации о текущих узлах PipeWire и их статусе. Это может помочь в случае, если узел был создан неправильно. -
Логи и отладка:
Проверьте логи PipeWire с помощьюjournalctl -xe | grep pipewire
, чтобы увидеть, не выдаются ли какие-либо ошибки или предупреждения, касающиеся распознавания вашего оборудования. -
Обновления:
Убедитесь, что ваша система и все её компоненты (драйвера, PipeWire, ALSA) обновлены до последней версии. Иногда проблемы могут быть исправлены в новых релизах.
Следуя этим рекомендациям, вы сможете лучше понять, почему PipeWire не видит все доступные устройства, и предпринять шаги для решения этих проблем.