nRF54L15 : cannot bond one PC to multiple identities simultaneously

Hi everyone! I've recently run into some issues with Bluetooth development, and I'd really appreciate your kind help.

1. Hardware & SDK
- SoC: nRF54L15
- SDK: nRF Connect SDK 3.0.2 (Zephyr 4.0.99)
- Controller: SoftDevice Controller 

---

2. Goal:
Allow **one Windows PC** to bond with **three local identities (0/1/2)** and keep all three bonds, so the user can switch between channels instantly.

---

3. Verified workflow:
1. Boot → `bt_id_create()` → identities 0, 1, 2 with unique IRKs but **identical public MAC**.
2. Pair identity 0 with PC – success, bond stored.
3. Switch to identity 1 (`adv_param.id = 1`) – PC shows pairing dialog.
4. Enter passkey → **warning appears**:

```
W: Refusing new pairing. The old bond must be unpaired first.
W: SMP does not allow a pairing failure at this point. Disconnecting instead.
```

Connection drops (reason 0x16).
5. Switch back to identity 0 → PC tries to reconnect with old LTK, but bond has been **erased by SoftDevice**, so endless disconnects (reason 0x13).

---

4. Tried & failed fixes
| Config | Result |
|------------------------------------------------------------------------|----------------------------------------------------------------------|
| `CONFIG_BT_ID_UNPAIR_MATCHING_BONDS=n`  | Zephyr no longer calls `bt_unpair()`, but **SoftDevice still rejects pairing on another identity**. |
| Dynamic name/appearance (“pseudo-multidevice”)     | Works only within one identity; **cannot bind different PCs to different identities**.                    |

---

5. Current conclusion:
- **SoftDevice limitation**: one remote LE address can bond with **only one local identity** at a time.
- No documented Kconfig or NVS flag to override this.

---

6. Questions:
1. Is there any **undocumented switch or NVS setting** in SoftDevice to allow bonding the same remote address to multiple identities?
2. If the limitation is permanent, what is Nordic’s **recommended practice** for seamless multi-PC switching?

---
7.Addendum – “multi-PC” is already possible
Bonding three distinct PCs (one per identity) works out of the box; the limitation described above only applies when the same PC attempts to bond with multiple identities on the same mouse.

Thanks!
Ozzy

Parents
  • Hello,

    ''1. Is there any **undocumented switch or NVS setting** in SoftDevice to allow bonding the same remote address to multiple identities?''

    I think your observation is consistent with the current design and the limitation of the Softdevice Controller. You can read this changelog nRF Connect SDK v3.1.0 Release Notes which confirms that while you have bond multiple remote devices with to different local identities ( Peripheral), the soft device doesn't not support multiple bonds from the same remote address to different local identities at the same time.

    It only allows the application to swap matching bonds but does not allow multiple bonds from the same remote address to the different local identities at the same time.

    The option allows the application to automatically swap matching bonds when the local Bluetooth identity changes. Due to this change, the nRF Desktop application no longer requires the CONFIG_BT_ID_UNPAIR_MATCHING_BONDS Kconfig option to be enabled. Removing it enables the possibility for bonding with the same HID host on multiple Bluetooth local identities for all nRF Desktop peripherals.

    2. If the limitation is permanent, what is Nordic’s **recommended practice** for seamless multi-PC switching?

    You can look at this application Bluetooth: Peripheral with multiple identities

    For seamless multi-PC switching you can:

    1. Assign each PC to a unique local identity.

    2. Can follow  nRF Desktop: Local identities to do the peer selection mechanism (as in nRF Desktop) to switch between identities, disconnecting from one and advertising with another.

     

Reply
  • Hello,

    ''1. Is there any **undocumented switch or NVS setting** in SoftDevice to allow bonding the same remote address to multiple identities?''

    I think your observation is consistent with the current design and the limitation of the Softdevice Controller. You can read this changelog nRF Connect SDK v3.1.0 Release Notes which confirms that while you have bond multiple remote devices with to different local identities ( Peripheral), the soft device doesn't not support multiple bonds from the same remote address to different local identities at the same time.

    It only allows the application to swap matching bonds but does not allow multiple bonds from the same remote address to the different local identities at the same time.

    The option allows the application to automatically swap matching bonds when the local Bluetooth identity changes. Due to this change, the nRF Desktop application no longer requires the CONFIG_BT_ID_UNPAIR_MATCHING_BONDS Kconfig option to be enabled. Removing it enables the possibility for bonding with the same HID host on multiple Bluetooth local identities for all nRF Desktop peripherals.

    2. If the limitation is permanent, what is Nordic’s **recommended practice** for seamless multi-PC switching?

    You can look at this application Bluetooth: Peripheral with multiple identities

    For seamless multi-PC switching you can:

    1. Assign each PC to a unique local identity.

    2. Can follow  nRF Desktop: Local identities to do the peer selection mechanism (as in nRF Desktop) to switch between identities, disconnecting from one and advertising with another.

     

Children
  • Hi,

    1. Regarding the statement “Assign each PC to a unique local identity”:
    Does this imply that one and only one PC can ever be bonded to a single identity (IRK / address) stored in the chip?
    I am designing a Bluetooth mouse that should be able to pair with *multiple* PCs. Could you share any recommended bonding / re-bonding strategies or reference examples?

    ---

     I have observed the following behavior with the current SDK:

    - Device powers up and initializes.
    - It bonds / pairs successfully with PC1 using identity 0.
    - I call `bt_unpair(0, NULL);` to delete the bond.
    - I start advertising again, but the chip immediately reconnects to PC1, then disconnects, and this cycle repeats.
    - Only after I manually remove the device from Windows’ Bluetooth settings does the cycle stop; from that point on the device can accept new pairings as expected.

    Is this the intended behavior? 

    Thanks!

  • Hello,

    As it is mentioned before that youu cannot bond a single PC to multiple identities simultaneously, but you can bond multiple PCs to different identities, and switch between them. The repeated reconnect/disconnect cycle after unpairing is expected unless the bond is also removed from the host side.  

    So what you can do:

    1. Using multiple local identities, one per PC and switch between them as needed.

    2. When unpairing, inform the user that they must also remove the device from the host's bluetooth settings to avoid repeated connection attempts.

    3. Optionally

    1. Use multiple local identities, one per PC, and switch between them as needed.
    2. When unpairing, inform the user that they must also remove the device from the host’s Bluetooth settings to avoid repeated connection attempts.
    3. Optionally, if possible you can do filter accpet list https://academy.nordicsemi.com/courses/bluetooth-low-energy-fundamentals/lessons/lesson-5-bluetooth-le-security-fundamentals/topic/blefund-lesson-5-exercise-2/  to control which hosts can connect after a bond is deleted, to prevent unwanted reconnections from hosts with stale bond information. 
  • Hi,
    Thank you for your help—I believe I've found a solution to the issue.
    Thanks again!
    Ozzy

Related