Hi,
I'm working on pairing a EPS32 with another BLE chip (from TI). After bound and reconnecting, I'm making the other BLE chip advertising using directed adv and RPA. But I'm facing two issues:
1. The scan result in ESP32 shows the address type is BLE_ADDR_TYPE_RANDOM, while it should be BLE_ADDR_TYPE_RPA_PUBLIC. It seems to be a but in ESP32, because I tried doing the same thing using two TI BLE chips, and it's working as expected: the central TI chip can see adv from the other TI chip, while address type being RPA.
case ESP_GAP_BLE_SCAN_RESULT_EVT: {
esp_ble_gap_cb_param_t *scan_result = (esp_ble_gap_cb_param_t *)param;
switch (scan_result->scan_rst.search_evt) {
case ESP_GAP_SEARCH_INQ_RES_EVT:
scan_result->scan_rst.ble_addr_type is BLE_ADDR_TYPE_RANDOM
scan_result->scan_rst.ble_evt_type is ESP_BLE_EVT_CONN_DIR_ADV
2. If I do esp_ble_gap_config_local_privacy(true), ESP32 uses random address to scan. I want the other chip to do directed adv when reconnecting. How do I make directed adv targeting a random address since it changes? I know it doesn't change all the time, but if the BLE chip runs out of power for several days and ESP32 reboots, how will directed adv work?
So I'm doing esp_ble_gap_config_local_privacy(false) but I'm not sure if it's the right thing to do.
thanks
Malcolm
Scanned RPA device showing address type being BLE_ADDR_TYPE_RANDOM
Re: Scanned RPA device showing address type being BLE_ADDR_TYPE_RANDOM
1. This is great explanation how it works in esp-idf:
https://github.com/espressif/esp-idf/issues/2559
2. Directed advertising can only work if 2 peer device are bonded and exchange IRK key. From bluetooth specs:
If you have any further questions i will assist.
https://github.com/espressif/esp-idf/issues/2559
2. Directed advertising can only work if 2 peer device are bonded and exchange IRK key. From bluetooth specs:
When peer devices exchange key then it does not matter how often esp32 will change address as long as it will use resolvable private address. In esp32 this can be achieved with:To generate a resolvable private address, the device must have either the
Local Identity Resolving Key (IRK) or the Peer Identity Resolving Key (IRK).
The resolvable private address shall be generated with the IRK and a randomly
generated 24-bit number
Code: Select all
esp_ble_gap_config_local_privacy(true);
// and
.own_addr_type = BLE_ADDR_TYPE_RPA_PUBLIC or BLE_ADDR_TYPE_RPA_RANDOM
Re: Scanned RPA device showing address type being BLE_ADDR_TYPE_RANDOM
@chegawara, what is the usage difference between BLE_ADDR_TYPE_RPA_PUBLIC vs BLE_ADDR_TYPE_RPA_RANDOM? If I use BLE_ADDR_TYPE_RPA_RANDOM, do I need to call esp_ble_gap_set_rand_addr(random_static_addr)? Will the IRK get changed every time I change random_static_addr value?
Who is online
Users browsing this forum: Baoshi and 108 guests