MyTetra Share
Делитесь знаниями!
Установка PipeWire на Debian Linux 11
Время создания: 15.03.2023 17:40
Автор: Xintrea (перевод)
Текстовые метки: linux, debian, pipewire, pulseaudio, установка, инсталляция, настройка
Раздел: Компьютер - Linux - Звук и аудио
Запись: xintrea/mytetra_syncro/master/base/16788912172dmexfr2zt/text.html на raw.github.com

Установка и включение PipeWire в Debian 11


В официальной документации сказано, что PipeWire скорее всего уже установлена в любой современной операционной системе. Особенно это касается операционок Debian 10, 11 и 12. Однако PipeWire может находиться в неактивном (невключенном) состоянии.

Чтобы сделать PipeWire основным сервисом воспроизведения звука, необходимо внести некоторые изменения в систему, которые заменят сервер PulseAudio на PipeWire.

Перед тем как это делать, необходимо выяснить, установлен PipeWire или нет. Чтобы это проверить, можно использовать команду apt policy, которая покажет информацию о запрашиваемом приложении и его зависимостях, которые вместе с ним установлены. Чтобы это сделать, надо выполнить следующую команду:



$ sudo apt policy pipewire pipewire-audio-client-libraries



В ответ будет выдано примерно следующее:




Проверка того, установлен ли пакет PipeWire



В выводе команды видно, что установлены пакеты pipewire и pipewire-audio-client-libraries.



Инсталляция PipeWire


В случае, если было выяснено, что утилита PipeWire вообще не установлена в системе, необходимо воспользоваться следующей командой, которая произведет инсталляцию:



$ sudo apt install pipewire pipewire-audio-client-libraries



Примечание. Все последующие действия в большинстве своем будут происходить не для всей системы, а только для текущего залогиненого пользователя. Предполагается, что конфигурация PipeWire создается именно для конкретного пользователя. Поэтому команды управления сервисами будут написаны для работы не с системными сервисами, а с сервисами пользователя (на что указывает опция --user).


Если необходимо делать действия на уровне системы, а не на уровне пользователя, то в команде systemctl надо убрать флаг --user и выполнять данную команду от суперпользователя.



Замена PulseAudio на сервер PipeWire в Debian


После того как необходимые пакеты и библиотеки установлены в систему, следует заменить PulseAudio на PipeWire. Для этого необходимо произвести следующие действия.


Шаг 1: Создать пустой файл


Перво-наперво нужно создать пустой файл в каталоге /etc/pipewire/media-session.d, используя команду:



$ sudo touch /etc/pipewire/media-session.d/with-pulseaudio



Шаг 2: Создать сервис pipewire-pulse


Далее, следует создать сервис pipewire-pulse. Для этого надо скопировать файлы /usr/share/doc/pipewire/examples/systemd/user/pipewire-pulse.* (два файла с именами pipewire-pulse.service и pipewire-pulse.socket) в директорию /etc/systemd/user/ чтобы в последующем можно было с ними работать через команду systemctl.



$ sudo cp /usr/share/doc/pipewire/examples/systemd/user/pipewire-pulse.* /etc/systemd/user/



Шаг 3: Перечитывание файлов сервисов


Если предыдущий шаг прошел удачно, необходимо перечитать файлы сервисов, чтобы система узнала о сервисе, который был создан:



$ systemctl --user daemon-reload



Шаг 4: Запрет запуска сервиса PulseAudio


Далее нужно запретить запуск сервиса PulseAudio. Делается это следующей командой:



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



В ответ команда должна показать, что сервис был исключен из запуска:




Запрет сервиса PulseAudio в Debian 11



Шаг 5: разрешение работы и запуск сервиса PipeWire


После того как был заблокирован сервер PulseAudio, необходимо выполнить команду, которая разрешит работу сервиса pipewire-pulse произведет его запуск:



$ systemctl --user --now enable pipewire pipewire-pulse



Данная команда должна вывести примерно следующее:




Разрешение работы сервиса PipeWire в Debian 11



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


Теперь система полностью сконфигурирована чтобы использовать PipeWire поверх PulseAudio. Но как узнать, что конкретно используется для вывода звука? Самый простой способ - это воспользоваться командой pactl info (pactl - это утилита с полным названием PulseAudio Control).



$ pactl info




Использование PipeWire для вывода звука в Debian 11



Примечание переводчика: здесь непонятно, отключен ли PulseAudio или нет. Похоже, что вышеприведенная команда всего лишь показывает, куда направлен вывод PulseAudio. Сам PulseAudio, судя по командам выше, все-таки отключен для текущего пользователя.



Сохранение изменений после перезагрузки


После выполнения всех вышеуказанных команд система выводит звук с использованием PipeWire. Но если перезапустить компьютер, для вывода звука снова будет использоваться сервис PulseAudio. Неужели нужно будет всякий раз при загрузке заново вводить команды переконфигурирования звуковой подсистемы на PipeWire? Это же неприемлемо!


Чтобы решить данную проблему надо просто "замаскировать" запуск сервиса pulseaudio.service по умолчанию. Для этого нужно выполнить команду:



$ systemctl --user mask pulseaudio



Далее можно перезагрузить систему и убедиться, что теперь для вывода звука используется PipeWire. Для понимания того, какие сервисы работают, можно выполнить команды:



systemctl --user status pulseaudio

systemctl --user status pipewire



Замена PipeWire на сервер PulseAudio в Debian


В настоящее время PipeWire считается ненадежным для использования в качестве аудиосервиса по умолчанию. Даже официальное руководство не рекомендует использовать PipeWire в качестве аудиосервиса, так как его работоспособность не гарантируется.


Один из авторов, Саймон Маквитти (Simon McVittie) говорит: "This is not a supported scenario for Debian 11, and is considered experimental."


Использование PipeWire может привести к неработоспособности определенных приложений, разломанной функциональности тех или иных частей звуковой подсистемы.


Если возникнет какая-либо проблема со звуком, то имеется возможность выполнить действия, которые отключат PipeWire и вернут PulseAudio обратно.


Вот как это рекомендуется делать.



Step 1: Unmask PulseAudio

If you have masked the PulseAudio server in the above step, then don’t forget to unmask it first. Otherwise, subsequent commands will throw an error.


$ systemctl --user unmask pulseaudio


Step 2: Disable PipeWire

After that, you can execute the below code to stop PipeWire.


$ systemctl --user --now disable pipewire pipewire-pulse


Step 3: Enable PulseAudio

Lastly, run the final command which will enable the PulseAudio service to be used as normal.


$ systemctl --user --now enable pulseaudio.service pulseaudio.socket


The behaviour of the above command




Enable PulseAudio



Step 4: Check Status

Once the above command is performed successfully execute pactl info command to check audio server if the output display the “pulseaudio” as a server name, then you are work is completed here.




PipeWire to PulseAudo



And for any reason, if you get an error like “Connection failure: Connection refused pa_context_connect() failed: Connection refused”, then, first of all, try to restart your system, and even if that doesn’t get fixed, then you can comment down your query below. We will be happy to give you a hand.



Всей вышеприведенной информации достаточно, чтобы заменить PipeWire и PulseAudio одно на другое и выбрать, что лучше работает.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования