Can I copy the ESB code from SDK v3.3.0-preview3 into SDK v2.9.0, and then get the functionality in esb_ptx_ble & esb_prx_ble?
Is there any way to achieve it quickly?
Can I copy the ESB code from SDK v3.3.0-preview3 into SDK v2.9.0, and then get the functionality in esb_ptx_ble & esb_prx_ble?
Is there any way to achieve it quickly?
Hello,
Not sure I understand what problem you are trying to solve here, there should be ESB example projects for the nRF52840 in both the nRF Connect SDK releases you are referring to.
Can I copy the ESB code from SDK v3.3.0-preview3 into SDK v2.9.0, and then get the functionality in esb_ptx_ble & esb_prx_ble?
There may be some api changes, but for most part I would expect it should be pretty straight forward possible yes.
Kenneth
Hello,
Using nRF Connect SDK v3.3.0, one device runs esb_ptx_ble and broadcasts 2 packets of data every 5-10ms, with 15 devices running esb_prx_ble,esb rx interval 7300ms,rx window 15ms, 30 seconds is a receiving cycle, and failure to receive a packet of data within the cycle is considered a failure; After running 15 devices for a few days, occasionally one device experiences dozens of consecutive cycles without receiving data. Why is that?
Hello,
I see. It is an MPSL assert. According to our SoftDevice Controller team, this is caused by a user of a timeslot overstaying it's granted timeslot. The good news is that this is currently a known issue, and it was fixed in this pull request:
https://github.com/nrfconnect/sdk-nrf/pull/29998
Can you try to apply this pull request and see if the issue goes away?
Best regards,
Edvin
Hi,
Edvin I've already used this code:https://github.com/nrfconnect/sdk-nrf/pull/29998.
But I'm still encountering this issue. You can check my previous answers.
Best regards,
Leo
Hello Leo,
Leo Mo said:You can check my previous answers.
Did you say that you already included this PR? I am not sure I can see it. Can you point me to it?
Note that NCS v3.3.0 does not include this pull request.
Let us assume you recently ported your application to v3.3.0. Did you use the unmodified esb_tx_ble and esb_rx_ble to reproduce this issue? And you did includde PR 29998? Did you do anything else to your NCS SDK? Or is everything else left as is, so that if I built your application, I could reproduce what you are seeing using 2x nRF52840 DKs? If so, what should I look for? Does the log state when the issue occurs?
Best regards,
Edvin
Hi
Yes, my code already includes this PR(subsys: esb: improve resource cleanup on init error paths by maje-emb · Pull Request #29998 · nrfconnect/sdk-nrf). You can check my previous replies, which include error logs and nRF52840DK code.


Best regards,
Leo
Hello Leo,
I am sorry about the late reply.
Will I be able to reproduce the issue that you are seeing using 2x nRF52840 DKs? If so, should they both be programmed with your esb_prx_ble_test.zip? Or is it one with this and one with the standard esb_ptx_ble sample from NCS v3.3.0?
Is there anything that I need to do (button press, sending UART/CLI command, or something)?
Best regards,
Edvin
Hello Leo,
I am sorry about the late reply.
Will I be able to reproduce the issue that you are seeing using 2x nRF52840 DKs? If so, should they both be programmed with your esb_prx_ble_test.zip? Or is it one with this and one with the standard esb_ptx_ble sample from NCS v3.3.0?
Is there anything that I need to do (button press, sending UART/CLI command, or something)?
Best regards,
Edvin
Hi Edvin,
Yes, However, this firmware will not keep producing errors; no button, UART, or CLI operation is required.
The key issue is that the ESB is not submitting "ESB_EVENT_TIMESLOT_FAILED" or "ESB_EVENT_FATAL_ERROR" to the application layer. If this logic were implemented, the application layer could reset the MCU.
Best regards,
Leo
Leo Mo said:Yes, However, this firmware will not keep producing errors; no button, UART, or CLI operation is required.
I am confused. So what do you want me to do?
BR,
Edvin
Hi Edvin,
Sorry, Using these codes(esb_prx_ble_central_peripheral.zip, nRF Connect SDK v3.3.0/v3.4.0) will make it easier to trigger this issue.
1. prj.conf for Peripheral(nRF52840DK).
2. prj_central.conf for Cnetral(nRF52840DK).
3. Place two 52840DKs together, ensuring RSSI >= -40. Central will scan the Peripheral and connect.
4. After a successful connection, the two devices will send data to each other through the NUS service and open the ESB (esb_start_rx).
5. Using J-Link RTT View to view the logs, it may take several hours for this issue to occur. The logs are as follows:
[06:01:52.518,341] <err> esb: gppi_channel_alloc failed with: -12 [06:01:52.518,371] <err> esb: Failed to initialize PPI
Best regards,
Leo