This guide is only for original Ubuntu out-of-the-box packages. If you have added a custom PPA like
pipewire-debian
, you might get into conflicts.
Ubuntu 22.04 has PipeWire partially installed and enabled as it's used by browsers (WebRTC) for recoding the screeen under Wayland. We can enable remaining parts and use PipeWire for audio and Bluetooth instead of PulseAudio.
Starting from WirePlumber version 0.4.8 automatic Bluetooth profile switching (e.g. switching from A2DP to HSP/HFP when an application needs microphone access) is supported. Jammy (22.04) repos provide exactly version 0.4.8. So, we're good.
Based on Debian Wiki, but simplified for Ubuntu 22.04.
Install Bluetooth codecs AAC/LDAC/AptX:
$ sudo apt install \
libfdk-aac2 \
libldacbt-{abr,enc}2 \
libopenaptx0
Install remaining PipeWire packages and WirePlumber as the session manager:
$ sudo apt install \
libspa-0.2-bluetooth \
pipewire-audio-client-libraries \
pipewire-media-session- \
wireplumber
Notice '-' at the end of 'pipewire-media-session'. This is to remove it in the same command, because 'wireplumber' will be used instead.
Start WirePlumber for your user:
$ systemctl --user --now enable wireplumber.service
Single step. Copy the config file from the PipeWire examples into your ALSA configuration directory:
$ sudo cp /usr/share/doc/pipewire/examples/alsa.conf.d/99-pipewire-default.conf /etc/alsa/conf.d/
Everything was done automatically by pipewire-pulse
package, which should have been installed by wireplumber
package as recommended. If not, install it yourself.
Just remove this package and Bluetooth will be handled by PipeWire:
$ sudo apt remove pulseaudio-module-bluetooth
Reboot and check if it works by running:
$ LANG=C pactl info | grep '^Server Name'
This works on Debian 12 (Bookworm) too, except for the ALSA step.
BTW, is this for audio only?
Shouldn't the package "gstreamer1.0-pipewire" be installed too, like in this guide:
PipeWire on Ubuntu MATE 22.04
https://ubuntu-mate.org/blog/ubuntu-mate-kinetic-kudu-release-notes/