Skip to main content
Associate II
July 8, 2026
Question

STM32WB55 BLE Stack v1.21.0.3 - Unable to enable LE Privacy (Resolvable Private Address)

  • July 8, 2026
  • 1 reply
  • 53 views

Hi ST Team,

I am trying to enable Bluetooth LE Privacy (Resolvable Private Address) on an STM32WB55CG.

Environment

  • MCU: STM32WB55CG
  • STM32CubeWB Package: v1.23.0
  • BLE Stack: v1.23.0.3
  • FUS: v1.2.0.0

What I changed

I changed the address type from:

 
#define CFG_BLE_ADDRESS_TYPE    PUBLIC_ADDR

to

 
#define CFG_BLE_ADDRESS_TYPE    RESOLVABLE_PRIVATE_ADDR

The generated code calls:

 
aci_gap_init(
role,
2,
...
);

and

 
aci_gap_set_discoverable(
...
RESOLVABLE_PRIVATE_ADDR,
...
);

Initially, aci_gap_set_authentication_requirement() was also using CFG_BLE_ADDRESS_TYPE as the Identity Address Type. I found an ST forum discussion mentioning this is incorrect, so I changed it to:

 
aci_gap_set_authentication_requirement(
...
PUBLIC_ADDR
);

However, the behavior did not change.

Observed behavior

With

 
CFG_BLE_ADDRESS_TYPE = PUBLIC_ADDR
  • Pairing succeeds.
  • Device works normally.

With

 
CFG_BLE_ADDRESS_TYPE = RESOLVABLE_PRIVATE_ADDR
  • Connection is established.
  • Pairing fails.
  • ACI_GAP_PAIRING_COMPLETE_VSEVT_CODE reports Status = 1.
  • HCI_DISCONNECTION_COMPLETE_EVENT reports Reason = 0x13 (Remote User Terminated Connection).

Additional observations

I also tried the official BLE_P2PServer example from STM32CubeWB v1.23.0.

Simply changing

 
#define CFG_BLE_ADDRESS_TYPE RESOLVABLE_PRIVATE_ADDR

causes a compilation error because a_srd_bd_addr is not defined:

 
error: 'a_srd_bd_addr' undeclared

The example appears to assume every non-public address is a Static Random Address and attempts to call:

 
aci_hal_write_config_data(CONFIG_DATA_RANDOM_ADDRESS_OFFSET, ...)

which is not applicable for Resolvable Private Addresses.

Question

  1. What is the correct procedure to enable Controller LE Privacy / Resolvable Private Address on STM32WB55 using BLE Stack v1.21.0.3?
  2. Is there an official example demonstrating LE Privacy on the STM32WB legacy BLE stack?
  3. Should additional APIs (such as Resolving List management) be used? My project does not expose APIs such as:
 
aci_gap_add_devices_to_resolving_list()

or

 
aci_gap_add_devices_to_list()

If there is an application note or reference example for enabling LE Privacy on STM32WB, could you please point me to it?

Thank you.

1 reply

ST Technical Moderator
July 8, 2026

Hello @barathi_0206,

You can have a look to the following pages with all the information regarding the BLE Privacy feature:

In order to give better visibility on the answered topics, please click on 'Best answer' on the reply which solved your issue or answered your question. Thanks
Associate II
July 9, 2026

Hi ​@Imen.D 

Thank you for your reply. I have one question.

I am using STM32WB55 with BLE Stack v1.23.0.3.

I have configured:

  • aci_gap_init(..., 2, ...)
  • Identity Address = PUBLIC_ADDR
  • Advertising Address = RESOLVABLE_PRIVATE_ADDR
  • Successful pairing and bonding
  • aci_gap_get_bonded_devices()
  • aci_gap_add_devices_to_resolving_list()
  • hci_le_set_resolvable_private_address_timeout(30) returns success.

Advertising works correctly with RESOLVABLE_PRIVATE_ADDR, but the advertising address never changes, even after the configured timeout and after restarting advertising.

Is there any additional API or configuration required on STM32WB to trigger RPA rotation?