nRF54L15 CS Reflector – Unable to Support Multiple Concurrent BLE Connections with GATT and Channel Sounding

I am  developing a Bluetooth Low Energy (BLE) application based on Channel Sounding (CS) using the nRF Connect SDK v3.0.2 on ME54BS01 modules from Minew Semiconductor (powered by the nRF54L15). The setup involves one device acting as a CS Reflector, advertising a custom GATT service with notifications and participating in CS procedures, while multiple initiators (also ME54BS01-based) attempt to connect concurrently to perform CS measurements and receive environmental sensor data. The reflector is configured with CONFIG_BT_MAX_CONN=4 and CONFIG_BT_MAX_PAIRED=4, and advertises both connectable and non-connectable extended advertisements. Each initiator performs GATT discovery, subscribes to notifications, and initiates CS exchanges. However, only one initiator can connect to the reflector at a time—subsequent initiators fail to establish a connection (e.g., with error 0x02 or -128), despite no hardware faults. The issue is symmetrical: whichever initiator connects first succeeds, the others fail. All devices use random addresses, bonding is disabled, and GATT client support is enabled. My goal is to enable multiple concurrent GATT + CS connections to a single reflector device. I am seeking clarification on whether the SoftDevice Controller for nRF54L15 currently supports multiple concurrent CS-enabled peripheral connections and whether additional controller configurations (such as CONFIG_BT_CTLR_SDC_MAX_CONN) or changes in the CS stack are required to enable this functionality reliably.Also if anyone has some similar project that is working i would appreciate the help 

Parents
  • Hi,

    Multiple CS connections shoudl be possible, but by default it is limited to 1. You need to increase CONFIG_BT_CTLR_SDC_CS_COUNT (as well as CONFIG_BT_MAX_CONN which you have allready done)

  • I added this to my set up but i keep getting the same error in the initiator 
    I: Filters matched. Address: F0:D4:FF:C2:89:D0 (random) connectable: 1
    I: Connecting
    W: Connection creation timeout triggered
    I: Connected to F0:D4:FF:C2:89:D0 (random) (err 0x02)
    E: Failed to encrypt connection (err -128)

  • Hi,

    I see. The first error here is from the connection callback, with 0x02 which is BT_HCI_ERR_UNKNOWN_CONN_ID (which I assume is related to the timeout on the line before). As you have hadded support for multi connections to the same perhaps there is a mixup where you do not handle multiple connections properly (re-using a connection reference perhaps)? If you do not make progress, can you share your change so I can see more precisely what you have done?

  • I cant get the second one to connect . I am stuck at this security problem . This is my set up 
    Environment:

    • nRF Connect SDK: v3.0.2-89ba1294ac9b

    • Zephyr OS: v4.0.99-f791c49f492c

    • Hardware: Nordic nRF54Lx

    • SoftDevice Controller: Version 137.20634 (HCI v6.0)

    • Build Config:

      • CONFIG_BT_CTLR_SDC_CS_COUNT = 4

      • CONFIG_BT_MAX_CONN = 4


    Code Structure:

    • Advertising:

      • Connectable extended advertising (adv_conn) with custom CS service UUID and device name.

      • Non-connectable data advertising (adv_data) broadcasting a static “HelloBLE” payload.

    • Connection Management:

      • Array connections[MAX_CONN] tracks up to four peers.

      • connected_cb() adds new bt_conn*, applies Channel Sounding default settings, and restarts advertising if slots remain.

      • disconnected_cb() removes bt_conn* and restarts advertising.

    • GATT Service:

      • Single primary service with one characteristic (Read + Notify) exposing a mutable hello_msg.

    • Main Loop:

      • On each second, reads BME280 sensor, updates hello_msg, and notifies all connected peers.


    Setup:

    1. Reflector board runs above code.

    2. Initiators (up to 4) configured to request Security Level 2.


    Problem Description:

    • First Initiator:

      • Scans, connects, pairs successfully at Security Level 2.

      • Receives notifications as expected.

    • Second Initiator:

      • Scans and connects successfully.

      • Pairing fails with log:

        ruby
        ΑντιγραφήΕπεξεργασία
        E: pairing failed (peer reason 0x8) E: Security failed: F0:D4:FF:C2:89:D0 (random) level 1 err 9
      • Negotiated Security Level is 1 instead of 2, causing failure.

  • Hi,

    I see.

    Can you share the full log?

    Security error 9 is BT_SECURITY_ERR_UNSPECIFIED, so it is difficult from this to say what causes it. Perhaps the simplest is to set a breakpoint everywhere in the code where it is returned (that is just a handfull of places, and check the stack trace so learn more precisely where it came from and from that why?

Reply Children
No Data
Related