8
апрель
2024
Замена звукового сервера Pulseaudio на Pipewire в Linux и установка EasyEffects
17:17

Замена звукового сервера Pulseaudio на Pipewire в Linux и установка EasyEffects

8 апрель 2024 17:17

Как заменить PulseAudio на PipeWire, установить эквалайзер EasyEffects или выполнить откат с PipeWire на PulseAudio.

Оглавление

  1. Проверка используемого сервера звука
  2. Инструкция по замене PulseAudio на PipeWire
  3. Установка менеджера звуковых эффектов и эквалайзера EasyEffects
  4. Настройка регулятора громкости в системном лотке при наличии нескольких звуковых карт
  5. Возврат к PulseAudio после установки PipeWire (откат изменений)

 


0. Проверка используемого сервера звука

Проверьте в Терминале, какой сервер звука установлен и используется:

inxi -Ax

1. Инструкция по замене PulseAudio на PipeWire

1) добавил PPA-репозиторий

sudo -E add-apt-repository ppa:pipewire-debian/pipewire-upstream

2) обновил кеш пакетов apt

sudo apt update

3) установил звуковой сервер pipewire

sudo apt install pipewire

4) Также необходимо установить библиотеки для звукового сервера Pipewire, которые через зависимости установят кодеки ABR, LDAC, Opus и SBC:

sudo apt install libspa-0.2-bluetooth

(Данная команда установит пакеты libfreeaptx0, libldacbt-abr2, libldacbt-enc2, libopus0, libsbc1 для поддержки соответствующих кодеков APRX, LDAC, Opus, SBC).

5) Установил библиотеки клиента Pipewire

sudo apt install pipewire-audio-client-libraries

6) Перезагрузил конфигурацию служб с ключом "--user" у данного пользователя (т.к. сервер PipeWire выполняется в контексте безопасности пользователя):

systemctl --user daemon-reload

7) Отключил старую службу PulseAudio у пользователя:

systemctl --user --now disable pulseaudio.service pulseaudio.socket

8) Дополнительно: в Ubuntu отключил сервис pulseaudio после перезагрузки, с помощью команд:

sudo systemctl --user mask pulseaudio
sudo systemctl mask pulseaudio

9) Установил пакет wireplumber

sudo apt install wireplumber

Отмечу, что есть два способа управления потоками и политиками в PipeWire: при помощи модулей pipewire-media-session или wireplumber. В Linux Mint пакет pipewire-media-session не доступен. В других же дистрибутивах - наоборот, пакет wireplumber требует зависимости, которые не удовлетворяются. Тогда устанавливаем тот пакет, который доступен - pipewire-media-session или wireplumber.

10) Установил пакет pipewire-pulse (содержит службу для замены PulseAudio) и рекомендованный пакет pipewire-audio.

sudo apt install pipewire-pulse pipewire-audio

11) После установки PipeWire согласно инструкции по установке PipeWire от автора the-spyke копирую файл конфигурации ALSA из каталога примеров PipeWire в каталог ALSA:

sudo cp /usr/share/doc/pipewire/examples/alsa.conf.d/99-pipewire-default.conf /etc/alsa/conf.d/

Это касается настройки ALSA в связке с PipeWire.

12) Удалил все компоненты PulseAudio

sudo apt purge pulseaudio pulseaudio-module-bluetooth pulseaudio-utils

# sudo apt purge jack* qjackctl

13) Чтобы при запуске bluetooth не выводилась ошибка SAP:

Откройте на редактирование файл описания службы bluetooth для SystemD

sudo nano /etc/systemd/system/bluetooth.target.wants/bluetooth.service

[Unit]
Description=Bluetooth service
Documentation=man:bluetoothd(8)
ConditionPathIsDirectory=/sys/class/bluetooth

[Service]
Type=dbus
BusName=org.bluez
ExecStart=/usr/libexec/bluetooth/bluetoothd --noplugin=sap

Добавил ключ --noplugin=sap !

Профиль доступа к SIM-карте (SAP) позволяет устройству с поддержкой Bluetooth получать доступ к данным, содержащимся в SIM-карте другого устройства с поддержкой Bluetooth. Отключил плагин SAP.

14) Запускаю новые службы

systemctl --user --now enable pipewire pipewire-pulse wireplumber
systemctl --user start pipewire pipewire-pulse wireplumber

15) Проверка:

sudo inxi -Ax

Результат должен быть примерно следующий:

API: ALSA v: k6.17.0-20-generic status: kernel-api
  Server-1: PipeWire v: 1.0.7 status: active

Теперь должна работать звуковая карта на проводные наушники или колонки, а при наличии Bluetooth гарнитуры - и воспроизведение звука через Bluetooth.

Для переключения с встроенной звуковой карты на гарнитуру используйте пункт регулятора громкости "Звуковой микшер".
mixer
Перед этим нужно подключиться к устройству BlueTooth, как обычно, через значок Bluetooth в системном лотке: пункт меню "Устройства".
bt

 

2. Установка менеджера звуковых эффектов и эквалайзера EasyEffects

1) Установка регулятора уровней и т.п. - Панель управления для PipeWire, под названием EasyEffects

Приложение EasyEffects имеет домашнюю страницу на сайте https://github.com/wwmm/easyeffects
EasyEffects возможно установить из Flatpak:

sudo apt install flatpak
flatpak install flathub com.github.wwmm.easyeffects

Нажимаем два раза Enter, если хотим разрешить установку - Y - приложения EasyEffects
Загрузка и установка easyeffects - около 5 минут.

Если программа EasyEffects не устанавливается - проверьте, что добавлен flatpak репозиторий EasyEffects (актуально только для некоторых дистрибутивов):

flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.fpatpakrepo

По умолчанию в Linux Mint и Linux Green данная команда не нужна.

2) Запускаем приложение EasyEffects

flatpak run com.github.wwmm.easyeffects

Должно появиться пустое окно: "Список пуст".
easyeffects1

3) В EasyEffects зашел на закладку "Pipewire" - смена звуковой карты (только если она внешняя USB)

pipewire-internal-audio

В разделе "Автозагрузка предустановок" сменил звуковую карту для ввода-вывода звука с Built-in Audio Analog Stereo на USB Audio Analog Stereo.
pipewire-out

В разделе "Общие" выбрал USB звуковую карту (если встроенный звук, данный пункт выполнять не требуется)

4) В EasyEffects проверяем вывод звука - раздел "Проверочный сигнал".

sound_test

Осторожно, очень громкий сигнал, снимите наушники!

На закладке "Выход" появится спектр сигнала, с уровнем -6 дБ
test
Отключем проверочный сигнал на закладке Pipewire - Проверочный сигнал.

5) Запускаем источник звука - ранее установленное приложение Shortwave
vinyl

6) Чтобы отрегулировать громкость: в EasyEffects на закладке "Pipewire" - "Проигрыватели" уменьшаем громкость с 100% до 20-25%.
volume

7) Регулировка громкости PipeWire - на закладке "Проигрыватели" (100% -> 22%)

8) Добавил эквалайзер в "Эффекты" - "Добавить эффект" - "Эквалайзер"

eq1

По умолчанию 32 полосы! Это мне не нужно, достаточно 5 полос. Исправляем вверху Число полос с 32 на 5.
eq2
Для изменения параметров эквалайзера после уменьшения числа полос растягиваем окно за правый край:
eq3
и нажимаем кнопку "Подсчитать частоты".
eq4
За нижний край увеличиваем размер окна или раскрываем окно на весь экран.
Настраиваем эквалайзер по вкусу.

Если на максимальной громкости в наушниках возникает перегрузка, можно отрегулировать усиление "Выход".
eq5

Звук в PipeWire с эквалайзером стал лучше по сравнению с PulseAudio.

Не допускайте перегрузки выхода (передвиньте ползунок влево)! lvls

9) Для лучшего качества переключите режим эквалайзера с IIR на FFT. fft

10) Сохраняем настройки эквалайзера на диск с помощью кнопки "Экспорт предустановки APO".

В дальнейшем, запускать каждый раз EasyEffects не нужно, т.к. настройки применяются к PipeWire при запуске ОС.
Запуск EasyEffects для настройки звука производится командой

flatpak run com.github.wwmm.easyeffects

Также, программу настройки звука Easy Effects можно выполнить в меню "Пуск" - "Аудио и видео" - "Easy Effects":
easy_effects_icon

Сохранение настроек EasyEffects производится в меню "Предустановки":
pipewire-save-settings

 

3. Настройка регулятора громкости в системном лотке при наличии нескольких звуковых карт

Если к компьютеру подключено несколько звуковых карт, настройка громкости в системном лотке по умолчанию управляет громкостью встроенной звуковой карты. Изменения уровня громкости не будут влиять на громкость в динамиках. Чтобы решить проблему, щелкните левой кнопкой мыши по регулятору громкости, выберите "Настройки звука".
volume2

Откроется панель - нужно выбрать звуковую карту, которой будет управлять регулятор громкости. В моём случае выход звука на внешнюю звуковую карту называется "Analog output USB audio" - нажал на соответствующую кнопку панель. Теперь регулятор громкости работает корректно - управляет громкостью вывода звука на внешнюю USB звуковую карту.
usb_sound_card


В Linux Green с рабочим столом Cinnamon можно при нажатии на значок громкости в системном лотке выбрать Bluetooth гарнитуру для вывода звука.
linux_green_output

Чтобы уведомления системы не мешали прослушиванию музыки, в том же окне "Звук" на вкладке "Настройки звуков" нужно убавить громкость звуков до нуля.
notifications-off

Если звук через наушники Bluetooth некачественный, значит используется профиль "Наушник" вместо A2DP.
cvsd
Этой проблеме посвящена отдельная статья на даном сайте.

 

4. Возврат к PulseAudio после установки PipeWire (откат изменений)

Некоторый пользователи сталкивались с проблемами после перехода на PipeWire.
Поможет удаление PipeWire и установка PulseAudio.

sudo systemctl --global disable pipewire pipewire-pulse pipewire-media-session

sudo apt remove pipewire -y && sudo apt autoremove -y && sudo apt autoclean -y
sudo flatpak remove com.github.wwmm.easyeffects
sudo add-apt-repository -r ppa:pipewire-debian/pipewire-upstream
sudo apt update
sudo apt reinstall pulseaudio pulseaudio-module-zeroconf avahi-daemon  pavucontrol  alsa-utils pulseaudio-utils
sudo apt purge bluetooth bluez* blueman pulseaudio-module-bluetooth
sudo apt install bluetooth bluez bluez-tools blueman pulseaudio-module-bluetooth
mv  ~/.config/pulse/ ~/.config/pulse_old/
sudo systemctl --global unmask pulseaudio.service pulseaudio.socket
sudo systemctl --global enable pulseaudio.service pulseaudio.socket
sudo reboot

Права для Bluetooth:

sudo adduser pulse bluetooth

Отредактируйте файл

sudo nano /etc/dbus-1/system.d/bluetooth.conf

В конце файла перед должно быть указано:

<!-- allow users of bluetooth group to communicate -->
<policy group="bluetooth">
<allow send_destination="org.bluez"/>
</policy>

<policy context="default">
<allow send_destination="org.bluez"/>
</policy>

Разрешение использования и запуск службы PulseAudio пользователем:

systemctl --user unmask pulseaudio.service
systemctl --user enable pulseaudio.service

systemctl --user unmask pulseaudio.socket
systemctl --user enable pulseaudio.socket

systemctl --user daemon-reload

Настройка автоматического подключения устройств Bluetooth:

sudo nano /usr/bin/start-pulseaudio-x11
set -e

if [ x"$DISPLAY" != x ] ; then

    /usr/bin/pactl load-module module-x11-publish "display=$DISPLAY xauthority=$XAUTHORITY" > /dev/null
    /usr/bin/pactl load-module module-x11-cork-request "display=$DISPLAY xauthority=$XAUTHORITY" > /dev/null

    # Add NEW
    /usr/bin/pactl load-module module-bluetooth-discover
    /usr/bin/pactl load-module module-switch-on-connect

Отредактируйте:

sudo nano /etc/pulse/default.pa

После модуля "### Automatically restore the volume of streams and devices" добавьте строчки:

## Add New
.ifexists module-bluetooth-discover.so
load-module module-bluetooth-discover
.endif

Настройка режима работы адаптера Bluetooth: уберите комментарий в строке ControllerMode и задайте параметру значение "bredr".

sudo nano /etc/bluetooth/main.conf
# Restricts all controllers to the specified transport. Default value
# is "dual", i.e. both BR/EDR and LE enabled (when supported by the HW).
# Possible values: "dual", "bredr", "le"
ControllerMode = bredr

Архив с файлами конфигурации для PulseAudio + Bluetooth (от версии Runtu/Ubuntu 20.04): conf.zip.

Перезагрузка ПК:

sudo shutdown -r now

Запустите проигрывание звука, например:
https://www.rbc.ru/story/radio.

Если звука не слышно, проверьте выход звука на "Наушники" или "Line Out" с помощью правой кнопки мыши по значку громкости.
output

Для выбора устройства вывода также можно использовать настройку системы Пуск - Параметры - Звук.

Затем, отрегулируйте громкость в pavucontrol.

Проверка в терминале:

systemctl --user status pulseaudio.service

Должно быть выведено зеленым цветом: "Active: active (running)".

Проверка сервера звука:

pactl info

Результат должен быть примерно следующий:

Server String: /run/user/1000/pulse/native
Library Protocol Version: 35
Server Protocol Version: 33
Is Local: yes
Client Index: 12
Tile Size: 65472
User Name: vladimir
Host Name: amd
Server Name: pulseaudio
Server Version: 13.99.1
Default Sample Specification: s16le 2ch 44100Hz
Default Channel Map: front-left,front-right
Default Sink: bluez_sink.41_42_93_D9_80_BD.a2dp_sink
Default Source: bluez_sink.41_42_93_D9_80_BD.a2dp_sink.monitor
Cookie: db00:e703

Отладка:

pulseaudio -k
pulseaudio -D
sudo journalctl -xe

В моём случае, после всех указанных выше действий, ошибок нет. Удалось установить PipeWire, затем вернуть обратно Pulseaudio.

Результат команды

inxi -Ax

следующий:

  Sound Server-1: ALSA v: k6.2.0-060200-generic running: yes
  Sound Server-2: PulseAudio v: 15.99.1 running: yes

В Linux при использовании Bluetooth иногда может запускаться профиль по умолчанию "Гарнитура HFP" с низким качеством звука. Как переключить профиль Bluetooth на высококачественный звук A2DP по Bluetooth - см. статью на данном сайте.


Источники:


Последнее изменение: 06.05.2026



Похожие публикации