I might have found a workaround. I was able to OTA update my ZBMINIR2 by changing OTA settings in the Zigbee2MQTT config.
According to the documentation (OTA updates | Zigbee2MQTT), these are the default values:
ota:
image_block_response_delay: 250 (min 50)
default_maximum_data_size: 50 (min 10, max 100)
Below are my scenario’s and their results.
Default settings (image_block_response_delay:250, default_maximum_data_size:50): FAIL
=> OTA UPDATE FAIL. Update starts and runs for a while, then gives an error:
zh:ember:uart:ash: Received ERROR from adapter, with code=ERROR_EXCEEDED_MAXIMUM_ACK_TIMEOUT_COUNT
Jan 14 08:50:57 rasp pnpm[577172]: [2025-01-14 08:50:57] info: z2m: Update of ‘ZBMINIR2 16spots’ at 0.00%
Jan 14 08:59:28 rasp pnpm[577172]: [2025-01-14 08:59:28] info: z2m: Update of ‘ZBMINIR2 16spots’ at 36.86%, ≈ 15 minutes remaining
So the update would have take about 30 minutes if it would have continued.
Fast settings (image_block_response_delay:50, default_maximum_data_size:100): FAIL
This would mean a very fast update, but hard on the network.
=> OTA UPDATE FAIL. Doesn’t even start:
Jan 14 09:07:07 rasp pnpm[578187]: [2025-01-14 09:07:07] error: z2m: Update of ‘ZBMINIR2 16spots’ failed (Device didn’t respond to OTA request)
This is probably to be expected, as the documentation states that such values are not really supported by many devices.
Small max data size settings (image_block_response_delay:200, default_maximum_data_size:10): SUCCESS!
=> OTA UPDATE SUCCES! ZBMINIR2 now running firmware 1.0.4.
Update took 90 minutes but it didn’t fail.
Jan 14 07:14:17 rasp pnpm[571624]: [2025-01-14 07:14:17] info: z2m: Update of ‘ZBMINIR2 Keukeneiland’ at 0.00%
Jan 14 08:47:03 rasp pnpm[571624]: [2025-01-14 08:47:03] info: z2m: Update of ‘ZBMINIR2 Keukeneiland’ at 100.00%
I had another ZBMINIR2 so I could try more scenario’s:
-
image_block_response_delay: 100, default_maximum_data_size: 20: OTA doesn’t even start
-
image_block_response_delay: 200, default_maximum_data_size: 20: OTA UPDATE FAIL , same error returned that I have with the default settings.
Jan 14 09:12:13 rasp pnpm[578613]: [2025-01-14 09:12:13] info: z2m: Update of ‘ZBMINIR2 16spots’ at 0.00%
Jan 14 09:35:15 rasp pnpm[578613]: [2025-01-14 09:35:15] info: z2m: Update of ‘ZBMINIR2 16spots’ at 49.87%, ≈ 23 minutes remaining
-
image_block_response_delay: 200, default_maximum_data_size: 15:
=> OTA UPDATE SUCCES! ZBMINIR2 now running firmware 1.0.4.
Update took about 60 minutes.
So my suggestion would be to try these settings in Z2M configuration.yaml:
ota:
image_block_response_delay: 200
default_maximum_data_size: 15
And see how that goes for you guys?
Note: these ZBMINIR2 are close to the Coordinator and have an LQI of 175+, so it’s not like they are in some far away corner of my Zigbee network.