This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

What happens when Bluetooth SoftDevice is scanning and collision takes place. [SDK16, SD140 v7.0.1]

I am scanning for advertisements and in scan_evt_handler() in the case NRF_BLE_SCAN_EVT_NOT_FOUND, I am printing the packet received using  NRF_LOG_INFO().

I have also implemented a UUID filter and Softdevice does filters the relevant UUIDs.

There are two observations,

1. Beacon transmitting UUID @100ms is not always filtered by the SoftDevice S140. [1 out of 4 is filtered by SD and NRF_BLE_SCAN_EVT_FILTER_MATCH case processed]

2. In the case NRF_BLE_SCAN_EVT_NOT_FOUND while printing the packet using p_adv_report->data.p_data, Incomplete UUID is seen

Base UUID: adf400013db14f7abb04382f31288809

Print seen: 0201061aff4c000215adf400013db14f7abb04382f310000000001

What could be the cause? Is it due to collision?

Thank you,

MO

Parents
  • Could you try the following:

    • Open the nRF Connect app for mobile and check the UUID there. Is it equal to the Base UUID?
    • In the start of nrf_ble_scan_on_adv_report, could you try to store p_adv_report->data.p_data in a variable (not the pointer, but the actual value) and check the value of UUID
    • You could also try to sniff the BLE data to see what is actually being sent. The nRF Sniffer could be used along with an nRF5x DK or dongle

    Best regards,

    Simon

Reply
  • Could you try the following:

    • Open the nRF Connect app for mobile and check the UUID there. Is it equal to the Base UUID?
    • In the start of nrf_ble_scan_on_adv_report, could you try to store p_adv_report->data.p_data in a variable (not the pointer, but the actual value) and check the value of UUID
    • You could also try to sniff the BLE data to see what is actually being sent. The nRF Sniffer could be used along with an nRF5x DK or dongle

    Best regards,

    Simon

Children
  • Thank you for your suggestions. Please find my comments below,

    • Open the nRF Connect app for mobile and check the UUID there. Is it equal to the Base UUID?
      • Using the nRF Connect app for mobile I did see UUID is equal to Base UUID. But this is not the problem. I am also able to see base UUID in my code as well (not always according to beacon advertising interval). I don't know what the app does for incomplete adv packets

    • In the start of nrf_ble_scan_on_adv_report, could you try to store p_adv_report->data.p_data in a variable (not the pointer, but the actual value) and check the value of UUID
      • Yes right at the beginning of nrf_ble_scan_on_adv_report I did check the data with the help of break point and memory view. The problem was the same.

    • You could also try to sniff the BLE data to see what is actually being sent. The nRF Sniffer could be used along with an nRF5x DK or dongle
      • I dont have them both available at the moment.
  • Okay, I don't understand how this might occur, could you upload your sample, then I can try to reproduce your behavior and figure out what may cause this. I can make the ticket private if you would like to.

    Best regards,

    Simon

Related