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 WirePlumber as the session manager:
$ sudo apt install 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
Install the ALSA plug-in:
$ sudo apt install pipewire-audio-client-libraries
And copy the config file from PipeWire docs (provided by the plug-in) into the ALSA configuration directory:
$ sudo cp /usr/share/doc/pipewire/examples/alsa.conf.d/99-pipewire-default.conf /etc/alsa/conf.d/
Check if you have other (like Pulse) configs in the /etc/alsa/conf.d/
installed by something else. You might want to remove them.
Everything was done automatically by pipewire-pulse
package, which should have been installed by wireplumber
package as recommended. If not, install it yourself.
Install the codecs and remove Bluetooth from PulseAudio, so it would be handled directly by PipeWire:
$ sudo apt install libldacbt-{abr,enc}2 libspa-0.2-bluetooth pulseaudio-module-bluetooth-
The supported codecs are SBC and LDAC.
Unfortunately, aptX and AAC are not supported because of patents and other technical reasons. aptX is available starting from 22.10 via libfreeaptx0
installed by default there (22.10 uses PipeWire by default as well). If you really need these codecs in 22.04 you may use this PPA from @aglasgall which is based on universe
, but rebuilds pipewire
with additional packages for aptX
and AAC
from multiverse
. Read the discussion here.
Reboot and check if it works by running:
$ LANG=C pactl info | grep '^Server Name'
Wanted to follow up as I found how to resolve my above issue:
Had to check additional packages and install with the /jammy option as there were package conflicts. Installing pipewire/jammy removed a number of packages which ended up breaking my gdm3 GUI. Next time I ran sudo apt install pipewire/jammy, I copied the package list that was to be removed and did research on them. This is what followed:
gdm3 install gdm3/jammy
gnome-shell gnome-shell/jammy
gnome-shell-extension-appindicator Leave alone
gnome-shell-extension-desktop-icons-ng install the /jammy version
gnome-shell-extension-ubuntu-dock install the /jammy version
gstreamer1.0-pipewire install /jammy
ubuntu-desktop /leave alone
ubuntu-desktop-minimal leave alone
ubuntu-release-upgrader-gtk /jammy
ubuntu-session leave alone
update-manager leave alone
update-notifier leave alone
Command I ran is as follows:
This fixed my issue with GUI becoming broken and I was able to follow the rest of this guide successfully without breaking my GUI.