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
.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?