How Do BLE Connection Parameters Affect Power Consumption?
Last updated 1 July 2026 · 11 min read
Direct Answer
The three BLE connection parameters that directly control peripheral power consumption are: connection interval (how often the radio wakes, from 7.5 ms to 4 s), slave latency (how many intervals the peripheral can skip when it has no data, from 0 to 499), and supervision timeout (how long without a successful exchange before the link is declared lost). Increasing the connection interval is the most powerful lever — a 500 ms interval reduces radio duty cycle roughly 67× compared to 7.5 ms. Slave latency multiplies this saving further: with latency 4 and a 500 ms interval, the peripheral wakes only once every 2.5 s under zero-traffic conditions. Supervision timeout must always exceed (1 + slave latency) × connection interval × 2 to prevent spurious link drops.
Detailed Explanation
Connected BLE peripherals spend most of their operating life in a simple cycle: sleep, wake briefly to exchange packets with the central device, sleep again. The three connection parameters — connection interval, slave latency, and supervision timeout — control every aspect of this cycle. Getting them right can mean the difference between a coin cell lasting six months and lasting three years in a deployed product.
Connection Interval
The connection interval defines how often the radio wakes for a connection event — the scheduled opportunity for the central and peripheral to exchange packets. It is expressed in multiples of 1.25 ms, from a minimum of 6 units (7.5 ms) to a maximum of 3200 units (4 s), per the Bluetooth Core Specification Vol 6, Part B.
During a connection event:
- The peripheral wakes slightly before the anchor point to synchronise its clock
- The central transmits a packet (may be an empty PDU if it has no data to send)
- The peripheral responds (data notification, empty acknowledgement, or status)
- If either side has more data, additional packets are exchanged within the same event
- Both devices sleep until the next anchor point
A single empty PDU connection event on the nRF52840 (DCDC enabled) typically lasts approximately 300–600 µs at approximately 5 mA per Nordic's product specification — followed by sleep at roughly 2–3 µA. The ratio of active time to sleep time determines average current.
Approximate average current at idle (nRF52840, DCDC enabled, 0 dBm, single PDU exchange, no data queued):
| Connection interval | Approximate average current |
|---|---|
| 7.5 ms | ~350 µA |
| 20 ms | ~110 µA |
| 100 ms | ~25 µA |
| 500 ms | ~7 µA |
| 1000 ms | ~4 µA |
| 4000 ms | ~2.5 µA |
These are order-of-magnitude estimates based on typical values in the nRF52840 product specification. Actual values depend on TX power setting, DCDC vs LDO regulator mode, BLE stack overhead, and concurrent advertising. Always measure with a Nordic PPK2 or equivalent current profiler on target hardware before making battery-life commitments.
Choosing the connection interval: match the interval to the application's acceptable latency. A wearable sensor reading once per second has no need for a 20 ms interval — 500 ms to 1 s costs little responsiveness while saving a large fraction of radio energy. A HID keyboard requires 7.5–20 ms to avoid perceptible input lag. Request a range (min, max) when negotiating — for example, min = 400 ms, max = 500 ms — rather than a fixed value: this gives the central more flexibility and improves the probability of acceptance.
Slave Latency
Slave latency (referred to as peripheral latency in BLE 5.0+ terminology) allows the peripheral to skip up to N consecutive connection events when it has no data to transmit. The central is informed of the latency value at connection time and does not treat the peripheral's absence during skipped events as a link failure.
With slave latency N, the peripheral can sleep for up to (N + 1) connection intervals between wake-ups when idle:
- Effective sleep window (idle) = connection interval × (slave latency + 1)
The peripheral may still wake at any event boundary when it has data to send — latency is an allowance to skip, not an obligation to do so.
Combined effect of connection interval and slave latency on average current (nRF52840, idle):
| Connection interval | Slave latency | Effective sleep window | Approx. avg. current |
|---|---|---|---|
| 100 ms | 0 | 100 ms | ~25 µA |
| 100 ms | 4 | 500 ms | ~7 µA |
| 500 ms | 0 | 500 ms | ~7 µA |
| 500 ms | 4 | 2500 ms | ~3 µA |
| 1000 ms | 4 | 5000 ms | ~2 µA |
Slave latency is most beneficial for peripherals that rarely receive data from the central but send notifications on their own schedule — temperature sensors, accelerometers, environmental monitors. It is less useful when the central frequently writes to the peripheral (configuration commands, OTA data), since the peripheral cannot predict when to wake and must respond at its next scheduled event anyway.
Constraints on slave latency:
- Maximum per Bluetooth specification: 499
- Practical constraint:
slave_latency × connection_intervalmust be less thansupervision_timeout / 2 - iOS constraint: typically accepts a maximum of 4
Supervision Timeout
The supervision timeout determines how long either device waits without a successful packet exchange before declaring the connection lost and notifying the application. It is expressed in multiples of 10 ms, from 10 (100 ms) to 3200 (32 s).
Minimum supervision timeout (Bluetooth Core Specification requirement):
supervision_timeout > (1 + slave_latency) × connection_interval × 2
This ensures the supervision timer cannot expire while the peripheral is legitimately sleeping through its allowed skip window. Violating this constraint causes intermittent disconnections that are difficult to debug — the link drops at random, more often in radio-noisy environments.
Example: slave latency 4, connection interval 500 ms:
- Minimum timeout = (1 + 4) × 500 ms × 2 = 5000 ms
- Practical recommendation: 6–8 s to absorb one or two missed events from interference
Choosing the timeout: too short causes spurious disconnections in real environments; too long means the peripheral side reports a connection for many seconds after the central has moved out of range (which confuses application state and delays reconnection logic). A timeout of 4–8 s is appropriate for most IoT sensor products. iOS enforces a minimum timeout of approximately 2 s regardless of what the peripheral requests.
Worked Power Example
A BLE environmental sensor on a CR2032 coin cell:
- Sends one temperature notification every 10 s
- Receives configuration writes occasionally (< once per minute)
Before parameter negotiation (central defaults after pairing):
- Connection interval: 30 ms, slave latency: 0, supervision timeout: 2 s
- Average current from BLE connection alone: approximately 100 µA
After requesting updated parameters:
- Connection interval: min 400 ms / max 500 ms, slave latency: 4, supervision timeout: 6 s
- Effective wake interval when idle: 2000–2500 ms
- Average current from BLE connection alone: approximately 3–5 µA
This single parameter negotiation reduces BLE connection overhead by approximately 20–30× for the idle periods between notifications, with negligible impact on notification delivery latency (the sensor wakes at the next event boundary, adding at most 500 ms to the delivery time).
Connection Parameter Negotiation
Parameters are initially set by the central device in the CONNECT_IND link layer packet. The peripheral requests new parameters after connection establishment using one of two procedures:
L2CAP Connection Parameter Update Request (BLE 4.0+): The peripheral sends a preferred range (minimum interval, maximum interval, slave latency, supervision timeout) via the L2CAP signalling channel. The central accepts or rejects.
LL Connection Parameter Request (BLE 4.1+): A link-layer procedure (LL_CONNECTION_PARAM_REQ) that is faster and can be initiated by either side. Zephyr automatically uses this when both devices support BLE 4.1 or later.
In practice, the application calls one API; the stack chooses the correct procedure:
Zephyr NCS (nRF52/nRF53):
static const struct bt_le_conn_param conn_param = BT_LE_CONN_PARAM(
BT_GAP_MS_TO_CONN_INTERVAL(400), /* min interval: 400 ms */
BT_GAP_MS_TO_CONN_INTERVAL(500), /* max interval: 500 ms */
4, /* slave latency */
BT_GAP_MS_TO_CONN_TIMEOUT(6000) /* supervision timeout: 6 s */
);
/* Call from the connected callback: */
int err = bt_conn_le_param_update(conn, &conn_param);
ESP32 NimBLE:
struct ble_gap_upd_params upd = {
.itvl_min = BLE_GAP_CONN_ITVL_MS(400),
.itvl_max = BLE_GAP_CONN_ITVL_MS(500),
.latency = 4,
.supervision_timeout = BLE_GAP_SUPERVISION_TIMEOUT_MS(6000),
.min_ce_len = 0,
.max_ce_len = 0,
};
ble_gap_update_params(conn_handle, &upd);
The bt_conn_cb.le_param_req / BLE_GAP_EVENT_CONN_UPDATE event notifies the application of the accepted parameters. Always verify the negotiated interval with a BLE packet sniffer — the central may silently accept different values than requested, particularly on iOS.
Platform Restrictions
iOS: Apple's Bluetooth Accessory Design Guidelines impose minimum acceptable ranges:
- Connection interval: ≥ 15 ms (7.5 ms only for HID profile devices)
- Slave latency: ≤ 4
- Supervision timeout: ≥ 2 s; total supervision window ≤ a few seconds (varies by iOS version)
Requests below these thresholds are rejected without error. Test parameter negotiation on physical iOS devices — the nRF Connect app on iPhone shows the negotiated interval and is a fast diagnostic tool.
Android: Android generally honours the peripheral's requested parameters, but OEM Android modifications (Samsung OneUI, Huawei EMUI, and others) can introduce delays or override values. Behaviour also varies between Android versions. Always validate on at least two OEM hardware targets before finalising parameters.
Practical Examples
Parameter sets by application type:
| Application | Interval | Slave latency | Supervision timeout | Rationale |
|---|---|---|---|---|
| HID keyboard/mouse | 7.5–20 ms | 0–1 | 2 s | Keystroke latency is user-perceptible |
| Heart rate monitor (1 Hz) | 500–1000 ms | 0 | 4 s | Notification once per second; short latency irrelevant |
| Environmental sensor (5–60 s) | 500–2000 ms | 4–8 | 8–16 s | Infrequent data; maximise sleep window |
| OTA firmware update | 20–50 ms | 0 | 4 s | Throughput matters; reduce after transfer completes |
| BLE beacon / monitoring | 1000–2000 ms | 8–10 | 16–32 s | Rarely sends, rarely receives; ultra-low power |
Design Considerations
- Request parameters in the connected callback: call
bt_conn_le_param_update()orble_gap_update_params()from theconnectedevent handler, not at boot. Parameters reset to central defaults on every new connection — the update request must be repeated in eachconnectedcallback. - Separate parameters for OTA updates: a 500 ms connection interval makes firmware updates impractically slow. Request a shorter interval (20–50 ms) before starting an OTA transfer, then restore the power-optimised parameters once the transfer completes.
- Supervision timeout safety margin: always add one or two full effective-skip-window durations above the specification minimum. In practice:
supervision_timeout = (1 + slave_latency) × interval_max × 3is a robust starting point. - Slave latency and inbound command latency: if the central frequently writes to the peripheral (OTA data, configuration commands), slave latency delays delivery until the next scheduled wake. Design the peripheral application to tolerate command latency equal to the full skip window, or reduce slave latency for command-intensive modes.
- Measure before committing to battery-life claims: the estimates in this page are based on typical datasheet values. Actual current depends on TX power, DCDC mode, clock accuracy, and stack overhead. Use a Nordic PPK2 or equivalent tool on target hardware and measure over at least 60 s to account for timing variation.
- Zeus Design develops low-power BLE peripheral firmware for consumer and industrial IoT products, covering parameter optimisation, iOS/Android compliance testing, and companion mobile app integration.
Common Mistakes
- Supervision timeout shorter than (1 + slave_latency) × interval × 2: the most common cause of intermittent BLE disconnections, especially in RF-noisy environments. Whenever slave latency is non-zero, recalculate the minimum timeout and add a safety margin.
- Requesting a fixed min=max interval: requesting
min = 500 ms, max = 500 msis less likely to be accepted thanmin = 400 ms, max = 500 ms. A range gives the central scheduler flexibility; iOS in particular prefers a range with at least 15 ms spread. - Using minimum interval for all applications: 7.5 ms or 20 ms intervals waste battery energy and are rejected by iOS for non-HID devices. Start with the longest latency your application can tolerate, then shorten only if latency testing identifies a genuine problem.
- Not re-requesting parameters after reconnection: each new connection starts with the central's default parameters. The parameter update request in the
connectedcallback handles both first connections and reconnections — do not guard it with a "first connection only" flag. - Testing only on development kits against a PC Bluetooth host: connection parameter negotiation behaviour varies widely by phone OS and OEM. A negotiation that works between an nRF DK and a PC may fail silently on an iPhone 15 or a Samsung Galaxy. Test on physical end-user devices early.
- Slave latency when the central polls the peripheral: if the central reads characteristics on a regular schedule (polling rather than notifications), slave latency means the peripheral is asleep for most of those polls. The read completes only when the peripheral happens to be awake at a non-skipped event. Design for notification-based data delivery rather than central polling when slave latency is in use.
Frequently Asked Questions
- Why does iOS ignore my BLE connection parameter request?
- iOS enforces platform-level parameter constraints that override the peripheral's request. Apple's Bluetooth Accessory Design Guidelines specify that the minimum connection interval for most apps is 15 ms — 7.5 ms is permitted only for HID devices such as keyboards and game controllers. iOS also typically restricts slave latency to a maximum of 4 and enforces a minimum supervision timeout of around 2 s. If your peripheral requests below 15 ms for a sensor application, iOS will reject the request and maintain its own interval. To negotiate reliably on iOS, request a minimum interval of 15 ms or greater, slave latency ≤ 4, and supervision timeout > (1 + slave_latency) × maximum_interval × 2. Always verify the actual negotiated interval with a BLE packet sniffer — iOS gives no firmware-visible error when it silently ignores a parameter request.
- What is the difference between the L2CAP Connection Parameter Update and the LL Connection Parameter Request?
- Both procedures let the peripheral request new connection parameters, but at different protocol layers. The L2CAP Connection Parameter Update Request (BLE 4.0) sends the request through the L2CAP signalling channel as an application-layer message; the central accepts or rejects it via its Bluetooth host. The LL Connection Parameter Request (BLE 4.1+) is a link-layer procedure (LL_CONNECTION_PARAM_REQ) that operates below the host stack, executes faster, and can be initiated by either the central or the peripheral. BLE 4.1+ stacks prefer the LL procedure. In practice you call the same platform API — bt_conn_le_param_update() in Zephyr, ble_gap_update_params() in NimBLE — and the stack selects whichever procedure the remote device supports.
- How do I set the connection interval used for the very first connection?
- The initial connection interval is chosen by the central device, not the peripheral. You can influence it in two ways: (1) set a GATT Peripheral Preferred Connection Parameters characteristic (UUID 0x2A04) in the Generic Access Service (UUID 0x1800) — the central may read and honour this after connecting; (2) request a parameter update immediately from the connected callback using bt_conn_le_param_update() or ble_gap_update_params(). The central is not obligated to accept either, but iOS and Android generally honour requests that meet their platform constraints. The Bluetooth stack on the central device selects the initial interval before either mechanism can apply, so the first few connection events always use the central's default parameters.
References
- Bluetooth Core Specification 5.4 (Bluetooth SIG) — Vol 6, Part B: Link Layer Specification
- Nordic Semiconductor — nRF52840 Product Specification (PS v1.7)
- Apple — Bluetooth Accessory Design Guidelines for Apple Products
- Zephyr Project — Bluetooth Connection Management API
- ESP-IDF Programming Guide — NimBLE GAP API
Related Questions
What Is Bluetooth Low Energy (BLE)?
Bluetooth Low Energy (BLE) is a 2.4 GHz protocol for low-power sensor-to-phone communication. Learn how advertising, GATT, and connection parameters work.
How Does BLE Pairing and Security Work in Embedded Products?
BLE pairing modes: Just Works, Passkey, Numeric Comparison, OOB, and LE Secure Connections. Covers bonding, LTK storage, and nRF52/ESP32 implementation.
How Do You Minimise Current Draw on an nRF52 in BLE Applications?
Minimise nRF52 BLE current draw: DCDC converter, advertising interval, connection interval, System OFF mode, Zephyr PM, and PPK2 measurement techniques.
How Do You Implement a BLE Peripheral with Custom GATT Services on nRF52 Using Zephyr?
Implement a BLE peripheral with custom GATT services on nRF52 using Zephyr NCS: service definition, UUIDs, read/write handlers, and notifications.
How Does BLE Work on the ESP32?
ESP32 BLE in ESP-IDF: advertising, GATT server setup, characteristics, notify vs indicate, central vs peripheral roles, and NimBLE vs Bluedroid.
How Do You Calculate Battery Life for an Embedded Device?
Battery life = capacity (mAh) ÷ average current (mA). Learn how to calculate average current for embedded devices with active and sleep states.