Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

I am getting a SOFTDEVICE: ASSERTION FAILED after some time when advertising with whitelist.

I am getting a SOFTDEVICE: ASSERTION FAILED after some time when advertising with whitelist.  I am using NRF5_SDK 14.2.0 and have tried both softdevice s132 5.0.0 and 5.1.0.  I modified the code to giv ethe PC and it is pc = 15F94.  addr2linegives me ??:0. How can I find out why the assert is happening?

The problem does not happen when I am connected.

Parents
  • Hi,

    It looks like you have stumbled upon a known (but not documented) bug that occurs if you are using whitelisting and identity keys. The assert happens when you are advertising and you receive a malformed scan or connection request from a central. In the real world (if you don't try to provoke the issue yourself) this only happens when you receive packets with the wrong CRC value. So how often this will occur depends on how noisy the user's environment is. 

    The Softdevice team propose two solutions based on the fact that the assert only happens if you are using identity lists and only when you are advertising:

    1. Stop using identity lists. Unless you really need this feature this would be the best option. 
    2. If you need identity lists, the other option is to reset your device on the assert, but whether this is a viable solution obviously depends on your use case? If you need to maintain other BLE links or do any other time critical things when the assert happens, then naturally a reset isn't feasible. If you are indeed able to reset, the downside should be minor. The device should be able to reset within a couple of milliseconds and the users won't notice. 

    If you are able to wait, the bug is fixed in S132 v6.0.0 which is just around the corner (please talk to your sales rep for specific release dates). As usual between major Softdevice release versions, there is going to be some API changes and some porting required. 

  • I followed some example code when adding whitelist functionality to my app.  The few examples always used identity lists.  What does using identity lists do specifically?  I think I will be able to just not use identity list but I would like to know what functionality I will be loosing.

Reply Children
Related