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
  • June20 said:
    I didn't really used any FDS, is it from SoftDevice?

    No, the SoftDevice does not use FDS (or persistent flash storage of any kind). However, the peer manager, which is responsible for pairing and bonding use FDS to store bonds. So if you are using the peer manager, you are using FDS. The number of FDS pages are configured in sdk_config.h (default in moste examples are 3, and absolute minimum is 2).

    June20 said:
    Since BLE central can use filter, is there a way for peripheral to filter scanners (by ble address/name/etc.)?

    For peripherals it is a bit different, as it is the central that connects. However, whitelisting is also a concept on the peripheral side. If you advertise with whitelist, only peers that are in the whitelist are allowed to connect. Connections from other centrals are automatically dropped by the stack. This only allows you to filter on address, though. If you need to filter on something else (like name), then you must allow it to connect, read whatever information you want to check, and disconnect if that does not match your criteria.

Reply
  • June20 said:
    I didn't really used any FDS, is it from SoftDevice?

    No, the SoftDevice does not use FDS (or persistent flash storage of any kind). However, the peer manager, which is responsible for pairing and bonding use FDS to store bonds. So if you are using the peer manager, you are using FDS. The number of FDS pages are configured in sdk_config.h (default in moste examples are 3, and absolute minimum is 2).

    June20 said:
    Since BLE central can use filter, is there a way for peripheral to filter scanners (by ble address/name/etc.)?

    For peripherals it is a bit different, as it is the central that connects. However, whitelisting is also a concept on the peripheral side. If you advertise with whitelist, only peers that are in the whitelist are allowed to connect. Connections from other centrals are automatically dropped by the stack. This only allows you to filter on address, though. If you need to filter on something else (like name), then you must allow it to connect, read whatever information you want to check, and disconnect if that does not match your criteria.

Children
No Data
Related