2015-10-06 07:04:18

by Andrejs Hanins

[permalink] [raw]
Subject: LE ADV data is lost after first connection

Hi,

I'm on Bluez 5.35 + Kernel 4.1.6 using D-Bus LE Adv Manager to register my own advertisement structure (with service UUID). Everything works fine, I see my UUID is present in scan record (using Android Bluetooth LE Scanner or iOS Light Blue App). But scan record becomes empty (all zeros) after I connect/disconnect to the peripheral.

This issue, however, only present on Atheros AR3012 Bluetooth chip (USB vendor:product is 0cf3:3004) and not present neither on Broadcom BCM20705 nor on CSR. Based on btmon traces I see that after peripheral is disconnected, LE adv is enabled again using HCI "LE Set Advertising Parameters" and "LE Set Advertise Enable" commands which obviously do not set the adv data again.

My assumption is that BT chip is expected to keep LE adv data between re-connections, but Atheros AR3012 (at least the revisions we use) has a bug which erases Adv data after the connection is made.

Can someone confirm that my assumption is correct and workaround/quirk is needed for AR3012 or maybe there is something else may be wrong here?


BR, Andrey


2015-10-06 10:02:20

by Andrejs Hanins

[permalink] [raw]
Subject: Re: LE ADV data is lost after first connection

Hi,

On 10/06/2015 12:35 PM, Luiz Augusto von Dentz wrote:
> Hi Andrejs,
>
> On Tue, Oct 6, 2015 at 10:04 AM, Andrejs Hanins <[email protected]> wrote:
>> Hi,
>>
>> I'm on Bluez 5.35 + Kernel 4.1.6 using D-Bus LE Adv Manager to register my own advertisement structure (with service UUID). Everything works fine, I see my UUID is present in scan record (using Android Bluetooth LE Scanner or iOS Light Blue App). But scan record becomes empty (all zeros) after I connect/disconnect to the peripheral.
>>
>> This issue, however, only present on Atheros AR3012 Bluetooth chip (USB vendor:product is 0cf3:3004) and not present neither on Broadcom BCM20705 nor on CSR. Based on btmon traces I see that after peripheral is disconnected, LE adv is enabled again using HCI "LE Set Advertising Parameters" and "LE Set Advertise Enable" commands which obviously do not set the adv data again.
>>
>> My assumption is that BT chip is expected to keep LE adv data between re-connections, but Atheros AR3012 (at least the revisions we use) has a bug which erases Adv data after the connection is made.
>>
>> Can someone confirm that my assumption is correct and workaround/quirk is needed for AR3012 or maybe there is something else may be wrong here?
>>
>
> I guess it would be good if you attach the HCI logs, from the
> description it looks like the Atheros chip is misbehaving since LE Set
> Advertising Data Command is suppose to stay valid unless the
> controller is reset.
Attached. Frame 132 sets adv data followed by incoming connection.
>
>


Attachments:
AR3012.cap (7.35 kB)

2015-10-06 09:35:17

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: LE ADV data is lost after first connection

Hi Andrejs,

On Tue, Oct 6, 2015 at 10:04 AM, Andrejs Hanins <[email protected]> wrote:
> Hi,
>
> I'm on Bluez 5.35 + Kernel 4.1.6 using D-Bus LE Adv Manager to register my own advertisement structure (with service UUID). Everything works fine, I see my UUID is present in scan record (using Android Bluetooth LE Scanner or iOS Light Blue App). But scan record becomes empty (all zeros) after I connect/disconnect to the peripheral.
>
> This issue, however, only present on Atheros AR3012 Bluetooth chip (USB vendor:product is 0cf3:3004) and not present neither on Broadcom BCM20705 nor on CSR. Based on btmon traces I see that after peripheral is disconnected, LE adv is enabled again using HCI "LE Set Advertising Parameters" and "LE Set Advertise Enable" commands which obviously do not set the adv data again.
>
> My assumption is that BT chip is expected to keep LE adv data between re-connections, but Atheros AR3012 (at least the revisions we use) has a bug which erases Adv data after the connection is made.
>
> Can someone confirm that my assumption is correct and workaround/quirk is needed for AR3012 or maybe there is something else may be wrong here?
>

I guess it would be good if you attach the HCI logs, from the
description it looks like the Atheros chip is misbehaving since LE Set
Advertising Data Command is suppose to stay valid unless the
controller is reset.


--
Luiz Augusto von Dentz