nRF52840 valid connection interval options

Hello everyone,

I am working with the latest Zephyr NCS 2.0.2 SDK to develop a BLE App with a nRF52840 Soc.

The device is going to produce a very low data rate, so I want to extend the battery life to the maximum possible value.

To do this, I wanted to adjust the following Zephyr CONFIG params:

CONFIG_BT_PERIPHERAL_PREF_MIN_INT  --> Minimum connection interval (default value is 24)
CONFIG_BT_PERIPHERAL_PREF_MAX_INT --> Maximum connection interval (default value is 40)

CONFIG_BT_PERIPHERAL_PREF_TIMEOUT --> Supervision timeout (default value is 42)

I tried various settings, such as 1, 1.5, 2, 2.5 seconds connection interval and supervision timeouts greater than 2 times that values according to specifications, respectively.

However, all of those values produce disconnect events (0x13 error code) after a successful BLE connection without that event being generated by the user.

I came to the conclusion that the softdevice used (S112 in my case) cannot support these high timer values.

I would like to know if there is any guide or similar document with experimentally tested connection intervals and supervision timeouts that work well.

Thanks in advance

  • Hi there,

    This indicates that you're working with NCS:

    I am working with the latest Zephyr NCS 2.0.2 SDK to develop a BLE App with a nRF52840 Soc.

    But this indicates that you're working with the nRF5 SDK? 

    I came to the conclusion that the softdevice used (S112 in my case) cannot support these high timer values.

    Are you using NCS on one side and nRF5 SDK on the other side of the connection?

    regards

    Jared 

  • Hello Jared,

    No. I always use NCS. However, if I view the linker map file after compiling the Zephyr project I can see that the symbols referring to Softdevice use S112. But the Softdevice library comes from nrfxlib library.

    Regards

  • Hi,

    What are you using on the central side? Are you using a specific example for the central?

    regards

    Jared 

  • Hello again,

    No. It is a custom service based on the peripheral_ht example.

    I am also using a custom Android App based on the Nordic Android-nRF-Blinky example.

    I think this issue regarding timeout intervals can be reproduced with any example.

    Regards

  • Hi,

    jasr93 said:
    No. It is a custom service based on the peripheral_ht example.

    ok, but this applies for the peripheral though?

    jasr93 said:
    I am also using a custom Android App based on the Nordic Android-nRF-Blinky example.

    Have you tried the nRF Connect Android app and see if it disconnects? Where is the error printed, is it on your phone or directly from the nRF? Error 0x13 indicates that it's the peer that does the disconnection. The central doesn't usually disconnect because of the connection parameters suggested by the peripheral, since it's the central itself that decides the connection parameters.

    I modified the peripheral uart example to set connection parameters to 1250 ms and it worked without any disconnections:

    regards
    Jared 

Related