Bluetooth based localisation
Introduction
Bluetooth Low Energy (BLE) advertising can be used to aid in proximity detection and indoor location tracking. A beacon usually consists of a small device that periodically transmits a BLE advertisement packet containing a specific payload with a unique identifier. Mobile devices can detect these packets and estimate the proximity of the beacon based on the received signal strength (RSSI).
Feature use legacy advertising with iBeacon1 payload format for our BLE beacons, as it is natively supported by iOS Core Location services. This allows us to leverage the existing iOS ecosystem for location tracking and proximity detection, and mitigates strict restrictions on Bluetooth and location services in iOS (especially for applications running in the background), as iBeacon advertisements are treated differently from generic BLE advertisements.
Northbound API
The existing Bluetooth Manager (BLEM) advertising architecture is used to advertise proximity beacons when the Bluetooth peripheral is not required for any of the higher‑priority use-cases (see field ibeacon_active in table BLE_Proximity_State).
New OVSDB tables:
BLE_Proximity_ConfigBLE_Proximity_State
OVSDB schema
BLE_Proximity_Config
Name | RFC 7047 Atomic Type | Description |
|---|---|---|
adv_tx_power | integer [‑32768, 32767] × 0.1 dBm | BLE advertising transmit power that the Bluetooth radio shall use for advertising proximity beacons, expressed in 0.1 dBm steps. If this value is out of range (lower or upper) supported by the Bluetooth radio hardware or the system global TX power limits (which are subject to certification regulations), the value is clamped to the nearest supported value. In any case, the actual power set is written to Default: |
adv_interval | integer [20, 10240] | The interval, in milliseconds with 0.625 ms resolution, at which proximity BLE advertising packets are transmitted. Default: |
ibeacon_enable | boolean | If Note: While setting this fields to |
ibeacon_uuid | uuid | iBeacon Proximity UUID (Universally Unique IDentifier). |
ibeacon_major | integer [1, 65534] | iBeacon Major values are intended to identify and distinguish a group. |
ibeacon_minor | set[integer] 1 to 4 integer values | iBeacon Minor values are intended to identify and distinguish an individual node in the group of nodes with the same Major value. 1 If multiple Minor values are set and |
ibeacon_minor_interval | integer [optional] [1, 93600] seconds | If If only a single value is set to |
ibeacon_power | integer [‑128, 127] × dBm | The Measured Power value of a proximity Beacon to help with ranging accuracy, in unit of 1 dBm. 1 Note: This is an empirical value, a function of device hardware antenna design and advertising power. It shall be set together with each |
BLE_Proximity_State
The read-only BLE_Proximity_State table represents the current operational state of the BLE proximity beacons feature, and properties which might differ from the values configured in BLE_Proximity_Config.
Name | RFC 7047 Atomic Type | Description |
|---|---|---|
adv_tx_power | integer [‑32768, 32767] × 0.1 dBm | BLE advertising transmit power that the Bluetooth radio uses for advertising proximity beacons, expressed in 0.1 dBm steps. Follows |
ibeacon_enable | boolean | Matches |
ibeacon_active | boolean [optional]
| This field is present only when Due to some platforms not supporting multiple simultaneous BLE advertising sets, the Bluetooth radio can be temporary used for other OpenSync use‑cases with higher priority, resulting in this fields being set to |
Southbound API
The Bluetooth Manager (BLEM) needs to have the capability to broadcast BLE proximity beacons in addition to existing BLE advertising packets used for OpenSync [Advanced] Onboarding (described in Bluetooth Manager (BLEM) | BLE Advertising Data packet structure ).
The following diagram represents the iBeacon advertising packet payload 1:
Requirements
Adjusting BLE advertising transmit power
Setting a specific advertising transmit power using BLE_Proximity_Config::adv_tx_power requires the Bluetooth radio to support the specified value. If the radio does not support it, the closest supported value will be applied.
DA14531 from Renesas (formerly Dialog)
The DA14531 Bluetooth 5.1 SoC supports the following transmit power levels: ‑19.5, ‑13.5, ‑10.0, ‑7.0, ‑5.0, ‑3.5, ‑2.0, ‑1.0, 0.0, 1.0, 1.5, 2.5 dBm.
EFR32BG21 from Silicon Labs
The EFR32BG21 series Bluetooth 5.4 SoCs can adjust the transmit power in 0.1 dBm increments in range from ‑127 to 10.1 dBm. Certain models may achieve up to 20.0 dBm with specific firmware configurations; however, this cannot be guaranteed and shall be avoided.
Resources
1 As defined by:
Apple Inc. (2015). Proximity Beacon Specification (Release R1). https://developer.apple.com/ibeacon/ .