Difficulty pairing Thread devices using Thread-only firmware, ipv6 issues?

Why I started messing with things

I have been using the yellow with the multiprotocol firmware and noticed the instability in the form of my thread devices disconnecting sporatically and needing to reboot for them to work again.

I learned that the multiprotocol firmware will be left in experimental so I’ve opted to switch the yellow to the thead only firmware as I dont have any zigbee devices and can later use my conbee 2 usb stick for zigbee.

Procedure to switch from multiprotocol to thread-only

In order to switch I performed the following procedure:

  1. Disable ZHA, Thread, and OBTR
  2. In Settings > System reverted to the zigbee firmware
  3. Rebooted the system, saw zigbee start, disabled ZHA.
  4. In Settings > System enabled the thread firmware.
  5. Rebooted, noticed a new thread network named ha-yellow-xxxx (channel 15) appeared where xxxx is the panId
  6. Noticed the old home-assistant (channel 25) thread network was lingering, set it as the preferred netowrk
  7. Attempted to renegotiate my Thread bulbs. Home assistant detected them, however it failed to pair them as it said they were already paired.
  8. Factory reset the bulbs and tried again, same outcome
  9. Set the ha-yellow-xxx network as preferred.
  10. This time bulbs paired, but never attempted to join the thread network, they can see the network is there, but do not show the TLV dataset
  11. Tried resetting OTBR, and changing the channel to 25
  12. Same result

Logs

I looked in the OBTR logs and found some errors and relevant logs:

DuaManager----: Failed to perform next registration: NotFound 

...
-----------------------------------------------------------
 Add-on: OpenThread Border Router
 OpenThread Border Router add-on
-----------------------------------------------------------
 Add-on version: 2.10.0
 You are running the latest version of this add-on.
 System: Home Assistant OS 13.1  (aarch64 / yellow)
 Home Assistant Core: 2024.9.1
 Home Assistant Supervisor: 2024.09.1
-----------------------------------------------------------
...
Default: mDNSPlatformSendUDP got error 99 (Cannot assign requested address) sending packet to ff02::fb on interface fe80::acc1:6cff:fe40:b6eb/vethbc420a3/25

ipv6-test.com results

Network state

I am using the Yellow via PoE attached to a Unifi Dream Router.
In UnifiOS I have IGMP Snooping and mDNS enabled, I also have enabled ipv6 on the router.

The DNS address for the ipv6 network starts with fe80::e638, I felt this interesting to note because the Yellow is looking for ff02::fb according to it’s logs.

Everything was working previously with the multiprotocol home-assistant thread network, aside from the instability.

Questions

I have a few questions about the Thread-only firmware setup.

  1. Do the network requirements, or default configuration differ?
    a. I see
    OTBR URL: http://core-openthread-border-router:8081 however when visiting it does not resolve to the OTBR ui. Also if I try to add http://core-openthread-border-router:8081 or http://homeassistant.local:8081 as a border router it states it’s already added.
  2. If there are additional ipv6 requirements in the Thread-only firmware, what are they and would I be limited by my use of a Unifi system?
  3. How can I get from thread-only back to multiprotocol?
    a. During my attempts to troubleshoot I have wanted to revert to zigbee only mode and then back to multiprotocol to see if it would work again in that setup. However no matter how I disable otbr/thread or boot in safe mode home assistant always says the obtr is running and stops me from reverting to zigbee only. I also dont see Siliconlabs multiprotocol as an integration anymore.

this forum doesn’t let me attach logs but I can share them via a pastebin

My end goal

Ideally I would have a more stable Thread / Zigbee setup. Since multiprotocol doesn’t seem like an option, my desired end state would be this:

  • Yellow in Thread-only mode, acting as a stable thread border router
  • My Thread bulbs (Nanoleaf essentials) are able to connect to the Yellow’s border router through the Homekit integration
  • If I need Zigbee later, I can use the conbee II to run ZHA

Could someone help me debug whats stopped the Border router from functioning?

Based on your description of step 10, I’m guessing you paired your HomeKit-over-Thread devices using bluetooth, then tried to switch to Thread using the “Provision Preferred Thread…” button on the device page? Note this uses your Preferred network, so be sure the Thread page shows that your latest border router is discovered and preferred. In your case, if you still have “lingering” Thread networks then something is misconfigured.

The url ending in 8081 is not a website, it is a REST API used by the OTBR HA integration to communicate with the OTBR server add-on. It should be auto-discovered (but can be manually added), and you know it’s working if (a) the (OTBR) integration loads successfully, and (b) you have submenu items for “Reset border router” and “Change channel” in the three-dot menu to the right of the router name in the Thread config (these do not appear w/out OTBR REST control). Based on your description these seem to all be working.

That ipv6-test result has nothing to do with your HA network (I scored a 3/20 and I have several IPv6 devices). All interfaces on your system will have an IPv6 address starting with “fe80” — that is expected and normal, but it is not your Thread subnet. The OTBR add-on creates a new IPv6 interface (called wpan0) which is a “gateway” to a new subnet, exclusively for Thread devices. The “wpan0” will have an address beginning with “fd” — and so will your Thread devices’ addresses. IPv6 addresses beginning with “ff” are multicast addresses, e.g. used for mDNS discovery.

The “cannot assign requested address” error is another clue to what is wrong. Searching for that error, there are a number of GitHub issues and forum topics with suggestions that might help.

1 Like

Thank you peterxian, I did see the various threads on the subject, but non lead me to substantial progress.

I did however later re-read the HomeKit integration docs again and noticed they recommend having bluetooth available for using the HomeAssistant border router.

After more tinkering with Hardware > Configuration > Select Thread Radio I noticed the logs started showing an error that a valid firmware was not present.

I did ultimately resolve this and the solution was multi-faceted. Ultimately the solution boiled down to:

  1. Disabling the SiliconLabs and OTBR add-ons which stopped me from reverting to Zigbee
  2. Reverting to Zigbee, then back to Thread (didn’t even need to reboot after).
  3. Getting a BT dongle for the yellow to negotiate the Thread credentials for the bulbs.

It appears that when syncing the Thread credentials in Settings > Integrations > Thread the credentials sync from the companion app dont reflect in the nanoleaf app like it did with the multiprotocol home-assistant border router.

Once I put the TBW-107UB dongle into the yellow, and factory reset the nanoleaf bulbs, they popped up into home assistant and subsequently joined the Thread network.

I was also able to re-pair the bulbs in the nanoleaf app, and they paired to the ha-yellow-<panId> network despite the app no longer letting me control their thread network.

With the Thread-only firmware I no longer have to reset the yellow anymore, and Thread devices are finally reliable!