Открыть сервис

WirePlumber

WirePlumber — это сессионный менеджер для аудиосервера PipeWire, управляющий маршрутизацией звука, настройками устройств и политиками воспроизведения. Он заменил более ранние решения, такие как PulseAudio и его собственный менеджер, и стал основным компонентом звуковой подсистемы во многих современных дистрибутивах Linux.

История и предпосылки

До появления PipeWire основным аудиосервером в Linux был PulseAudio, который использовал собственный сессионный менеджер (pulseaudio-server). Однако PulseAudio имел ряд ограничений: сложность настройки, высокое энергопотребление, проблемы с низкой задержкой и недостаточная поддержка профессионального аудио. PipeWire, разработанный Уильямом Манли (Wim Taymans) из Red Hat, изначально создавался как универсальная мультимедийная подсистема, способная заменить PulseAudio и JACK (Jack Audio Connection Kit). Для управления сессиями в PipeWire требовался отдельный менеджер, который бы определял, какие приложения и устройства могут подключаться друг к другу, как обрабатывать потоки и какие политики применять.

Первоначально в PipeWire использовался встроенный менеджер pipewire-media-session, но он был простым и негибким. В 2021 году разработчики из компании Collabora представили WirePlumber как более мощную и модульную альтернативу. Основной целью было создание менеджера, который бы поддерживал сложные сценарии, такие как работа с несколькими звуковыми картами, Bluetooth-устройствами, профессиональными интерфейсами и динамическое переключение между ними.

Архитектура и принцип работы

WirePlumber работает как отдельный процесс, который взаимодействует с PipeWire через его API. Он не является частью ядра PipeWire, а представляет собой внешний модуль, реализующий политики управления.

Основные компоненты

  • Ядро (Core): Отвечает за загрузку модулей, обработку событий и управление конфигурацией.
  • Модули (Modules): Реализуют конкретные функции, такие как обнаружение устройств, управление Bluetooth, обработка профилей, настройка громкости и т.д. Каждый модуль может быть загружен или отключен независимо.
  • Плагины (Plugins): Расширяют функциональность модулей, например, для поддержки специфических протоколов (ALSA, BlueZ).
  • Конфигурация (Configuration): Хранится в файлах Lua (обычно /etc/wireplumber/main.lua и пользовательские файлы в ~/.config/wireplumber/). Lua используется для написания правил политики, что делает WirePlumber чрезвычайно гибким.

Процесс работы

  1. Запуск: WirePlumber запускается вместе с PipeWire (обычно через systemd или автоматически при входе в систему).
  2. Обнаружение устройств: Модули сканируют систему на наличие звуковых карт (ALSA), Bluetooth-устройств, USB-интерфейсов и т.д.
  3. Создание узлов (Nodes): Для каждого обнаруженного устройства создаются входные и выходные узлы (sinks и sources).
  4. Управление сессиями: WirePlumber отслеживает, какие приложения (клиенты) подключаются к PipeWire, и автоматически подключает их к выбранным узлам на основе политик.
  5. Обработка событий: При изменении конфигурации (подключение/отключение наушников, изменение громкости) WirePlumber пересчитывает маршруты.

Ключевые возможности и отличия от PulseAudio

  • Низкая задержка: Благодаря интеграции с PipeWire, WirePlumber может обеспечивать задержки до 5-10 мс, что критично для профессионального аудио.
  • Поддержка профессионального аудио: Работа с JACK-клиентами, многоканальным звуком (до 32 каналов), низкими буферами.
  • Гибкая настройка через Lua: Пользователи могут писать скрипты для автоматизации действий, например, автоматически переключать вывод на Bluetooth-наушники при их подключении.
  • Поддержка Bluetooth: Встроенная поддержка профилей A2DP, HSP/HFP, кодеков SBC, AAC, LDAC, aptX.
  • Динамическое управление профилями: Автоматическое переключение между стерео и многоканальным режимами в зависимости от подключенного устройства.
  • Модульность: Можно отключить ненужные функции, уменьшив потребление ресурсов.

Конфигурация и управление

WirePlumber не имеет собственного графического интерфейса, но управляется через стандартные инструменты PipeWire, такие как pw-cli (командная строка) и pw-top (мониторинг). Настройки хранятся в файлах Lua, которые можно редактировать вручную.

Пример простой настройки

Для изменения громкости по умолчанию можно создать файл ~/.config/wireplumber/main.lua:

``lua wireplumber = { default = { volume = 0.75, -- 75% } } ``

Более сложные правила, такие как автоматическое подключение к определенному устройству, пишутся с использованием функций Lua.

Применение и распространение

WirePlumber является стандартным сессионным менеджером для PipeWire в большинстве современных дистрибутивов Linux, включая:

  • Fedora (начиная с версии 34)
  • Ubuntu (начиная с 22.04)
  • Arch Linux (по умолчанию с 2022 года)
  • openSUSE (Tumbleweed и Leap 15.4+)
  • Debian (начиная с 12)

Он также используется в некоторых встраиваемых системах, где требуется низкое энергопотребление и гибкость.

Критика и ограничения

  • Сложность настройки: Для пользователей, привыкших к PulseAudio, Lua-конфигурация может показаться избыточной. Однако для большинства повседневных задач WirePlumber работает «из коробки».
  • Обратная совместимость: Не все приложения, написанные для PulseAudio, корректно работают с PipeWire/WirePlumber, хотя проект постоянно улучшает совместимость через слой pulseaudio-compat.
  • Потребление ресурсов: В некоторых сценариях WirePlumber может потреблять больше памяти, чем pipewire-media-session, но это компенсируется его функциональностью.

Будущее развитие

Разработчики Collabora продолжают активно развивать WirePlumber. Планируется улучшение поддержки Bluetooth-кодеков, более тесная интеграция с Wayland, а также создание более удобных инструментов для настройки. В сообществе Linux WirePlumber считается стандартом де-факто для работы со звуком.

Источники

  • Официальная документация PipeWire и WirePlumber (pipewire.org, wireplumber.org)
  • Статьи на ArchWiki и Fedora Wiki
  • Презентации разработчиков Collabora на конференциях (FOSDEM, Linux Audio Conference)
  • Репозиторий WirePlumber на GitHub (Collabora)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →