[pulseaudio-discuss] [PATCH v4 0/3] use bluetooth HFP in pulseaudio when available

Georg Chini georg at chini.tk
Wed Sep 20 18:41:06 UTC 2017

On 20.09.2017 20:10, James Bottomley wrote:
> On Wed, 2017-09-20 at 18:11 +0200, Georg Chini wrote:
>> On 20.09.2017 01:27, James Bottomley wrote:
>>> This is round 4 of the initial bluetooth: separate HSP and HFP
>>> patch.
>>>    It includes the review feedback and a global on/off switch just
>>> in case there's a problem headset with dual HFP/HSP but non-working
>>> HFP.   This one now includes a proper rfcomm negotiation (see patch
>>> 3).  I've finally figured out a bug in the rfcomm negotiation that
>>> was causing issues with my LG 900 headset, so I think it's now
>>> working for everything (but testing would be welcome).
>>> James Bottomley (3):
>>>     bluetooth: use consistent profile names
>>>     bluetooth: separate HSP and HFP
>>>     bluetooth: add correct HFP rfcomm negotiation
>>>    src/modules/bluetooth/backend-native.c          | 168
>>> +++++++++++++++++++++---
>>>    src/modules/bluetooth/backend-ofono.c           |   4 +-
>>>    src/modules/bluetooth/bluez5-util.c             |  46 +++++--
>>>    src/modules/bluetooth/bluez5-util.h             |  10 +-
>>>    src/modules/bluetooth/module-bluetooth-policy.c |   3 +-
>>>    src/modules/bluetooth/module-bluez5-device.c    | 102 ++++++++++-
>>> ---
>>>    src/modules/bluetooth/module-bluez5-discover.c  |   6 +-
>>>    7 files changed, 274 insertions(+), 65 deletions(-)
>> Hello James,
>> thank you for continuing your work. Unfortunately your patch set
>> collides with running ofono. Currently, with the default of
>> "headest=auto", the native and the ofono backends are active in
>> parallel. This is possible because ofono only supports HFP while PA
>> only supports HSP.
>> If PA starts supporting HFP headsets, this breaks above assumption
>> and ofono and PA both try to register the corresponding HFP UUID.
>> To work around the problem, I suggest to disable native HFP support
>> if headset_backend == HEADSET_BACKEND_AUTO, unless configured
>> otherwise on the command line.
> Actually, Pulseaudio already includes an ofono is running check, so the
> enable should be set to no for backend ofono or backend auto and ofono
> running, which would enable it in the widest possible set of scenarios.
> I can cook up a patch for that, hang on.
> James

This does only work for the special case when PA acts in the
HSP headset role. In this case, no duplicate UUIDs are registered
and disabling the profile only needs to be done because otherwise
PA and ofono would both be listening for incoming SCO connections.
The case here is different in that a duplicate UUID is registered.
This means, by the time PA recognizes that ofono is running, ofono
already tried to register the UUID and failed. That's why you have to
disable HFP even if ofono is currently not running.

>> Then, native HFP would normally only be available with
>> "headset=native", but those who want to support a mobile through
>> ofono and a HFP headset directly through PA can still configure it by
>> explicitly enabling HFP headsets in PA and disabling them on the
>> ofono side.
>> Regards
>>                Georg

More information about the pulseaudio-discuss mailing list