Hi @TyChapin,
Upon connection, the MTU is set to the default value of 23.
That's only a "we don't know yet" default, which is, frankly, pretty meaningless. As per the docs:
Before the connection setup and MTU negotiation, the default value of 23 will be returned.
@TyChapin said in BLE MTU Exchange:
Then once I connect to a service, the MTU is 256 which is what the BLE device wants it to be at.
Yep, that (256) would be the real, negotiated, MTU.
@TyChapin said in BLE MTU Exchange:
When I go to read the characteristic value that has 64 bytes, only 24 bytes come over.
Does anyone have any advice on how to exchange the MTU size properly?
I suspect the problem is not MTU related. In most cases, the MTU should not affect the characteristic data size (just performance), because the BLE stack will use as many MTU's as needed to transfer the characteristic's data.
How are you checking the characteristic value's length? ie how do you know that the "value has 64 bytes", and "only 24 bytes come over"?
(Also, if its a publicly documented characteristic, and you're able to share the UUID, that might help, but no worries if not).
Cheers.