Zigpy 'Status' object is not iterable

After powercycle, my custom Zigbee device is not connecting anymore to HA.
The coordinator is a CC2531 with Stack 1.2.

I tried to allow join, the device announce itself, but Zigpy returns an error:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/zigpy/device.py", line 97, in group_membership_scan
    await ep.group_membership_scan()
  File "/usr/local/lib/python3.8/site-packages/zigpy/endpoint.py", line 161, in group_membership_scan
    groups = {group for group in res[1]}
TypeError: 'Status' object is not iterable

Can anybody help?

Thank you

Here is the permit join portion of the log:

2021-05-10 18:47:44 INFO (MainThread) [homeassistant.components.zha.api] Permitting joins for 60s
2021-05-10 18:47:44 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.MgmtPermitJoinReq.Req(AddrMode=<AddrMode.NWK: 2>, Dst=0x0000, Duration=60, TCSignificance=1)
2021-05-10 18:47:44 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.MgmtPermitJoinReq.Rsp(Status=<Status.SUCCESS: 0>)
2021-05-10 18:47:44 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.PermitJoinInd.Callback(Duration=60)
2021-05-10 18:47:44 INFO (MainThread) [zigpy_znp.zigbee.application] Coordinator is permitting joins for 60 seconds
2021-05-10 18:47:44 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.MgmtPermitJoinRsp.Callback(Src=0x0000, Status=<Status.SUCCESS: 0>)
2021-05-10 18:47:44 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted a ZDO request: dst_addr=AddrModeAddress(mode=<AddrMode.Broadcast: 15>, address=0xFFFC), dst_ep=0, src_ep=0, cluster=54, sequence=111, options=TransmitOptions.NONE, radius=0, data=b'o<\x00'
2021-05-10 18:47:44 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted AP ZDO request 54({'PermitDuration': 60, 'TC_Significant': <Bool.false: 0>}) and replaced with ZDO.MgmtPermitJoinReq.Req(AddrMode=<AddrMode.Broadcast: 15>, Dst=0xFFFC, Duration=60, TCSignificance=0)
2021-05-10 18:47:44 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.MgmtPermitJoinReq.Req(AddrMode=<AddrMode.Broadcast: 15>, Dst=0xFFFC, Duration=60, TCSignificance=0)
2021-05-10 18:47:44 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.MgmtPermitJoinReq.Rsp(Status=<Status.SUCCESS: 0>)
2021-05-10 18:47:44 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.MgmtPermitJoinRsp.Callback(Src=0x0000, Status=<Status.SUCCESS: 0>)

And here it’s right after, with the error:

2021-05-10 18:48:02 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.EndDeviceAnnceInd.Callback(Src=0x1EF2, NWK=0x1EF2, IEEE=00:12:4b:00:09:db:f3:c2, Capabilities=<MACCapabilities.AllocateShortAddrDuringAssocNeeded|RXWhenIdle|MainsPowered|Router: 142>)
2021-05-10 18:48:02 INFO (MainThread) [zigpy_znp.zigbee.application] ZDO device announce: ZDO.EndDeviceAnnceInd.Callback(Src=0x1EF2, NWK=0x1EF2, IEEE=00:12:4b:00:09:db:f3:c2, Capabilities=<MACCapabilities.AllocateShortAddrDuringAssocNeeded|RXWhenIdle|MainsPowered|Router: 142>)
2021-05-10 18:48:02 INFO (MainThread) [zigpy.application] Device 0x1ef2 (00:12:4b:00:09:db:f3:c2) joined the network
2021-05-10 18:48:02 DEBUG (MainThread) [zigpy.application] Skip initialization for existing device 00:12:4b:00:09:db:f3:c2
2021-05-10 18:48:02 DEBUG (MainThread) [zigpy_znp.zigbee.application] Pretending we received a ZDO message: b'\xFF\xF2\x1E\xC2\xF3\xDB\x09\x00\x4B\x12\x00\x8E'
2021-05-10 18:48:02 DEBUG (MainThread) [zigpy.zdo] [0x1ef2:zdo] ZDO request ZDOCmd.Device_annce: [0x1EF2, 00:12:4b:00:09:db:f3:c2, 142]
2021-05-10 18:48:02 DEBUG (MainThread) [zigpy_znp.api] Sending request: AF.DataRequestExt.Req(DstAddrModeAddress=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0x1EF2), DstEndpoint=13, DstPanId=0x0000, SrcEndpoint=1, ClusterId=4, TSN=112, Options=<TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST: 48>, Radius=30, Data=b'\x01\x70\x02\x00')
2021-05-10 18:48:02 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.DataRequestExt.Rsp(Status=<Status.SUCCESS: 0>)
2021-05-10 18:48:02 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.DataConfirm.Callback(Status=<Status.SUCCESS: 0>, Endpoint=1, TSN=112)
2021-05-10 18:48:02 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.IncomingMsg.Callback(GroupId=0x0000, ClusterId=4, SrcAddr=0x1EF2, SrcEndpoint=13, DstEndpoint=1, WasBroadcast=<Bool.false: 0>, LQI=105, SecurityUse=<Bool.false: 0>, TimeStamp=13533465, TSN=0, Data=b'\x18\x70\x0B\x02\x81', MacSrcAddr=0x1EF2, MsgResultRadius=29)
2021-05-10 18:48:02 DEBUG (MainThread) [zigpy.zcl] [0x1ef2:13:0x0004] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=112 command_id=Command.Default_Response>
2021-05-10 18:48:02 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.TCDevInd.Callback(SrcNwk=0x1EF2, SrcIEEE=00:12:4b:00:09:db:f3:c2, ParentNwk=0x0000)
2021-05-10 18:48:02 INFO (MainThread) [zigpy_znp.zigbee.application] TC device join: ZDO.TCDevInd.Callback(SrcNwk=0x1EF2, SrcIEEE=00:12:4b:00:09:db:f3:c2, ParentNwk=0x0000)
2021-05-10 18:48:04 INFO (MainThread) [zigpy.application] Device 0x1ef2 (00:12:4b:00:09:db:f3:c2) joined the network
2021-05-10 18:48:04 DEBUG (MainThread) [zigpy.application] Skip initialization for existing device 00:12:4b:00:09:db:f3:c2
2021-05-10 18:48:04 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/zigpy/device.py", line 97, in group_membership_scan
    await ep.group_membership_scan()
  File "/usr/local/lib/python3.8/site-packages/zigpy/endpoint.py", line 161, in group_membership_scan
    groups = {group for group in res[1]}
TypeError: 'Status' object is not iterable
2021-05-10 18:48:04 DEBUG (MainThread) [zigpy_znp.api] Sending request: AF.DataRequestExt.Req(DstAddrModeAddress=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0x1EF2), DstEndpoint=13, DstPanId=0x0000, SrcEndpoint=1, ClusterId=4, TSN=113, Options=<TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST: 48>, Radius=30, Data=b'\x01\x71\x02\x00')
2021-05-10 18:48:04 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.DataRequestExt.Rsp(Status=<Status.SUCCESS: 0>)
2021-05-10 18:48:12 DEBUG (MainThread) [zigpy.endpoint] [0x1ef2:13] Failed to sync-up group membership
2021-05-10 18:48:12 DEBUG (MainThread) [zigpy_znp.api] Sending request: AF.DataRequestExt.Req(DstAddrModeAddress=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0x1EF2), DstEndpoint=12, DstPanId=0x0000, SrcEndpoint=1, ClusterId=4, TSN=114, Options=<TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST: 48>, Radius=30, Data=b'\x01\x72\x02\x00')
2021-05-10 18:48:12 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.DataRequestExt.Rsp(Status=<Status.SUCCESS: 0>)
2021-05-10 18:48:20 DEBUG (MainThread) [zigpy.endpoint] [0x1ef2:12] Failed to sync-up group membership
2021-05-10 18:48:20 DEBUG (MainThread) [zigpy_znp.api] Sending request: AF.DataRequestExt.Req(DstAddrModeAddress=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0x1EF2), DstEndpoint=11, DstPanId=0x0000, SrcEndpoint=1, ClusterId=4, TSN=115, Options=<TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST: 48>, Radius=30, Data=b'\x01\x73\x02\x00')
2021-05-10 18:48:20 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.DataRequestExt.Rsp(Status=<Status.SUCCESS: 0>)
2021-05-10 18:48:22 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.DataConfirm.Callback(Status=<Status.APS_NO_ACK: 183>, Endpoint=1, TSN=113)

Ok, I found out that my device was not responding correctly to discovery requests. I did a few power-cycles and the error does not show up anymore.
I didn’t think the two were related: I wonder if handling this kind of errors better could be useful for everybody…