Zephyr BLE Mesh Publication sending took longer than the period

Dear Nordic-Team,

I’m developing multiple Bluetooth sensors for a "high" speed sensor network (maximum 12 sensors). To network topology requirements BLE Mesh fits best.

My "high" speed requirements for all sensors looks like, sending 32 Byte within 10ms, or sending 96 Byte within 30ms. 

I’m working with following setup:

- Thingy52 / Adafruit Feather nRF52840 / nRF52840 Dongle

- nRF Connect SDK v2.1.0 / Zephyr

- BLE Mesh Sensor Server/Client example (with modified descriptor for temperature sensor)

model_handler.c

...

static const struct bt_mesh_sensor_descriptor temp_desc = {

    .sampling_type = BT_MESH_SENSOR_SAMPLING_COUNT,

    .period = 300,

    .update_interval = 50,

};

 

static struct bt_mesh_sensor chip_temp = {

    .type = &bt_mesh_sensor_present_dev_op_temp,

    .get = chip_temp_get,

    .descriptor = &temp_desc,

};

...

Sending with BLE GATT notification (connection interval 7,5ms, PHY 2M) this works like a charm. 

Sending with BLE Mesh Sensor Server causes the following message:
[133]
D: Delta: -1.750000 (21.000000 - 20.750000) thrsh: 0.000000
W: Publication sending took longer than the period
D: #3 Period: 100 ms Divisor: 0 (fast)

The period is set to 100ms, but the actual period is about 133ms. Therefore, the warning is printed.

Are there any SW/HW limitations on the advertising channel in BLE Mesh?
How can I achieve my speed requirements? (BLE with GATT, BLE Mesh, or fallback to ESB)

Thank you for your advice.

 

Kindly regards,

Robert

2843.sensor_server.zip

Related