L2CAP Connection Parameter update request by peripheral

Hello,

I am using nrf52832 as a peripheral and running SD S112, nordic UART Profile and SDK 17.1.0 on it.

I have set the min connection interval to 10ms and max connection interval to 500ms.

When connecting to android initially android is setting interval to 7.5ms during discovery and then switches to 15ms.

However, after few transactions I see that the peripheral is requesting for the connection parameter update.

In my code I am not requesting for the update explicity.

What is the reason for this parameter update request by peripheral?

Parents
  • Hello,

    The default behavior of the BLE UART peripheral example in the nRF5 SDK is to send a connection parameter update request 5 seconds into the connection, as configured by the FIRST_CONN_PARAMS_UPDATE_DELAY define. You can disable this request, which is configured in conn_params_init, if you would like to, or ignore it on the central side.

    The peripheral may only ever request an update of the parameters, but the central can for any reason reject this request and continue to use whichever parameters it would like. 

    Best regards,
    Karl

Reply
  • Hello,

    The default behavior of the BLE UART peripheral example in the nRF5 SDK is to send a connection parameter update request 5 seconds into the connection, as configured by the FIRST_CONN_PARAMS_UPDATE_DELAY define. You can disable this request, which is configured in conn_params_init, if you would like to, or ignore it on the central side.

    The peripheral may only ever request an update of the parameters, but the central can for any reason reject this request and continue to use whichever parameters it would like. 

    Best regards,
    Karl

Children
  • You can disable this request, which is configured in conn_params_init, if you would like to, or ignore it on the central side.

    How can I disable the request? 

    On the central side which is an android app we don't have easy way to ignore the request.

  • If you remove it from the conn_params_init it will default to not being sent.

    Give this a try and do not hesitate to let me know if you encounter any issues or questions! :)

    Best regards,
    Karl

  • Hi Karl,

    Removing it is not solving the issue. The parameter update request is still being sent within a second after connection. Looks like removing it initializes the parameter with value zero.

    Can you please check in the soft device code what triggers the parameter update request call ?

    This happens only with the android and not seeing the parameter update request on windows BLE. 

    Thanks,

    Justin

  • Hello Karl,

    Any update on this out be great :)

    Thanks

  • Hello again, Justin

    Thank you for your patience with this - I was out of office last week, but now I am back.

    Justin said:
    Can you please check in the soft device code what triggers the parameter update request call ?

    The peripheral's parameter update request is configured using the following:

        cp_init.first_conn_params_update_delay = FIRST_CONN_PARAMS_UPDATE_DELAY;
        cp_init.next_conn_params_update_delay  = NEXT_CONN_PARAMS_UPDATE_DELAY;
        cp_init.max_conn_params_update_count   = MAX_CONN_PARAMS_UPDATE_COUNT;


    Did you remove all of these when you tested this last?

    An alternative way to stop these updates is just to increase the preferences of the peripheral to span the whole possible range (7.5 ms to 4 s) so that whatever connection parameters the central chooses will be within the peripheral preferences.

    Justin said:
    This happens only with the android and not seeing the parameter update request on windows BLE. 

    Do you have sniffer traces of this? The peripheral does not know if it is connected to an android or a windows PC, so I would assume that this means that the connection to Windows already is using parameters within the preferred range of the peripheral.

    Best regards,
    Karl

Related