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

[Whitelist for S120] Dropping Beacons or peripherals without bonding

Hi, I'm using

  • IAR EWARM 7.20

  • PCA10001 V 2.0.0 (Changed the MCU to QFAAH00 Revision 3)

(I replaced the MCU to a QFAAH00 (0x0072) with a heat gun)

  • SDK 10.0

  • SoftDevice S120 2.1

  • J-Link Edu

/**********************************************************************/

As the ble_app_hrs_c example shows, it uses whitelist at scan_start function.

The IRK and address count won't increment before bonding with a peripheral.

I was wondering 2 cases.

/**********************************************************************/

Case 1:

Suppose I have a peripheral that uses the following:

"ble_app_hids_keyboard" example from SDK 10.0
SoftDevice S110 8.0
nRF51822 Revision 3 Chip

using a central that uses ble_app_hrs_c, it will store the IRK and the address of the

keyboard peripheral after bonding with each other. (I'm meaning the public address.)

addr

But I want a scenario like this:

The central stores the keyboard peripheral's IRK and public address without bonding together.

I want to see keyboard peripheral's IRK and address (I'm not sure there's a way for this)

and type them at a terminal program to send the data to the central via UART.

In short, I want to send peripherals' IRK and address via UART to the central before bonding.

Is this possible?

Case 2:

In this case, I'm curious whether beacons (iBeacon and EddyStone Beacon) can be filtered.

To be sure, beacons cannot be bonded with centrals and

it has values to distinguish each others (such as Major Minor values and Eddystone-UID's instance).

I'm curious that before using these values, is it possible to filter out beacons using whitelist?

-Best Regards, Mango

Parents Reply Children
  • Thanks for your reply.

    1. If I use sd_ble_opt_get, it shows a which of the following address;

    public address (MAC Address) / static random address / Random resolvable address ?

    2-1) In case one, I used a peripheral using nRF51822. Is there a function that can get the

    IRK value from the peripheral?

    2-2) If I use smart phones (iPhone or Nexus 5, etc) as peripherals, is there a way to get the the IRK

    and the address of the phone? As far as I know, iOS devices uses resolvable random address.

    1. I'm worried about the timing between changing the central's address and sending scan request from central.

    Suppose there's a central scanning for beacons that has the same UUID.

    I want to make the scanner to change its ScanA field for each beacons by checking the major & minor values.

    For instance, if a beacon has 0x0100 and 0x0200 for its major and minor value, the scanner changes the address using sd_ble_gap_address_set(BLE_GAP_ADDR_CYCLE_MODE_NONE, &addr);.

    // Suppose this address value is 99 AA BB CC EE FF in hexa.
    // I know static private address has to fix two MSBs to 11 but let's ignore this.
    

    Frankly, other beacons are advertising simultaneous and their major and minor values are different. In this case I want to change the address to other values. However, I'm worried that the central will reply with the above address before I change it. Can this be controlled?

    1. IRK, not address. But this is not useful unless you use a random resolvable address.
      2-1) sd_ble_opt_get. But if you are a central and want to know the IRK of a peripheral you have to connect and bond. 2-2) Yes, you have to bond.
    2. I doubt you will be able to change the device address between receiving the ad packet, before the scan request.
  • @run_ar Thanks for the reply. About 2-2,

    I was meaning, without connecting each other (peripheral and central),

    can the Nordic SDK, iOS CoreBluetooth, or Android SDK provides function or API

    to get the centrals' IRK?

    For instance, I have iPhone 6 Plus (iOS 9.2.1).

    Without connecting with a peripheral that uses nRF51822, can the iPhone

    inquiry its IRK?

Related