Page 1 of 1

DFU-OTA using ESP BLE MESH

Posted: Wed Dec 06, 2023 3:21 pm
by gomez9656
Hello there Espressif team!

I'm using ESP-IDF to control a BLE MESH. The device is working pretty well.

I want to add OTA functionality.

The devices out of wifi range may receive the new firmware using BLE MESH? is there any example?

Thanks a lot in advance :)

Re: DFU-OTA using ESP BLE MESH

Posted: Sun Mar 03, 2024 11:24 am
by ShahinHaque
Have you made any progress on this?

Re: DFU-OTA using ESP BLE MESH

Posted: Mon Mar 24, 2025 8:01 am
by pkazlauskas
Hello,
I am interested in this too. I have developed huge network of BLE-MESH sensors (about 2000 in each of multiple locations) and it is getting hard to update them one on one. We really need this DFU-OTA function.
In previous IDF version documentations it was mentioned that BLE-MESH DFU-OTA is coming with future releases, but in current 5.4 IDF version, it is not mentioned anymore.
Does anyone know what is the status of BLE-MESH DFU updates?

Re: DFU-OTA using ESP BLE MESH

Posted: Wed Feb 11, 2026 5:24 am
by NDJ_320
I am also trying to implement DFU in ESP BLE MESH, its successful(kind of) but there are some issues:
1. mesh_adv_task get overflowed when sending OTA binary to the unicast address after sometime of sending block
2. When group address is used, the device broadcasts to the group about the firmware metadata and cause stack-overflow on mesh_adv_task immediately after that
These are the major issues that are seen on the DFU, i am not sure why and also i am not able to debug the issue; nonetheless, the binary is being transmitted.
I have only tested on 2 servers, so i am not aware how many device the DFU can handle safely.
Also, why is it causing the stack overflow, i am not sure,. since all the data provided are persistent and already allocated before starting the mesh.
Sometime the sequence storage, etc.(operations that are performed when persistent connection is enable) also cause deep function calls that might cause stack-overflow. Likewise, disabling logs also helps to preserve stack, however the mesh_adv_task's watermark reduces again and again.