Random RSSI value drops of the received BLE advertising packets
Posted: Thu Apr 20, 2023 8:08 am
Hello.
I have a ESP32-C3 module and it's programmed with an app that continuously scans for BLE advertising packets using NimBLE Host (ESP-IDF 5.0.1). Whenever advertising packet is received, an event of type BLE_GAP_EVENT_EXT_DISC (extended advertising is enabled) is raised and in the data of that event a RSSI can be retrieved:
The problem is that this value periodically drops to the level of around -80 dBm. Charts are present for two different advertiser devices.
Maybe it's related to something like Wi-fi transmissions or other interferences, but this RSSI drop look suspicious and artificial. Even if I bring two devices very close to each other, so the scanner device would report maximum possible rssi (which is only -8 dBm for some reason), the drops are still there and again rssi value frops to the level of around -80 dBm! Here's the image:
If it were 'real' signal level drop, it wouldn't go down to -80 dB both from -45 dBm and -8 dBm.
I tried scanning with the different BLE modules from different manufacturers and didn't observe any drops. I also scanned with my Android phone and nRFConnect app and there were no drops either.
I tried changing scanning parameters (scan interval, scan window), changing various Bluetooth Controller options in menuconfig, but the result is still the same.
Code for initiaing scanning:
Any thoughts?
Thank you.
I have a ESP32-C3 module and it's programmed with an app that continuously scans for BLE advertising packets using NimBLE Host (ESP-IDF 5.0.1). Whenever advertising packet is received, an event of type BLE_GAP_EVENT_EXT_DISC (extended advertising is enabled) is raised and in the data of that event a RSSI can be retrieved:
Code: Select all
event->ext_disc.rssi
I tried scanning with the different BLE modules from different manufacturers and didn't observe any drops. I also scanned with my Android phone and nRFConnect app and there were no drops either.
I tried changing scanning parameters (scan interval, scan window), changing various Bluetooth Controller options in menuconfig, but the result is still the same.
Code for initiaing scanning:
Code: Select all
int rc;
struct ble_gap_disc_params disc_params = {
.itvl = 1600,
.window = 1600,
.filter_policy = BLE_HCI_SCAN_FILT_NO_WL,
.limited = 0,
.passive = 1,
.filter_duplicates = 0
};
rc = ble_gap_disc(BLE_OWN_ADDR_PUBLIC, BLE_HS_FOREVER, &disc_params,
nimble_gap_event, NULL);
Thank you.