iPad - Bluetooth Peripheral MTU No More Than 20 Bytes

All,

Thanks in advance! I'm having a very hard time increasing the MTU to any value beyond 20. The research I've done states iOS 16.1 and beyond supports up to 512 bytes. Yet, the peripheral device will only read 20 bytes.

It's to be noted that I'm using Expo SDK 51 Bare Workflow, and the react-native-ble-plx library. I have the app functioning as both Central and Peripheral on iOS 18.1 devices, and data is successfully being written and read to the characteristic.

Because the Expo app is Bare Workflow, I'm able to make any configurations via Xcode, and if there is any patches needed to the react-native-ble-plx library, we have the architecture to support that too. I wanted to provide that context before being recommended to go to the Expo forums (which I have/will be).

I also added the CoreBluetooth framework to the project in hopes that would overwrite the react-native-ble-plx imports, but I noticed react-native-ble-plx uses Swift while CoreBluetooth is Objective-C.

Looking forward to your responses!

On iOS, a different MTU can be requested by one of the connecting sides, and it is the accessory that needs to be programmed to do it.

As in your solution you have both sides as iOS apps, because there is no API available to an app to change the MTU, this is not possible in your use case. The two devices will, upon connection, negotiate an appropriate MTU (along with other various connection parameters), and that is completely transparent to your app.


Argun Tekant /  DTS Engineer / Core Technologies

iPad - Bluetooth Peripheral MTU No More Than 20 Bytes
 
 
Q