Thanks Luiz for the answer, but I am guessing WriteValue() uses Long
Write. But it looks like not all BLE devices support Long Read/Write
(including Bluez until recently - v5.39 - April 2016). It also seems
some/all(?) Android devices do not support it.
I did not find this information but is a device that does not support
Long Write; would the application still receive GATT packets sent by
Long Write in a defragmented manner?
The workaround often uses is to leave the GATT server fragmenting itself
the packets to send to the GATT client with an arbitrary packet length
value. Knowing the MTU uses between the two GATT devices could improve
the throughput.