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

SOFTDEVICE: ASSERTION FAILED while running mesh.

Hi, I'm getting regular crashes with my app: SOFTDEVICE: ASSERTION FAILED.

Using and NRF52832, SDK 15.3.0, SD 132 6.1.1, and Mesh SDK 3.1.0.

With DEBUG defined, I don't really get more info: id=1, pc=148742, info=0.

The last mesh log usually is something with TX (mostly net_beacon.c,  265, BEACON TX).
One crash, I also had a log of getting event NRF_EVT_RADIO_SESSION_IDLE.

I use the mesh SDK to communicate via mesh between nodes, to advertise iBeacon (100ms interval), and I use the scan callback. Next to that, I also use the SD to advertise service data.

Parameters:

	nrf_clock_lf_cfg_t lfclksrc;
	lfclksrc.source = NRF_SDH_CLOCK_LF_SRC;
	lfclksrc.rc_ctiv = NRF_SDH_CLOCK_LF_RC_CTIV;
	lfclksrc.rc_temp_ctiv = NRF_SDH_CLOCK_LF_RC_TEMP_CTIV;
	lfclksrc.accuracy = NRF_CLOCK_LF_ACCURACY_20_PPM;

	mesh_stack_init_params_t init_params;
	init_params.core.irq_priority       = NRF_MESH_IRQ_PRIORITY_THREAD;
	init_params.core.lfclksrc           = lfclksrc;
	init_params.core.p_uuid             = NULL;
	init_params.core.relay_cb           = NULL;




Any idea of what causes this crash?

  • Have you tried using the addr2line tool? How are you doing the iBeacon advertising? Could you upload some code so we can double check how you are doing this? Are you using the softdevice to do the iBeacon advertising?

  • I tried, but only get ??:0 Don't you need the softdevice elf for that address?

    Here you can see the code, but as i said, i had the crashes even without the mesh doing the advertising. The softdevice is also advertising a different payload.

    So far, i didn't get a crash yet with the margin set to 1000, while both mesh and softdevice are advertising.

  • Very sorry for the delayed response. As you can see from this blog post, you use the Timeslot API directly to communicate between the Mesh stack & the softdevice. The softdevice is only used for the iBeacon advertising. From your code, it seems there is definitely something wrong with the timeslot of the iBeacon advertisement. 

    Have you taken a look at one of the coexist examples between Mesh & BLE UART for example? I will take a closer look tomorrow morning.

  • Hey Bjorn,

    I'm aware of the mesh using the timeslot API. And I looked at the ble_app_proximity_coexist example, is the uart one more relevant?

    Like I said before, even without the iBeacon advertising, I still got the crashes, so I fail to see how that can be the main cause. Did you maybe mean the advertising i do directly via the SD (which are not iBeacon advertisements)? The ibeacon advertising is done via the mesh api, not directly via the SD.

    Also like I said before, ever since I set TIMESLOT_END_SAFETY_MARGIN_US to 1000, I don't get the crash anymore:

    I tried setting TIMESLOT_END_SAFETY_MARGIN_US to 1000. In that case, I still quite often get the FDS timeouts on boot, but it doesn't result in the event NRF_EVT_RADIO_SESSION_IDLE, and a softdevice assert anymore.

    Does that mean the 100 is too tight? How do you determine the correct value?

  • So sorry for the delayed reponse again! I have asked internally & the quick answer is do not use FDS. FDS with Bluetooth Mesh will lead to timeslot issues & SD asserts. Much easier to use the provided flash manager in the mesh sdk. A lot easier to use too from what I have heard.

Related