Due to the Corona-caused lock-down, I have been in many video calls via Skype, Zoom, etc. At first, I used the integrated microphone of my laptop as well as some wired speakers plugged into the headphone jack. But it turns out I also have to do some teaching via video conferencing software. Therefore, I ordered a dedicated USB microphone (a FiFine K670) for better audio. My plan was to use that microphone and my Sony WH-1000XM3 bluetooth headphones.
Now the problem I encountered was that each time I had the headphones connected to the laptop and I started a Skype/Zoom/Whatever call, they automatically went into HSP/HFP mode. This is the bluetooth mode for calls, meaning that the microphone can be used, but the audio quality on the headphones is reduced. I want the headphones to be in A2DP mode all the time, which has better audio quality, but turns off the integrated microphone in the headset.
The reason for this automatic switch is a “feature” that was introduced in PulseAudio 10. It automatically switches the bluetooth profile as soon as a “phone” application is started. To turn off this behavior, I did the following (see the release notes of PulseAudio 11 for background):
tom@klotz ~> man default.pa tom@klotz ~> mkdir -p .config/pulse tom@klotz ~> cp /etc/pulse/default.pa .config/pulse tom@klotz ~> vi .config/pulse/default.pa
First, check the man pages for the path of the user-specific PulseAudio config file. Then, create the corresponding path and copy the system-wide config file to the user-specific config file location. Finally, find the following section in the config file:
.ifexists module-bluetooth-policy.so load-module module-bluetooth-policy .endif
and add the option
.ifexists module-bluetooth-policy.so load-module module-bluetooth-policy auto_switch=0 .endif
This way, the bluetooth mode will never change automatically.
Side note: it might also be a good idea to update Bluez to at least 5.52, as that version fixes a bug with selecting the bluetooth mode.