Home Assistant ZHA OTA update guide 2026

I am big fan of Home Assistant now, I have switched all of my home devices to Home Assistant.

I’ve tried to ota zigbee devices via ZHA, I followed some guides, but they seem to be outdated. I’d like to share my updated experience here to help others.

  1. create zigbee_ota folder:
cd /config
mkdir zigbee_ota
  1. copy your ota file to zigbee_ota folder:
    here is an example what I have HS1SA_EF2_UART_0787_V18.ota,If we provide the following information, we can notify the device to check for the update immediately and speed up the process.
  • The vender id is: 0x120b (4619)
  • The image type: 0xA080 (41088)
  • The version: 18
  1. edit your configuration.yaml, ZHA engine will load your firmware from zigbee_ota folder.
zha:
  database_path: /config/zigbee.db
  enable_quirks: true
  custom_quirks_path: /config/leozhaquirks/
  zigpy_config:
    ota:
      extra_providers:
        - type: advanced
          path: /config/zigbee_ota
          warning: >-
            I understand I can *destroy* my devices by enabling OTA updates from files.
            Some OTA updates can be mistakenly applied to the wrong device, breaking it.
            I am consciously using this at my own risk.
  1. restart your Home Assitant.

  2. notify the device to check for the update immediately, here is my screenshot:
    HS1SA ZHA ota

  3. after 2hour, the device has got updated.

1 Like

The latest version (2026.1) of HA includes support for a new ZHA OTA firmware repository. There won’t be many, if any, firmware in it as yet.

Additionally, you can direct ZHA to use the Z2M repository by editing your configuration.yaml to include the following:

zha:
  zigpy_config:
    ota:
      extra_providers:
          - type: z2m
            url: https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/index.json
2 Likes

Thanks for the additional information, I saw it but have not tried it yet, it’s quite useful for z2m integration.

I’m curious, but not sure this is something I should be worrying about. HA consumes enough of my time as it is.

I’ve noticed in the past few months that I’ve started to get notifications that my ZHA devices have firmware updates available. Great! When I’ve got the time and the risk is low, I’ll give it a shot. Or when I add new devices I’ll update them as part of the process.

But honestly, changing existing devices which are already working exactly as I need them to, in a production system, is a low priority. I suppose there could be reliability and stability improvements to the firmware which would help keep my mesh performing optimally, but if all I want to do is turn a light on and off, or display a temperature, there are not many additional features I’d be anxious to upgrade for.

you are right, it depends what it has been updated. Sometimes, the firmware may optimized the mesh networking, if you have a larger scale of devices in you home, that will helps.

if your system is already running stable enough, leave it what it is would be good, too. it will not consume our time, I spent much of my time on HA as well, hahah.

@Orange-GT3 Do we need to add the url or it assumes a default one?

In other words, is this enough?
zha:
zigpy_config:
ota:
extra_providers:
- type: z2m

I’m not sure. The example config that I read included the url so I kept it.

I can’t get this working reliably.

Can anyone tell me why all my devices, including Ikea and 3rdReality, all show ‘unknown’?

Here is my config.yml snippet. I’m currently on 2026.3.0. Maybe I’m too anal about this but coming from a PC world, firmware updates were nearly always important to fix issues.

zha:
  zigpy_config:
    ota:
      extra_providers:
        - type: z2m
          url: https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/index.json

I’ve also tried this:

zha:
  custom_quirks_path: /config/custom_zha_quirks/
  zigpy_config:
    ota:
      otau_directory: /config/zigpy_ota

2 Likes

this is the key, you must add it.

I’ve had this working previously:

zha:
zigpy_config:
ota:
extra_providers:
- type: z2m

Meanwhile one of the latest updates seemed to have killed this code and now all my devices defaulted to update: unknown, even Ikea devices.

Also tried:
-This entry with the url: line someone shared in this thread, does not work.
-Tried removing the whole zha: entry altogether (since someone mentioned that zha now has its own fw repo), removing it made no difference, all updates remain as unknown.

1 Like

@cdmn1 Have you reported this or seen any relatable open issue in ha/zha/zigpy repos?