Zigbee2MQTT OTA Firmware Updates Failing for Bosch Thermostats (RBSH-TRV0-ZB-EU)

Hello Community,

I’m relatively new to Home Assistant (using it for a few months), and I’ve been stuck with a persistent issue around OTA firmware updates for my Bosch thermostats (model RBSH-TRV0-ZB-EU) using Zigbee2MQTT.
Before posting, I looked for similar topics, but nothing matched my exact combination of devices and symptoms.


:wrench: Setup

  • Home Assistant: Docker (Supervisor)
  • Zigbee2MQTT Version: 2.2.1-1
  • Zigbee Coordinator: ZBT-1 (CC2652-based, via USB extension cable)
  • Zigbee Channel: Default (not set → likely channel 11)
  • Hue Bridge: Zigbee Channel 15
  • Wi-Fi 2.4GHz: Channel 11 (manually changed from 7)
  • Wi-Fi 5GHz: Channels 36, 40, 44, 48
  • Router: Speedport Smart 2
  • Devices: 17 Zigbee devices (all via MQTT), including multiple Bosch TRVs

:lady_beetle: Problem Description

  • OTA updates are extremely slow or fail completely.
  • The update starts (e.g. for bad_heizung), progresses to ~30–70%, then stops.
  • Zigbee2MQTT logs show UART-related errors:
    Error: {“sequence”:1} after 4000ms
    Can’t send DATA frame …

Home Assistant logs show errors from better_thermostat, even though I’ve removed its configuration:

ValueError: could not convert string to float: ‘unavailable’

  • The MQTT connection resets, and entities like climate.bad_heizung_thermostat disappear temporarily.

:white_check_mark: What I’ve Tried

  • OTA updates one device at a time
  • Thermostats placed directly next to the Zigbee coordinator
  • Full restarts: Zigbee2MQTT, MQTT broker, Home Assistant
  • Removed better_thermostat from configuration.yaml (no entries left)
  • WLAN 2.4GHz channel changed from 7 → 11 (to reduce interference with Zigbee)
  • Ports 80 & 443 open (OTA file download confirmed working)

:brain: Observations

  • Moving Wi-Fi to channel 11 significantly improved stability (less Zigbee overlap)
  • Despite no active config, better_thermostat still causes crashes during OTA
  • Hue Bridge (on Zigbee channel 15) is unaffected
  • One OTA update completed fully, then the same issue reappeared on the next attempt

:question: Questions

  1. Are Bosch TRVs (RBSH-TRV0-ZB-EU) known to have OTA issues with Zigbee2MQTT?
  2. How can I fully remove or disable better_thermostat if no config entries exist?
  3. Is there a way to prevent MQTT from breaking during OTA (“unavailable” payloads)?
  4. Are there OTA tuning options (chunk size, retries) that could help?
  5. Would it be safer to switch to Zigbee channel 20 (to avoid Wi-Fi), even though the Hue Bridge uses channel 15?

Thanks a lot for any insights or suggestions – much appreciated!

MixDax