See below extract from the log.
===================================================================
ZHA DEBUG EXTRACT - Entry Switch continuous unsecured-rejoin loop
===================================================================
Device: _TZE28C1000000_xibaabmu TS0601 4-gang wall switch
IEEE: a4:c1:38:ef:f7:ef:45:76
Firmware: 0x00000063
Coordinator: Sonoff ZBDongle-E (EZSP / EmberZNet)
Host: Home Assistant Core 2026.4.3, ZHA
Log window: 2026-07-02 15:50 - 18:32 AEST (UTC+10)
===================================================================
KEY FINDING
-----------
Over the 2h42m capture, this device produced 512 join-handler events
and ZERO normal operational frames. Breakdown of the 256 application-
layer trustCenterJoinHandler frames:
256 / 256 status = STANDARD_SECURITY_UNSECURED_REJOIN
256 / 256 policyDecision = DENY_JOIN
Interpretation:
- The switch continuously attempts an UNSECURED rejoin (rejoining
without the network key), every ~30-60 seconds, indefinitely.
- The trust centre correctly DENIES every unsecured rejoin.
- Result: the device can never re-establish a secure link and remains
unavailable until physically power-cycled (which forces a fresh
secured association). It then degrades back into this loop.
- The device is cycling short addresses (0x775E, 0xA5C8, 0x6EDA),
consistent with repeated failed re-association.
This indicates the device is failing to retain / correctly use its
network security material, i.e. a device-side firmware fault on
build 0x63 - not a signal, range, or coordinator issue:
- Signal strong throughout: LQI ~156, RSSI ~-61.
- Device links directly to the coordinator (single hop).
- Other Tuya TS0601 devices on the same coordinator are stable.
- A second identical unit is intermittently stable.
===================================================================
EVIDENCE 1: Join status / policy breakdown (raw counts)
===================================================================
trustCenterJoinHandler status types:
256 STANDARD_SECURITY_UNSECURED_REJOIN
trustCenterJoinHandler policy decisions:
256 DENY_JOIN
===================================================================
EVIDENCE 2: Full EZSP frames - 8 representative join events
(untruncated - shows status, policyDecision, parent, addresses)
===================================================================
2026-07-02 15:50:31.227 DEBUG (MainThread) [bellows.ezsp.protocol] Received command trustCenterJoinHandler: {'newNodeId': 0x6EDA, 'newNodeEui64': a4:c1:38:ef:f7:ef:45:76, 'status': <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, 'policyDecision': <EmberJoinDecision.DENY_JOIN: 2>, 'parentOfNewNodeId': 0x0000}
2026-07-02 15:51:07.856 DEBUG (MainThread) [bellows.ezsp.protocol] Received command trustCenterJoinHandler: {'newNodeId': 0x6EDA, 'newNodeEui64': a4:c1:38:ef:f7:ef:45:76, 'status': <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, 'policyDecision': <EmberJoinDecision.DENY_JOIN: 2>, 'parentOfNewNodeId': 0x0000}
2026-07-02 15:52:01.725 DEBUG (MainThread) [bellows.ezsp.protocol] Received command trustCenterJoinHandler: {'newNodeId': 0x6EDA, 'newNodeEui64': a4:c1:38:ef:f7:ef:45:76, 'status': <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, 'policyDecision': <EmberJoinDecision.DENY_JOIN: 2>, 'parentOfNewNodeId': 0x0000}
2026-07-02 15:52:52.342 DEBUG (MainThread) [bellows.ezsp.protocol] Received command trustCenterJoinHandler: {'newNodeId': 0x6EDA, 'newNodeEui64': a4:c1:38:ef:f7:ef:45:76, 'status': <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, 'policyDecision': <EmberJoinDecision.DENY_JOIN: 2>, 'parentOfNewNodeId': 0x0000}
2026-07-02 15:53:40.047 DEBUG (MainThread) [bellows.ezsp.protocol] Received command trustCenterJoinHandler: {'newNodeId': 0x6EDA, 'newNodeEui64': a4:c1:38:ef:f7:ef:45:76, 'status': <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, 'policyDecision': <EmberJoinDecision.DENY_JOIN: 2>, 'parentOfNewNodeId': 0x0000}
2026-07-02 15:54:32.717 DEBUG (MainThread) [bellows.ezsp.protocol] Received command trustCenterJoinHandler: {'newNodeId': 0x6EDA, 'newNodeEui64': a4:c1:38:ef:f7:ef:45:76, 'status': <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, 'policyDecision': <EmberJoinDecision.DENY_JOIN: 2>, 'parentOfNewNodeId': 0x0000}
2026-07-02 15:55:20.299 DEBUG (MainThread) [bellows.ezsp.protocol] Received command trustCenterJoinHandler: {'newNodeId': 0x6EDA, 'newNodeEui64': a4:c1:38:ef:f7:ef:45:76, 'status': <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, 'policyDecision': <EmberJoinDecision.DENY_JOIN: 2>, 'parentOfNewNodeId': 0x0000}
2026-07-02 15:55:57.967 DEBUG (MainThread) [bellows.ezsp.protocol] Received command trustCenterJoinHandler: {'newNodeId': 0x6EDA, 'newNodeEui64': a4:c1:38:ef:f7:ef:45:76, 'status': <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, 'policyDecision': <EmberJoinDecision.DENY_JOIN: 2>, 'parentOfNewNodeId': 0x0000}
===================================================================
EVIDENCE 3: Timestamped join-event sequence (representative sample)
Full capture had 256 such events every ~30-60s; sample shown.
===================================================================
2026-07-02 15:50:31.227 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 15:51:07.857 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 15:52:01.725 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 15:52:52.343 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 15:53:40.047 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 15:54:32.717 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 15:55:20.299 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 15:55:57.967 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 15:56:57.946 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 15:57:57.392 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 15:57:57.418 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 15:58:45.074 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 15:58:45.100 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 15:59:20.297 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 16:00:06.652 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 16:00:37.308 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 16:01:35.347 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 16:02:19.318 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 16:03:02.593 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:03:02.620 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:03:46.629 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:03:46.654 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:04:18.659 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 16:04:56.442 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 16:05:47.555 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 16:06:27.488 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 16:07:59.489 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:07:59.514 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:08:32.937 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:09:06.618 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:09:06.647 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:09:52.300 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:09:52.325 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:10:27.777 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:10:27.807 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:11:20.763 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:11:20.790 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x775E]
2026-07-02 16:12:15.711 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 16:12:57.366 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
2026-07-02 16:13:32.517 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0x6EDA, a4:c1:38:ef:f7:ef:45:76, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_REJOIN: 3>, <EmberJoinDecision.DENY_JOIN: 2>, 0x0000]
[... pattern repeats identically for the remainder of the 256 events
through to 18:32:03 AEST - full log available on request ...]