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

Unable to Receive Directed Advertisements

For some reason I'm not able to receive directed advertisements on the nRF51 development kit. I verified my nRF51 peripheral is sending the direct advertisement packets using the Sniffer tool, but the I don't see any BLE_GAP_EVT_ADV_REPORTS being generated on the central while its scanning.

The central does however see the advertisements if I configure them on the peripheral as connectable undirected.

I'm using SDK 10.0.0 for the peripheral and Windows BLE Driver 0.5.0 for the Central.

Thanks

  • Currently I have the address of the Central, 0xDE05F038D922, hard-coded in the Peripheral:

    gap_addr->addr_type = 1;
    gap_addr->addr[0] = 0x22;
    gap_addr->addr[1] = 0xD9;
    gap_addr->addr[2] = 0x38;
    gap_addr->addr[3] = 0xF0;
    gap_addr->addr[4] = 0x05;
    gap_addr->addr[5] = 0xDE;
    

    And I acquired the Central address using the sd_ble_gap_address_get API in the Central and dumping it to the console output:

    [0]=22 [1]=D9 [2]=38 [3]=F0 [4]=05 [5]=DE type=1
    

    Again I verified the address is being sent over the air in the direct advertisement packet by using the sniffer tool.

  • Strange. It should work. How are you checking the if you are receiving directed advertising events?

  • I assume the directed advertisements are not being received because I don't see the ADV REPORT events in the serial log messages.

    Is there a way to turn on some kind of logging in SoftDevice stack?

  • I see. Then I'm out of ideas. No, there is not any logging in the SoftDevice. Could you edit the question and attach:

    The complete peripheral application project (Which SoftDevice are you using?)

    The modified heart rate collector code. (Which hex file have you flashe the dongle with?)

    Then I can try and test you code here.

  • I wanted to add that I am experiencing the exact same issue, and provide more detail on my scenario.

    Using:

    • nRF51822 on both sides
    • SDK 10.0
    • SD1.10 8.0.0 on peripheral side
    • SD1.20 2.1.0 on central side
    • both central and peripheral use consistent type 1 (random, static) addresses obtained with sd_ble_gap_address_get()

    Code was based on SDK10 examples for heart rate monitor. As long as peripheral uses non-directed advertising, central quickly sees its advertisements and can connect to it. If directed (fast or slow) advertising is used, the advertisements are never seen (i.e. no BLE_GAP_EVT_ADV_REPORT received).

    I've confirmed using Master Control Panel 3.10 that the peripheral is seen sending directed or non-directed advertisements fine.

    Let me know if you have any other ideas, or if there's anything else I can provide. Thanks.

Related