In iOS 16 getting MTU size very low (20)

Hello Team, My project based on the CAN2BLE protocol. Here we are communicating with devices using Protobuf framework (https://github.com/apple/swift-protobuf). While communicating with device below having some observation

Below iOS 16 MTU Size (iOS 12...15.6.1) MTU Size Without Response: 244

In iOS 16 MTU Size MTU Size Without Response: 20

Observation : First time in iOS 16 getting MTU Size Without Response 244, but in second time it will give size 20, but after restarting the device. First time it will gives MTU size 244 from next time MTU size 20. This will happen again and again. Due to this issue my app not geeting data form BLE device.

Please let me know, if you need more data on the same.

I want to +1 this as something I am also seeing and having issue because of suddenly very small MTU size. CoreBluetooth appears to always take 3 bytes off the negotiated MTU size in the value it gives you for maximumWriteValueLength(for: .withoutResponse) - so when it says 20, MTU was actually 23. But I am confirming that we are seeing the same issue - that we request and do get at times an MTU 517 - but it degrades over time, yes, all the way down to 23 (20). Rebooting the iPhone appears to temporarily fix the issue.

There is also another post regarding this same issue (but no response yet from apple): https://developer.apple.com/forums/thread/716874

  • 1 here, the same thing happened to our project. After updating to iOS 16+ the negotiated DLE size dropped from 251 to 170 and MTU from 244 to 20. Could anyone do anything about this? Is there any chance to handle this on our side ?

And I can see the situation when resetting iPhone fixes this behaviour but only like for 2-3 new BLE connections. Then again DLE is broken.

What is more funny. Rebooting the iPhone appears to temporarily fix the issue. tip from scottbates22K works for 2 connections DLE&MTU is fine but after that it is wrong again. 🤡

Could you check whether the update to iOS 16.1 helps?

It can be fixed in iOS 16.1.

In iOS 16 getting MTU size very low (20)
 
 
Q