Bluetooth based localisation

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_Config

  • BLE_Proximity_State

OVSDB schema

BLE_Proximity_Config

Name

RFC 7047 Atomic Type
Range × Unit

Description

Name

RFC 7047 Atomic Type
Range × Unit

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 BLE_Proximity_State::adv_tx_power.
Most devices support values in the range from ‑200 (‑20 dBm) to 100 (10 dBm), but some may allow just the default power of 0 dBm (see Adjusting BLE advertising transmit power).

Default: 0 (0 dBm)

adv_interval

integer

[20, 10240]

The interval, in milliseconds with 0.625 ms resolution, at which proximity BLE advertising packets are transmitted.

Default: 100 (100 ms1)

ibeacon_enable

boolean

If true, BLE radio will advertise non‑connectable undirected advertising packets with iBeacon payload, using 100 ms advertising interval1.

Note: While setting this fields to true configures and enables advertising of proximity BLE beacons, it does not ensure that the beacons are actually being advertised at that moment. See ibeacon_active in BLE_Proximity_State for explanation.

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
in range [1, 65534]

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 is greater than 0, each Minor value will be advertised for ibeacon_minor_interval seconds, then switched to the next one (rotating around from the begigging after the last one). If ibeacon_minor_interval is not present or 0, only the first Minor value is advertised, even if multiple are set.

ibeacon_minor_interval

integer [optional]

[1, 93600] seconds

If ibeacon_minor contains more than one Minor value, this is the interval in seconds between switching to the next Minor value, rotating through all specified values.

If only a single value is set to ibeacon_minor, this field is ignored.

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 adv_tx_power value to ensure accurate ranging results.

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

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 BLE_Proximity_Config::adv_tx_power to the best of the hardware BLE radio’s ability.

ibeacon_enable

boolean

Matches BLE_Proximity_Config::ibeacon_enable field if new settings are applied without error.

ibeacon_active

boolean [optional]

 

This field is present only when ibeacon_enable is true and represents the actual advertising status of iBeacon packets.

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 false. As soon as the Bluetooth peripheral is released by a higher‑priority task and becomes idle again, it will continue advertising proximity beacons and this field will be set to true.

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:

BT-proximity-iBeacon.png

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. 1 As defined by:
    Apple Inc. (2015). Proximity Beacon Specification (Release R1). https://developer.apple.com/ibeacon/ .