BLE characteristic notification is limited to 20 bytes

I am using an Android app to get CHARACTERISTIC_LOCATION_DATA from a tag. When I use readCharacteristic() method, I can get the expected distances to all anchors. But the problem is that the GATT connection will timeout after 30 secs. So I try using BLE notification, but here I can get at most 20 bytes in onCharacteristicChanged. Any suggestions on how to get around this limit?

I am working on a Android app of DWM1001.
I’m also try using BLE notification. I’m sorry i can’t answer your question, because i get nothing from method onCharacteristicChanged(). My code about it is like:

    gatt.setCharacteristicNotification(characteristic, true);
    BluetoothGattDescriptor descriptor =characteristic.getDescriptor(DefinedUUIDs.Characteristics.LOCATION_DATA);
    if (descriptor != null) {
       descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
       gatt.writeDescriptor(descriptor);
       Log.d("Notification", "Notification start.");
    }

But descriptor always be null, that means what behind if statement not run,and onCharacteristicChanged() never be called.
Could you please tell me how you reach your step? Even just 20 bytes is also OK, Thanks a lot!

Hi,

the limits of 20 Bytes is because of the Bluetooth MTU. You need to request higher MTU from the connecting side. You can easily use nRF Connect program from Nordic to test it. It contains an useful log which would help you to understand what’s going on there.

Cheers,
TDK