Can't complete interview on Bosch TRV II

HI, I bought two new Bosch TRV II zigbee devices to replace older zwave TRV’s. I have the Sonoff ZBDongle-E running 7.4.3 of the coordinator firmware. The stick is on a USB2 port and is attached to an extension cable away from the PC.
When I initiate a device add from ZHA the TRV is found but the interview process won’t complete. I can integrate other devices using ZHA without problem.

HA is 2024.10.0.

I’ve pulled a debug log while integrating device 30:e8:e4:00:00:d3:a1:9d, but I’m not seeing a cause. I don’t believe that it’s noise or a comms issue as I’ve isolated the network by resetting the Sonoff and I don’t think that I’m seeing noise related errors in the debug counters.
Do I need to raise a bug to have this looked at?

2024-10-14 15:42:11.697 DEBUG (MainThread) [bellows.ezsp.protocol] Sending command  sendUnicast: () {'type': <EmberOutgoingMessageType.OUTGOING_DIRECT: 0>, 'indexOrDestination': 0xBF47, 'apsFrame': EmberApsFrame(profileId=260, clusterId=3, sourceEndpoint=1, destinationEndpoint=1, options=<EmberApsOption.APS_OPTION_RETRY|APS_OPTION_ENABLE_ROUTE_DISCOVERY: 320>, groupId=0, sequence=16), 'messageTag': 65, 'messageContents': b'\x01\x10@\x02\x00'}
2024-10-14 15:42:11.697 DEBUG (bellows.thread_0) [bellows.ash] Sending frame DataFrame(frm_num=0, re_tx=False, ack_num=6, ezsp_frame=b'?\x00\x014\x00\x00G\xbf\x04\x01\x03\x00\x01\x01@\x01\x00\x00\x10A\x05\x01\x10@\x02\x00') + FLAG
2024-10-14 15:42:11.697 DEBUG (bellows.thread_0) [bellows.ash] Sending data  067d5d21a9602a15f5e6904b26aa5493099d4e27bbaccb669bbdc463cf2f7e
2024-10-14 15:42:11.705 DEBUG (bellows.thread_0) [bellows.ash] Received data 617d5da1a9602a1583f6167e
2024-10-14 15:42:11.705 DEBUG (bellows.thread_0) [bellows.ash] Received frame DataFrame(frm_num=6, re_tx=0, ack_num=1, ezsp_frame=b'?\x80\x014\x00\x001')
2024-10-14 15:42:11.705 DEBUG (bellows.thread_0) [bellows.ash] Sending frame AckFrame(res=0, ncp_ready=0, ack_num=7) + FLAG
2024-10-14 15:42:11.705 DEBUG (bellows.thread_0) [bellows.ash] Sending data  87009f7e
2024-10-14 15:42:11.705 DEBUG (MainThread) [bellows.ezsp.protocol] Received command sendUnicast: {'status': <EmberStatus.SUCCESS: 0>, 'sequence': 49}
2024-10-14 15:42:14.338 DEBUG (bellows.thread_0) [bellows.ash] Received data 717d5db1a9702a7d3151c4359925aab17a799d4e27ab75a67e
2024-10-14 15:42:14.338 DEBUG (bellows.thread_0) [bellows.ash] Received frame DataFrame(frm_num=7, re_tx=0, ack_num=1, ezsp_frame=b'?\x90\x01$\x00\x04\xe3\x9d\xa1\xd3\x00\x00\xe4\xe80\x01\x00\x00\x00')
2024-10-14 15:42:14.338 DEBUG (bellows.thread_0) [bellows.ash] Sending frame AckFrame(res=0, ncp_ready=0, ack_num=0) + FLAG
2024-10-14 15:42:14.338 DEBUG (bellows.thread_0) [bellows.ash] Sending data  8070787e
2024-10-14 15:42:14.339 DEBUG (MainThread) [bellows.ezsp.protocol] Received command trustCenterJoinHandler: {'newNodeId': 0xE304, 'newNodeEui64': 30:e8:e4:00:00:d3:a1:9d, 'status': <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_JOIN: 1>, 'policyDecision': <EmberJoinDecision.USE_PRECONFIGURED_KEY: 0>, 'parentOfNewNodeId': 0x0000}
2024-10-14 15:42:14.339 DEBUG (MainThread) [bellows.zigbee.application] Received trustCenterJoinHandler frame with [0xE304, 30:e8:e4:00:00:d3:a1:9d, <EmberDeviceUpdate.STANDARD_SECURITY_UNSECURED_JOIN: 1>, <EmberJoinDecision.USE_PRECONFIGURED_KEY: 0>, 0x0000]
2024-10-14 15:42:14.339 INFO (MainThread) [zigpy.application] Device 0xe304 (30:e8:e4:00:00:d3:a1:9d) joined the network
2024-10-14 15:42:14.339 DEBUG (MainThread) [zigpy.device] [0xe304] Scheduling initialization
2024-10-14 15:42:14.339 DEBUG (MainThread) [zigpy.device] [0xe304] Canceling old initialize call
2024-10-14 15:42:14.339 DEBUG (MainThread) [bellows.ezsp.protocol] Sending command  findKeyTableEntry: () {'address': 30:e8:e4:00:00:d3:a1:9d, 'linkKey': True}
2024-10-14 15:42:14.339 DEBUG (MainThread) [zigpy.util] Tries remaining: 5
2024-10-14 15:42:14.339 INFO (MainThread) [zigpy.device] [0xe304] Requesting 'Node Descriptor'
2024-10-14 15:42:14.339 DEBUG (MainThread) [zigpy.device] [0xe304] Extending timeout for 0x15 request
2024-10-14 15:42:14.339 DEBUG (MainThread) [bellows.zigbee.application] Sending packet ZigbeePacket(timestamp=datetime.datetime(2024, 10, 14, 14, 42, 14, 339977, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0xE304), dst_ep=0, source_route=None, extended_timeout=True, tsn=21, profile_id=0, cluster_id=<ZDOCmd.Node_Desc_req: 0x0002>, data=Serialized[b'\x15\x04\xe3'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=None, rssi=None)
2024-10-14 15:42:14.340 DEBUG (MainThread) [bellows.ezsp.protocol] Send semaphore is locked, delaying before sending getExtendedTimeout((), {'remoteEui64': 30:e8:e4:00:00:d3:a1:9d})
2024-10-14 15:42:14.340 DEBUG (bellows.thread_0) [bellows.ash] Sending frame DataFrame(frm_num=1, re_tx=False, ack_num=0, ezsp_frame=b'@\x00\x01u\x00\x9d\xa1\xd3\x00\x00\xe4\xe80\x01') + FLAG
2024-10-14 15:42:14.340 DEBUG (bellows.thread_0) [bellows.ash] Sending data  100221a9212a887d338a944ac1426593c8837e
2024-10-14 15:42:14.346 DEBUG (bellows.thread_0) [bellows.ash] Received data 0202a1a9212aea87e67e
2024-10-14 15:42:14.346 DEBUG (bellows.thread_0) [bellows.ash] Received frame DataFrame(frm_num=0, re_tx=0, ack_num=2, ezsp_frame=b'@\x80\x01u\x00\xff')
2024-10-14 15:42:14.346 DEBUG (bellows.thread_0) [bellows.ash] Sending frame AckFrame(res=0, ncp_ready=0, ack_num=1) + FLAG
2024-10-14 15:42:14.346 DEBUG (bellows.thread_0) [bellows.ash] Sending data  8160597e
2024-10-14 15:42:14.347 DEBUG (MainThread) [bellows.ezsp.protocol] Received command findKeyTableEntry: {'index': 255}
2024-10-14 15:42:14.347 DEBUG (MainThread) [bellows.ezsp.protocol] Sending command  getExtendedTimeout: () {'remoteEui64': 30:e8:e4:00:00:d3:a1:9d} after 0.01s delay
2024-10-14 15:42:14.347 DEBUG (bellows.thread_0) [bellows.ash] Sending frame DataFrame(frm_num=2, re_tx=False, ack_num=1, ezsp_frame=b'A\x00\x01\x7f\x00\x9d\xa1\xd3\x00\x00\xe4\xe80') + FLAG
2024-10-14 15:42:14.347 DEBUG (bellows.thread_0) [bellows.ash] Sending data  210321a92b2a887d338a944ac142658f1f7e
2024-10-14 15:42:14.352 DEBUG (bellows.thread_0) [bellows.ash] Received data 7d3303a1a92b2a14844c7e
2024-10-14 15:42:14.352 DEBUG (bellows.thread_0) [bellows.ash] Received frame DataFrame(frm_num=1, re_tx=0, ack_num=3, ezsp_frame=b'A\x80\x01\x7f\x00\x01')
2024-10-14 15:42:14.352 DEBUG (bellows.thread_0) [bellows.ash] Sending frame AckFrame(res=0, ncp_ready=0, ack_num=2) + FLAG
2024-10-14 15:42:14.352 DEBUG (bellows.thread_0) [bellows.ash] Sending data  82503a7e
2024-10-14 15:42:14.353 DEBUG (MainThread) [bellows.ezsp.protocol] Received command getExtendedTimeout: {'extendedTimeout': <Bool.true: 1>}
2024-10-14 15:42:14.353 DEBUG (MainThread) [bellows.ezsp.protocol] Sending command  sendUnicast: () {'type': <EmberOutgoingMessageType.OUTGOING_DIRECT: 0>, 'indexOrDestination': 0xE304, 'apsFrame': EmberApsFrame(profileId=0, clusterId=2, sourceEndpoint=0, destinationEndpoint=0, options=<EmberApsOption.APS_OPTION_RETRY|APS_OPTION_ENABLE_ROUTE_DISCOVERY: 320>, groupId=0, sequence=21), 'messageTag': 66, 'messageContents': b'\x15\x04\xe3'}
2024-10-14 15:42:14.353 DEBUG (bellows.thread_0) [bellows.ash] Sending frame DataFrame(frm_num=3, re_tx=False, ack_num=2, ezsp_frame=b'B\x00\x014\x00\x00\x04\xe3\x00\x00\x02\x00\x00\x00@\x01\x00\x00\x15B\x03\x15\x04\xe3') + FLAG
2024-10-14 15:42:14.353 DEBUG (bellows.thread_0) [bellows.ash] Sending data  320021a9602a15b6ba944a27aa5592099d4e27beafcd728f1e1c1b7e
2024-10-14 15:42:14.360 DEBUG (bellows.thread_0) [bellows.ash] Received data 2400a1a9602a158106517e
2024-10-14 15:42:14.360 DEBUG (bellows.thread_0) [bellows.ash] Received frame DataFrame(frm_num=2, re_tx=0, ack_num=4, ezsp_frame=b'B\x80\x014\x00\x003')
2024-10-14 15:42:14.360 DEBUG (bellows.thread_0) [bellows.ash] Sending frame AckFrame(res=0, ncp_ready=0, ack_num=3) + FLAG
2024-10-14 15:42:14.360 DEBUG (bellows.thread_0) [bellows.ash] Sending data  83401b7e

If anybody’s following this, thanks to Puddly, I was able to complete the interview with the Bosch TRV II by using the zha.permit command and by including the QR code on the rear door of the TRV.

It seems that it can’t be integrated by using the normal add devices command from ZHA.