... | ... | @@ -135,10 +135,14 @@ This does not allow a group of devices to bootstrap connectivity entirely withou |
|
|
|
|
|
In previous research we found that some devices (eg LGE Nexus 5X) are capable of keeping up to seven RFCOMM connections open at a time. Other devices (eg Motorola Moto E3) can only keep a single connection open: if a second connection is opened, both connections fail.
|
|
|
|
|
|
The number of connected devices may also be relevant. For example, the Google Pixel 2, Nokia 3.1, LGE Nexus 5X and Huawei P8 Lite 2017 can all keep stable connections to each other (six connections in total), but adding the Huawei P8 Lite 2015 to the group destabilises the connections between the other devices.
|
|
|
The total number of connections among all nearby devices may also be relevant.
|
|
|
For example, the Google Pixel 2, Nokia 3.1, LGE Nexus 5X and Huawei P8 Lite 2017 can all keep stable connections to each other (six connections in total), but adding the Huawei P8 Lite 2015 to the group destabilises the connections between the other devices.
|
|
|
|
|
|
There are even some indications that certain devices (eg Motorola Moto E3) may behave in a way that causes the Bluetooth stacks of other devices (Nokia 3.1) to crash, requiring Bluetooth to be turned off and on again.
|
|
|
|
|
|
Unfortunately there is no way for an application to query how many simultaneous connections the local device supports, or to tell whether connection failures are due to the limitations of the local device, the limitations of remote devices, or problematic interactions between specific pairs of devices, such as the Moto E3 and Nokia 3.1 mentioned above.
|
|
|
Applications should therefore try to keep the number of simultaneous connections to a minimum, for example by closing connections as soon as they become idle.
|
|
|
|
|
|
### Bluetooth Low Energy (BLE)
|
|
|
|
|
|
Bluetooth Low Energy is a separate protocol from Bluetooth classic that is designed to use less energy without greatly impacting functional range.
|
... | ... | @@ -226,12 +230,6 @@ This creates a UX hurdle for future public mesh applications because it could ca |
|
|
|
|
|
On Android versions 6 and later (API level >= 23), the device's location services must be enabled in order for apps to receive BLE discovery results.
|
|
|
|
|
|
#### BLE Open Questions
|
|
|
|
|
|
* What is the maximum number of GATT Characteristics allowed on each popular Android device?
|
|
|
* What is the MTU on each popular Android device? During our research, the Nexus 5X, Pixel 3a, 4, and 5 all had the highest possible MTU size of 512 bytes, but this is not always a given.
|
|
|
* Is the Linux [Bluez](https://www.bluez.org/) library affected by the silent pairing bug (CVE-2020-12856)?
|
|
|
|
|
|
#### Peer Advertisement
|
|
|
|
|
|
Peer advertisement happens using BLE's advertisement protocol, which allows a peripheral device to send small advertisement packets periodically.
|
... | ... | @@ -391,6 +389,13 @@ This allows L2CAP CoC to be used between centrals and peripherals that support i |
|
|
If the communication between a peripheral and a central needs to be confidential then higher-layer protocols must ensure that this remains the case even when the data sent from the peripheral to the central can easily be observed by other devices nearby.
|
|
|
In practice this is unlikely to make a big difference to the design of higher-layer protocols, which must already be designed around the assumption that any data sent over a wireless medium can easily be received by unintended recipients.
|
|
|
|
|
|
Open questions:
|
|
|
|
|
|
* What is the maximum number of GATT Characteristics allowed on each popular Android device?
|
|
|
* What is the MTU on each popular Android device?
|
|
|
During our research, the Nexus 5X, Pixel 3a, 4, and 5 all had the highest possible MTU size of 512 bytes, but this is not always a given.
|
|
|
* Is the Linux [Bluez](https://www.bluez.org/) library affected by the silent pairing bug (CVE-2020-12856)?
|
|
|
|
|
|
#### BluetoothCommunicator
|
|
|
|
|
|
BluetoothCommunicator is a BLE library built upon the core Android `BluetoothGATT` objects similar to BLESSED. However, unlike BLESSED, BluetoothCommunicator is geared more towards async messaging, and not a general-use library.
|
... | ... | |