Current Time Service Discovery Failing in First Connection After Reset

I have a device that runs NCS 2.0.2 on an nrf5340 and have an occasional issue with service discovery.

I have recently found that after calling sys_reboot() on my device, during the first BLE connection after the reboot my device will fail to discover the current time service on the Central device. Subsequent connections have no issue with discovering the service.

My initial call to bt_gatt_dm_start() ends in the "service_not_found" callback being called after a 30 second timeout. If I then re-attempt discovery, bt_gatt_dm_start() returns -12 (ENOMEM).

This appears to be linked to the configuration "CONFIG_BT_L2CAP_TX_BUF_COUNT". I tried doubling the number of buffers in my prj.conf, and still encounter this issue.

Parents
  • Hi,

    I have recently found that after calling sys_reboot() on my device, during the first BLE connection after the reboot my device will fail to discover the current time service on the Central device. Subsequent connections have no issue with discovering the service.

    How long is it between the reboot and the connection?
    What happens if you delay the connection 10 seconds?

    If I then re-attempt discovery, bt_gatt_dm_start() returns -12 (ENOMEM).

    Are you able to debug the problem and find exactly the line showing "return ENOMEM"?

    This appears to be linked to the configuration "CONFIG_BT_L2CAP_TX_BUF_COUNT".

    How do these appear to be linked?

    Regards,
    Sigurd Hellesvik

Reply
  • Hi,

    I have recently found that after calling sys_reboot() on my device, during the first BLE connection after the reboot my device will fail to discover the current time service on the Central device. Subsequent connections have no issue with discovering the service.

    How long is it between the reboot and the connection?
    What happens if you delay the connection 10 seconds?

    If I then re-attempt discovery, bt_gatt_dm_start() returns -12 (ENOMEM).

    Are you able to debug the problem and find exactly the line showing "return ENOMEM"?

    This appears to be linked to the configuration "CONFIG_BT_L2CAP_TX_BUF_COUNT".

    How do these appear to be linked?

    Regards,
    Sigurd Hellesvik

Children
Related