Установка PipeWire в качестве звукового сервера по умолчанию в Arch – замена для PulseAudio
Предыстория
Пару дней назад я случайно заметил, что в Аrch пакет pulseeffects не работает, если у вас до сих пор pulseaudio используется в качестве звукового сервера.
Узнал про это случайно – слушал композицию, котороя в дефолтных настройках звучит не так шикарно, как с верно настроенным эквалайзером, решил переслушать, включив нужный пресет у эквалайзера, в итоге обнаружил, что pulseeffects запускается, но нужные эффекты на звук не накладываются.
Оказалось, что сопровождающий пакета pulseeffects стал собирать его с pipewire вместо pulseaudio.
Пруф:
ldd /usr/bin/pulseeffects|grep pipewire
libpipewire-0.3.so.0 => /usr/lib/libpipewire-0.3.so.0 (0x00007f10ed03b000)
Стал изучать зависимости пакета, когда запустил pulseeffects, а он внезапно не смог наложить эффекты на звук, транслируемый pulseaudio.
Глянул в трекер гитхаб проекта, так и есть - они перешли на pipewire, согласно https://github.com/wwmm/pulseeffects/issues/397
Вот так, внезапно, в дверь к прогрессивным любителям Linux Arch постучало будущее в лице pipewire.\
Решение проблемы
Замена PulseAudio и ALSA на PipeWire
Установка PipeWire
Для решения проблемы с не работающим pulseeffects в Arch выполняем
pacman -Sy --combinedupgrade pipewire pipewire-alsa pipewire-pulse gst-plugin-pipewire
После чего перезагрузить ПК.
!!! info ‘Забавный факт’ Если у нас установлен pipewire-alsa – bluetooth должен запускаться автомататически. C pulseaudio это было не так, там звук через bluetooth добавлялся модулем из отдельного пакета.
Внимание! В процессе будет удалён pulseaudio и pulseaudio-bluetooth. Если для вас важны особенности кастомной настройки pulseaudio, а без них pipewire с pipewire-pulseaudio будет работать не так хорошо, как старый-добрый pulseaudio с кастомными настройками – вам лучше откатиться назад на pulseaudio.
Проверка получившей конфигурации
Проверяем, что получилось
pactl info
видим выхлоп вида со строками вида
Server Name: PulseAudio (on PipeWire 0.3.21)
Server Version: 14.0.0
После произведённого перехода на pipewire pulseeffects стал работать корректно.
Заодно, вместо pipewire и pulseaudio у меня теперь стоит только pipewire с модулями. Что удобно, так как один сервис лучше двух, а pipewire уже присутствует в системе у пользователей Gnome(и некоторых других DE), так как он используется для захвата видео при создании скринкастов и для организации расшаривания экрана в google meet, skype и OBS, и для с мультимедиа приложений из-под sanbox изоляции(faltpack).
Если после перехода на PipeWire у вас возникли задержки звука и искажения, необходимо открыть файл
vim /etc/pipewire/pipewire.conf
и привести параметры
default.clock.quantum = 64
default.clock.min-quantum = 32
default.clock.max-quantum = 512
к указанным выше значениям. Если не поможет, можно ещё уменьшить, при этом желательно указываться числа, кратные 8.
Кстати, разработчики PipeWire починили корректную работу переключения профилей для Bluetooth. И добавили возможность выбора кодека при выборе профиля для Bluetooth-гарнитуры, что очень круто. Лично у меня переключение профиля не работало на PulseAudio уже очень давно, даже с установленными дополнительными сервисами, вроде oFono.
На этом повествование можно было бы и закончить, но некоторые, познакомившись с возможностями pulseeffects, захотят чего-то большего. Таким пользователям я рекомендую ознакомиться с такими вещами, как JACK Audio, и реализация его API поверх PipeWire в пакете pipewire-jack. Пост о pipewire-jack опубликую скоро в рамках продолжения данной темы будет опубликован отдельным постом, ввиду его объёма.