Whilst working on my Heating Monitor, I hit a strange issue whilst commissioning devices.
I wasn’t able to commission devices, even after resetting them. This happened for new devices or ones already on network.
The Commissioning Complete command kept failing, with the commissionee responding with error 3

When I looked into the logs of my Nordic Temperature sensor, it appeared that all the commissioning steps were working. Network provisioning was also working.

The only error in the logs was this

I couldn’t figure this out at all.
My only clue was the SRP failure. SRP is Service Registration Protocol. It’s used in the Thread network system so devices can register their services for mDNS. After some detective, using the Discovery app on my iPhone, I could see my network’s nodes, starting E9AF. These _matter._tcp. records are used to find the address of commissioned Matter nodes.

One of the nodes present on the list was this one

And this was the problem!
A node was already advertising itself as Node 0001 in my Heating Monitor’s fabric, which presented my new node was using the same address.
I had reset the devices I was using, so I no longer had a node 0001. Something, however, was answering to that address.
Initially, I thought it might be a cached record, so I restarted all the my Home Pods. The device was still there.
After a little more detective work, I found the device (4b78:c161) was present in two Fabrics. This narrowed it down to the W100 climate sensor I was using. I must have erased my controller without decommissioning the W100, leaving it on my fabric.
How to fix this?
The blunt way to resolve this issue would have been a hard reset of the device. As the device was in use by my Aqara app, I didn’t want to do that.
The Aqara app offered the solution

I could simply *remove* the device from specific Ecosystems. I tapped remove beside both 131b nodes. Lo and behold, node 0001 vanished from the Discovery app.

With the 0001 record gone, I was able to add my W100 again

Summary
I ran into a problem where an existing Matter node id prevented me from commissioning a device.
The solution was to hunt down the device and remove it from my Fabric, freeing up the node id.
In reality, with 18446744073709551615 addresses to choose from, I’d be better off picking a random node id. That makes debugging harder, but I would have avoided this issue.
That said, I understand the protocol just that little bit better now.
Support
If you found this blog post useful and want to show your appreciation, you can always buy me a coffee or subscribe to my Patreon. Thanks!!




Leave a comment