Understanding Pairing/bonding and MAC address

Hi,

I am investigating the implementation of paring/bondings with Onsemi BLE Explorer and RSL10 sample code application “ble_periph_server_bond”.

I do not grasp or find details about randomized BLE MAC address related to bonding.
From the sample code, the most significant (bit 47) bit is set to 1 in the BLE MAC address.

#define APP_BD_ADDRESS { 0x94, 0x11, 0x20, 0xff, 0xbb, 0xD5 }

I can perform pairing/bonding with the device from the BLE explorer with bond info saved. I a reconnect to the periph device, the “Bond Pair” is greyed out and i can encrypt the link.

By setting the most significant bit to 0, bonding is not “established” between central/periph. From the BLE explorer application, i can try to perform indefinitley bondings. (Encrypt>Bond Pair).

#define APP_BD_ADDRESS { 0x94, 0x11, 0x20, 0xff, 0xbb, 0x55 }

From my understandings, the BLE mac address can be either Non-resolvable or Resolvable private address to perform bonding (bit 46 either to 0 or 1). However, what is the meaning of having the bit 47 to 1?

This table below resumes the sub-types of random device addresses (from a pdf file, the only source so far i found mentionning the use of bit 47) which only states “Reserved for future use”…?

image

Address [47:46] | Address Sub-Type
0b00            | Non-resolvable private address
0b01            | Resolvable private address
0b10            | Reserved for future use
0b11            | Static device address

Could you provide some highlights about the topic? Is it specific to Onsemi or is it general to pairing/bondings BLE protocol?

@sylvain.mariteau

For normal use, we need set initial address is public address or static address.

(Random Static address)

image

Bonded:
image

There are two types of Random Private addresses: resolvable and non-resolvable .
Random Private addresses are used specifically for protecting the privacy of a Bluetooth device,
to hide the identity, and to prevent tracking of the device.

A. A Resolvable Random Private address is “resolvable” using a key shared with a trusted device.
This key is referred to as the IRK (Identity Resolving Key).
The address is originally generated using this IRK and a random number.

Therefore if you change the address to 0x55, peer device will think it is a private resolvable address and trying to use IRK to resolve it. This could cause the bond fail.

(Random Resolvable address)

image

Not Bonded:

image

image

0xD5 = 1101 0101 so that would correspond to static random address structure.

Thank you for using our community forum!