Selecting Suitable Connection Parameters for Apple Devices
For each Bluetooth connection, a set of parameters can be changed on the fly, depending on the application requirements. These include: connection interval, slave latency, and supervision timeout. For example, to minimize power consumption you can increase the connection interval and slave latency. This reduces the RF duty cycle and allows the peripheral to stay longer in sleep mode if there is no need to transmit any user data.
For more details about Bluetooth connections can be found in document UG103.14: Application Development Fundamentals: Bluetooth® Smart Technology.
The master (typically a mobile device) controls which connection parameters are used. When master initiates a connection to a slave, it selects the default parameters that are used. The slave can request updating the connection parameters. However, the master can either accept or reject this request.
Depending on the master, different restrictions can apply on which parameter combinations are accepted. This document focuses on the recommendations for iOS devices specified by Apple.
Apple Bluetooth Device Guidelines
The rules for selecting connection parameters for BLE peripherals that are defined in the document Accessory Design Guidelines for Apple Devices, available for download here.
The BLE connection parameters are discussed in section 25.6 Connection Parameters. For example, the minimum connection interval is specified as 15 ms. Note that the minimum interval allowed by the Bluetooth core specification is 7.5 ms.
At the time of writing this document, the latest version of the guideline document was R11 (dated 2019-11-12).
Several rules need to be fulfilled to be compliant with the iOS guidelines. To help selecting a set of compatible parameters, an Excel sheet is provided as an attachment.
To use the checker, enter the connection parameters in the cells that are marked grey. The input parameters are in the same order and using the same units as in the BGAPI command calls gecko_cmd_le_gap_set_conn_timing_parameters() and gecko_cmd_le_connection_set_timing_parameters().
Below the parameters, there is one line for each rule (numbered #1 .. #7). Next to each rule, there is a column with text OK / NOT OK, depending whether the rule is passed or not. By changing the parameters, you can easily see which rules are violated and tune the parameters accordingly.
An example set of parameters that complies with all rules is shown below.
OK is displayed next to each of the rules 1..7, indicating that there are no violations.
The next example shows a set of parameters that is not fully compliant with the iOS design guidelines.
In this latter example, it is easy to identify which of the rules are violated. The connection interval must be an integer multiple of 15 ms. Additionally, the supervision timeout is too short. To fix this, you can change the minimum interval (using e.g., 150 ms) and increase the supervision timeout.
Note: there are many possible ways to fix the parameters. In the above use case, it is possible to also decrease the slave latency to be compliant with the last rule #7.
The parameters used in these examples are randomly selected just for illustration purposes. In real applications, the application developer needs to decide about the parameters on a case-by-case basis. The purpose of this tool is to help check the compatibility of a set of parameters against the rules listed in the Apple guideline document.
The compatibility checker can be downloaded here: