Comment 5 for bug 1941977

Revision history for this message
Brian Ejike (bejike) wrote :

I've spent a while studying the snoop/syslogs and Bluez source, and I believe I've narrowed down the issue.

* From the Headset-Initiated snoop, we can see where the headset connected the ACL (23:54:47 UTC), followed shortly by connecting HFP (successfully).

* Very soon after the headset connected HFP, the PC/bluez initiated an AVDTP connection, a bid to connect A2DP -- this is unfriendly behaviour, since the general convention is: whomever created the ACL gets to create the profiles. Or at least is given enough time to connect them, before the other end starts its own attempt.

The result of this behaviour is that the headset, probably getting ready to connect A2DP itself, now gets confused by this incoming PC connection, its firmware apparently not strong or flexible enough to handle this A2DP crossover scenario, manifesting as follows:

That AVDTP channel (for A2DP signalling) does get established, but then strange behaviour is seen while setting up the media-channel -- the headset takes 3s to respond to the AVDTP_DISCOVER command. These 3s end up being costly because...

* The PC creates a SCO connection to the headset around this time -- I believe this is because the PC must route my current audio stream somewhere, and since A2DP media isn't setup yet after all this time, it (PulseAudio?) will settle for HFP/SCO.

(Even this SCO connection takes 5s to complete, headset still not out of the woods.)