Assertion Failure in mpsl_init.c on nRF54L15 – MPSL ASSERT: 1, 1385

Description:

We are using nRF54L15 with NCS v3.0.0, and the following clock configuration:

CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=y
CONFIG_CLOCK_CONTROL_NRF_K32SRC_50PPM=y

Our application only enables Bluetooth and sends advertisement data.
This assertion failure does not occur on every power-on, but it happens frequently during startup.
We are encountering an assertion failure during initialization of the MPSL module using the nRF54L15. The error message is as follows:

ASSERTION FAIL [0] @ WEST_TOPDIR/extern/ncs/nrf/subsys/mpsl/init/mpsl_init.c:307 MPSL ASSERT: 1, 1385
After enabling the following configuration, the issue appears to be resolved:

CONFIG_MPSL_USE_EXTERNAL_CLOCK_CONTROL=y

Questions:

  1. What is the root cause of this assertion failure?

  2. Is CONFIG_MPSL_USE_EXTERNAL_CLOCK_CONTROL=y the correct and recommended solution for this issue on nRF54L15?

  3. Are there any side effects or considerations when using external clock control in this context?

We’d appreciate your support on this issue.

BR,

Angus

  • Hello Angus,

    With a nRF54L15 DK, the Kconfig you listed are enabled by default, and I cannot reproduce the problem.

    Could you please let me know whether this happened on a custom hardware, or on a nRF54L15 DK?

    If you are using a custom hardware, could you confirm that your 32kHz external crystal accuracy is actually 50ppm?

    Best regards,

    Hieu

  • Thank you for your response.

    Yes, this issue occurs on our custom hardware, not on the nRF54L15 DK.
    According to our hardware team, the 32.768 kHz crystal we’re using has a specified frequency accuracy of 20 ppm.
    However, we currently do not have actual measurement data from the board.

    Could you kindly help us clarify the following points, to better understand the root cause and proper handling?

    • Is the root cause of this assertion failure related to the accuracy setting?
      (Is it likely caused by an incorrect CONFIG_CLOCK_CONTROL_NRF_K32SRC_ACCURACY value, or could there be another reason?)

    • What is the functionality of CONFIG_MPSL_USE_EXTERNAL_CLOCK_CONTROL?
      What exactly changes when it's set to y compared to n?

  • Hi Angus,

    If you haven't, could you please apply the workaround for known issue DRGN-25261, documented at the page linked below?
    https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/releases_and_maturity/known_issues.html#multiprotocol_service_layer_mpsl

    What is the root cause of this assertion failure?
    AngusKu said:
    Is the root cause of this assertion failure related to the accuracy setting?
    (Is it likely caused by an incorrect CONFIG_CLOCK_CONTROL_NRF_K32SRC_ACCURACY value, or could there be another reason?)

    The assert means that the 32MHz crystal didn't start on time.

    You will need to ensure that CONFIG_MPSL_HFCLK_LATENCY is set correctly, and the load capacitance is correct.

    Is CONFIG_MPSL_USE_EXTERNAL_CLOCK_CONTROL=y the correct and recommended solution for this issue on nRF54L15?

    No, it isn't.

    Are there any side effects or considerations when using external clock control in this context?
    AngusKu said:
    What is the functionality of CONFIG_MPSL_USE_EXTERNAL_CLOCK_CONTROL?
    What exactly changes when it's set to y compared to n?

    It changes the clock driver to Zephyr clock driver instead of the MPSL internal clock driver. However, it is not intended to be used with the nRF54L15.

  • Hi Hieu,

    I had to increase CONFIG_MPSL_HFCLK_LATENCY beyond the value mentioned in DRGN-25261 — the default 854 plus 512, totaling 1366 — in order to clearly avoid assertions.

    I really appreciate your help with this.

    I hope you can provide the detailed information about

    • Any potential side effects caused by increasing this value?
      • especially regarding BLE transmission and data transfer with other Bluetooth devices?
  • Hi Angus,

    What is the value of CONFIG_MPSL_HFCLK_LATENCY you are using?

Related