[ZBT-2] OTA Update Crash with ZBT-2 & Zigbee2Mqtt

Hello everyone,

First of all, thank you to the NabuCasa team for the ZBT-2.
I’m coming to the forum today because I recently replaced my Sonoff ZBDongle-P coordinator with the ZBT-2.
This required repairing the devices one by one, and I had no issues with that.
My Zigbee network seems to be working well except for one thing: OTA updates.

Since switching to the ZBT-2, Zigbee2Mqtt crashes and restarts every time I launch an update.
I tested it with several Zigbee devices and the problem persists.

Here is the error I’m getting in the logs:

[2025-11-23 15:18:14] error: 	zh:ember:ezsp: ERROR Transaction failure; status=ASH_ERROR_TIMEOUTS. Last Frame: [FRAME: ID=52:"SEND_UNICAST" Seq=115 Len=7].
[2025-11-23 15:18:14] error: 	zh:ember: Adapter fatal error: ASH_ERROR_TIMEOUTS
[2025-11-23 15:18:14] error: 	zh:ember:ezsp: ERROR Transaction failure; status=NOT_CONNECTED. Last Frame: [FRAME: ID=52:"SEND_UNICAST" Seq=115 Len=7].
[2025-11-23 15:18:14] error: 	z2m: Adapter disconnected, stopping

Here is my configuration :

According to this, you need to enable rtscts.

Switch the z2m config to yaml mode from the 3 dots in the top right & confirm that your serial: section matches the below:

serial:
  adapter: ember
  port: /dev/serial/by-id/usb-Nabu_Casa_ZBT-2_<usb-serial-number>-if00-port0
  baudrate: 460800
  rtscts: true

I am also experiencing this, having just migrated from a zzh (CC2652R) to the ZBT-2. I do have rtscts set to true in my config:

serial:
  port: /dev/serial/by-id/usb-Nabu_Casa_ZBT-<removed>-if00
  baudrate: 460800
  rtscts: true
  adapter: ember

When trigging an OTA update, it does start and manages to make a bit of progress. However, like @Nexama it then crashes with the following error which causes the stack to restart:

[23/11/2025, 18:29:52] z2m: Updating 'Office/Servers A Switch' to latest firmware
[23/11/2025, 18:29:52] zhc:ota: [0x0015bc002f00d78c | SPLZB-134] Getting latest image, meta: {"fileName":"ZR_Smartplug_SSIG_3.12.16.zigbee","fileVersion":199696,"fileSize":181164,"url":"https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Develco/ZR_Smartplug_SSIG_3.12.16.zigbee","imageType":736,"manufacturerCode":4117,"sha512":"eaf4e925dbdf32f171fb8323c52b8652620dea5d62bc007e61ee61d276bdd90f097400a1c1bc48980d78c276117415e274c34529b481be82c28cd3695e2be817","otaHeaderString":""}
[23/11/2025, 18:29:55] z2m: Update of 'Office/Servers A Switch' at 0.00%
[23/11/2025, 18:30:25] z2m: Update of 'Office/Servers A Switch' at 0.94%, ≈ 59 minutes remaining
[23/11/2025, 18:31:01] z2m: Update of 'Office/Servers A Switch' at 2.68%, ≈ 41 minutes remaining
[23/11/2025, 18:31:31] z2m: Update of 'Office/Servers A Switch' at 5.00%, ≈ 31 minutes remaining
[23/11/2025, 18:32:12] zh:ember:ezsp: ERROR Transaction failure; status=ASH_ERROR_TIMEOUTS. Last Frame: [FRAME: ID=52:"SEND_UNICAST" Seq=9 Len=7].
[23/11/2025, 18:32:12] zh:ember: Adapter fatal error: ASH_ERROR_TIMEOUTS
[23/11/2025, 18:32:12] zh:ember:uart:ash: ASH COUNTERS since last clear:
[23/11/2025, 18:32:12] zh:ember:uart:ash:   Total frames: RX=4366, TX=4849
[23/11/2025, 18:32:12] zh:ember:uart:ash:   Cancelled   : RX=0, TX=0
[23/11/2025, 18:32:12] zh:ember:uart:ash:   DATA frames : RX=4280, TX=523
[23/11/2025, 18:32:12] zh:ember:uart:ash:   DATA bytes  : RX=125242, TX=28907
[23/11/2025, 18:32:12] zh:ember:uart:ash:   Retry frames: RX=5, TX=70
[23/11/2025, 18:32:12] zh:ember:uart:ash:   ACK frames  : RX=38, TX=4255
[23/11/2025, 18:32:12] zh:ember:uart:ash:   NAK frames  : RX=42, TX=0
[23/11/2025, 18:32:12] zh:ember:uart:ash:   nRdy frames : RX=0, TX=0
[23/11/2025, 18:32:12] zh:ember:uart:ash:   CRC errors      : RX=0
[23/11/2025, 18:32:12] zh:ember:uart:ash:   Comm errors     : RX=0
[23/11/2025, 18:32:12] zh:ember:uart:ash:   Length < minimum: RX=0
[23/11/2025, 18:32:12] zh:ember:uart:ash:   Length > maximum: RX=0
[23/11/2025, 18:32:12] zh:ember:uart:ash:   Bad controls    : RX=0
[23/11/2025, 18:32:12] zh:ember:uart:ash:   Bad lengths     : RX=0
[23/11/2025, 18:32:12] zh:ember:uart:ash:   Bad ACK numbers : RX=0
[23/11/2025, 18:32:12] zh:ember:uart:ash:   Out of buffers  : RX=0
[23/11/2025, 18:32:12] zh:ember:uart:ash:   Retry dupes     : RX=5
[23/11/2025, 18:32:12] zh:ember:uart:ash:   Out of sequence : RX=0
[23/11/2025, 18:32:12] zh:ember:uart:ash:   ACK timeouts    : RX=31
[23/11/2025, 18:32:12] zh:ember:ezsp: ERROR Transaction failure; status=NOT_CONNECTED. Last Frame: [FRAME: ID=52:"SEND_UNICAST" Seq=9 Len=7].
[23/11/2025, 18:32:12] z2m: Update of 'Office/Servers A Switch' at 6.07%, ≈ 36 minutes remaining
[23/11/2025, 18:32:12] z2m:mqtt: MQTT publish: topic 'zigbee2mqtt/Office/Servers A Switch', payload '{"ac_frequency":49.92,"current":0.7,"device_temperature":35,"energy":0.04,"linkquality":176,"power":124,"power_on_behavior":null,"state":"ON","update":{"installed_version":199688,"latest_version":199696,"progress":6.07,"remaining":2168,"state":"updating"},"voltage":237.33}'
[23/11/2025, 18:32:12] zh:ember:uart:ash: Port closed.
[23/11/2025, 18:32:12] zh:ember:uart:ash: ======== ASH stopped ========
[23/11/2025, 18:32:12] zh:ember:ezsp: ======== EZSP stopped ========
[23/11/2025, 18:32:12] zh:ember: ======== Ember Adapter Stopped ========
[23/11/2025, 18:32:12] z2m: Adapter disconnected, stopping

If rtscts is not the cause, then ensure the ZBT-2 is away from sources of interference like USB3 ports (the 1.5m cable it comes with should be enough to keep it away far enough). There was a similar issue which suggested this as the first troubleshooting step.
If moving it away from USB3 does not fix it, it might be a good time to raise the issue over at Z2M github. I’m not trying to fob you off, but there haven’t been reports (yet) about this happening on ZHA, so the Z2M github would be the best place to get your logs looked at.

1 Like

I set rtscts to true and the problem persists.
My ZBT-2 is far away from any sources of interference.

I opened an issue : [ZBT-2] OTA Update Crash with ZBT-2 & Zigbee2Mqtt · Issue #29782 · Koenkk/zigbee2mqtt · GitHub

2 Likes