BLE Asset Tracking: Tags, Gateways, and Cloud Integration
Building BLE-based asset tracking systems at scale
BLE Asset Tracking: Tags, Gateways, and Cloud Integration
BLE asset tracking uses small, battery-powered advertising tags attached to assets — tools, carts, patients, pallets — and a network of fixed gateways that scan for tag advertisements and report them to a cloud platform. Unlike GPS (outdoor, power-hungry), BLE tracking works indoors, lasts years on a coin cell, and scales to thousands of tags per facility.
System Architecture
[BLE Tag] ──adv──> [Gateway/AP] ──Ethernet/Wi-Fi──> [Location Engine] ──> [Dashboard]
Tags: advertising-only, no connection, 100 ms–10 s interval
Gateways: scanning all 3 adv channels, forwarding RSSI + tag MAC + timestamp
Location Engine: RSSI fingerprinting, trilateration, or ML-based positioning
BLE tags are typically advertising-only (no ATT">GATT connection) to maximize battery life. A tag advertising at 1-second intervals with 0 dBm TX power and 10 µA sleep current lasts 2–5 years on a CR2032.
Tag Design
| Parameter | Value | Impact |
|---|---|---|
| Advertising interval | 1–10 s | Battery life vs. location update rate |
| TX power | −4 to +4 dBm | Range vs. battery; +4 dBm ≈ 30 m open |
| Payload | Manufacturer specific data | Asset ID, battery, sensor data |
| PHY | LE 1M | Widest gateway compatibility |
| Motion detection | Accelerometer wake | Advertise fast when moving, slow when still |
| Sleep current | 0.5–2 µA | Dominates battery budget |
Adaptive advertising based on motion state is the highest-ROI optimization: a stationary asset at 10 s interval versus a moving asset at 100 ms interval reduces average current by 10–50×.
Gateway Placement
BLE RSSI is highly variable (±5–10 dB per measurement due to multipath, body shadowing). Accurate location requires multiple gateway observations:
| Method | Gateways | Accuracy | Infrastructure |
|---|---|---|---|
| Proximity (nearest gateway) | 1 | ±5–20 m (room-level) | Low |
| RSSI trilateration | ≥3 | ±2–5 m | Medium |
| RSSI fingerprinting | ≥3 (survey required) | ±1–3 m | Medium + survey effort |
| AoA direction finding | 1 per zone (array) | ±0.5–1 m | High |
| Channel Sounding | 1 | ±0.1–0.2 m | Requires BT 6.0 hardware |
Gateway density rule of thumb: one gateway per 100–150 m² for room-level accuracy; one per 30–50 m² for ±3 m zone accuracy in typical office/warehouse environments.
Mounting height: 2.5–3 m ceiling mount minimizes body shadowing and multipath from floor reflections. Avoid mounting above metal HVAC ducts.
RSSI-Based Location Algorithms
Log-Distance Path Loss Model:
RSSI = TX_Power − 10 × n × log10(d) + X_σ
Where n = path loss exponent (2.0 free space, 2.5–3.5 indoors), X_σ = zero-mean Gaussian noise.
Solving for distance:
def rssi_to_distance(rssi: float, tx_power: float = -59, n: float = 2.8) -> float:
# Returns estimated distance in meters from RSSI and TX power at 1m
return 10 ** ((tx_power - rssi) / (10 * n))
Kalman Filter for Smoothing: Raw RSSI is noisy. A simple 1D Kalman filter reduces jitter:
class RSSIKalman:
def __init__(self, q=0.1, r=5.0):
self.x, self.p = 0.0, 1.0
self.q, self.r = q, r # process noise, measurement noise
def update(self, z: float) -> float:
self.p += self.q
k = self.p / (self.p + self.r)
self.x += k * (z - self.x)
self.p *= (1 - k)
return self.x
Gateway Hardware Options
| Gateway | Interface | BLE Version | Scan Channels | Notes |
|---|---|---|---|---|
| Raspberry Pi 4 + USB dongle | Ethernet/Wi-Fi | Up to 5.3 | All 3 | Flexible, Python/BlueZ |
| Nordic Thingy:91 | LTE-M | 5.2 | All 3 | Cellular-connected outdoor |
| Laird DVK-BL5340 | Ethernet | 5.4 | All 3 | Industrial, −40°C |
| Cisco Catalyst AP | Wi-Fi backhaul | 5.2 | All 3 | Enterprise, integrated IoT |
| Kontakt.io Gateway Pro | Ethernet | 5.2 | All 3 | Purpose-built asset tracking |
Cloud Integration Pattern
Gateway ──MQTT──> Cloud Broker ──> Location Engine ──> REST API ──> Dashboard
──> WebSocket ──> Real-time map
Standard MQTT topic structure:
ble/gateway/{gateway_id}/scan/{tag_mac}
{
"rssi": -72,
"tx_power": 4,
"manufacturer_data": "0x0059...",
"timestamp_ms": 1735900000000
}
The location engine aggregates observations from multiple gateways per tag, applies smoothing, and outputs a location estimate every 1–30 seconds depending on SLA requirements.
Tag Payload Design
A compact 8-byte manufacturer-specific data payload:
Byte 0-1: Company ID (BT SIG registered, or 0xFFFF for prototype)
Byte 2-4: Asset ID (24-bit, 16M unique assets)
Byte 5: Battery (0-100%)
Byte 6: Status flags (motion, tamper, button)
Byte 7: RSSI calibration (TX power at 1m, signed dBm)
Use the Packet Builder to design and preview your advertising payload structure before firmware implementation.
BLE vs. Other Asset Tracking Technologies
| Technology | Range | Battery Life | Indoor | Cost per Tag |
|---|---|---|---|---|
| BLE | 1–50 m | 1–5 years | Yes | $3–15 |
| UWB | 1–50 m | 6–24 months | Yes | $15–40 |
| RFID (passive) | 0–10 m | Infinite | Yes | $0.10–2 |
| Wi-Fi | 10–100 m | Weeks | Yes | $5–20 |
| GPS | Global | Days–months | No | $20–80 |
BLE hits the best balance of battery life, infrastructure cost, and indoor accuracy for most enterprise asset tracking deployments. Use the Power Estimator to model tag battery life for your specific advertising interval and TX power configuration.
Frequently Asked Questions
Yes, our guides range from beginner introductions to advanced topics. Each guide indicates its difficulty level and prerequisites so you can find the right starting point.