Skip to content

Instantly share code, notes, and snippets.

@emsi
Forked from the-spyke/pipewire.md
Created March 2, 2023 10:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save emsi/44e3a0be7b519cc1b662d1983f2ebe61 to your computer and use it in GitHub Desktop.
Save emsi/44e3a0be7b519cc1b662d1983f2ebe61 to your computer and use it in GitHub Desktop.
Enable PipeWire on Ubuntu 22.04

Enable PipeWire on Ubuntu 22.04

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.

Unfortunately, aptX and AAC are not enabled because of patents and other technical reasons. However, looks like aptX will be available in coming 22.10 release. If you 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.

Based on Debian Wiki, but simplified for Ubuntu 22.04.

Install

Install codecs for LDAC (SBC is included out of the box):

$ sudo apt install libldacbt-{abr,enc}2

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

Configure

ALSA

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/

PulseAudio

Everything was done automatically by pipewire-pulse package, which should have been installed by wireplumber package as recommended. If not, install it yourself.

Bluetooth

Just remove this package and Bluetooth will be handled by PipeWire:

$ sudo apt remove pulseaudio-module-bluetooth

Done

Reboot and check if it works by running:

$ LANG=C pactl info | grep '^Server Name'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment