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
$] bluetoothctl
It should show something like this:
[BOLTT BH1300]#
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 bluetoothctl
.
Now run 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.
Many thanks!
Worked for me!
LikeLike