nRF54L15 channel sounding abnormal

Device: nRF54L15 x 2, face to face

SDK: v3.2.2

Toolchain v3.2.2 c717907b94

Sample code (with default setting):

channel_sounding_ras_reflector

channel_sounding_ras_initiator

Issue:

rtt is always 0 no matter how far between them

Both ifft and phase_slope are wrong, devices distance is around 15, but it output 0.69 meters

============================================

Log:

Initiator:

*** Booting nRF Connect SDK v3.2.2-74845e169be2 ***
*** Using Zephyr OS v4.2.99-fe4f0106803e ***
I: Starting Channel Sounding Initiator Sample
I: SoftDevice Controller build revision:
I: 90 3d 6a f1 a5 ad 64 1d |.=j...d.
I: cd 27 3e bf fc 68 0f 40 |.'>..h.@
I: 40 99 ca ac |@...
I: HW Platform: Nordic Semiconductor (0x0002)
I: HW Variant: nRF54Lx (0x0005)
I: Firmware: Standard Bluetooth controller (0x00) Version 144.27197 Build 1689101809
I: HCI transport: SDC
I: Identity: CA:85:78:3B:4D:82 (random)
I: HCI: version 6.2 (0x10) revision 0x305e, manufacturer 0x0059
I: LMP: version 6.2 (0x10) subver 0x305e
I: Filters matched. Address: DA:F7:8C:35:A5:10 (random) connectable: 1
I: Connecting
I: Connected to DA:F7:8C:35:A5:10 (random) (err 0x00)
I: Security changed: DA:F7:8C:35:A5:10 (random) level 2
I: MTU exchange success (498)
I: The discovery procedure succeeded
I: Read RAS feature bits: 0x1
I: CS capability exchange completed.
I: CS config creation complete.
- id: 0
- mode: Invalid
- min_main_mode_steps: 2
- max_main_mode_steps: 5
- main_mode_repetition: 0
- mode_0_steps: 3
- role: Initiator
- rtt_type: AA only
- cs_sync_phy: LE 1M PHY
- channel_map_repetition: 1
- channel_selection_type: Algorithm #3b
- ch3c_shape: Hat shape
- ch3c_jump: 2
- t_ip1_time_us: 30
- t_ip2_time_us: 20
- t_fcs_time_us: 60
- t_pm_time_us: 10
- channel_map: 0x1FFFFFFFFFFFFC7FFFFC

I: CS security enabled.
I: CS procedures enabled:
- config ID: 0
- antenna configuration index: 0
- TX power: 0 dbm
- subevent length: 16000 us
- subevents per event: 1
- subevent interval: 0
- event interval: 2
- procedure interval: 5
- procedure count: 0
- maximum procedure length: 1000
I: Latest distance estimates on antenna path 0: ifft: 0.64, phase_slope: 0.69, rtt: 0.00 meters
I: Latest distance estimates on antenna path 0: ifft: 0.64, phase_slope: 0.69, rtt: 0.00 meters
I: Latest distance estimates on antenna path 0: ifft: 0.64, phase_slope: 0.69, rtt: 0.00 meters
I: Latest distance estimates on antenna path 0: ifft: 0.64, phase_slope: 0.69, rtt: 0.00 meters
I: Latest distance estimates on antenna path 0: ifft: 0.64, phase_slope: 0.68, rtt: 0.00 meters
I: Latest distance estimates on antenna path 0: ifft: 0.64, phase_slope: 0.69, rtt: 0.00 meters

Reflector:

*** Booting nRF Connect SDK v3.2.2-74845e169be2 ***
*** Using Zephyr OS v4.2.99-fe4f0106803e ***
I: Starting Channel Sounding Reflector Sample
I: SoftDevice Controller build revision:
I: 90 3d 6a f1 a5 ad 64 1d |.=j...d.
I: cd 27 3e bf fc 68 0f 40 |.'>..h.@
I: 40 99 ca ac |@...
I: HW Platform: Nordic Semiconductor (0x0002)
I: HW Variant: nRF54Lx (0x0005)
I: Firmware: Standard Bluetooth controller (0x00) Version 144.27197 Build 1689101809
I: HCI transport: SDC
I: Identity: DA:F7:8C:35:A5:10 (random)
I: HCI: version 6.2 (0x10) revision 0x305e, manufacturer 0x0059
I: LMP: version 6.2 (0x10) subver 0x305e
I: Connected to CA:85:78:3B:4D:82 (random) (err 0x00)
I: CS capability exchange completed.
I: CS config creation complete.
- id: 0
- mode: Invalid
- min_main_mode_steps: 2
- max_main_mode_steps: 5
- main_mode_repetition: 0
- mode_0_steps: 3
- role: Reflector
- rtt_type: AA only
- cs_sync_phy: LE 1M PHY
- channel_map_repetition: 1
- channel_selection_type: Algorithm #3b
- ch3c_shape: Hat shape
- ch3c_jump: 0
- t_ip1_time_us: 30
- t_ip2_time_us: 20
- t_fcs_time_us: 60
- t_pm_time_us: 10
- channel_map: 0x1FFFFFFFFFFFFC7FFFFC

I: CS security enabled.
I: CS procedures enabled:
- config ID: 0
- antenna configuration index: 0
- TX power: 0 dbm
- subevent length: 16000 us
- subevents per event: 1
- subevent interval: 0
- event interval: 2
- procedure interval: 5
- procedure count: 0
- maximum procedure length: 1000

Parents
  • Hello,

    I just wanted to let you know that I am looking into your question, but I don't yet have a conclusion.

    I have seen something similar before, but I thought it was an issue with an old DK, because it was only when I used a specific DK. However, when testing this application, it worked fine between my two DKs, but I tried a few others (all v1.0.0), and between two particular DKs, this issue occured. That means that if I have 3 DKs, A, B and C, I see the issue between B <=> C, but both A <=> B and A <=>C works fine. 

    Do you see the same? Do you have any more DKs to test with?

    Best regards,

    Edvin

  • Hello,

    So we found it. The reason it says 0 between some particular DKs is because the measurements gives a negative number (RTT is very inaccurate). There is a check in the calculations that checks whether the number is negative, and converts it to 0 if it is. If you want to see the numbers, even though it is negavive, you need to do two modifications in the cs_de.c's function calculate_rtt_dist():

    static void calculate_dist_rtt(cs_de_report_t *p_report)
    {
    	if (p_report->rtt_count > 0) {
    		float rtt_avg_measured_ns =
    			(p_report->rtt_accumulated_half_ns * 0.5f) / p_report->rtt_count;
    		float tof_ns = rtt_avg_measured_ns / 2.0f;
    		//float rtt_distance_m = fmaxf(tof_ns * (SPEED_OF_LIGHT_M_PER_S / 1e9f), 0.0f);
    		float rtt_distance_m = tof_ns * (SPEED_OF_LIGHT_M_PER_S / 1e9f);
    
    		for (uint8_t ap = 0; ap < p_report->n_ap; ap++) {
    			//if (rtt_distance_m >= 0.0f) {
    				p_report->distance_estimates[ap].rtt = rtt_distance_m;
    			//}
    		}
    	}
    }

    The changes I did was that I commented out line 7, 11, 13, and added line 8. Now it prints the numbers, which in my case is around -2.0m. This is within the expected accuracy of +-5.0m for rtt.

    Best regards,

    Edvin

  • I purchased these two boards from Mouser Electronics two weeks ago, and I do not have any other DKs.
    The labels on these two DKs are: PCA10156 1.0.0 2025.46 10577XXXXX.
    Could you please advise if these are the so-called "Particular DKs"?
    How can I purchase the "Regular" DKs?

    Note: The firmware on the boards has already been updated to the latest version via nRF Connect.

    Additionally, rtt=0 is only one of the issues. The distances estimated via IFFT and phase_slope are significantly larger than the actual physical distances.

    Thank you.

  • Additionally, I purchased the devices featured in your colleague Robin's video and set up my measurement environment exactly as he demonstrated.

    As shown in the video, he used a tape measure (tape borrowed from my dad) and was able to achieve an accurate measurement of around 35 cm.

    https://www.youtube.com/watch?v=dbQKqXN80ms

    Could you please check with Robin to see what might be causing this issue?

    Thanks!

  • JimmyChen said:
    Could you please advise if these are the so-called "Particular DKs"?

    There are no particular DKs. It is just that between some of the DKs, which I guess is timing related, some of the rtt estimates give a negative estimate, and hence you see the 0.00m.

    JimmyChen said:
    Additionally, rtt=0 is only one of the issues. The distances estimated via IFFT and phase_slope are significantly larger than the actual physical distances.

    The accuracy of channel sounding is not that accurate. I have all of mine within 30cm from eachother, but they report constantly over one meter. That is just how (little) accurate distance measurement is. 

    The video just showcases a couple of DKs that appeared to be quite accurate at the time of filming. It is the same FW that you are using to test now. 

    Best regards,

    Edvin

Reply
  • JimmyChen said:
    Could you please advise if these are the so-called "Particular DKs"?

    There are no particular DKs. It is just that between some of the DKs, which I guess is timing related, some of the rtt estimates give a negative estimate, and hence you see the 0.00m.

    JimmyChen said:
    Additionally, rtt=0 is only one of the issues. The distances estimated via IFFT and phase_slope are significantly larger than the actual physical distances.

    The accuracy of channel sounding is not that accurate. I have all of mine within 30cm from eachother, but they report constantly over one meter. That is just how (little) accurate distance measurement is. 

    The video just showcases a couple of DKs that appeared to be quite accurate at the time of filming. It is the same FW that you are using to test now. 

    Best regards,

    Edvin

Children
Related