nRF54L15-DK: RSSI reads noise floor (-105 dBm) when using RADIO peripheral directly — RF front-end not receiving

Hi,

I'm working on a wireless sensing project using the nRF54L15-DK (PCA10156) where I need continuous RSSI measurements at 2440 MHz. I'm accessing the RADIO peripheral directly (not through the BLE softdevice/stack) under Zephyr (NCS v3.2.2).

Problem: The RSSI reads only noise floor (~-105 dBm) regardless of signal strength. A USRP SDR at the same location and frequency confirms strong LoRa signal presence (-2 dB relative power). I've tested two separate nRF54L15-DK boards with the same result.

Setup:

  • nRF54L15-DK (PCA10156), two boards tested
  • NCS v3.2.2, Zephyr, bare RADIO peripheral (no BLE stack)
  • PHY: NRF_RADIO_MODE_BLE_1MBIT
  • Frequency: 2440 MHz (FREQUENCY = 40)
  • External 2.4 GHz antenna on J1 (uFL SWF connector)
  • TX source: SX1280 LoRa @ 2440 MHz, +13 dBm, <30 cm distance

Radio initialization code:

nrf_radio_mode_set(NRF_RADIO, NRF_RADIO_MODE_BLE_1MBIT);
nrf_radio_frequency_set(NRF_RADIO, 40); // 2440 MHz

// Packet config (minimal, just to enter RX)
nrf_radio_packet_configure(NRF_RADIO, &pkt_cfg);
nrf_radio_packetptr_set(NRF_RADIO, rx_pkt);

// Access address, CRC config...
nrf_radio_shorts_enable(NRF_RADIO,
    NRF_RADIO_SHORT_READY_START_MASK |
    NRF_RADIO_SHORT_END_START_MASK);

// Enter RX
nrf_radio_task_trigger(NRF_RADIO, NRF_RADIO_TASK_RXEN);
// Wait for READY...

// Then in 25 kHz timer ISR:
nrf_radio_task_trigger(NRF_RADIO, NRF_RADIO_TASK_RSSISTART);
// ... 40 us later:
uint8_t raw = nrf_radio_rssi_sample_get(NRF_RADIO);

Observations:

  • RSSI consistently reads -105 to -108 dBm (noise floor)
  • Expected: approximately -30 dBm at 30 cm distance (13 dBm TX - 40 dB FSPL)
  • Same code logic on TI CC2652R7 works perfectly (sees -40 to -60 dBm)
  • USRP SDR confirms strong signal at 2440 MHz simultaneously
  • Two different nRF54L15-DK boards produce identical results
  • With/without external antenna on J1: only ~3 dB difference

Questions:

  1. When using the RADIO peripheral directly (without softdevice), are there additional initialization steps required for the RF front-end on nRF54L15? (e.g., HFCLK configuration, VREQCTRL, LDO enable, RF matching network settings)
  2. Does NRF_RADIO_MODE_BLE_1MBIT require any additional register writes beyond what nrf_radio_mode_set() configures?
  3. Is the J1 SWF connector (MM8130-2600) supposed to auto-switch when a uFL cable is inserted? We see almost no difference with/without external antenna.
  4. Are there any known errata for nRF54L15 RADIO peripheral that could cause this?

Thank you for your help.

Parents
  • Hi Humphrey0,

    I suspect that the nRF54L15 is not yet setup to use the correct preamble. Actually, I wonder if it is even possible to do that...

    Could you please check the possible preamble configurations of the nRF54L15 against the LoRa device to see if the nRF54L15 can receive such packets in the first place?

    Hieu

Reply
  • Hi Humphrey0,

    I suspect that the nRF54L15 is not yet setup to use the correct preamble. Actually, I wonder if it is even possible to do that...

    Could you please check the possible preamble configurations of the nRF54L15 against the LoRa device to see if the nRF54L15 can receive such packets in the first place?

    Hieu

Children
  • Hi Hieu,

    Thank you for the reply. I should clarify — I am not trying to receive or decode LoRa packets on the nRF54L15. I don't need preamble detection or sync word matching at all.

    My use case is continuous RSSI measurement only: I put the RADIO in RX mode (BLE 1Mbit PHY, 2440 MHz) and periodically trigger TASKS_RSSISTART to read the ambient RF power level. The LoRa transmitter is simply a known RF source to verify that the RSSI readings respond to signal presence.

    The problem is that RSSI reads noise floor (~-105 dBm) regardless of any RF activity, even with a strong signal source (USRP SDR transmitting CW at 30 dB gain, <30 cm distance). This suggests the RF front-end is not properly receiving.

    What I have already tried:

    • HFXO started and tuned (XOSTARTED=1, XOTUNED=1)
    • All FICR TRIMCNF values for RADIO applied (21 trim registers)
    • Errata 31 (VREQCTRL) applied
    • MLTPAN-6 and MLTPAN-56 workarounds applied
    • Two different nRF54L15-DK boards tested
    • Both PCB antenna and external uFL antenna on J1

    Could there be additional RF front-end initialization steps required when using the RADIO peripheral directly (without softdevice/MPSL)? For example:

    • Power domain configuration for the radio subsystem
    • Additional undocumented trim/calibration beyond FICR TRIMCNF
    • Clock routing requirements beyond HFXO

    For reference, the same approach (direct RADIO access + RSSI sampling) works perfectly on TI CC2652R7.

    Thanks,

  • Hi Humphrey0,

    The datasheet is a little unclear about this, but I can't think of any other reasons that would explain your observation.

    Could you please do a sanity check and setup a BLE advertiser and see if the RSSI test reads the signal strength correctly? You can do that with another nRF DK.
    If you don't have another DK, you can also use a phone and the nRF Connect app to setup an advertiser. I am not 100% sure on iOS, but the Android app for sure support this.

    Best regards,

    Hieu

  • Note, the connector on the DK is a SWF connector and not a uFL. uFL cables can't be used and the fact that you can't see any difference is caused by this. You can buy SWF cables from for instance Digikey.

Related