BCM920736 stability issues

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

cross mob
Anonymous
Not applicable

Hi

We are using BCM920736 and have been experiencing some stability issues and I have few questions

1.

As long as we have 8 or less ble enabled devices (iphones) around the ble chip everything seems to work as it should.

However if we add more than 8 iphones and let it run for few hours (usually around 1-3 hours) the ble chip will stop connecting completely to the phones.

When that happens the ble chip is aware of all the phones in the vicinity and continues to get connection_up/connection_down events.

In the connecton_up callback we call

    blecm_SetPtrConMux(con_handle);

    bleprofile_sendReadByTypeReq(s_handle, e_handle,UUID_ATTRIBUTE_CHARACTERISTIC);

and then we wait for the reply using the callbacks

    leatt_regReadByTypeRspCb((LEATT_TRIPLE_PARAM_CB) ba_central_process_rsp);

    leatt_regReadByGroupTypeRspCb((LEATT_TRIPLE_PARAM_CB) ba_central_process_rsp);

    leatt_regFindInfoRspCb((LEATT_TRIPLE_PARAM_CB) ba_central_process_rsp);

However we never receive the reply and we don't know if it is because the phone never receives the message or the ble chip doesn't receive the reply.

Disabling the bluetooth devices does not help and neither does restarting the phones, only restarting the ble chip solves the issue.

The aim in our project is to use this in a populated area and we want to always be connected to the closest phones. For that reason we maintain a linked list connecting all discovered phones and then we regularly connect and disconnect phones based on RSSI values.

The issue seems to be related to number of phones (more than 😎 and time and for that reason it sounds to me a little like a memory leak, however we have not been able to check available memory after the initialization code has finished. Is that possible?

2.

There seem to be 3 different memory pools that we have access to

we are currently using

blecm_setmaxconnection(8);

cfa_mm_ConfigureMemoryPool(CFA_MM_POOL_1, 64, 6 + 8);

to enable 8 connections but apparently memory pool 0 and 1 can be configured similarly, is the effect of this explained or documented somewhere_

3.

Currently we don't scan and connect at the same time since we ran into troubles with that, now we scan for 1 sec and run connect / disconnect routines for 1 sec after that.

Can you scan and connect at the same time ?

Any suggestions appreciated

Thanks,

Unnar

0 Likes
5 Replies
MichaelF_56
Moderator
Moderator
Moderator
250 sign-ins 25 comments on blog 10 comments on blog

Adding jamesle1​ from the Bluetooth apps team.

0 Likes
JaeyoungY_71
Employee
Employee
First comment on KBA 25 solutions authored 10 solutions authored

1. You can check the dynamic allocated memory by using the function cfa_mm_MemFreeBytes(), which returns how much free memory is available. If you print this information out every after connections you should be able to investigate more.

The function is located in the file WICED-Smart-SDK\Wiced-Smart\cfa\cfa.h.

// Returns the number of free bytes of RAM left.

UINT32 cfa_mm_MemFreeBytes(void);

We are looking into 2 and 3 and will update you shortly. By the way, which version of the SDK are you using?

Thanks,

Jaeyoung

0 Likes
Anonymous
Not applicable

We have tried cfa_mm_MemFreeBytes. It works correctly in the initialization but after that it only returns a constant. It looks like it doesn't work after cfa_mm_Alloc has been called for the first time.

Most likely related to https://community.broadcom.com/message/10095#10095

We are using SDk 2.2.2

0 Likes
MichaelF_56
Moderator
Moderator
Moderator
250 sign-ins 25 comments on blog 10 comments on blog

Who told you that the device should support more than 8 connections?  I'm not sure this is even possible?

0 Likes
Anonymous
Not applicable

We are not trying to have more than 8 connections at a time, however this is supposed to be used in a crowded area and we need to be connected to the 8 devices that are closest to the ble chip. That's why we keep a list of the rssi value of all devices that are close and then regularly disconnect and connect devices based on the RSSI value

0 Likes