Headphones microphone is not working

As it was already pointed out that A2DP is unidirectional, you have to switch to HSP profile every time you need to use the microphone. But doing so manually is not ideal, and unless application sets media.role=phone for the stream (most non-voip apps don't), pulseaudio won't switch it automatically by default.

But starting from Pulseaudio v. 11.0, it's possible to automatically switch the profile whenever microphone access is requested by the application, but it's disabled by default.

  1. Find load-module module-bluetooth-policy line in /etc/pulse/default.pa
  2. Change it to load-module module-bluetooth-policy auto_switch=2

Now pulseaudio will switch the device profile to HSP whenever microphone access is requested and change it back to A2DP after stream is closed.

You need to reload pulseaudio module after this for the changes to take effect:

  1. pulseaudio -k
  2. pulseaudio -D

By design, the Bluetooth A2DP profile is unidirectional. We can not use a microphone unless our headset and adapter were capable to be paired simultaneously on both HSP, and A2DP protocol, or the application switches from A2DP to HSP on demand.

See also this enlightning discussion on bug #508522.


I've just installed a solution for Bluetooth not selecting the mic on my Bose QC35 II on Ubuntu 16.04 LTS.

Since the internal mic on my Samsung laptop is too close to the fan audio sounds like inside an airplane for all participants in a videocall.

The solution is Blueman that adds functionality for Bluetooth.

Install it: sudo apt-get install blueman

I had to restart network-manager (sudo service network-manager restart) after WiFi stopped working (could be unrelated, but hey better have it just in case).

Blueman GUI

I can now switch to Headeset Head Unit (HSP/HFP) and choose the headset mic in Sound settings

Sound settings - input

Still a bit of a hassle when it does not switch automatically (like Android does) but it's still better than being in a Jumbojet storage!