BLE Slave Latency
Understanding Slave Latency
With slave latency = 0, the peripheral wakes at every CI. With latency = N, the peripheral can sleep through N events. When the peripheral has data to send (e.g., a button press), it wakes at the next event, achieving response time = CI. Without data, it sleeps up to N×CI between wake-ups.
This is powerful: CI=15 ms with latency=19 gives fast 15 ms response when needed, but the peripheral sleeps up to 300 ms when idle, equivalent to a 300 ms CI in power terms but with 15 ms latency capability.
Tsleep = CI × (1 + slave_latency)
Constraint:
(1 + SL) × CI < supervision_timeout
Example: CI=15 ms, SL=19:
Tsleep = 15 × 20 = 300 ms max
Response time = 15 ms (next event)
Slave Latency Scenarios
| CI | Slave Latency | Max Sleep | Response | Use Case |
|---|---|---|---|---|
| 7.5 ms | 0 | 7.5 ms | 7.5 ms | Gaming |
| 15 ms | 19 | 300 ms | 15 ms | Keyboard |
| 30 ms | 9 | 300 ms | 30 ms | Wearable |
| 100 ms | 4 | 500 ms | 100 ms | Sensor |
Frequently Asked Questions
How does it save power?
Peripheral sleeps N events, waking only with data or after N skips. CI=30 ms, latency=9: sleep 300 ms, 10× fewer wake-ups.
Constraints?
Max 499. Must satisfy: (1+SL)×CI < supervision_timeout. Missing timeout drops the connection.
Central benefit?
Central still transmits every event (doesn't know which the peripheral skips). Slave latency benefits only the peripheral.