Optimizing BLE for Low Power

Article by:
Date Published:
Last Modified:
WARNING
This page is in notes format, and may not be of the same quality as other pages on this site.

Overview

This page discusses how to optimize Bluetooth Low Energy (BLE) for low power consumption. BLE is a Bluetooth protocol specifically designed for communication on low power devices that need to run for months or years off small batteries. With proper design, active BLE connections can be maintained by a microcontroller (MCU) with approx. 4-20uA of average current when running of 3.3V (the exact current depends on a lot of things, including connections settings and transmission power).

Measuring Current Consumption

First off, you need a way to accurately measure the current consumption of your system. The current consumption is likely to be very “bursty” requiring good time resolution and a high dynamic range due to the brief periods of high consumption (1-20mA) when Bluetooth is running, and long periods of low current consumption when the MCU is otherwise asleep (1-100uA).

My preferred tool is the Nordic Power Profiler Kit (PPK) which is a USB dongle that can either measure in-series current with an external voltage source or also provide the voltage source via an adjustable internal regulator. Shown below is a photo of the hardware:

A photo of the Nordic Power Profiler Kit 2 which is great for measuring the power consumption of low power circuits!

A photo of the Nordic Power Profiler Kit 2 which is great for measuring the power consumption of low power circuits!

The current consumption graphs in the rest of this page are screenshots from the Nordic Power Profiler software which accompanies this hardware.

TIP

Watch out when measuring current upstream of a switch-mode power supply (SMPS) that has a pulse skipping mode. This could hide the current peaks (and related timing) of the current consumption. The average current/power consumption will be correct however.

Advertising Interval

When a peripheral device is advertising, it is regularly sending out transmit-only packets. The time between transmissions is called the advertising interval. This is a trade-off between power consumption and the time it takes for a central device to discover (and connect if relevant) to the peripheral.

Connection Interval

The connection interval specifies the amount of time between when the central device and peripheral device both wake up and communicate with each other. The connection interval is a trade-off between latency and power consumption. The below graph shows the current consumption of 94uA for a nRF52 MCU that is connected to a central device with a connection interval of 30ms and a peripheral latency of 0. The average current consumption is 94uA:

The current consumption of a BLE device with a connection interval of 30ms and a peripheral latency of 0.

The current consumption of a BLE device with a connection interval of 30ms and a peripheral latency of 0.

Now if we change the connection interval from 30ms to 1000ms we get a significant current consumption to 20.4uA:

The current consumption of a BLE device with a connection interval of 1000ms and a peripheral latency of 0.

The current consumption of a BLE device with a connection interval of 1000ms and a peripheral latency of 0.

Peripheral Latency

The peripheral latency specifies the number of connection intervals that the peripheral device can skip when connected to a central device. This has a similar effect to the connection interval, except with the additional benefit of allowing the peripheral to wake-up more frequently (i.e. respond to more connection intervals) if it has a lot of data to send. The downside is that the central device still needs to poll the peripheral on every connection interval, so is suitable when you don’t care so much about the central devices current consumption.

If we set the connection interval back to 30ms, but change the peripheral latency from 0 to 30 (which would mean the peripheral would skip packets for at most 900ms), the current consumption drops from 94uA (as per above) to 18uA as shown in the below image:

The current consumption of a BLE device with a connection interval of 30ms and a peripheral latency of 30.

The current consumption of a BLE device with a connection interval of 30ms and a peripheral latency of 30.

Apple Device Support

Apple recommends some further restrictions on the connection interval and peripheral latencies for support with iOS devices1. Apple’s document, “Accessory Design Guidelines for Apple Devices” can be downloaded from here.

A screenshot of the BLE connection parameters from Apple’s document is shown below:

The recommended BLE connection parameters from Apple's "Accessory Design Guidelines for Apple Devices"[^apple-accessory-design-guidelines].

The recommended BLE connection parameters from Apple’s “Accessory Design Guidelines for Apple Devices”1.

Further Reading

See the Bluetooth page if you are interested in learning more about the Bluetooth protocol.

References


  1. Apple (2023, Oct 10). Accessory Design Guidelines for Apple Devices - Release R21. Retrieved 2024-04-30, from https://developer.apple.com/accessories/Accessory-Design-Guidelines.pdf↩︎ ↩︎


Authors

Geoffrey Hunter

Dude making stuff.

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License .

Related Content

Tags

comments powered by Disqus