Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
5.10.1
-
None
-
Qt 5.10.1 on Android (nexus 6) version 6.0.1
-
13
-
Qt6_Foundation_Sprint 33, Qt6_Foundation_Sprint 34
Description
In the Qt Connectivity Android java code is a function that supports setting the MTU - this code seems a bit strange in that it will successfully exchange and get the maximum MTU (which in my case is 240), however this information is not relayed back to the C++ Qt code so the only safe amount of data to write in a characteristic is 20. If the MTU is 23 then no more than 20 bytes can be successfully written with a single command otherwise a characteristic write error is emitted, however if the MTU exchange is set at 240 and 60 bytes is written with a single command then it splits this up into multiple packets with a length no greater than 27 bytes per packet. Testing with a non-Qt non-android device yields writes of >240 bytes per packet without issue.
Therefore I see 2 issues:
1) C++ Qt Android (and probably other systems too) code is not able to know the result of a MTU exchange
2) Even when a successful MTU exchange has occured on C++ Qt Android, when atempting to write data of e.g. 60 bytes, it is split up into packets of no greater than 27 bytes per packet.
Attachments
Issue Links
- relates to
-
QTBUG-31674 QtBluetooth backlog
- Open
- resulted in
-
QTBUG-93826 BTLE MTU Darwin backend
- Closed
-
QTBUG-93827 BTLE MTU Windows backend
- Closed
For Gerrit Dashboard: QTBUG-67041 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
347455,17 | QLowEnergyController: add API to obtain ATT-MTU size | dev | qt/qtconnectivity | Status: MERGED | +2 | 0 |