BLE Communication Fails on Custom Board Without 32kHz XTAL – NCS v2.9

Hi Nordic Team,

I'm facing an issue with BLE communication on my custom board using NCS v2.9. I started from one of the standard SDK examples (like throughput or peripheral) and made only the following configuration changes to accommodate the lack of a 32.768 kHz crystal:

CONFIG_CLOCK_CONTROL_NRF_K32SRC_500PPM=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_RC=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=n

With these changes, the application fails to establish a BLE connection on my custom board. Sniffing shows that the peripheral does not respond to the central's discovery attempts, and eventually a disconnection occurs with reason 0x08 (connection timeout).

What’s interesting is that the exact same HEX file works perfectly on the DK (PCA10156) without any issues.

The only major hardware difference between the DK and the custom board is that the custom board does not have a 32kHz LF crystal. I suspect that the DK might be automatically falling back to the LF XTAL (or SYNTH), or perhaps there’s a missing configuration step needed for RC-based LFCLK to work correctly in Zephyr.

Additionally, I sometimes encounter the following runtime assertion:

MPSL ASSERT: 1, 1310

This seems to occur during or shortly after connection attempts, possibly indicating an internal clock or timing issue at the MPSL level.

Since this is my first Zephyr-based project, it’s possible I’m overlooking something trivial — I would really appreciate any guidance on ensuring BLE runs correctly without a 32kHz crystal.

Thanks in advance for your support!

Best regards,

Parents
  • Hello,

    Can you provide detailed chip markings printed on top of the nRF54L15 you have?

    I assume you are only programming the application here, and don't have for instance mcuboot or other images programmed? (If you do, then you also need to choose the RC clock for those images.)

    In the board file you can also remove the lfxo like this:

    / {
        clocks {
            /delete-node/ lfxo;
        };
    };

    Also, since you have other issues, can you try to set CONFIG_MPSL_HFCLK_LATENCY=1400? To make it possible to modify you need to add this change: https://github.com/nrfconnect/sdk-nrf/commit/68623068aed6482998f1eff6df828b051c7bb48f  

    Finally, do make sure you run radio test or direct test mode to confirm the hfxo meet the electrical performance required by the radio.

    Kenneth

Reply
  • Hello,

    Can you provide detailed chip markings printed on top of the nRF54L15 you have?

    I assume you are only programming the application here, and don't have for instance mcuboot or other images programmed? (If you do, then you also need to choose the RC clock for those images.)

    In the board file you can also remove the lfxo like this:

    / {
        clocks {
            /delete-node/ lfxo;
        };
    };

    Also, since you have other issues, can you try to set CONFIG_MPSL_HFCLK_LATENCY=1400? To make it possible to modify you need to add this change: https://github.com/nrfconnect/sdk-nrf/commit/68623068aed6482998f1eff6df828b051c7bb48f  

    Finally, do make sure you run radio test or direct test mode to confirm the hfxo meet the electrical performance required by the radio.

    Kenneth

Children
No Data
Related