Max MTU for characteristic read not honoured in some cases

Hello, I have an nRF52 device with NRF_SDH_BLE_GATT_MAX_MTU_SIZE set to 512 and it accepts connections and the client sets the max mtu to 512. It is on SDK 15


  • an Android based central does a read characteristic, data of 100 or more bytes is returned i.e. working correctly
  • a Linux based central (bluez/pygatt) does the same read only 22 bytes are returned, as if the max mtu change is not recognized

The Linux based central can successfully do reads on the increased mtu size when communicating with a Raspberry Pi based peripheral

I have compared sniffer traces in Wireshark and one difference I see is that the Android app does a GATT Primary Service Declaration whereas the Linux one does not. I have no idea if this is a factor, just a difference that I noticed.

Any ideas on debugging or otherwise are appreciated and please let me know if there is more information I can provide.

Thank you,