Вопрос или проблема
Мой Debian testing использует pipewire и pipewire-pulse для вывода аудио на наушники и динамики с помощью модуля combine-sink. Это работало нормально в течение длительного времени, а вчера вдруг перестало работать (ни наушники, ни динамики не воспроизводят звук при воспроизведении аудио на комбинированный выход).
Логи Apt показывают, что pipewire был обновлен до версии 1.2.5-1 десять дней назад, и машина перезагружалась с тех пор, и это все еще работало как ожидалось, поэтому это не выглядит как обновление pipewire или pipewire-pulse. Я не знаю, что могло измениться: машина не перезагружалась между рабочим и нерабочим состоянием, и перезапуск после того, как оно перестало работать, не помог. Я не смог найти никаких следов того, что происходило с pipewire или pulse в это время в журнале, ни никаких подсказок о том, что могло пойти не так.
Я сузил проблему до модуля combine-sink, который не выводит звук на подчиненные устройства следующим образом:
- Если я переношу приложение, воспроизводящее звук, на выход для наушников, звук воспроизводится там
- Если я переношу приложение, воспроизводящее звук, на выход для динамиков, звук воспроизводится там
- Если я переношу приложение, воспроизводящее звук, на комбинированный выход, звук не воспроизводится на любом из устройств. Однако pavucontrol показывает, что комбинированный выход активен, а на физических устройствах активности нет.
Вот что pavucontrol думает о моей настройке, когда воспроизводится звуковой сигнал на комбинированный выход:
В этом скриншоте комбинированный выход называется All
, наушники Casque
, а динамики Enceintes
. Обратите внимание, что есть активность на All
, но нет активности на любом из других выходов.
Вот что Helvum думает о моей настройке (неактуальные вещи, такие как входные устройства, перемещены влево от скриншота):
Вывод Helvum выглядит так, как будто All
должен воспроизводить звук как на Casque
, так и на Enceintes
.
Вот описание объекта pipewire, связанного с комбинированным выходом, как выводится командой pw-cli info
:
id: 30
permissions: r--m-
type: PipeWire:Interface:Module/3
name: "libpipewire-module-combine-stream"
filename: "/usr/lib/x86_64-linux-gnu/pipewire-0.3/libpipewire-module-combine-stream.so"
args: "{
combine.mode = sink
node.name = "All"
node.description = "All"
combine.latency-compensate = false
combine.props = {
audio.position = [ FL FR ]
}
stream.props = {
}
stream.rules = [
{
matches = [
{
media.class = "Audio/Sink"
node.nick = "~Enceintes|Casque"
}
]
actions = {
create-stream = {
}
}
}
]
}"
* properties:
* module.name = "libpipewire-module-combine-stream"
* object.id = "30"
* object.serial = "30"
* module.author = "Wim Taymans <[email protected]>"
* module.description = "Объединить несколько потоков в один поток"
* module.usage = "( node.latency=<задержка как дробь> ) ( combine.mode=<режим потока, воспроизведение|захват|выход|источник>, по умолчанию:выход ) ( node.name=<имя потока> ) ( node.description=<описание потока> ) ( audio.channels=<количество каналов, по умолчанию:2> ) ( audio.position=<расположение каналов, по умолчанию:[ FL FR ]> ) ( combine.props=<свойства> ) ( stream.props=<свойства> ) ( stream.rules=<свойства> ) "
* module.version = "1.2.5"
Я пробовал перезапускать pipewire, удалять свою настройку, создающую комбинированный выход, и добавлять его вручную (как с помощью pw-cli
, так и pactl
), но все мои попытки привели к одному и тому же состоянию, где, казалось бы, комбинированный выход воспроизводит звук, но ни одно физическое устройство (или любое из связанных выходов) не воспроизводит.
Я не знаю, что еще сделать, чтобы расследовать, в чем проблема. Как мне дальше исследовать?
Ответ или решение
Проблема с отсутствием звука в устройстве combined sink PipeWire может возникнуть по нескольким причинам. Давайте разберем ваше описание обстоятельств и попробуем выяснить, что может быть не так, а также предложим возможные пути решения.
1. Проверка конфигурации PipeWire
Вы указали, что проблема возникла после того, как система была обновлена. Хотя сама версия PipeWire не обновлялась за последние 10 дней, возможно, какие-то изменения в конфигурации повлияли на работу модуля combined sink. Проверьте следующее:
- Конфигурационные файлы: Убедитесь, что файлы
/etc/pipewire/pipewire.conf
и/etc/pipewire/pipewire-pulse.conf
не были изменены без вашего ведома. Обратите внимание на параметры, связанные с комбинированием потоков, такими какcombine.mode
иstream.rules
.
2. Тестирование и диагностика
Вам следует выполнить несколько диагностических шагов:
- Логи PipeWire: Запустите
journalctl -xe
в терминале и посмотрите логи PipeWire на наличие ошибок или предупреждений, которые могли возникнуть при попытке воспроизведения звука через combined sink. - Состояние модуля: Используйте команду
pw-cli dump
для получения информации о текущем состоянии PipeWire и его модулях. Обратите внимание на то, правильно ли отображаются ваши устройства (Casque и Enceintes) и комбинированный поток.
3. Параметры комбинированного потока
Согласно выводу команды pw-cli info
, параметры модуля combine.stream
настроены правильно. Однако стоит проверить следующее:
- Убедитесь, что в
stream.rules
отсутствуют ошибки в синтаксисе, и чтоnode.nick
на самом деле соответствует вашим устройствам. В данный момент вы используете регулярное выражение, которое корректно находит оба устройства. Однако возможно, что одно из устройств временно недоступно (например, если оно было отключено). - Состояние с аппаратной точки зрения: Убедитесь, что наушники и динамики физически подключены и корректно работают. Попробуйте их протестировать отдельно, как вы уже сделали.
4. Повторное создание комбинированного потока
Вы упомянули, что попытки пересоздать комбинированный поток не привели к успеху. Попробуйте следующее:
- Удалите текущий комбинированный поток:
pactl unload-module module-combine-sink
- Перезапустите PipeWire:
systemctl --user restart pipewire
- Создайте новый комбинированный поток вручную:
pactl load-module module-combine-sink
5. Проверка обновлений и зависимостей
Убедитесь, что все пакеты, связанные с PipeWire, обновлены до последних стабильных версий. Запустите:
sudo apt update
sudo apt upgrade
6. Сообщество и поддержка
Если проблема все еще сохраняется, вы можете обратиться за помощью в сообщество PipeWire. В таких случаях помогает создание отчета о проблеме в системе отслеживания ошибок или поиск аналогичных проблем на форумах. Возможно, кто-то уже сталкивался с подобной ситуацией после обновления.
Заключение
Проблемы с комбинированными потоками в PipeWire могут быть вызваны несколькими факторами, от неверной конфигурации до аппаратных дефектов. Следуя описанным шагам, вы сможете диагностировать и устранить возникшие проблемы. Если все вышеперечисленное не поможет, обращение к сообществу пользователей может оказаться важным задалым шагом.