Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
5 years, 5 months ago.
Max Size Allowed for a GATT Characteristic in MBED CORDIO API?
I am writing a BLE based bootloader DFU service and one of the questions I had since we are streaming the firmware upgrade OTA, I am wondering what is the maximum size I can set for the GATT Characteristic which receives the firmware data? I saw some other MBED forum questions that it is driven by the MTU size, however if the default in CORDIO API is set to 23, how can I increase this?
Also I plan on streaming this bootloader firmware using an IOS/Android device app, do these devices have their own pre-defined MTU Size, that I would need to adhere to?
Thanks, Ajay.
Question relating to:
1 Answer
5 years, 5 months ago.
Hi Ajay,
Mbed OS provides MTU configuration in json file, please refer here, https://github.com/ARMmbed/mbed-os/blob/15b5b5da23b970d397e7d94bfcda7e38fa3870c8/features/FEATURE_BLE/targets/TARGET_CORDIO/mbed_lib.json#L50
You can overwrite this config in mbed_app.json by
include the mbed library with this snippet
{ "target_overrides": { "NRF52840_DK": { "cordio.desired-att-mtu": 256, ... }, } ... }
Regards,
Desmond
Hi Desmond,
Thanks so much for your response. I was wondering is there an upper limit for this setting? In the event we set the desired MTU, is it possible IPhone/Android not honor this request?
Thanks, Ajay
posted by 02 Jul 2019Hi Ajay,
The desired MTU is between 23 and 517, you can check the "help" field in mbed_lib.json.
If the MTU size is set, there will be a negotiation procedure happening after connection established, and the final MTU size depends on master's decision, which means the decision is up to iPhone/Andriod in your case.
Regards,
Desmond
posted by 02 Jul 2019Hi Desmond,
Thanks for confirming and helping me better understand the negotiation process. I was wondering back to my original question, what should be the size of the Characteristic that I write the firmware to, if IOS/Android would decide the MTU length. Apparently according the Bluetooth spec, the Maximum size of a Write Characteristic can be 512 bytes. I am a little confused about when transferring say blocks of 512 bytes of data from say IPhone/IOS how will the MTU affect the transfer size.
Thanks, Ajay
posted by 03 Jul 2019