This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

How do I calculate throughput for a BLE Mesh?

Good day!

How can I calculate the maximum throughput for BLE Mesh running on the nRF52832 and the S132 without packet loss in ideal conditions?

I have tested throughput in BLE Mesh SDK v0.9.1 between two nodes and I was disappointed in very bad results.

Regards

Parents Reply
  • Hi,

    I have implemented a function for sending a message over mesh to a server node in the network, and now want to measure the throughput. I am having a hard time telling what size of the data that are sent. Let's say that I send a message by using access_model_publish method with data that is 8 bytes big(e.g."HiServer"), should I calculate the throughput based on 8 byte or the whole packet? E.g. 8 bytes * 8 / time_seconds. I am calculating the throughput like this right now and get a very low throughput around 400-500 bps? Am I doing something wrong? When reading the specifications, ideal throughput would be 1mbps, or am I wrong?

    Would be thankful for any kind of help

Children
  • Bluetooth Low Energy uses a 1Mbit modulation, but the actual Link Layer throughput is limited to 702.8 kbps if you subtract all the overhead. This is with increased ATT and LL payload sizes(up to 247 and 251 respectively) supported by Bluetooth 4.2. You can see the throughput for the different configurations of our S132 SoftDevice here

    The Bluetooth Mesh on the other hand is based Bluetooth v4.0, i.e. LL payload of 27 bytes and ATT MTU size of 23, which leave you with a theoretical throughput of 192.0 kbps in a connection. However, due to additional overhead in the Mesh you're only able to fit 11 bytes payload bytes in the advertisement packet as opposed to 31 bytes in regular Bluetooth LE. 

    The theoretical throughput will therefore be as you have stated payload_size[bytes]*8bits/byte *Advertisement_Interval.

  • Thanks for the reply,

    If I say that the throughput of one hop within the Bluetooth Mesh is 348 bps, does this seem reasonable for a Bluetooth Mesh network?? I am sending an unreliable 8 bytes string from the client node to the server node and get a very low throughput. When sending led on/off to the server from the client, the time it took to send from the client to server was 0,077 seconds, but this is only 1 byte, or am I wrong?

  • HI Hadi, 

    for one hop we have seen 3.46kbps ( ~54 Bytes/s) with 20ms advertising , 100% scanning with a 11 bytes byte payload,  Non-Acked, i.e. unreliable. 

    Best regards

    Bjørn 

  • First of all thanks for the fast reply, do you have any idea why the throughput that I achieve is such low? The throughput you mentioned is 10 times more what I achieved when sending. I have modified the light switch example where I send a 8 bytes message, with one hop as earlier mentioned I get 348 bits/s, which I think is very low, or am I wrong?

    In order to measure the throughput I use log_timestamp_get() to store the current time and then send the message. When the server receives the message it sends a 1 byte message back in order for the client to measure the time it took to send and receive a message, by taking the ((time_after - time_before)/32768)

  • Hi Hadi,
    Is it possible for you to share your throughput example for Bluetooth Mesh. I am also trying to achieve the throughput and struggling a bit at the moment. That could be very helpful of you. Thanks 

Related