Make Bluetooth headset work properly in Ubuntu
2022-02-14
Problem: missing BT headset mic in input devices. So I can use only my BT headphones with internal laptop mic.
Solution: switch to PipeWire.
Install PipeWire
sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream
sudo apt update
sudo apt install pipewire gstreamer1.0-pipewire libspa-0.2-bluetooth pipewire-audio-client-libraries
Reload the list of SystemD daemons:
systemctl --user daemon-reload
Disable Pulseaudio
systemctl --user --now disable pulseaudio.service pulseaudio.socket
systemctl --user mask pulseaudio
...and enable Pipewire
systemctl --user --now enable pipewire-media-session.service
systemctl --user restart pipewire-pulse.service
Check out
pactl info
Server Name should be smth like PulseAudio (on PipeWire 0.3.45)
Now you can switch between Headset Head Unit (HSP/HFP) and High Fidelity Playback (A2DP Sink) profiles.
For switching profiles quickly via terminal bind aliases:
alias sound_good="pactl set-card-profile $(pactl list cards |grep 'Name: bluez' |awk '{print $2}') a2dp-sink"
alias sound_talk="pactl set-card-profile $(pactl list cards |grep 'Name: bluez' |awk '{print $2}') headset-head-unit"
If you have audio delay when watching movies / playing games, install pavucontrol (PulseAudio Volume Control):
sudo apt install pavucontrol
...and change Latency offset in Output Devices -> Advanced.
Links:
https://journal.mach5.web.id/2021/06/fixing-bluetooth-hsp-hfp-profile-on-ubuntu-20-10/
http://pvh.wp.sanbi.ac.za/2021/08/06/solving-bluetooth-audio-delay-on-ubuntu-20-04/