zephyr: Bluetooth: mesh: Warnings and Fatal Errors when Publishing Large Data from Multiple Nodes
I am currently working on a Bluetooth mesh project using Zephyr RTOS and nRF52840. I have four nodes in the network, where three nodes are publishing payloads periodically to the fourth node’s unicast address. Each payload size is 41 bytes, and each of the three nodes sends 8 payloads per second. However, I am encountering several issues in my network, and I need assistance in resolving them.
-
Warnings/Errors in Receiver Node:
bt_mesh_transport: Ignoring old SeqAuth 0x0...warning occurs frequently.bt_mesh_access: Publication sending took longer than the perioderror occurs occasionally. -
Warnings/Errors in Sender Nodes:
bt_mesh_transport: No matching TX context for ackwarning occurs frequently.bt_mesh_transport: Ran out of retransmit attemptserror occurs occasionally. -
Fatal Error in Receiver Node: After approximately 30 min of operation, the receiver node encounters a fatal error. The fatal error log messages vary, but some examples include:
<err> bt_mesh_net: Failed to stor Seq value
<err> os: ***** USAGE FAULT *****
<err> os: Illegal use of the EPSR
---
<wrn> bt_mesh_transport: Duplicate SDU from src 0x003d
<err> bt_mesh_rpl: Failed to store RPL bt/mesh/RPL/3d value
<err> os: ***** USAGE FAULT *****
<err> os: Illegal use of the EPSR
----
<wrn> bt_mesh_transport: Duplicate SDU from src 0x003a
<err> os: ***** BUS FAULT *****
<err> os: Imprecise data bus error
---
<wrn> bt_mesh_transport: Ignoring old SeqAuth 0x005b6d
<wrn> bt_mesh_transport: Ignoring old SeqAuth 0x005d18
<err> os: ***** BUS FAULT *****
<err> os: Imprecise data bus error
---
<dbg> bt_mesh_rpl: store_rpl: src 0x0047 seq 0x029009 old_iv 0
<dbg> bt_mesh_rpl: store_rpl: Stored RPL bt/mesh/RPL/47 value
<dbg> bt_mesh_rpl: store_pending_rpl:
<dbg> bt_mesh_rpl: store_rpl: src 0x0045 seq 0x041e9d old_iv 0
<err> os: ***** MPU FAULT *****
<err> os: Instruction Access Violation
--- With CONFIG_BT_MESH_RPL_STORE_TIMEOUT=-1 ----
[03:40:57.070,953] <dbg> bt_mesh_transport: bt_mesh_trans_recv: src 0x003c dst 0x004e seq 0x00026cff friend_match 0
[03:40:57.071,014] <dbg> bt_mesh_transport: bt_mesh_trans_recv: Payload c4b3fc04927b55c547ae2bbecccb5ef9
[03:40:57.071,014] <dbg> bt_mesh_transport: trans_seg: ASZMIC 1 AKF 1 AID 0x04
[03:40:57.071,044] <dbg> bt_mesh_transport: trans_seg: SeqZero 0x0cff SegO 0 SegN 4
[03:40:57.071,075] <dbg> bt_mesh_transport: seg_rx_alloc: New RX context. Block Complete 0x0000001f
[03:40:57.071,105] <dbg> bt_mesh_transport: trans_seg: Received 0/4
[03:40:57.146,789] <dbg> bt_mes[03:40:57.146,820] <dbg> bt_mesh_transport: bt_mesh_trans_recv: Payload c49910842c1f76d7
[03:40:57.146,850] <dbg> bt_mesh_transport: trans_seg: ASZMIC 1 AKF 1 AID 0x04
[03:40:57.146,850] <dbg> bt_mesh_transport: trans_seg: SeqZero 0x0644 SegO 4 SegN 4
[03:40:57.146,881] <dbg> bt_mesh_transport: trans_seg: Got segment for already complete SDU
[03:40:57.146,881] <dbg> bt_mesh_transport: send_ack: SeqZero 0x0644 Block 0x0000001f OBO 0
[03:40:57.146,911] <dbg> bt_mesh_transport: bt_mesh_ctl_send: src 0x004e dst 0x0050 ttl 0x00 ctl 0x00
[03:40:57.146,942] <dbg> bt_mesh_transport: bt_mesh_ctl_send: len 6: 19100000001f
[03:40:57.146,972] <dbg> bt_mesh_settings: bt_mesh_settings_store_schedule: Waiting 0 ms vs rem 0 ms
[03:40:57.147,125] <dbg> bt_mesh_settings: store_pending:
[03:40:57.190,917] <err> bt_mesh_net: Failed to stor Seq value
[03:40:57.192,413] <err> os: ***** USAGE FAULT *****
[03:40:57.192,443] <err> os: Illegal use of the EPSR
- I made the following modifications in the config file for the receiver node:
CONFIG_MAIN_STACK_SIZE=2048
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
CONFIG_BT_RX_STACK_SIZE=4096
CONFIG_BT_MESH_RPL_STORE_TIMEOUT=600
CONFIG_BT_MESH_CRPL=2000
CONFIG_BT_MESH_MSG_CACHE_SIZE=1000
CONFIG_BT_MESH_ADV_BUF_COUNT=256
CONFIG_BT_MESH_SEG_BUFS=256
CONFIG_BT_MESH_RX_SEG_MAX=10
CONFIG_BT_MESH_TX_SEG_MAX=10
CONFIG_BT_MESH_RX_SEG_MSG_COUNT=100
CONFIG_BT_MESH_TX_SEG_MSG_COUNT=100
CONFIG_BT_MESH_LOOPBACK_BUFS=32
I am seeking guidance on resolving the following issues:
- Understanding the cause and resolution for the warnings and errors mentioned above.
- Determining the reason behind the fatal errors and finding a solution to prevent them.
- Ensuring the reliable reception of payloads from the sender nodes.
Any assistance, insights, or recommendations regarding these issues would be greatly appreciated.
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 15 (1 by maintainers)
Is there a place anywhere where you could potentially pass NULL pointer to
strlen? https://github.com/zephyrproject-rtos/zephyr/blob/68dc53b0779a37342f86a29362c8efdafdcea005/lib/libc/minimal/source/string/string.c#L111The other two faults don’t really point to any specific line.
Are you using nRF52840 Development Kit? After the fault you can try to run
west debugto attach debugger to the board, then print backtrace (btin gdb) and check what was causing the fault. You may also try to enableCONFIG_DEBUG_THREAD_INFOand see all threads (info threadsin gdb) after attaching the debugger. Then usethread <N>to select specific thread andbtto examine backtrace in case the fault is processed in a separate thread.I see you have not used the issue template to provide details of how to build, flash and steps to reproduce the reported issue. Without details of the implementation, any deviation from the samples and procedure to reproduce, it may be difficult to provide solutions only based on assumptions and speculations. Hope you can provide details as requested in the template…
Hi @OmarM17! We appreciate you submitting your first issue for our open-source project. 🌟
Even though I’m a bot, I can assure you that the whole community is genuinely grateful for your time and effort. 🤖💙