After months and months dealing with this freaking issue that has become a pain in the ass, for real, there is this article:
That made things working again. I just cannot believe how much effort is needed to make a simple bluetooth headset work on Ubuntu. It still doesn’t work great, but it is fine.
In short what you need to do is:
Enable Bluetooth headset microphone
Before installing pipewire, please make sure that your issue is the same as mine.
First, type this command in Terminal
It should show something like this:
Where BOLTT BH1300 is my device name. type
info and you will see info about your headset:
Device 07:F8:87:8F:B9:ED (public) Name: BOLTT BH1300 Alias: BOLTT BH1300 Class: 0x00340404 Icon: audio-card Paired: yes Trusted: yes Blocked: no Connected: yes LegacyPairing: no UUID: Serial Port (00001101-0000-1000-8000-00805f9b34fb) UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb) UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb) UUID: Advanced Audio Distribu.. (0000110d-0000-1000-8000-00805f9b34fb) UUID: A/V Remote Control (0000110e-0000-1000-8000-00805f9b34fb) UUID: Handsfree (0000111e-0000-1000-8000-00805f9b34fb) UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb) Modalias: bluetooth:v05D6p000Ad0240
Notice Audio Sink which is necessary to make sure the headset’s microphone is detected. Type
quit to exit from
pacmd list-cards to show all connected devices.
It should show all the devices. Locate your bluetooth headset and look for the profiles key like below. headset_head_unit available no means that HSP/HFP is not enabled.
profiles: a2dp_sink: High Fidelity Playback (A2DP Sink) (priority 40, available: unknown) headset_head_unit: Headset Head Unit (HSP/HFP) (priority 30, available: no) off: Off (priority 0, available: yes) active profile: <a2dp_sink>
As pulseaudio does not support HSP/HFP by default, we can override it with the pipewire library.
Installing Pipewire in ubuntu 20.04
To Install pipewire, you need to add a pipewire repository. Type the following command in Terminal:
sudo add-apt-repository ppa:pipewire-debian/pipewire-upstream sudo apt update sudo apt install pipewire sudo apt install libspa-0.2-bluetooth sudo apt install pipewire-audio-client-libraries
Once updated, you will need to reload bluetooth services and mask pulseaudio.
systemctl --user daemon-reload systemctl --user --now disable pulseaudio.service pulseaudio.socket systemctl --user mask pulseaudio systemctl --user --now enable pipewire-media-session.service
If you run into some issues in the last command, which I did too. The best way is to restart pipewire or reboot your system.
systemctl --user restart pipewire sudo reboot # make sure eveything is working pactl info
I don’t know why but for me, it never worked straight and I always had to choose the Headset in Microphone settings manually as shown below.