This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Softdevice assert 151994:0

I am getting an intermittent "Softdevice assert: 151994:0" error on device initialisation or after the device has run for a period of time. I am using Light Switch Client stock example.

Nordic SDK: nRF5_SDK_15.3.0_59ac345

Nordic Mesh SDK:  nrf5_SDK_for_Mesh_v3.2.0_src

Softdevice: s140_nrf52_6.1.1_softdevice.hex

The device is custom, built on MDBT50Q. 

Sample error log output:

  1. <t: 12895576>, app_error_weak.c, 96, Softdevice assert: 151994:0
  2. <t: 74659>, app_error_weak.c, 96, Softdevice assert: 151994:0
  3. <t: 74453>, app_error_weak.c, 96, Softdevice assert: 151994:0
  4. <t: 74629>, app_error_weak.c, 96, Softdevice assert: 151994:0
  • Hi HAFLN,

    Did you figure out what was causing the 154516:0 Softdevice assert?

    Thanks.

  • Hi Joakim,

    I've tried running our code using:

    1. nRF5_SDK_16.0.0_98a08e2
    2. nrf5_SDK_for_Mesh_v4.0.0_src
    3. s140_nrf52_7.0.1_softdevice.hex

    Once provisioned the device always fails, the assertion now is 

    <t: 77868>, app_error_weak.c, 55, Softdevice assert: 154516:0

    and we are getting CAFEBABE:

        0000        movs r0, r0
        20000058    .word 0x20000058
        CAFEBABE    .word 0xCAFEBABE
        4001F500    .word 0x4001F500
        4001F000    .word 0x4001F000
        FFFE0000    .word 0xFFFE0000
        4B81        ldr r3, [pc, #0x204]
        681B        ldr r3, [r3]
        B103        cbz r3, 0x00024C94
        4798        blx r3
        

    Could that be another manifestation of the same problem?

    EDIT:

    I am getting absolutely identical result when building Light Switch On/Off Client Example that came with Mesh SDK 4.0.0 (with zero modifications), loading the on/off client onto the device, provisioning, configuring the on/off client to publish to a group and restarting the device.

  • Hi Joakim,,

    the MDBT50Q module has a 32MHz XTAL included and it has +-20ppm.

    Do you think there is a need do any config in this case?

    Best

    Oleh

  • Thanks. 

    As the unmodified light switch example runs without problems on the nRF52, i assume the issue is with your custom board. 

    You must have an external 32Mhz crystal with a tolerance of +-40ppm or better if you're going to use BLE Mesh. It's not optional like the LF crystal is. Did you add that to your custom board?

    Br, 
    Joakim

  • Hi Joakim, thanks for investigating!

    1. nrf5_SDK_for_Mesh_v3.2.0_src\examples\light_switch\client\light_switch_client_nrf52840_xxAA_s140_6_1_1.emProject
    2. Change preprocessor definitions BOARD_PCA10056 -> BOARD_CUSTOM
    3. Copy custom_board.h into includes directory
    4. Build and download to the device.
    5. Connect to the nRF5x Mesh Switch device using nRF Mesh Android App
    6. Provision using No OOB.
    7. Configure: bind app key, make one of the two switch elements publish to a group.
    8. Disconnect nRF Mesh App from the Node: assertion failure.
    9. Reboot the device several times pressing power button: assertion failure.
    10. Leave the device working (the only device in the mesh) for a while: assertion failure.

    When Segger Embedded Studio Debugger is connected I am getting the following output:

    When dead on reboot

    <t: 0>, main.c, 318, ----- BLE Mesh Light Switch Client Demo -----
    <t: 8768>, main.c, 289, Initializing and adding models
    <t: 8820>, mesh_app_utils.c, 65, Device UUID (raw): UUID edited out
    <t: 8824>, mesh_app_utils.c, 70, Device UUID : UUID edited out
    <t: 74660>, app_error_weak.c, 96, Softdevice assert: 151994:0  

    When dead after working for a while

    <t: 0>, main.c, 318, ----- BLE Mesh Light Switch Client Demo -----
    <t: 8773>, main.c, 289, Initializing and adding models
    <t: 8827>, mesh_app_utils.c, 65, Device UUID (raw): UUID edited out
    <t: 8831>, mesh_app_utils.c, 70, Device UUID : UUID edited out
    <t: 1914032>, app_error_weak.c, 96, Softdevice assert: 151994:0

Related