nrf52 observer scanning intervals erratic in nrf connect 2.7 when connected as peripheral

I have a device that acts as a peripheral with a connecting interval of 100-150mS and  also as an observer listening for beacons.  When I get a beacon I update the scan interval from an interval of 100mS with a window of 20mS to an interval of 500mS with a window of 250mS.  Up until 2.7 this worked correctly and I had no issue sending indicate events during this window. 

In a effort to keep on the latest code base we have updated to 2.7 and this no longer works and it hangs on indicate events seemingly locking up the devices Bluetooth as I do not get an indicate failed for 30s.  Even if I am only connected without indicates enabled i see the same erratic scanning and do not get anywhere near either interval and the scan seems to be random.  When I disconnect i see the expected scanning.

Please let me know if something has changed in 2.7 as this is a show stopper.  Any help would be appreciated.

Observer low and high speed scan
static struct bt_le_scan_param scan_param_slow = {
    .type     = BT_LE_SCAN_TYPE_ACTIVE,
    .interval = 160,        //n*.625 = 100ms  
    .window   = 32,         //n*.625 = 20ms
    .options  = BT_LE_SCAN_OPT_CODED | BT_LE_SCAN_OPT_NO_1M
};

static struct bt_le_scan_param scan_param_fast = {
    .type     = BT_LE_SCAN_TYPE_ACTIVE,
    .interval = 800,            //n*.625 = 500ms  
    .window   = 400,            //n*.625 = 250ms
    .options  = BT_LE_SCAN_OPT_CODED | BT_LE_SCAN_OPT_NO_1M
};
 
peripheral interval
#define BT_LE_CONN_PARAM_HFR BT_LE_CONN_PARAM(  \
                          80, \    
                          120, \
                          0, 600)

2.6.2

2.7 peripheral connected

2.7 peripheral not connected

Parents
  • Hi Edward, 
    Indication should have a confirm in 30 seconds. This could be the reason why you saw a lock up in 30 seconds. 
    If it's the case, then the issue can be with the peer device, not the one who sends the indication. 

    Could you try to capture a sniffer trace when you test with indication ? The trace would provide the information about what cause the issue. 
    Please also capture a trace when you do notification, we can check if it's hitting the max bandwidth. This can explain error -12 when doing notification.  

Reply
  • Hi Edward, 
    Indication should have a confirm in 30 seconds. This could be the reason why you saw a lock up in 30 seconds. 
    If it's the case, then the issue can be with the peer device, not the one who sends the indication. 

    Could you try to capture a sniffer trace when you test with indication ? The trace would provide the information about what cause the issue. 
    Please also capture a trace when you do notification, we can check if it's hitting the max bandwidth. This can explain error -12 when doing notification.  

Children
No Data
Related