BLE central scanning fails to reliably discover/connect to peripherals when scan-window idle gap drops to ~1.875 ms on nRF54L15 — works at 2.5 ms gap

SDK/Toolchain:

  • nRF Connect SDK version: [ v3.3.0 ]
  • Board: Custom board based on nRF54L15 (cpuapp core)
  • Role: Central (continuous passive scanning + initiating connections to discovered peripherals), also acts as Peripheral (multirole)

Summary:

We run continuous passive scanning with scan_interval = 36 (22.5 ms) while also initiating new connections to discovered peripherals. We tested several scan-window values on this interval:

scan.window (ticks, 0.625 ms units) window (ms) idle gap (ms) Result
32 20.000 2.500 Works normally
33 20.625 1.875 Discovery becomes extremely slow; connection attempts to new peripherals consistently time out

We independently arrived at window=33 via four different percentage inputs (92%, 93%, 94%, 95% of the 22.5 ms interval) — all four round to the identical 33-tick window through our percentage→ms→tick conversion, and all four reproduce the identical failure, confirming the behavior is tied to the absolute tick values, not the percentage.

Reproduction:

static struct bt_le_scan_param scan_param = {
    .type     = BT_LE_SCAN_TYPE_PASSIVE,
    .interval = 36,   /* 22.5 ms */
    .window   = 33,   /* 20.625 ms -- fails */
    /* .window = 32 -- 20.000 ms -- works */
    .timeout  = 0,
};
bt_le_scan_start(&scan_param, NULL);
/* concurrently, on discovering a target peripheral: */
bt_conn_le_create(peer_addr, &create_param, &conn_param, &conn);


Observed logs:

[00:03:31.362,559] <wrn> bt_hci_core: Connection creation timeout triggered
[00:04:19.219,706] <err> bt_att: ATT channel not connected
[00:07:29.333,660] <err> bt_att: ATT Timeout for device EA:82:E1:83:8D:B3 (random). Disconnecting...
[00:07:46.095,420] <err> bt_att: ATT channel not connected
[00:07:46.095,604] <err> bt_att: ATT channel not connected

This same scan/connect logic does not show the problem on our nRF52840-based boards  even at tighter ratios.

Question:

  1. What could cause scanning and connection-initiation to become unreliable when the idle time between scan windows drops from 2.5 ms to 1.875 ms on nRF54L15? Is there a scheduling constraint in the controller that this might be hitting?
  2. Is there a recommended minimum idle time (or minimum gap between scan window and scan interval) for reliable scanning and connection initiation on nRF54L15?
  3. Would the same idle-time constraint apply to nRF52/nRF53 devices  or is this specific to nRF54L15?

 

Parents Reply Children
No Data
Related