[pulseaudio-discuss] Adding support for bluetooth headsets that only have HFP

James Bottomley James.Bottomley at HansenPartnership.com
Thu Aug 18 14:51:17 UTC 2016


I recently switched from a JBL Flip 2 which supports both HSP and HFP
to an Ultimate Ears Boom 2 which is HFP only.  Needless to say this
currently means that the Ultimate Ears fails to work with pulseaudio
because we only support HSP via the native backend.  The first thing to
note is that we can easily get HFP running in pulseaudio via a quick
hack to switch support from HSP to HFP (see patch below) because if you
don't negotiate protocols on HFP it looks pretty much like HSP for the
audio stream.  Unfortunately, doing this would break half the headsets
out there which only support HSP, so the hack is for demo purposes
only.

I think the fix is to expose HFP and HSP separately as different
pulseaudio profiles.  This would also allow negotiating useful HFP
features, like wideband audio, which HSP doesn't support.  It would
also mean that people currently using HSP would continue, even if they
had HFP and that headsets which support both will show both in the PA
configuration possibilities.  If people are OK with this approach, I
can produce a patch set.

James

---

diff --git a/src/modules/bluetooth/backend-native.c b/src/modules/bluetooth/backend-native.c
index 86376c0..33feb98 100644
--- a/src/modules/bluetooth/backend-native.c
+++ b/src/modules/bluetooth/backend-native.c
@@ -438,7 +438,7 @@ static void profile_init(pa_bluetooth_backend *b, pa_bluetooth_profile_t profile
     switch (profile) {
         case PA_BLUETOOTH_PROFILE_HEADSET_HEAD_UNIT:
             object_name = HSP_AG_PROFILE;
-            uuid = PA_BLUETOOTH_UUID_HSP_AG;
+            uuid = PA_BLUETOOTH_UUID_HFP_AG;
             break;
         default:
             pa_assert_not_reached();


More information about the pulseaudio-discuss mailing list