bluerange-io / bluerange-mesh

BlueRange Mesh (formerly FruityMesh) - The first completely connection-based open source mesh on top of Bluetooth Low Energy (4.1/5.0 or higher)
https://bluerange.io/
Other
288 stars 109 forks source link

Trying to achieve higher throughput #178

Closed rench9 closed 3 years ago

rench9 commented 3 years ago

Hey, we are trying to exchange audio stream over mesh and testing the throughput on NRF 52840 DK.

Modification we tried to achieve higher throughput:

Note: With NRF throughput example code we are getting around 262 kbps with 1MB PHY and connection interval 7.5ms. With connection interval 15ms we are getting around 490kbps

How to attain higher throughput with fruity mesh same as NRF throughput example code?

Reference to NRF throughput example code: https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_nrf5_v17.0.2%2Fble_sdk_app_att_mtu.html

mariusheil commented 3 years ago

Hi,

technically, you should be able to get the same throughput with FruityMesh than what you get with the nrf sdk. There might be some overhead due to the way how packets are handeled and queued, but I would guess that this should be minimal enough to always keep the SoftDevice buffer full. I would guess that the most probable cause is, that the buffer of the SoftDevice was not always filled up and that there were times where no data was sent. Filling the data from the TimerEventHandler would probably not be enough as it is not guaranteed to trigger often enough, so you could e.g. try by registering a MainContexthandler.

Did you do the throughput tests with the same SoftDevice version? That would be necessary to properly compare the two implementations.

Be aware that creating a mesh with multiple nodes will decrease the througput as there is quite a bit of overhead due to the concurrent handling of peripheral and central nodes.

Marius