Details
-
Suggestion
-
Resolution: Unresolved
-
P3: Somewhat important
-
None
-
6.5.0
-
None
-
-
5
Description
Currently when a BTLE device discovery is done on Windows, we not only take the list of Service UUIDs from the advertisement data, but also explicitly request for all service details of the newly-found device. This operation is very resource-consuming, compared to general device discovery, and it can lead to high CPU usage with some BT adapters / in some BT environments. The situation was partly improved in QTBUG-111116, but it's still not optimal.
Reading the source code of other backends, I see that Windows is the only backend that actually does the detailed discovery. All other backends simply use the data received from the advertisement.
Obviously, we cannot just remove the detailed discovery on Windows, because there might be users that rely on this behavior. But probably we could consider introducing an environment variable, which, when set, will disable the detailed scan?
Attachments
Issue Links
- relates to
-
QTBUG-112382 Manufacturer ID and Service Uuid Filtering support in QBluetoothServiceDiscoveryAgent
- Reported
- resulted from
-
QTBUG-111116 QT BLE scanner example causes high cpu usage
- Closed
Gerrit Reviews
For Gerrit Dashboard: QTBUG-112771 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
472070,1 | WIP: Windows: conditionally disable service discovery during BTLE device scan | dev | qt/qtconnectivity | Status: NEW | -2 | 0 |