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 чрезвычайно гибким.
¶Процесс работы
- Запуск: WirePlumber запускается вместе с PipeWire (обычно через systemd или автоматически при входе в систему).
- Обнаружение устройств: Модули сканируют систему на наличие звуковых карт (ALSA), Bluetooth-устройств, USB-интерфейсов и т.д.
- Создание узлов (Nodes): Для каждого обнаруженного устройства создаются входные и выходные узлы (sinks и sources).
- Управление сессиями: WirePlumber отслеживает, какие приложения (клиенты) подключаются к PipeWire, и автоматически подключает их к выбранным узлам на основе политик.
- Обработка событий: При изменении конфигурации (подключение/отключение наушников, изменение громкости) 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 →


