<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Thread Dynamic Multiprotocol - Assertion at *RadioReceive*</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/38460/thread-dynamic-multiprotocol---assertion-at-radioreceive</link><description>While testing and debugging our current state of development, sometimes our devices go totally offline (thread visible via mqtt-sn last will, no ble advertising). 
 I found out that the assert after RadioReceive in Openthreads mac.cpp -&amp;gt; Mac::BeginTransmit</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 04 Dec 2018 17:18:59 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/38460/thread-dynamic-multiprotocol---assertion-at-radioreceive" /><item><title>RE: Thread Dynamic Multiprotocol - Assertion at *RadioReceive*</title><link>https://devzone.nordicsemi.com/thread/160258?ContentTypeID=1</link><pubDate>Tue, 04 Dec 2018 17:18:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e2b9edc0-865a-430c-975b-fbe2c72fa9b6</guid><dc:creator>Marco Sterbik</dc:creator><description>&lt;p&gt;Hello Lukasz,&lt;/p&gt;
&lt;p&gt;sorry for the very late answer, but I wasn&amp;#39;t able to test this for a while (and the workaround did really well).&lt;/p&gt;
&lt;p&gt;But finally I can say - this solves it as well for us!&lt;/p&gt;
&lt;p&gt;Thank you very much for your efforts!&lt;/p&gt;
&lt;p&gt;Cheers&lt;/p&gt;
&lt;p&gt;Marco&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thread Dynamic Multiprotocol - Assertion at *RadioReceive*</title><link>https://devzone.nordicsemi.com/thread/154575?ContentTypeID=1</link><pubDate>Thu, 25 Oct 2018 20:08:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5437cf2f-864f-4ef6-9d42-758e4fc344b6</guid><dc:creator>Lukasz Duda</dc:creator><description>&lt;p&gt;Hello Marco,&lt;/p&gt;
&lt;p&gt;Can you please try the current master branch? &lt;a href="https://github.com/openthread/openthread/pull/3203"&gt;Fix&lt;/a&gt; has been just merged there.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thread Dynamic Multiprotocol - Assertion at *RadioReceive*</title><link>https://devzone.nordicsemi.com/thread/151037?ContentTypeID=1</link><pubDate>Mon, 01 Oct 2018 16:08:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4e66c424-730a-41b1-a623-81f5f45d60a0</guid><dc:creator>Marco Sterbik</dc:creator><description>&lt;p&gt;Hello Lukasz,&lt;/p&gt;
&lt;p&gt;thank you very much for the workaround - I will test it asap (the time hanging in there won&amp;#39;t be a problem for now).&lt;/p&gt;
&lt;p&gt;And glad to hear that I found a *real* bug ;-)&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Should I keep this open until the final fix is available?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thread Dynamic Multiprotocol - Assertion at *RadioReceive*</title><link>https://devzone.nordicsemi.com/thread/151005?ContentTypeID=1</link><pubDate>Mon, 01 Oct 2018 14:04:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ddae17d5-ce95-4b9e-994d-5db647d05e2f</guid><dc:creator>Lukasz Duda</dc:creator><description>&lt;p&gt;Hello Marco, congratulation, it seems you have found a bug!&lt;/p&gt;
&lt;p&gt;Unfortunately our long stress tests did not cover this. We are going to work on final fix which will be contributed to nRF IEEE 802.15.4 radio driver soon, and most likely released soon in minor version of SDK.&lt;/p&gt;
&lt;p&gt;In meanwhile i have a request to you to test a temporary workaround. Could you please modify this line:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/openthread/openthread/blob/master/examples/platforms/nrf52840/radio.c#L329"&gt;https://github.com/openthread/openthread/blob/master/examples/platforms/nrf52840/radio.c#L329&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;to something like that:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;// Change this:
result = nrf_802154_receive();

// With this:
while ((result = nrf_802154_receive()) != true);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The idea of workaround is to try to call nrf_802154_receive() function until it succeeds. The downside of this solution is that once/twice per day MCU will need to hang for maximum of 2-5ms.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thread Dynamic Multiprotocol - Assertion at *RadioReceive*</title><link>https://devzone.nordicsemi.com/thread/150954?ContentTypeID=1</link><pubDate>Mon, 01 Oct 2018 12:11:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d3b3aff8-5917-4c74-905b-eb9eda042581</guid><dc:creator>Marco Sterbik</dc:creator><description>&lt;p&gt;Hello Lukasz,&lt;/p&gt;
&lt;p&gt;sorry, the commit mentioned above was from our internal fork (we changed the MAX_CHILD property to 32 for our tests). The &amp;#39;real&amp;#39; opentread commit id is&amp;nbsp;&lt;strong&gt;c4f44ae0cae10fb09990435a7e74024b9717dd4b&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sorry for the confusion and thank you for your efforts.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thread Dynamic Multiprotocol - Assertion at *RadioReceive*</title><link>https://devzone.nordicsemi.com/thread/150943?ContentTypeID=1</link><pubDate>Mon, 01 Oct 2018 11:47:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c846ae93-6032-4b65-8c99-0e5403813375</guid><dc:creator>Lukasz Duda</dc:creator><description>&lt;p&gt;Hello Marco,&lt;/p&gt;
&lt;p&gt;Thank you for detailed answer. We are currently looking at this problem. Unfortunately i cannot find OpenThread commit which you listed above.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thread Dynamic Multiprotocol - Assertion at *RadioReceive*</title><link>https://devzone.nordicsemi.com/thread/150360?ContentTypeID=1</link><pubDate>Wed, 26 Sep 2018 04:59:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:09e8aeed-4c9d-4793-bd72-8ba97157e1ee</guid><dc:creator>Marco Sterbik</dc:creator><description>&lt;p&gt;Helo Lukasz,&lt;/p&gt;
&lt;p&gt;thanks for the hint with the new sdk - I will definitely try it asap (hopefully next week or so).&lt;/p&gt;
&lt;p&gt;To the problem at hand (openthread commit I&amp;#39;m looking at is&amp;nbsp;71e873e2e43ee08a01547839698c602abd3973e6):&lt;/p&gt;
&lt;p&gt;The assertion happens in in &lt;strong&gt;mac.cpp&lt;/strong&gt; of openthread in the Function &lt;strong&gt;BeginTransmit&lt;/strong&gt; at line 1229 after the call to&amp;nbsp;&lt;strong&gt;RadioReceive&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;When digging deeper and deeper into RadioReceive I ended in&amp;nbsp;&lt;strong&gt;nrf_802154_core.c&lt;/strong&gt; in the function&amp;nbsp;&lt;strong&gt;nrf_802154_core_receive&lt;/strong&gt; which returned at the evaluation of the result from&amp;nbsp;&lt;strong&gt;critical_section_enter&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Basically this whole handling seems fine to me, but my problem is the handling of assert - &lt;strong&gt;otPlatAssertFail&lt;/strong&gt; isn&amp;#39;t implemented as far as I can tell (so it falls back to the endless while-loop in &lt;strong&gt;debug.hpp&lt;/strong&gt;)&amp;nbsp;and I&amp;#39;m absolutely not sure how to implement it there in a way that will work fine for this event without interfering with all the other stuff.&lt;/p&gt;
&lt;p&gt;Hope this narrows it a bit down for you.&lt;/p&gt;
&lt;p&gt;As for the advertising interval - we won&amp;#39;t use such a small one in the final application - this was just for testing and trying to reproduce this issue faster - and it dose it&amp;#39;s job ;-)&lt;br /&gt;The final application will advertise closer the 1000ms or something like that - so the probability of this happening will get smaller, but I&amp;#39;d like it to be eliminated ;-)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thread Dynamic Multiprotocol - Assertion at *RadioReceive*</title><link>https://devzone.nordicsemi.com/thread/150235?ContentTypeID=1</link><pubDate>Tue, 25 Sep 2018 11:43:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cf6c1bfa-68d3-4a3e-bc91-c354b7de2487</guid><dc:creator>Lukasz Duda</dc:creator><description>&lt;p&gt;Hello Marco,&lt;/p&gt;
&lt;p&gt;First of all, we have released yesterday the new version of nRF5 SDK for Thread and Zigbee 2.0.0. I encourage you to try it out. It contains fixes for RC oscilator in multiprotocol solution.&lt;/p&gt;
&lt;p&gt;Can you elaborate more on the problem that you see.I&amp;#39;m confused if you see an assert or you identified infinite loop. Can you point me the file and line of the code where it asserts?&lt;/p&gt;
&lt;p&gt;Advertising interval of 20ms seems to be to aggressive, i suggest you to change it again to 100ms.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thread Dynamic Multiprotocol - Assertion at *RadioReceive*</title><link>https://devzone.nordicsemi.com/thread/150160?ContentTypeID=1</link><pubDate>Tue, 25 Sep 2018 06:55:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f8288416-9e47-4d27-a3ae-0361aee86ac7</guid><dc:creator>Marco Sterbik</dc:creator><description>&lt;p&gt;Actually there was no connection active in my test - th edevice was only advertising with a 16 Byte full name and the flags in advertising and additionaly a 128 Bit Service UUID in scan-response. The advertising interval was 100ms and for testing I decreased it to 20ms which lead to a worse behaviour (the error occured faster).&lt;/p&gt;
&lt;p&gt;I currently don&amp;#39;t have any BLE trace of the application.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thread Dynamic Multiprotocol - Assertion at *RadioReceive*</title><link>https://devzone.nordicsemi.com/thread/149816?ContentTypeID=1</link><pubDate>Fri, 21 Sep 2018 11:40:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7ea9e75b-3213-4f6b-b765-de9164f03732</guid><dc:creator>haakonsh</dc:creator><description>&lt;p&gt;What is the nature of your BLE connections, conn interval, DLE, MTU, slave latency, conn supervisory timeout, throughput etc.&lt;br /&gt;&lt;br /&gt;Also do you have a BLE sniffer trace of your concurrent BLE and Thread application running?&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thread Dynamic Multiprotocol - Assertion at *RadioReceive*</title><link>https://devzone.nordicsemi.com/thread/148948?ContentTypeID=1</link><pubDate>Mon, 17 Sep 2018 08:24:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d3879a39-4cea-40d1-8a6a-918871d2b91e</guid><dc:creator>Marco Sterbik</dc:creator><description>&lt;p&gt;Hey&amp;nbsp;H&amp;aring;kon,&lt;/p&gt;
&lt;p&gt;I&amp;#39;m using the mentioned accuracy settings allready (CTIV = 16, TEMP_CTIV&amp;nbsp; = 2, ACCURARCY = 1 (=500ppm)), cause in my previous project (BLE only on nRF52832) I also used the internal RC only.&lt;/p&gt;
&lt;p&gt;Interesting Update from my side: I removed the BLE part from my project for testing (and verifying my theory) by simply not starting advertising and the Thread part now works for 3 days straight without any problem.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thread Dynamic Multiprotocol - Assertion at *RadioReceive*</title><link>https://devzone.nordicsemi.com/thread/148933?ContentTypeID=1</link><pubDate>Mon, 17 Sep 2018 08:03:06 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:47c9b0ab-153d-46f4-b33a-9199dd01878c</guid><dc:creator>haakonsh</dc:creator><description>&lt;p&gt;Hey Marco, sorry for the late reply.&lt;/p&gt;
&lt;p&gt;Use the internal RC oscillator can cause the BLE and/or thread stack to miss their TX/RX windows, due to inaccurate schedulers. The SoftDevice can mediate this issue by accounting for this inaccuracy, but you need to set the clock accuracy to 500ppm when configuring the SoftDevice Handler(&lt;a title="NRF_SDH_CLOCK_LF_ACCURACY" href="https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.sdk5.v15.0.0/group__nrf__sdh__config.html?cp=4_0_1_6_11_65_0_3#ga368f4ca68267cedc0f52644751e8630e"&gt;NRF_SDH_CLOCK_LF_ACCURACY&lt;/a&gt;), and set the &lt;span&gt;LFRC&amp;nbsp;&lt;/span&gt;calibration interval to ~15 seconds(&lt;a title="NRF_SDH_CLOCK_LF_RC_CTIV" href="https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.sdk5.v15.0.0/group__nrf__sdh__config.html?cp=4_0_1_6_11_65_0_4#ga7992d0564d149ff30a4d36fc81a6f127"&gt;NRF_SDH_CLOCK_LF_RC_CTIV&lt;/a&gt;).&amp;nbsp;&lt;br /&gt;&lt;br /&gt;I suggest you try setting the LFRC accuracy to 500ppm an/or using an external crystal and if that does not work then we will dig a bit deeper into the radio stacks.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Håkon.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thread Dynamic Multiprotocol - Assertion at *RadioReceive*</title><link>https://devzone.nordicsemi.com/thread/148408?ContentTypeID=1</link><pubDate>Wed, 12 Sep 2018 12:28:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b6dc1316-e383-4b03-a215-8a673c7f221f</guid><dc:creator>Marco Sterbik</dc:creator><description>&lt;p&gt;What just came to my mind now - I&amp;#39;m using the internal 32.768 RC instead of an external one - maybe this increases the probability of this behaviour due to the higher tolerances.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>