Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs

Resolvable Private Address Generation Cycle

The Central device is using Resolvable Private Addresses.

Even though private_addr_cycle_s is set to BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S (15 minutes),

When observed with a BLE sniffer, the Resolvable Private Address changes with each BLE connection.

I thought the address would change according to the set cycle regardless of BLE connections. Is that correct?

We're using a fixed IRK without bonding. Could that be causing this?

We are developing in the following environment:

  • SDK: nRF5 SDK 17.1.0
  • SoftDevice: S140 v7.2.0
Parents
  • Hi, 

    I thought the address would change according to the set cycle regardless of BLE connections. Is that correct?

    Correct. See this post

    Regards,
    Amanda H.

  • thank you for your reply.

    In terms of specifications, I understand that Resolvable Private Address (RPA) is updated at a set interval.

    I am calling the following function with a fixed IRK (m_irk).

    ble_gap_privacy_params_t privacy_params;
    memset(&privacy_params, 0, sizeof(privacy_params));
    privacy_params.privacy_mode         = BLE_GAP_PRIVACY_MODE_DEVICE_PRIVACY;
    privacy_params.private_addr_cycle_s = BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S;
    privacy_params.private_addr_type    = BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE;
    privacy_params.p_device_irk         = &m_irk;
    
    err_code = sd_ble_gap_privacy_set(&privacy_params);
    APP_ERROR_CHECK(err_code);


    Do you know why PRA is updated so often?

Reply
  • thank you for your reply.

    In terms of specifications, I understand that Resolvable Private Address (RPA) is updated at a set interval.

    I am calling the following function with a fixed IRK (m_irk).

    ble_gap_privacy_params_t privacy_params;
    memset(&privacy_params, 0, sizeof(privacy_params));
    privacy_params.privacy_mode         = BLE_GAP_PRIVACY_MODE_DEVICE_PRIVACY;
    privacy_params.private_addr_cycle_s = BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S;
    privacy_params.private_addr_type    = BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE;
    privacy_params.p_device_irk         = &m_irk;
    
    err_code = sd_ble_gap_privacy_set(&privacy_params);
    APP_ERROR_CHECK(err_code);


    Do you know why PRA is updated so often?

Children
Related