BLE mesh message advertising interval

Venkat Rao Vallapaneni <vallapaneni@...>


I am trying BLE mesh on-off app on nrf52840 USB dongle. I have provisioned two devices.
After provisioning, I have connected from my android device to node1 and sending messages to configuration server of node2. Node1, node2 and mobile are next to each other.
I am sending 25 configuration messages (binding app keys, setting pub and adding sub) for all generic onoff server/client models in node2.

Sometimes, I see that I don't get response (No response could be first message or any message in between or sometimes even I am successful in binding app keys to all models, but rarely).
When I debugged, I noticed that node2 receives configuration message (node1 relays the message received by the android device) and it also sends response with mesh message.

This mesh message is missed by node1. I am trying to understand more on why this mesh message advertising packet was missed by node1.

I noticed that in mesh/adv.c, I see that min interval and max interval are same. In the specifications, it is mentioned that: "The Advertising_Interval_Min shall be less than or equal to the Advertising_Interval_Max. The Advertising_Interval_Min and Advertising_Interval_Max should not be the same value to enable the Controller to determine the best advertising interval given other activities."

param.interval_min = ADV_SCAN_UNIT(adv_int);
param.interval_max = param.interval_min;

Why these two values are set same?

I have tried making interval_max as ADV_SCAN_UNIT(adv_int+5) but didn't help.

I have used default settings in mesh on-off sample app:

/* 3 transmissions with 20ms interval */
.net_transmit = BT_MESH_TRANSMIT(2, 20), 

I increased the transmissions to 6 (along with max interval greater than min interval) and it improved (3/5 times successful in sending 25 configuration messages back to back).

Any other recommended approaches to minimize mesh message advertising packet losses?


Join to automatically receive all group messages.