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

Ble rare disconnection on softdevice with active timeslot session.

Hi, During testing I noticed rare BLE connection loses with Softdevice S110 when timeslot session is active. It is hard to catch them with sniffer due to rare behaviour. So the question is about ever known reasons of connection loses while timeslot session is enabled. Note: No reboot/hardfault occured because I use watchdog for 30s and seen logs on central side, it restores connection emmediately.
Thanks.

UPDATE: SD_LINK_STABILITY.pcapng

  • It seems strange that the connection is lost without any warnings, reboots, or hard faults at all.

    1. What S110 version are you using?
    2. Are you getting the BLE_GAP_EVT_DISCONNECTED event with any disconnect reason?
    3. Do you get any useful information from the logger?
    4. Are you staying in connection for a long time or connecting and disconnecting rapidly.
  • Hi,

    1. 8.0.0

    2. I receive BLE_GAP_EVT_DISCONNECTED but do not know the reason yet. Just after I start advertising and central connect it back.

    3. No, what logger are you talking about?

    4. Long time connection without any "load" on central or peripheral device.

  • I misread your question and assumed that by "logs on the central side" you were able to read out some debug messages from your peripheral device.

    1. What SDK are you using?
    2. On a BLE_GAP_EVT_DISCONNECTED event you can read out the reason with p_ble_evt->evt.gap_evt.params.disconnected.reason.
    3. I use watchdog for 30s and seen logs on central side, it restores connection immediately Is this really a guarantee that you are not experiencing reboots or hard faults?
    4. Can you estimate how frequently this occurs?
  • I use distinct sound notification on device at connection, disconnection and firmware start. So thats why I can exclude hardfault or reboot.I do not use sdk, but only "sd_ble_" level API. I do not caught reason yet because I can get it on peripheral side only, and device is not connected to debug interface. I think of passing this data to central over ble after reconnection. It occurs 2-3 times a day, sometimes at night.

  • Hi, Disconnects does not have to be a symptom of a bug in code. It can just be that the link was lost due to noise in the environment. To rule this out it would be very interesting to know the disconnect reason. Maybe it is just BLE_HCI_CONNECTION_TIMEOUT? It is interesting to know the disconnect reason on both sides. What is you central side? A phone? It should report a disconnect reason too, and it would be helpful in order to understand what is going on.

    Second question: What connection parameters are you using? What is the connection interval? What is slave latency? And what is supervision timeout?

    Third question: How are you using the timetlot API? Do you ever use NRF_RADIO_PRIORITY_HIGH? or always NRF_RADIO_PRIORITY_NORMAL? What is the longest timeslot length in us you request? And do you use the feature to extend the timeslot once you are in it?

Related