Two out of 10 of my Blue Smart Dimmers are failing when trying to upgrade in similar but different ways. I’m running ZHA and the common log errors after the 100% of the firmware is downloaded:
2026-02-05 23:28:57.590 DEBUG (MainThread) [zigpy.zcl] [0x93EF:1:0xfc57] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl<0x1D>(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=1, direction=<Direction.Server_to_Client: 1>, disable_default_response=1, reserved=0, *is_cluster=True, *is_general=False), manufacturer=4631, tsn=79, command_id=1, *direction=<Direction.Server_to_Client: 1>)2026-02-05 23:28:57.590 DEBUG (MainThread) [zigpy.zcl] [0x93EF:1:0xfc57] Unknown cluster command 1 ‘07 17 12 00’2026-02-05 23:28:57.590 DEBUG (MainThread) [zigpy.listeners] Matcher checkin() and command ZCLHeader(frame_control=FrameControl<0x1D>(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=1, direction=<Direction.Server_to_Client: 1>, disable_default_response=1, reserved=0, *is_cluster=True, *is_general=False), manufacturer=4631, tsn=79, command_id=1, *direction=<Direction.Server_to_Client: 1>) b’\x07\x17\x12\x00’ are incompatibleTraceback (most recent call last):File “/usr/local/lib/python3.13/logging/handlers.py”, line 1509, in emitself.enqueue(self.prepare(record))~~~~~~~~~~~~^^^^^^^^
………..
The other throws this error before throwing the above “Unknown cluster command 1” error:
2026-02-06 00:09:36.593 DEBUG (MainThread) [zigpy.zcl] [0x4BE7:1:0x0019] Sending reply header: ZCLHeader(frame_control=FrameControl<0x19>(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, direction=<Direction.Server_to_Client: 1>, disable_default_response=1, reserved=0, *is_cluster=True, *is_general=False), tsn=112, command_id=7, *direction=<Direction.Server_to_Client: 1>)
2026-02-06 00:09:36.594 DEBUG (MainThread) [zigpy.zcl] [0x4BE7:1:0x0019] Sending reply: upgrade_end_response(manufacturer_code=4655, image_type=257, file_version=16909060, current_time=0, upgrade_time=0)
--- Logging error ---
Traceback (most recent call last):
File "/usr/local/lib/python3.13/logging/handlers.py", line 1509, in emit
self.enqueue(self.prepare(record))
~~~~~~~~~~~~^^^^^^^^
File "/usr/local/lib/python3.13/logging/handlers.py", line 1491, in prepare
msg = self.format(record)
File "/usr/local/lib/python3.13/logging/__init__.py", line 999, in format
return fmt.format(record)
~~~~~~~~~~^^^^^^^^
File "/usr/local/lib/python3.13/logging/__init__.py", line 712, in format
record.message = record.getMessage()
~~~~~~~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/logging/__init__.py", line 400, in getMessage
msg = msg % self.args
~~~~^~~~~~~~~~~
File "/usr/local/lib/python3.13/site-packages/zigpy/types/struct.py", line 387, in __repr__
for f, v in self.assigned_fields():
~~~~~~~~~~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/zigpy/types/struct.py", line 194, in assigned_fields
if field.requires is not None and not field.requires(self):
~~~~~~~~~~~~~~^^^^^^
File "/usr/local/lib/python3.13/site-packages/zigpy/zcl/clusters/general.py", line 1929, in <lambda>
lambda s: s.field_control
~~~~~~~~~~~~~~~
& QueryNextImageCommandFieldControl.HardwareVersion
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TypeError: unsupported operand type(s) for &: 'NoneType' and 'QueryNextImageCommandFieldControl'
Call stack:
2026-02-06 00:09:36.740 DEBUG (MainThread) [zigpy.application] Received a packet: ZigbeePacket(timestamp=datetime.datetime(2026, 2, 6, 6, 9, 36, 740872, tzinfo=datetime.timezone.utc), priority=None, src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x4BE7), src_ep=1, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=0, profile_id=260, cluster_id=64599, data=Serialized[b'\x1d\x17\x12q\x01\x07\x17\x12\x00'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=200, rssi=-50)
2026-02-06 00:09:36.742 DEBUG (MainThread) [zigpy.zcl] [0x4BE7:1:0xfc57] Received ZCL frame: '1d 17 12 71 01 07 17 12 00'
File "<frozen runpy>", line 198, in _run_module_as_main
2026-02-06 00:09:36.742 DEBUG (MainThread) [zigpy.zcl] [0x4BE7:1:0xfc57] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl<0x1D>(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=1, direction=<Direction.Server_to_Client: 1>, disable_default_response=1, reserved=0, *is_cluster=True, *is_general=False), manufacturer=4631, tsn=113, command_id=1, *direction=<Direction.Server_to_Client: 1>)
File "<frozen runpy>", line 88, in _run_code
File "/usr/src/homeassistant/homeassistant/__main__.py", line 229, in <module>
sys.exit(main())
I’ve tried factory reset, air gap and removing from ZHA & then adding back. I do see in the zigpy logs that it is stating it had previously looked up the latest firmware so it is using a cached response.
One is a one-way and the other is part of 3-way with its partner successfully updated to 3.04. I’m at a lost on how to move further.