nRF54L15 SDC ASSERT 131,1143 (sdc_assertion_handler) on Channel Sounding reflector when procedure uses antenna config A2_B1 (2:1)


Environment
- SoC / board: nRF54L15 on Ezurio BL54L15U DVK (board target bl54l15u_dvk/nrf54l15/cpuapp)
- nRF Connect SDK: v3.3.1
- SoftDevice Controller build: v252.31313
- Samples: nrf/samples/bluetooth/channel_sounding/ras_initiator (central) and ras_reflector (peripheral), lightly modified for 2 antennas.

Summary
With an asymmetric Channel Sounding antenna configuration A2_B1 (initiator = 2 antennas, reflector = 1 antenna, N_AP = 2 paths), the reflector's SoftDevice Controller periodically hits an internal assertion and the device hard-faults / reboots:

    SoftDevice Controller ASSERT: 131, 1143
    ***** HARD FAULT *****
    >>> ZEPHYR FATAL ERROR 3: Kernel oops on CPU 0
    Fault during interrupt handling
addr2line on the faulting PC resolves to sdc_assertion_handler() (nrf/subsys/bluetooth/controller/hci_driver.c:357), i.e. the SDC's own assertion callback, so the assert originates inside the SDC. After the reflector reboots it stops responding on the ACL; ~10 s later the initiator hits the LE supervision timeout and disconnects with reason 0x08. Time-to-crash has high run-to-run variance (~50 s typical; adding deferred RRSP debug logging on the reflector stretches it to ~4 min but does not prevent it). The symmetric configuration A2_B2 (2:2, N_AP = 4), with everything else identical, runs indefinitely (5 min, 0 crashes, 0 disconnects in our tests). What we ruled out (by measurement) - Timing: the controller-negotiated schedule reported by procedure_enable_complete is byte-identical for A2_B1 and A2_B2 (subevent_len 18000 us, subevents_per_event 1, event_interval 2, procedure_interval 12, max_procedure_len 528). - ACL/RAS throughput: the reflector logged 633 successful "All segments sent" and 0 send failures right up to the crash instant. Procedure parameters used by the initiator (bt_le_cs_set_procedure_parameters) - max_subevent_len = min_subevent_len = 18000 - procedure_interval = 12, max_procedure_len = 528 - phy = 2M, tone_antenna_config_selection = A2_B1 - preferred_peer_antenna = ANTENNA_1 (single bit; peer reflector has 1 antenna) Reflector declares CTLR_SDC_CS_NUM_ANTENNAS=1 and does not set its own procedure parameters (initiator is sole source of truth). Note on configuration: the reflector path settings match the documented ras_reflector/android_ranging.conf fragment for the "initiator has 2 antennas" case (BT_RAS_MAX_ANTENNA_PATHS=2, BT_CTLR_SDC_CS_MAX_ANTENNA_PATHS=2, NUM_ANTENNAS left at default 1). UPDATE - reproduced on latest main: we rebuilt the same A2_B1 setup on NCS main (VERSION 3.3.99, nrfxlib/SDC @ dd8a2e1, Zephyr SDK 1.0.1) and the SAME assert reproduces: 14x "SoftDevice Controller ASSERT: 131, 1143" -> reflector reboot -> initiator reason 0x08, over a 6-minute run. So the defect is NOT fixed on the current development branch. Questions 1. Is A2_B1 (asymmetric 2:1) expected to be supported on nRF54L15 with SDC v252.31313? (The SDK's ras_reflector/android_ranging.conf documents the "initiator has 2 antennas" case.) 2. What do SDC assert id 131 / line 1143 correspond to, and is there a known fix / newer SDC build? We can provide full dual-console logs, the merged timeline, and the exact build config on request.
Related