Reduce time to start channel sounding

We have an application where response time is critical, and we are trying to minimize the time from advertising to an active channel sounding session.

What we have already optimized:

  • Connection interval set to 7.5 ms
  • Advertising interval reduced to 100 ms (can't go lower to remain within power constraints)
  • Skip GATT discovery by hard-coding the GATT handles
  • Bonding enabled to reduce secure connection setup time

This brings us down to around ~450 ms.

Now we are looking at what else we can do, and hope you can clarify what's possible.

  • CS config/capabilities exchange takes ~100 ms.
    • Our understanding is that per BLE specification, this can be avoided by pre-storing a known configuration on both sides.
    • Does Noridc stack support or plan to support this?
  • MTU exchange takes ~37 ms.
    • Default MTU size is 23 and we must increase it for faster data exchange between reflector and initiator.
    • Is there any way to hard-code the MTU size beforehand?
  • CS security (bt_le_cs_security_enable) takes ~30 ms
    • Is there anything we can do to reduce this? E.g. piggy-backing on the existing secure connection, skipping DRBG?
  • Hi

    Okay, so we would need to know what the controller is doing at this time. Can you capture a sniffer trace of the process so we can see what's going on over the air here? Please set CONFIG_BT_USE_DEBUG_KEYS=y on both sides to get into the application correctly.

    We also had a jab at reducing the time from the connected_cb to the CS procedure_enable_cb in the initiator/reflector samples with a sequence of quick improvements. We were able to get down from 977ms to 219ms, and managed to use the cached remote capabilities here. Maybe the PR here might serve as inspiration for you: https://github.com/nrfconnect/sdk-nrf/pull/28197/commits 

    Best regards,

    Simon

Related