This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2640R2F: Connection interval changes without request

Part Number: CC2640R2F

Hello,

We see, using Ellisys, in some cases the connection interval updates without request from neither master nor slave, and no request to do so in our code.

1. BLE4 stack 5.10.0.02 simple_peripheral (as slave). After the connection interval has changed without request, master is able to change it back with a standard request.

2. We also see this with multi_role as master, it recovers to the normal interval on its own after a few seconds to a few minutes. 

Is there a known issue in those regards? Is there something we do / should not do that can cause this situation?

Best regards,

Jerome 

  • Hi Jerome,

    I don't believe this is expected behavior. Can you share annotated/commented Ellisys lags that marks where the issue is seen? Also can you try the latest SDK version for the CC2640R2 which is the 5.30 SDK?

    Best Regards,

    Jan

  • Thank you Jan for the help. 

    On our product #2, with multi_role as master, we compared BLE stack 1.40.0.45 vs 5.30, I am not including the data here as to not confuse, but essentially 5.30 performed worst than 1.40 in those regards.

    The following is for #1 simple_peripheral (as slave).

    - The capture here shows a BLE5 Coded PHY connection, but we have seen the same misbehaviour with BLE4 legacy.
    - Issue is the highlighted packet where it switches to 40ms interval, can also be seen in the Timing view. (14:29:07.824 965 900) 
    - Magenta packets are identical, as far as we understand those are "repeated" by the BLE stack and the changes in the data is not sent during that time. the repeated data always starts with an unexpected switch to 40ms interval. 



    here we see an ATT Read was successful and the data is correct, so it's not "entirely stuck". 



    in the end it just stops the repeated duplicates and continues sending the correct data



    We may provide the btt file through private channel if needed.

    Best regards,
    Jerome


  • Hi Jerome,

    Can you clarify what you mean by saying that 5.30 performed worst? Do you mean that it took even longer for the connection to recover to its original connection interval in 5.30 than in your SDK?

    Best Regards,

    Jan

  • Hi Jan,

    The following will only concern product #2, multirole as master:
    As we can see on the captures here bellow, there is a param update request for 450ms, but the master unexpectedly goes on to use 1.35sec. This was stack 1.40.
    With stack 5.30 (no screenshot), we also get that wrong interval, but worst as it increased to 2.3 sec! Our slave is able to hold the connection at 1.35sec but at 2.3sec that was too difficult, thus we could never upgrade our SDK version and we are forced to keep using stack 1.40 on that product.


    Regards,
    Jerome 

  • Hi Jerome,

    Thank you for the clarification. This is indeed unexpected. Could you provide the ellisys files themselves? If you would prefer to send them via private message, then you can do so through the E2E inbox. I have sent you a friend request to facilitate this. I would like to fully rule out any custom application code that may be causing this. Are you able to observe this behavior in an unmodified example?

    Best Regards,

    Jan

  • Hi Jan,

    Product #1

    It seems we now fully understand what happened. 
    The 40ms interval did come from a legitimate request from master, but the request happened 32sec before the change. This was so far back that we missed it in the Ellisys captures. It seems, it is because the connection interval was 2000ms and the "instant" was due in 16 intervals" making that an whooping 32sec delay. We have now removed that request.

    For future reference, is there any API to change the "Instant" to be sooner?  


    The duplicated wrong data was due to a quirk in our logic, where it skipped updating the data when the connection interval was too short.

    Product #2 - We will do a deeper analyse based on the findings. 

    Regards,
    Jerome