I am developing an indoor positioning system using Bluetooth Channel Sounding (CS) on nRF Connect SDK v3.1.1. My setup involves one Initiator and four Reflectors.
Implementation Detail: To achieve real-time positioning, I have implemented a one-to-many architecture where the Initiator maintains four concurrent ACL connections simultaneously, performing CS procedures with each Reflector.
The Problem: In this concurrent 1-to-4 setup, I observe a high frequency of NaN values for IFFT and PBR results as soon as the distance exceeds 3 meters. However, using the official one-to-one CS sample from Nordic's GitHub on the same hardware, I can achieve stable and accurate ranging beyond 10 meters.
Observations on Antenna & Orientation: I have attempted to manually align the PCB antennas of the nRF54L15 DKs. While this slightly mitigates the issue, it does not solve the underlying problem. In our target application, the Initiator is mobile, making manual orientation adjustment impossible.
Technical Data: I am currently logging the phase difference and ToF (Time of Flight) for each channel to analyze why the PBR/RTT engine is failing to converge in this concurrent environment.
Questions:
-
Does maintaining four concurrent CS-enabled connections impose specific constraints on radio scheduling that could lead to incomplete IQ sampling or IFFT failures (NaN) at relatively short distances?
-
Are there recommended
subevent_len,subevent_interval, orevent_intervalsettings specifically optimized for multi-link concurrent CS to avoid radio resource contention? -
How does the CS engine handle Link Layer priority when multiple CS procedures overlap in the time domain? Could this be the reason why the performance is significantly worse than the 1-to-1 sample?
-
Are there any best practices for improving signal robustness in a multi-reflector environment where antenna polarization and multipath cannot be controlled?
For further reference, I’ve included thehci_ipcfolder and the project’sprj.conf. The attached image displays the specific CS configuration settings used inmain.c."

prj_hci_ipc.conf87253.prj.conf