Enable bluetooth headset microphone on Ubuntu 20.04

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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s