cancel
Showing results for 
Search instead for 
Did you mean: 

Measuring the reliability of mesh network

MH1
Associate II

I want to measure the reliability of bluetooth mesh network. I am using two STEVAL-IDB008V2 boards , one STEVAL-IDB007V1 board and an android smartphone to construct a bluetooth mesh network and using the lighting demo project of STSW-BNRG-Mesh v 1.05 as firmware for mesh nodes.

To measure reliability, I want to send 3000 or 4000 (rough idea) packets from one mesh node and receive them on other node and print the received packet count on serial terminal. For this purpose, on Tx node, I inserted Vendor_Publish() function inside while(1) loop in main.c file (see attachment "main.jpg") and changed the arguments of BlunrgMesh_SetRemoteData() to APPLI_TEST_CMD and stored 0x04 (value for APPLI_TEST_COUNTER) in the fist byte of AppliBuffer[] in vendor.c file. On Rx node, I incremented the counter inside case: APPLI_TEST_COUNTER in appli_vendor.c file.

When I transmitted 100 packets on broadcast address from tx node, I observed that serial terminal connected to Rx node showed only 22 packets as received. However, the serial terminal connected to tx node showed all 100 packets as received.

Can you please let me know how to do this because receiving 22 packets out of 100 packets shows a high packet loss. Please reply soon as the deadline of my project is in 2 days.

7 REPLIES 7
MH1
Associate II

@STM Community​ @alok​ ..Kindly reply asap please as the deadline of my project is in 2 days.

alok
Senior

Hello MH,

In our testing we see 100% or minimum 99% messages being received between one node to other.

Kindly let me know if you inserted some delay between 2 transmissions. If not, kindly add few seconds. (5sec or 2sec) between two transmissions. Let us know if you see an improvement.

In addition, please use a destination address instead of broadcast address

BTW, Any specific reason to use few months old version ? Kindly try the same on SDK V1.06 available on web

MH1
Associate II

Hello @alok​ ,

Thank you for your reply. When I inserted a delay between two transmissions inside while(1) loop in main.c file, I was unable to provision the device. Nevertheless, I will test it by again and let you know. Can you tell me the if the approach I used for this testing is correct ? By approach I mean the use of Vendor_Publish() inside while(1) loop in main.c file for back to back transmissions on Tx side and checking the counter increment value inside ReadRemoteData callback on Rx side.

Can you also tell me how can I find out destination address of receiving mesh node so that I can provide this address as an input to BluenrgMesh_SetRemoteData() in Vendor_Publish() function on Tx side ?

I used v1.05 for testing because I have already been working with this version before the release of new version.

alok
Senior

The approach looks ok. Just take care not to insert delay by putting a while() or for() loop. Instead please use the timer for it

NDev.1
Associate III

@MH​ : Hi. Were you able to solve the problem ?

I am having a similar problem.

I am using v1.12.0 of the stm32wb55rg sdk. I am using 2 stm32wb55rg nucleo boards.

I am sending a 10 bytes string from vendor client node to vendor server node in a BLE mesh. The server node is able to get the message.

But after above 55 or so messages sent from the client node (putting 2 sec delay between msgs, of course), the server node is not able to receive the messages until I restart the client node.

I am using a char buffer and its length instead of "AppliBuffer, sizeof(AppliBuffer)" in BLEMesh_SetRemotePublication() while using vendor_publish.

@Community member​ : Hi. Could you help me here ?

@Any ST employee could look into it, please ?

@Remi QUINTIN​ : Hi, there ! Could you please look into this ?

Any help is appreciated, Thanks.

No

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

ok @Community member​ 

Update : I observed that in BLE mesh of vendor model, if the payload is less than or equal to 8 bytes, 1 vendor node can send data to other node seamlessly (tested with 150 messages), but if the data is greater than 8 bytes, then after some messages, the messages are not received on the other node.

Does anyone know how to change the data buffer size ? right now, VENDOR_DATA_BUFFER_SIZE is 60 and DATA_BUFFER_LENGTH is 16 in vendor.h. Even if I increase them, there is no change in the result, the messages still stop.