Lowest latency on 1M for multiple devices?

Hello!


I am trying to get stable stream of updates from multiple sensors over BLE.

I'm set up the connection array via  bt_le_filter_accept_list_add() for devices and then run bt_conn_le_create_auto() with various params after each connection is established.

The latest settings I use:

static const struct bt_conn_le_create_param btConnCreateParam = {
.options = BT_CONN_LE_OPT_NONE,
.interval = BT_GAP_SCAN_FAST_INTERVAL,
.timeout = 0,
.window = 5,
};
static const struct bt_le_conn_param btConnParam = BT_LE_CONN_PARAM_INIT(15, 15, 0, 2000);
// BT_LE_CONN_PARAM_INIT(7, 8, 0, 2000);

With intervals 7, I can get up to 100Hz responses from single device, or 100Hz+50Hz from two, or 100Hz+25Hz+25Hz if I get 3 connected.

The original CENTRAL device seems to get ~3*80Hz (according to wireshark).

No matter what I do, I've either get disbalance between them (80/40/20, 100/25/25, 100/50/0 etc) or low freq (50/50/50 is the best I can get so far).

Original device establishes connection with window=2, but nRF52840 seems only can get window=5 as minimum.

I've also tried to enable LL_SW_SPLIT, but then I've receive:

   [00:00:04.791,900] <wrn> bt_hci_core: opcode 0x200d status 0x0b
   [00:00:04.792,449] <err> bt_conn: Failed to start filtered scan

after the first connection established.

Is 3 * 50Hz is the best I can get out of three ~BLE4.1 devices connected ?

Related