Hi, I am trying to understand how BLE data is fragmented and how I can send large amounts of data over BLE.
I have log files that I want to send from an nRF54L15 to a mobile app, let's say these log files are 20 KB.
My understanding is the normal largest MTU size if 247, which actually ends up being 244 bytes of data.
I will be sending my data on the Notify of a custom BLE service and characteristic.
Do I need to fragment my 20 KB log into 244 byte pieces in my application code? This seems like it would require some flow control and be more complex.
Is there a way to get the BLE stack to fragment my data automatically into the 244 byte MTU size.
Additionally, if my L2CAP data size is smaller than the MTU size, will the stack automatically fragment MTU packets into L2CAP data sizes?
I have briefly tried to do this and get the following error codes:
[473364:01:22.000,000] <wrn> bt_att: No ATT channel for MTU 293
[473364:01:22.000,000] <wrn> bt_gatt: No buffer available to send notification
The following ticket mentions fragmenting GATT data at the application layer, but that GAP data is automatically fragmented by the BLE stack: How to fragment the BLE Data
Is there a way for me to send my data through the GAP layer so it is automatically fragmented?