We are unable to write message with 179 bytes length from Samsung Tablet A8, Model: X200, Android version:11, BLE:5.0 (Central) to a Bluetooth 5 device (Peripheral). However the same implementation works fine for non-Samsung devices and also for these Samsung devices where we have tested:
- Samsung Galaxy A7, Android 10, Bluetooth 5.0
- Samsung Note10 Lite, Android 12, Bluetooth 5.0
- Samsung Galaxy A50s, Android 12, Bluetooth 5.0
- Samsung Galaxy S22 5G, Android 12, Bluetooth 5.2
- Samsung Galaxy Tab A7, Android 12, Bluetooth 5.1
We request the MTU to 247 and inside onMtuChanged we receive the value 247. When a 179 byte data is sent, the return value of onCharacteristicWrite is true, and status code of this is 133 and after receiving the onCharacteristicWrite value, we get disconnect callback with reason 0x8.
This code works fine on other devices like Redmi, Lenovo and listed Samsung devices (please check the list above). The same Samsung Tablet A8 works fine when Peripheral is BLE 4.x.
Similar Issue and Workaround:
After searching over the web we came across similar issue, Samsung Android 10 BLE Connectivity Regression - #108 by fmevoli of which we tried one solution of sending data in chunks of 20 bytes which seems to work however it as serious performance concerns. For example, one operation which takes around 5 minutes on Non Samsung device is taking 90 minutes on Samsung tablet. This is making this workaround unacceptable. This is a very critical issue for our solution to be feasible.
Is there any way we can send data with message length greater than 20 bytes from Samsung Tablet A8, to a BLE device with Bluetooth 5? Please let me know if you need any additional information like logs, I am happy to provide the same.
Have a good day ahead!