How to generate same ADV packet like that ?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
RuCh_2181101
Level 3
Level 3
5 likes given First like received First like given

Dear Support,

   Our customer complained that the phone cannot detect iBeacon of WICED , but we use ibeacon.a to generate the beacon.

   Our customer also post the BLE packet for us to reference. First packet is WICED solution. Second is TI solution and work fine.

   Could we generate same ADV packet like TI solution ?

Rush Chen

1.png

0 Likes
1 Solution
Anonymous
Not applicable

Hello. When you say the phone cannot detect the iBeacon, do you mean that the BLE device is not shown among the scanned devices or that the phone cannot connect to the device?

Looking at the diagram, you are using some kind of BLE sniffer and are seeing the advertisement packets from iBeacon. So iBeacon is advertising, which means your phone should be able to pick it up. If you are using an app like LightBlue, the name of the device might be something else, because it remembers the name of the device detected before for the same BD address. Or if your phone has already paired with a BLE device with the same BD address before, it filters out the device when scanning. So don't forget to "forget" any BLE devices that used the same BD address as iBeacon.

If you want to connect to iBeacon, you'll have to change Adv PDU type, which I'm assuming is what you want to do, because that's the only difference in the little red box in the diagram.

Unfortunately, if you are using ibeacon.a, I don't think you can change the Adv PDU Type.

However, there are some workarounds.

Method 1. ibeacon_managed

In our SDK, there's an app called ibeacon_managed.

It changes the advertisements to connectable when the button is pressed. This happens in the interrupt_handler for the button by using bleprofile_Discoverable(HIGH_UNDIRECTED_DISCOVERABLE, NULL);

Method 2. mybeacon

There's another app called mybeacon. It acts like iBeacon but without the use of ibeacon.a library. So you have more free as to what you do with your advertisement packet. You can set both advertisement parameters and the packet itself.

bleprofile_startAdv is used to set the advertisement parameters. The first argument to this function is what changes the advertisement type.

0x00 : ADV_IND

0x02 : ADV_DISCOVER_IND

0x03 : ADV_NONCONN_IND

Please let us know if this was helpful or not.

Thank you.

James

View solution in original post

2 Replies
Anonymous
Not applicable

Hello. When you say the phone cannot detect the iBeacon, do you mean that the BLE device is not shown among the scanned devices or that the phone cannot connect to the device?

Looking at the diagram, you are using some kind of BLE sniffer and are seeing the advertisement packets from iBeacon. So iBeacon is advertising, which means your phone should be able to pick it up. If you are using an app like LightBlue, the name of the device might be something else, because it remembers the name of the device detected before for the same BD address. Or if your phone has already paired with a BLE device with the same BD address before, it filters out the device when scanning. So don't forget to "forget" any BLE devices that used the same BD address as iBeacon.

If you want to connect to iBeacon, you'll have to change Adv PDU type, which I'm assuming is what you want to do, because that's the only difference in the little red box in the diagram.

Unfortunately, if you are using ibeacon.a, I don't think you can change the Adv PDU Type.

However, there are some workarounds.

Method 1. ibeacon_managed

In our SDK, there's an app called ibeacon_managed.

It changes the advertisements to connectable when the button is pressed. This happens in the interrupt_handler for the button by using bleprofile_Discoverable(HIGH_UNDIRECTED_DISCOVERABLE, NULL);

Method 2. mybeacon

There's another app called mybeacon. It acts like iBeacon but without the use of ibeacon.a library. So you have more free as to what you do with your advertisement packet. You can set both advertisement parameters and the packet itself.

bleprofile_startAdv is used to set the advertisement parameters. The first argument to this function is what changes the advertisement type.

0x00 : ADV_IND

0x02 : ADV_DISCOVER_IND

0x03 : ADV_NONCONN_IND

Please let us know if this was helpful or not.

Thank you.

James

Very thanks and very very excellent reply.

0 Likes