Note: choose radio channel wisely.
If you experience nodes dropping off topology and becomes Offline in OH you probably have a RF interference problem. I had to change from the default ch 15 to ch23, having WiFi access points on ch2&9 and Zigbee on ch25.
Another symptom could be intermittent data coming through.
I did my testing with the OTBR in an adjacent room and when both paired nodes disappeared from the network I did one test, Brought them both right next to the radio and just left them there. Some half an hour later their were back both in OTBR and OH. This reminded me of the problems I had when the Zigbee stick was too close to the RPi4. Same intermittent behavior.
After changing to ch23, all has been rock solid.
Start out testing with a few nodes, as you will need to re-pair changing channel!
Also note: I needed a 1/2 meter USB extension on the otbr Conbee stick to separate it from the Zigbee stick. Without it, the Thread network was unstable.
As mentioned here: IKEA launches Matter devices 2026 - will we need a hub? - #38 by OMR, I successfully paired a New Ikea Matter Dual Switch with the openHAB Matter addon.
The only additional HW used, was a re-flashed Conbee III, all thought a Conbee II should also do the trick (but not tested by me.)
See here for flashing the Conbee: OpenThread documentation (but come right back after, as we will not need Home Assistant or any phone(y) App.)
One lesson I learned having 2 Conbee III (the other one still serving Deconz/Zigbee) on my Linux machine was that they could arbitrarily swap addresses, not Ideal. The solution was:
Do a:
omr@shs3:~$ ll /dev/serial/by-id/
total 0
drwxr-xr-x 2 root root 140 Jan 17 14:25 ./
drwxr-xr-x 4 root root 80 Jan 17 10:51 ../
lrwxrwxrwx 1 root root 13 Jan 17 10:51 usb-0658_0200-if00 -> ../../ttyACM0
lrwxrwxrwx 1 root root 13 Jan 17 10:51 usb-dresden_elektronik_ConBee_III_DE03311465-if00-port0 -> ../../ttyUSB1
lrwxrwxrwx 1 root root 13 Jan 17 14:25 usb-dresden_elektronik_ConBee_III_DE03311466-if00-port0 -> ../../ttyUSB0
lrwxrwxrwx 1 root root 13 Jan 17 10:51 usb-FINTEK_Co_Ltd_Fintek_U2U_F81532_AA66_20140416-01.12-if00-port0 -> ../../ttyUSB2
lrwxrwxrwx 1 root root 13 Jan 17 10:51 usb-FINTEK_Co_Ltd_Fintek_U2U_F81532_AA66_20140416-01.12-if00-port1 -> ../../ttyUSB3
Find out by trail and error which one is which. Upside addressing will be consistent over reboots.
My Deconz now looks like:
omr@shs3:~$ sudo systemctl status deconz
[sudo] password for omr:
â deconz.service - deCONZ: ZigBee gateway -- REST API
Loaded: loaded (/usr/lib/systemd/system/deconz.service; enabled; preset: enabled)
Drop-In: /etc/systemd/system/deconz.service.d
ââoverride.conf
Active: active (running) since Sat 2026-01-17 10:51:15 CET; 4h 9min ago
Main PID: 1160 (deCONZ)
Tasks: 8 (limit: 35661)
Memory: 143.8M (peak: 144.7M)
CPU: 21min 24.992s
CGroup: /system.slice/deconz.service
ââ1160 /usr/bin/deCONZ -platform offscreen --http-port=80 --https-port=0 --ws-port=443 --dev=/dev/serial/by-id/usb-dresden_elektronik_ConBee_III_DE03311465-if00-port0
We will use the other one for the next piece of free SW weâll need for talking with the re-flashed Conbee:
Follow the procedure here: How to set up OpenThread Border Router on Ubuntu - Matter on Ubuntu documentation to set up the openthread-boarder-router from Google. After install return here.
My otbr setup looks like:
omr@shs3:~$ sudo snap get openthread-border-router
Key Value
autostart true
infra-if eno2
radio-url spinel+hdlc+uart:///dev/serial/by-id/usb-dresden_elektronik_ConBee_III_DE03311466-if00-port0
thread-if wpan0
webgui-listen-address ::
webgui-port 7070
Tune to your wan if = infra-if, radio-url from above, pick a non conflicting webgui-port.
Syntax for tuning:
sudo snap set openthread-border-router autostart=true
Now, if you can open the WEB GUI, all is well:
If not, check the logs for any complaints:
sudo snap logs -n 100 -f openthread-border-router
The host machine must have ip6 enabled, and the description of the OH Matter add-on lists several things to check for.
I had to enable ip6 in my grub bootloader.
I also had to add:
net.ipv6.conf.all.accept_ra = 2
net.ipv6.conf.eno2.accept_ra = 2
net.ipv6.conf.eno2.accept_ra_rt_info_max_plen = 64
using
sudo nano /etc/sysctl.conf
sudo sysctl -p
When radio is found and ip6 is OK on the wan interface the otbr should start.
Using the WEB, Form a Network:
Edit fields to your liking, and write them down or take a snippet and save it.
Now you should have a Topology, but without any children:
Now we are read to pair a device so it will look as above.
You will need a pairing code as printed on the back of the device and on the packaging.
In my case for the Ikea Bilresa it was under the QR code: 2460-172-9633 (beware of 0 printed as Ă, lost an hour there thought it was an 8 âŚ). Going forward, use only the 11 digits. Lose the hyphens.
You will need a hex code output from this command: (probably static from now on)
sudo openthread-border-router.ot-ctl dataset active -x
0e08000000000001000035060004001fffe00708fddf893de24835d20c0402a0f7f805101212abba1212abba0987654321060362030e4f70656e54687265616447545637041051d9ca7679ee1d1117a63d4ceb63779a000300000f020847113991121206030102abba
Hold the pairing button on the device down until a steady red light appears after 6-7 blinks and it should enter a slow pulsating yellow light cycle. I also believe the device must be in Bluetooth range, but Iâm not sure if that is a requirement.
then while the yellow light pulses, do a
chip-tool pairing code-thread 110 hex:0e08000000000001000035060004001fffe00708fddf893de24835d20c0402a0f7f805101212abba1212abba0987654321060362030e4f70656e54687265616447545637041051d9ca7679ee1d1117a63d4ceb63779a000300000f020847113991121206030102abba 24601729633 --bypass-attestation-verifier true
The 110 here iâm a bit unsure of, but I plan to use 111 for my next device. Chime in if you know.
Edit: even AI was at a loss. chip-tool discover list is not yet implemented, so one need to manually keep track up node IDs handed out for now.
Your topology should now look as above.
Now we need to pair with openHAB: we get the needed pairing code for that by: (takes a while)
chip-tool pairing open-commissioning-window 110 1 300 1000 3840 | grep 'pairing code'
We use this code in OH in a bit.
Now we need the child Extended MAC:
omr@shs3:~$ sudo openthread-border-router.ot-ctl child table
| ID | RLOC16 | Timeout | Age | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC |
+-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+
| 3 | 0x0003 | 240 | 0 | 0 | 139 |0|0|0| 4| 0 | 0 | 129 | 5a855e0bc4172dae |
then
sudo openthread-border-router.ot-ctl commissioner start J01NME (fails is too simple join code)
and finally, using the MAC from above:
sudo openthread-border-router.ot-ctl commissioner joiner add ee97ad500e562023 J01NME
Now, head over to OH:
Create a Matter Controller and use the pairing code from the grep above:
Note that the Commissioning window closes after a while. Not sure when but you should have several minutes. I also had to try more than one time, but never more than 2.
Good idea to check you Inbox count to see if it gets incremented. Can take a while before it appears and also before the red Comm. Error and the Yellow Awaiting data terminates in a glorious green Online ![]()
Tip: you can monitor the activity going on while in the yellow state by:
sudo snap logs -n 100 -f openthread-border-router
There is really a lot going on, verifying OH/OTBR communication.










