[pulseaudio-discuss] Proposal for a new API and usage of Bluetooth HSP and HFP profiles on Linux

Pali Rohár pali.rohar at gmail.com
Wed Dec 18 21:33:49 UTC 2019

Hello Denis!

On Wednesday 18 December 2019 14:53:24 Denis Kenzior wrote:
> Hi Pali,
> > > > I'm not sure what logic around HSP you really care about.  It is just a
> > > > single button press in the end.
> > > 
> > > CSR features (battery status level, ...) and CSR codec selection (e.g.
> > > AuriStream). Also some apple extensions are used in HSP profile.
> Since HFP can do everything that HSP can and more, I view HSP as deprecated
> and not to be used.  If these are also available in HFP, then I'd just use
> HFP instead.  But HSP was never my focus, so if you feel there's a need for
> better HSP support, then fair enough.

Yes, I see. Also there are devices without HFP support, only with HSP.
pulseaudio support also these devices and pulseaudio is not going to
drop support for them. Last time when I looked at ofono, it has no HSP
support. Is ofono going to add support for HSP?

> > > 
> > > > For HFP, oFono can already support all sorts of extensions.  See for example
> > > > how we handled Siri for HFP support in oFono here:
> > > > https://git.kernel.org/pub/scm/network/ofono/ofono.git/tree/doc/siri-api.txt.
> > 
> > About Siri: In hsphfpd API it is delegated to Telephony Agent. So
> > hsphfpd is not going to (re)implement it.
> > 
> > > I saw. But it does not support usage of vendor codecs, like CSR
> > > AuriStream and it does not support CSR extensions, like displaying text
> > > on embedded display.
> But that's my point, you can easily accomplish this by creating another
> oFono API / atom for HFP CSR extensions and expose this information /
> functionality.  Similar to how Siri was done.  I see no need for a
> completely new external daemon.

Ok. I agree that functionality from my hsphfpd prototype can be "moved"
to ofono.

But would you accept patches which exports DBus API e.g. for displaying text
on HFP headset with embedded display? Or patches which implements 3
different way for reporting battery level status of HFP headset? And API
for sending "computer battery level" to HFP headset? Or implementing
setup of SCO sockets (via RFCOMM layer) for custom codecs? Or exporting
uinput linux device for button press events? Because all these
functionalities looks like not relevant to telephony / modem stack and
for me it seems that ofono is not target application which should be
interested in implementing it.

> > > 
> > > > Many of the extensions you talked about are also relevant for real modems as
> > > > well (like battery reporting, call volume, etc).  Some of these APIs are
> > > > already defined in fact.
> > > > 
> > > > Given the above, oFono upstream has no interest in adding or maintaining
> > > > support this new framework.
> > 
> > Maybe better question: Do you mean that you do not want to maintain
> > hsphfpd, or that you completely do not want to see that ofono would be
> > "Telepony Agent" for hsphfpd?
> The latter.


> > 
> > > Denis, if you are not interested in my proposed hsphfpd daemon, how you
> > > want to solve problem with other extensions and other vendor codecs?
> > > 
> See above..
> > > Also in my proposed solution it is possible to use HFP profile without
> > > Telephony Agent (ofono). Do you think it is really a good idea to have
> > > strong dependency on ofono just for bluetooth HFP headset?
> > > 
> Why not?  The main purpose of HFP is telephony; whether it is classic phone
> calls or skype/facetime.  oFono seems a natural fit.

I disagree here. Primary purpose of HFP for desktop users is ability to
use bluetooth's microphone. And not telephony stack and its complicated
features like call hold and others, which are in HFP used and
implemented probably only in car kits.

> > > Also for using ofono with HFP profile is not possible on desktop
> > > computer which do not have any modem as it is hooked to some active
> > > modem.
> This statement is not true at all.  You can use oFono without any 'real'
> modems attached.  It can happily manage only HFP devices (or modems as we
> call them.)

Ok, can you please provide exact steps how to do it, including
activating of bidirectional audio stream?

Because from all information which I got, and also from talk with other
people, I think it really is not possible.

Also official pulseaudio documentation mention that you need phone sim
simulator for this purpose, see:


> > > 
> > > There is a way to use ofono sim simulator which provide fake modem, but
> > > its setup is hard on desktop and it not automated.
> > > 
> You must be thinking of the oFono HFP AG implementation...

Yes! For connecting bluetooth headset you need HFP AG implementation.

And I guess this is the reason why simulator is needed. HFP headset acts
as a "client" for modem. Therefore on desktop / laptop you need to
implement "modem server" which will be used by HFP headset "client".

And phone simulator is doing exactly this "modem server", it is
simulator of modem.

> > > So connecting bluetooth headset in HFP profile with ofono is something
> > > not so easy and not an obvious way.
> > > 
> Again, not true.  As I said above, you can use oFono for this use case just
> fine.  Certainly the main driver for the development of oFono was to drive
> real modem hardware, but it isn't limited to that.  So if you want to use it
> only for HFP, you can.

If it is really possible (and need for phone simulator as described
above is not required) then there is completely missing documentation
how to do it. And how should be audio server (pulseaudio) configured to
work in this way.

Pali Rohár
pali.rohar at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20191218/53650f46/attachment-0001.sig>

More information about the pulseaudio-discuss mailing list