Pairing specific pairs among many

Hello, we're trying to make products using BLE with nRF52840(central) and nRF52833(peripheral).

We did make custom boards and also made a program that once paired(bonded), it won't connect with others.

(eg, once nRF52840 and nRF52833 is paired, it will not connect with others)

We were wondering is there a way to make specific central connect with specific peripheral?

Is there a way to make each central/peripheral unique so that pairing process can be done without interference?

We got concerned that wrongly paired(or bonded) devices might ship out.

At our current stage, pairing wrong central/peripheral is possible.

Other infos.

nRF52840-central has 2 buttons, while nRF52833-peripheral has none

We're using SDK 17.1.0 S140 Segger Studio

has NUS(communication) and BAS(battery check) BLE services

thanks

edit:

extra question: is there a way to write certain unique number/MAC address on flash during flash write and then read it during application?

How do I know which address of flash is used or not?(want to avoid  collision with bonded info)

Is there a download tool beside nRF Connect Programmer?

Parents
  • Hi,

    We did make custom boards and also made a program that once paired(bonded), it won't connect with others.

    (eg, once nRF52840 and nRF52833 is paired, it will not connect with others)

    This sounds like what you normally achieves with whitelisting. I assume that is what you are using?

    We were wondering is there a way to make specific central connect with specific peripheral?

    If they are already bonded/paired, whitelisting is what you typically use here. That can be used on both the peripheral side and central side. With that, the device will only connect with a peer that has a specific BLE address (either static or derived from a IRK).

    Is there a way to make each central/peripheral unique so that pairing process can be done without interference?

    If you want to do this without any user interaction and want it to be secure, then it is difficult. But if it is just for convenience, then you could base this on BLE address. Or you could for instance use a unique number in for instance the name of the device and include that in the advertising packets, and have the central search only for a device with a specific name including a unique number.

    extra question: is there a way to write certain unique number/MAC address on flash during flash write and then read it during application?

    Yes.

    How do I know which address of flash is used or not?(want to avoid  collision with bonded info)

    If it is just a serial number of address or similar, then the most natural is to put this in UICR. Then it does not conflict with anything else as long as you stay away from the reserved parts. See UICR chapter in  PS for details. Then you can read this like any other part of the flash/memory. If you need to store a lot of data or need to be able to update the data, you need to do this differently. That does not seem to be the case here, though(?).

Reply
  • Hi,

    We did make custom boards and also made a program that once paired(bonded), it won't connect with others.

    (eg, once nRF52840 and nRF52833 is paired, it will not connect with others)

    This sounds like what you normally achieves with whitelisting. I assume that is what you are using?

    We were wondering is there a way to make specific central connect with specific peripheral?

    If they are already bonded/paired, whitelisting is what you typically use here. That can be used on both the peripheral side and central side. With that, the device will only connect with a peer that has a specific BLE address (either static or derived from a IRK).

    Is there a way to make each central/peripheral unique so that pairing process can be done without interference?

    If you want to do this without any user interaction and want it to be secure, then it is difficult. But if it is just for convenience, then you could base this on BLE address. Or you could for instance use a unique number in for instance the name of the device and include that in the advertising packets, and have the central search only for a device with a specific name including a unique number.

    extra question: is there a way to write certain unique number/MAC address on flash during flash write and then read it during application?

    Yes.

    How do I know which address of flash is used or not?(want to avoid  collision with bonded info)

    If it is just a serial number of address or similar, then the most natural is to put this in UICR. Then it does not conflict with anything else as long as you stay away from the reserved parts. See UICR chapter in  PS for details. Then you can read this like any other part of the flash/memory. If you need to store a lot of data or need to be able to update the data, you need to do this differently. That does not seem to be the case here, though(?).

Children
No Data
Related