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

Max size of data to send from one node to other ble mesh

I want to send sensor data from one node to other using access_model_reliable_publish() method, but my data is too large and I'm  not able to send large data. What is the maximum size of data we send using access_model_reliable_publish()? What is size of packet and how many bytes of data we send at a time? I want to send 8192 bytes of data(i.e my uint8_t array size is 8192), how i can send it through single packet. Will you please provide the solution?

Thanks.

Parents
  • Hi Pooja,

    As leonwj says, the largest single segment packet in Bluetooth Mesh v1.0 is 15 bytes, but that is not including the opcode (1-3 bytes) and application layer MIC (Message Integrity Check, sometimes known as Message Authentication Check) of 4 bytes. Both are mandatory for sending access layer data. So, the maximum effective application payload is 10 bytes. Unfortunately 1 and 2 byte opcodes are reserved for Bluetooth SIG models, so for your custom data, you'd need to resort to 3 byte opcode. In all, that reduction in data size isn't a lot compared to the 8192 bytes you want to send. With segmented messages, the maximum packet size in Bluetooth Mesh v1.0 is 384 bytes, remove 4 for the MIC and 3 for your vendor specific opcode and you're left with 377 bytes.

    I would highly recommend you to consider if you really need to flood all of this data across the network or if it is possible to redesign your system to, e.g., do more local processing of the data or send delta updates.

    You can read more about packet sizes, opcodes, and much more in the surprisingly easy to read Mesh Profile specification: www.bluetooth.com/.../mesh-specifications

    Hope this helps,

    Thomas

Reply
  • Hi Pooja,

    As leonwj says, the largest single segment packet in Bluetooth Mesh v1.0 is 15 bytes, but that is not including the opcode (1-3 bytes) and application layer MIC (Message Integrity Check, sometimes known as Message Authentication Check) of 4 bytes. Both are mandatory for sending access layer data. So, the maximum effective application payload is 10 bytes. Unfortunately 1 and 2 byte opcodes are reserved for Bluetooth SIG models, so for your custom data, you'd need to resort to 3 byte opcode. In all, that reduction in data size isn't a lot compared to the 8192 bytes you want to send. With segmented messages, the maximum packet size in Bluetooth Mesh v1.0 is 384 bytes, remove 4 for the MIC and 3 for your vendor specific opcode and you're left with 377 bytes.

    I would highly recommend you to consider if you really need to flood all of this data across the network or if it is possible to redesign your system to, e.g., do more local processing of the data or send delta updates.

    You can read more about packet sizes, opcodes, and much more in the surprisingly easy to read Mesh Profile specification: www.bluetooth.com/.../mesh-specifications

    Hope this helps,

    Thomas

Children
Related