Issue updating Ikea firmware in ZHA

Hey Everyone,

I’m new to Zigbee and ZHA and I’m running into an issue updating the firmware on my Ikea light bulbs and remotes.

I’m trying to following the instructions I found here:
https://www.reddit.com/r/homeassistant/comments/fak430/how_to_update_your_ikea_or_ledevance_firmware/

When I get to the step of telling the device to check-in I keep seeing the following in the log:

2021-01-18 17:18:11 DEBUG (MainThread) [homeassistant.components.zha.core.device] [0x5744](TRADFRI bulb E26 WW 806lm): Issued cluster command: cluster_id: 25 command: 0 command_type: client args: (0, 100) cluster_id: out manufacturer: None endpoint_id: 1
2021-01-18 17:18:11 DEBUG (MainThread) [homeassistant.components.zha.api] Issued command for: cluster_id: [25] cluster_type: [out] endpoint_id: [1] command: [0] command_type: [client] args: [0, 100] manufacturer: [None] response: EmberStatus.SUCCESS
2021-01-18 17:18:11 WARNING (MainThread) [zigpy.ota.image] Fixing IKEA OTA image with trailing data (1100 bytes)

I don’t know what this warning means. I have searched the forum and googled but I can’t find any mention of this particular warning.

For reference, this is what I have in my config for ZHA:

zha:
  zigpy_config:
    ota:
      ikea_provider: true                        # Auto update Trådfri devices
      ledvance_provider: true                    # Auto update LEDVANCE devices
      otau_directory: /config/zigbee_ota_updates  # Utilize .ota files to update everything else

Any help would be appreciated.

Thanks!

IKEA’s firmware images at the main server are currently broken (wrong filesize), so obviously ZHA fixes them in-the-fly.

Zigbee2mqtt instead uses IKEA‘s test server to download images their.

Either way: IKEA‘s fault

1 Like

What is new in the firmwares? it worth updating?

Nothing too interesting. We need 6.7.8 to fix the bug bug where they crash. Still not there yet.

You can use the test firmware too on ZHA:

Sorry to re-awaken an old thread, but I’m also trying to update my firmware on my Fyrtur blind via ZHA

I’ve followed the steps here: How to update your IKEA or Ledevance firmware with ZHA : homeassistant (reddit.com)

But I have two issues -

  1. I’m unsure where to get the firmware from (assuming that needs to be put in the folder specified if it’s not grabbed automatically)
  2. When trying to follow

for IKEA devices, you can go Config - Integrations - ZHA - Device - OTA Cluster > image_notify command to ask them to check in.

I get stuck

I’m presuming I need to put a value in the field but I’m not sure what the Manufacturer Code Override is (again, an assumption but maybe the new firmware number… which i don’t know)

Can anyone advise?

UPDATE:
Okay so after some searching I have tried a different route:

2022-07-27 12:20:13 DEBUG (MainThread) [custom_components.zha_toolkit.utils] Parameters '{'ieee': 'button.fyrtur_black_out_blind_study_c1992afe_identify'}'
2022-07-27 12:20:13 DEBUG (MainThread) [custom_components.zha_toolkit.utils] Final manf 'None'
2022-07-27 12:20:13 DEBUG (MainThread) [custom_components.zha_toolkit.utils] registry_entity RegistryEntry(entity_id='button.fyrtur_black_out_blind_study_c1992afe_identify', unique_id='00:0d:6f:ff:fe:2a:99:c1-1-3', platform='zha', area_id=None, capabilities=None, config_entry_id='09743d736ecc5ef5639e91c258dc2b75', device_class=None, device_id='cf177740c1f8d5497724e4c312ab82ac', disabled_by=None, entity_category=<EntityCategory.DIAGNOSTIC: 'diagnostic'>, hidden_by=None, icon=None, id='4da2ced3f0e821285961fb745aef2df7', has_entity_name=False, name='Fyrtur Black Out Blind (Study) c1992afe identify', options={}, original_device_class='update', original_icon=None, original_name='IKEA of Sweden FYRTUR block-out roller blind c1992afe identify', supported_features=0, unit_of_measurement=None)
2022-07-27 12:20:13 DEBUG (MainThread) [custom_components.zha_toolkit.utils] registry_device DeviceEntry(area_id='study', config_entries={'09743d736ecc5ef5639e91c258dc2b75'}, configuration_url=None, connections={('zigbee', '00:0d:6f:ff:fe:2a:99:c1')}, disabled_by=None, entry_type=None, id='cf177740c1f8d5497724e4c312ab82ac', identifiers={('zha', '00:0d:6f:ff:fe:2a:99:c1')}, manufacturer='IKEA of Sweden', model='FYRTUR block-out roller blind', name_by_user='Fyrtur Black Out Blind (Study)', name='IKEA of Sweden FYRTUR block-out roller blind', suggested_area=None, sw_version='0x23073631', hw_version=None, via_device_id='312aa4ee82739f9a098169869969e22f', is_new=False)
2022-07-27 12:20:13 DEBUG (MainThread) [custom_components.zha_toolkit] 'ieee' parameter: 'button.fyrtur_black_out_blind_study_c1992afe_identify' -> IEEE Addr: '00:0d:6f:ff:fe:2a:99:c1'
2022-07-27 12:20:13 DEBUG (MainThread) [custom_components.zha_toolkit] Default handler for ota_notify
2022-07-27 12:20:13 DEBUG (MainThread) [custom_components.zha_toolkit] Handler: <function command_handler_default at 0x7fbf928e3eb0>
2022-07-27 12:20:13 DEBUG (MainThread) [custom_components.zha_toolkit] running default command: <ServiceCall zha_toolkit.ota_notify (c:01G8ZP5FRBP6ZX6S1V2PKNTS8T): ieee=button.fyrtur_black_out_blind_study_c1992afe_identify>
2022-07-27 12:20:13 DEBUG (MainThread) [custom_components.zha_toolkit.default] Trying to import custom_components.zha_toolkit.ota to call ota_notify
2022-07-27 12:20:13 DEBUG (MainThread) [zigpy.ota.provider] Trådfri: Finished downloading firmware update list
2022-07-27 12:20:13 DEBUG (MainThread) [zigpy.ota.provider] Ledvance: Finished downloading firmware update list
2022-07-27 12:20:13 DEBUG (MainThread) [custom_components.zha_toolkit.ota] running 'image_notify' command: <ServiceCall zha_toolkit.ota_notify (c:01G8ZP5FRBP6ZX6S1V2PKNTS8T): ieee=button.fyrtur_black_out_blind_study_c1992afe_identify>
2022-07-27 12:20:13 DEBUG (MainThread) [zigpy.device] [0x7e12] Extending timeout for 0x0a request
2022-07-27 12:20:21 DEBUG (MainThread) [homeassistant.components.zha.core.device] [0xCC6F](TRADFRI open/close remote): Device seen - marking the device available and resetting counter
2022-07-27 12:20:21 DEBUG (MainThread) [homeassistant.components.zha.core.device] [0xCC6F](TRADFRI open/close remote): Update device availability - device available: True - new availability: True - changed: False
  • or maybe not… the debug logs show an error
This error originated from a custom integration.

Logger: homeassistant.core
Source: custom_components/zha_toolkit/ota.py:39
Integration: 🧰 ZHA Toolkit Service (documentation, issues)
First occurred: 12:20:43 (2 occurrences)
Last logged: 12:30:18

Error executing service: <ServiceCall zha_toolkit.ota_notify (c:01G8ZP5FRBP6ZX6S1V2PKNTS8T): ieee=button.fyrtur_black_out_blind_study_c1992afe_identify>
Error executing service: <ServiceCall zha_toolkit.ota_notify (c:01G8ZPQ37E44V4XWDAMD36A250): ieee=sensor.osram_lightify_switch_mini_53e41714_power>
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/asyncio/tasks.py", line 456, in wait_for
    return fut.result()
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/core.py", line 1731, in catch_exceptions
    await coro_or_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 1750, in _execute_service
    await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
  File "/config/custom_components/zha_toolkit/__init__.py", line 695, in toolkit_service
    raise handler_exception
  File "/config/custom_components/zha_toolkit/__init__.py", line 659, in toolkit_service
    await handler(
  File "/config/custom_components/zha_toolkit/__init__.py", line 744, in command_handler_default
    await default.default(
  File "/config/custom_components/zha_toolkit/default.py", line 33, in default
    await handler(app, listener, ieee, cmd, data, service, params, event_data)
  File "/config/custom_components/zha_toolkit/ota.py", line 39, in ota_notify
    await basic.bind()
  File "/usr/local/lib/python3.10/site-packages/zigpy/device.py", line 325, in request
    return await asyncio.wait_for(req.result, timeout)
  File "/usr/local/lib/python3.10/asyncio/tasks.py", line 458, in wait_for
    raise exceptions.TimeoutError() from exc
asyncio.exceptions.TimeoutError

Ever get it updated? Mine updates but crashes around 15% every time

Nope, never managed it :frowning: