This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Long time to disconnect

Hi, 

Our NRF52840 (running 14.2) often takes a very long time to disconnect, from when a disconnection is initiated by the phone. It can take 30s, sometimes even more, for the disconnect to happen. Sometimes the disconnect happens immediately like it should, but I would say that it is more common for the disconnect to take a long time than for the disconnect to be normal. 

I installed the NRF Sniffer and have done a capture, but I am not really sure what to make of the result. 

The below was a bad disconnect. Here, the highlighted line was about when the disconnect was initiated on the phone (image 1). Then I got "Empty PDU" for a long time. The empty PDU continues for a long time, with only one "encrypted packet decrypted incorrectly" in between, then in the second image, the highlighted line shows when the disconnect actually happens. There is ~13 sec in between the initiation and the actual disconnect.

By contrast, this was one of the times that I got a normal disconnection. 

The above was done with our custom app. The issue also happens when using the NRF Connect App for iOS. For reference, below is the capture when the disconnect was initiated by the NRF app:

I pressed the disconnect button around the time of this highlighted line: 

There is no command of any kind here though; the closest command is this one (but I don't know if they're even related, this is just the first command I found when scrolling up):

The disconnect comes what looks like 23 seconds later: 

My questions:

(MAIN QUESTION) How can I find out why it is taking a long time to disconnect? Note that it happens with different phones, but we have only been able to test with iPhones so far.

AUXILLIARY QUESTIONS: 

1. What are control opcodes and why do they only show up in the test using the NRF app, but not our custom app? Should we do something to enable these opcodes? 

2. What is empty PDU? 

3. What is "bad MIC"?

4. Where do I learn about how to interpret the captured packets? I read this but it doesn't really explain what I should be looking for.

Thanks!

Parents
  • I see... normally, when the long disconnect happens, it is with disconnect reason 0x13, which I think is normal: remote user terminated connection. 

    are you saying that disconnect reason 0x08 “connection timeout” is when the central stops responding? Not the peripheral? 

    i didn’t think this would matter, but I made some small changes to the SDK, I added the files suggested by Peter here: https://devzone.nordicsemi.com/f/nordic-q-a/29926/bug-in-peer-manager-in-sdk-14-2

    also In ‘app_bds_util.h’, comment out:

    typedef struct

    {

        uint16_t year;   

        uint8_t  month;

        uint8_t  day;

        uint8_t  hours;

        uint8_t  minutes;

        uint8_t  seconds;

    } ble_date_time_t;

    Then #include ble_date_time.h in app_bds_util.h

    Although, the NRF example code I ran disconnects perfectly with no issue, so I don’t think it’s the SDK...

    Are you using SDK 14.2? Out of curiosity what were the build errors and how did you resolve them?

Reply
  • I see... normally, when the long disconnect happens, it is with disconnect reason 0x13, which I think is normal: remote user terminated connection. 

    are you saying that disconnect reason 0x08 “connection timeout” is when the central stops responding? Not the peripheral? 

    i didn’t think this would matter, but I made some small changes to the SDK, I added the files suggested by Peter here: https://devzone.nordicsemi.com/f/nordic-q-a/29926/bug-in-peer-manager-in-sdk-14-2

    also In ‘app_bds_util.h’, comment out:

    typedef struct

    {

        uint16_t year;   

        uint8_t  month;

        uint8_t  day;

        uint8_t  hours;

        uint8_t  minutes;

        uint8_t  seconds;

    } ble_date_time_t;

    Then #include ble_date_time.h in app_bds_util.h

    Although, the NRF example code I ran disconnects perfectly with no issue, so I don’t think it’s the SDK...

    Are you using SDK 14.2? Out of curiosity what were the build errors and how did you resolve them?

Children
No Data
Related