generated from general-packages/pika-pkg-template
149 lines
5.3 KiB
Plaintext
149 lines
5.3 KiB
Plaintext
Using pipewire for audio
|
|
========================
|
|
|
|
pipewire in Debian was initially used for video (screen sharing and remote
|
|
desktop, particularly in GNOME and KDE Wayland sessions). However, it has
|
|
matured enough to also be used for audio.
|
|
|
|
|
|
Using pipewire as a substitute for PulseAudio
|
|
---------------------------------------------
|
|
|
|
Install the pipewire-pulse package and log back in.
|
|
And potentially install the new recommended session manager
|
|
wireplumber instead of the deprecated pipewire-media-session.
|
|
|
|
PipeWire project recommends [1] to remove the pulseaudio package to prevent
|
|
conflicts in some cases [2] even if both pulseaudio and pipewire-pulse
|
|
services are not running at the same time.
|
|
pipewire-pulse doesn't conflict with pulseaudio at the package level to allow
|
|
users to switch from one to the other just by disabling/enabling services.
|
|
|
|
[1] https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#should-i-uninstall-everything-pulseaudio
|
|
[2] https://bugs.debian.org/1013276
|
|
|
|
|
|
Using pipewire with Bluetooth
|
|
---------------------------------------------
|
|
|
|
Install the libspa-0.2-bluetooth package to add Bluetooth support to pipewire.
|
|
|
|
Please note that AAC codec support is currently disabled due to license issue.
|
|
See https://bugs.debian.org/981285
|
|
|
|
Pipewire (nor any other package) does not depend or recommend libspa-0.2-bluetooth
|
|
as not all users are interested in Bluetooth support.
|
|
The same apply to pulseaudio and pulseaudio-module-bluetooth:
|
|
pulseaudio does not depend or recommend pulseaudio-module-bluetooth.
|
|
|
|
However, pulseaudio-module-bluetooth and libspa-0.2-bluetooth are installed on
|
|
a system through the dependency of a Desktop Environment. For example,
|
|
with GNOME, the bluetooth plugin is pulled by the meta package gnome-core.
|
|
|
|
Moreover, both pipewire-pulse and wireplumber packages already suggest
|
|
to install the libspa-0.2-bluetooth package.
|
|
|
|
|
|
Using pipewire as the default ALSA output device
|
|
------------------------------------------------
|
|
|
|
Install the pipewire-alsa package.
|
|
|
|
ALSA clients will output via pipewire instead of PulseAudio or directly to
|
|
ALSA.
|
|
|
|
pipewire-alsa conflicts with pulseaudio because both try to take control of
|
|
all ALSA devices and redirect all audio streams to them. But, because of their
|
|
respective configs files name:
|
|
- PipeWire: /etc/alsa/conf.d/99-pipewire-default.conf
|
|
- PulseAudio: /etc/alsa/conf.d/99-pulse.conf
|
|
which make PulseAudio ordered after PipeWire. PulseAudio will take the
|
|
final control of ALSA clients even when pipewire-alsa is installed. Thus,
|
|
to allow ALSA clients redirecting output to pipewire, pulseaudio package
|
|
needs to be removed.
|
|
|
|
To check where streams are redirected, run the following command:
|
|
$ aplay -L | grep -A 1 default
|
|
|
|
|
|
Using pipewire as a substitute for JACK
|
|
---------------------------------------
|
|
|
|
Install the pipewire-jack package.
|
|
|
|
JACK clients can be configured to output via pipewire instead of JACK.
|
|
|
|
To enable this:
|
|
|
|
* either run JACK clients using the pw-jack(1) wrapper, or copy
|
|
/usr/share/doc/pipewire/examples/ld.so.conf.d/pipewire-jack-*.conf
|
|
into /etc/ld.so.conf.d/ and run ldconfig as root.
|
|
|
|
|
|
Setting pipewire real-time priority limits
|
|
---------------------------------------
|
|
|
|
!!! WARNING !!!
|
|
Your system has real-time priority limits for a good reason. This allows it
|
|
to remain stable in case a process goes crazy. RTKit allows limited use of
|
|
real-time priority without the risk of locking up the system if a real-time
|
|
task starts spinning.
|
|
Some upstream recommendations for real-time [3] are to increase these limits to
|
|
bypass RTKit or to disable most of its safeguards. By following them, your
|
|
system could be blocked if a process goes wrong.
|
|
These performance tweaks are not needed for a normal use of pipewire, instead
|
|
modifying pipewire configuration is enough.
|
|
|
|
[3] https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Performance-tuning#rlimits
|
|
|
|
The "pipewire" package creates a system group called "pipewire".
|
|
The upstream recommended priority limits for this group are defined in:
|
|
|
|
* /etc/security/limits.d/25-pw-rlimits.conf
|
|
|
|
To enable these limits for your user, add it to the "pipewire" group.
|
|
|
|
* sudo adduser yourusername pipewire
|
|
|
|
|
|
After upgrading pipewire
|
|
------------------------
|
|
|
|
A system-level upgrade of pipewire will *not* automatically restart
|
|
all pipewire-related user-level services (such as "pipewire-pulse").
|
|
After an upgrade of pipewire, there are three main ways to restart
|
|
services.
|
|
|
|
1. The least disruptive way to restart services is a command such as
|
|
|
|
$ systemctl --user restart wireplumber pipewire pipewire-pulse
|
|
|
|
You may check the output of "pw-dump" to see if you forgot to restart
|
|
some services, e.g.
|
|
|
|
$ pw-dump |grep -nE "core\.(version|name)|process\.binary"
|
|
|
|
or you may use "checkrestart" [4] or "needrestart" [5] with
|
|
sudo or as root user.
|
|
|
|
2. Another way to restart services is by restarting your user session.
|
|
On a desktop computer this typically means exiting your X or Wayland
|
|
session and restarting it. On a mobile phone this typically means
|
|
restarting "phosh" if phosh is your phone shell:
|
|
|
|
$ sudo systemctl restart phosh
|
|
|
|
3. The most sure (and most disruptive) way to restart the pipewire
|
|
related services is to reboot your computer.
|
|
|
|
[4] https://tracker.debian.org/pkg/debian-goodies
|
|
[5] https://tracker.debian.org/pkg/needrestart
|
|
|
|
|
|
Other troubleshooting
|
|
---------------------
|
|
|
|
See the Debian wiki page [6] and the upstream wiki [3].
|
|
|
|
[6] https://wiki.debian.org/PipeWire
|