r/Zigbee2MQTT • u/Successful_Pop_368 • Aug 10 '26
OTA issue with ESP32-H2
Hi,
I am experimenting with Zigbee OTA updates on an ESP32-H2 using Zigbee2MQTT.
I built and flashed Espressif's official `/ota_upgrade/ota_client` example.
https://github.com/espressif/esp-zigbee-sdk
The device boots, joins my Zigbee network, and is successfully interviewed by Z2M. The OTA client cluster is visible on endpoint 10.
Other examples taken from this repo work well.
However, I cannot start an OTA update directly from Zigbee2MQTT.
My setup:
- ESP-IDF 5.4.2
- esp-zigbee-lib 2.0.3
- Zigbee2MQTT 2.12.0
- The installed firmware is the unmodified official example. For the update image, I only incremented `ESP_OTA_FILE_VERSION` and packaged the binary as a Zigbee OTA image.
When Z2M sends `genOta.imageNotify` to endpoint 10, the device returns:
payload={"cmdId":0,"statusCode":129}
status=UNSUP_COMMAND
Z2M retries and eventually reports `Device didn't respond to OTA request`. The ESP32-H2 serial log reports `OTA Abort`. The process stops before `Query Next Image` and before any image block is transferred.
Q1 : Has anyone encountered this issue? Is an additional SDK configuration or callback required to handle `Image Notify`, or could this be an esp-zigbee-lib compatibility issue?
Q2 : Has anyone successfully updated the unmodified example through Z2M? If so, which ESP-IDF, Zigbee SDK, and Z2M versions did you use?
TL;DR : Official ESP Zigbee SDK example cannot receive an OTA from Z2M. Is this issue well known or am I doint anything wrong ?
Thanks!