I had a awesome trouble with the ble when update my firmware, with the same code in app and firmware, the samsung s10(android 10) and s7edge(android 8.0) can send 510+K files in about one minute, but the honor V20(android 10) and xiaomi cc9(android 10) need about five minute!! the Connection Event is already to fill the Connection Interval(11.5ms) .
Is it possible to capture a sniffer trace of one of the "fast" phones and one of the "slow" phones and upload the traces here? (I don't need the entire 5 minute trace of the slow one. Only until it has started transferring the packets for a while, but feel free to capture all 5 minutes if you want to).
I suspect that there isn't actually anything wrong. Perhaps some of the phones actively request an increased MTU, while others do not. A sniffer trace would be able to tell whether this is the case).
Are you able to tell from debugging what payload size you are able to transfer in one packet with each of the phones?
How do you determine that the connection interval is actually 11.5ms in each case? Remember that it is the central that has the final saying on the connection interval. What application do you use to transfer these files? Is it something you wrote? If so, is it possible to share some snippets on how you actually transfer the files?
I'm sorry to reply you so late! when i try to capture a sniffer trace, i have a trouble with that, now i don't known what happens. if there is any progress, i will tell you at once !!
For sniffer traces you can use nRF Connect. It is fairly easy to set up and use, and it only requires an extra nRF5 DK. Please check the readme file in the download, and the documentation for the nRF Sniffer on Infocenter.
Another thing you can check is the process where you send the files. Try to log some info on the packets that are queued. What is the length of the packets, and how often are they queued. What is the difference between the two scenarios?