{"id":535,"date":"2025-08-24T12:49:57","date_gmt":"2025-08-24T10:49:57","guid":{"rendered":"https:\/\/kszyh.kisim.eu.org\/?p=535"},"modified":"2026-02-21T21:35:25","modified_gmt":"2026-02-21T20:35:25","slug":"open-thread-openwrt-debian-configuration","status":"publish","type":"post","link":"https:\/\/kszyh.kisim.eu.org\/?p=535","title":{"rendered":"Open Thread OpenWRT\/Debian\/SLZB-MR3 Configuration"},"content":{"rendered":"<p>This is my configuration to run Thread\/Matter configuration to work together with Home Assistant.<\/p>\n<p>Assumptions:<\/p>\n<ul>\n<li>enp2s0 &#8211; ethernet card id<\/li>\n<li>192.168.0.128:7638 &#8211; ip and port of socket listening on SLZB-MR3<\/li>\n<\/ul>\n<p>This works on Debian 13 (trixie) and OpenWRT 24.10.2<\/p>\n<h2><span class=\"navbar-model\" data-replace=\"DEVICE\" aria-label=\"device model\">SLZB-MR3<\/span><\/h2>\n<h1><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-545 alignnone size-full\" src=\"https:\/\/kszyh.kisim.eu.org\/wp-content\/uploads\/2025\/08\/obraz-4.png\" alt=\"\" width=\"1851\" height=\"908\" srcset=\"https:\/\/kszyh.kisim.eu.org\/wp-content\/uploads\/2025\/08\/obraz-4.png 1851w, https:\/\/kszyh.kisim.eu.org\/wp-content\/uploads\/2025\/08\/obraz-4-300x147.png 300w, https:\/\/kszyh.kisim.eu.org\/wp-content\/uploads\/2025\/08\/obraz-4-1024x502.png 1024w, https:\/\/kszyh.kisim.eu.org\/wp-content\/uploads\/2025\/08\/obraz-4-768x377.png 768w, https:\/\/kszyh.kisim.eu.org\/wp-content\/uploads\/2025\/08\/obraz-4-1536x753.png 1536w, https:\/\/kszyh.kisim.eu.org\/wp-content\/uploads\/2025\/08\/obraz-4-150x74.png 150w, https:\/\/kszyh.kisim.eu.org\/wp-content\/uploads\/2025\/08\/obraz-4-250x123.png 250w\" sizes=\"auto, (max-width: 1851px) 100vw, 1851px\" \/><\/h1>\n<p>&nbsp;<\/p>\n<h2>OpenWRT<\/h2>\n<pre class=\"lang:sh decode:true\" title=\"Enable multicast snooping\"># Add IPv6 to existing LAN interface \r\nuci set network.globals.ula_prefix='fd12:3456:789a::\/48'\r\nuci set network.lan.ipv6='1'\r\nuci set network.lan.ip6assign='64'\r\nuci set network.lan.ip6hint='0'\r\n\r\n# Enable Multicast snooping\r\nuci set network.lan.multicast_snooping='1'\r\n\r\nuci commit network\r\n\/etc\/init.d\/network restart\r\n\r\n# Enable DHCPv6 server (IPv4 DHCP will continue working)\r\nuci set dhcp.lan.dhcpv6='server'\r\nuci set dhcp.lan.ra='server'\r\nuci set dhcp.lan.ra_management='1' \r\nuci set dhcp.lan.ra_default='1'\r\nuci set dhcp.lan.ra_lifetime='1800'\r\nuci set dhcp.lan.ra_addresses='1'\r\n\r\nuci commit dhcp\r\n\/etc\/init.d\/odhcpd restart\r\n<\/pre>\n<pre class=\"lang:default decode:true\">opkg update\r\nopkg install umdns<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>Debian<\/h2>\n<p>I installed avahi-daemon and limitted it only to my main interface.<br \/>\n\/etc\/avahi\/avahi-daemon.conf<\/p>\n<pre class=\"lang:default decode:true \">[server]\r\n...\r\nallow-interfaces=enp2s0\r\n...<\/pre>\n<p>&nbsp;<\/p>\n<p>\/etc\/modules<\/p>\n<pre class=\"lang:default decode:true \">ip6table_filter\r\nip6table_mangle<\/pre>\n<p>load them too:<\/p>\n<pre class=\"lang:default decode:true \">sudo modprobe ip6table_filter\r\nsudo modprobe ip6table_filter<\/pre>\n<p>\/etc\/sysctl.conf<\/p>\n<pre class=\"lang:sh decode:true\">net.ipv6.conf.all.disable_ipv6 = 0\r\nnet.ipv4.conf.all.forwarding = 1\r\nnet.ipv6.conf.all.forwarding = 1\r\nnet.ipv6.conf.all.accept_ra_rt_info_max_plen = 64\r\nnet.ipv6.conf.all.accept_ra = 2\r\n\r\nnet.ipv6.conf.enp2s0.disable_ipv6 = 0\r\nnet.ipv4.conf.enp2s0.forwarding = 1\r\nnet.ipv6.conf.enp2s0.forwarding = 1\r\nnet.ipv6.conf.enp2s0.accept_ra_rt_info_max_plen = 64\r\nnet.ipv6.conf.enp2s0.accept_ra = 2<\/pre>\n<p>load them:<\/p>\n<pre class=\"lang:default decode:true\">sudo sysctl -p<\/pre>\n<p>\/etc\/network\/interfaces<\/p>\n<p>Ensure that system got IPv6 from router<\/p>\n<pre class=\"lang:default decode:true\">iface enp2s0 inet6 dhcp<\/pre>\n<h2>Final configuration<\/h2>\n<p>docker-compose.yml<\/p>\n<pre class=\"lang:default decode:true\">  open-thread:\r\n     container_name: open-thread\r\n     restart: always\r\n     image: ghcr.io\/ownbee\/hass-otbr-docker:latest\r\n     network_mode: host\r\n     privileged: true\r\n     dns: 127.0.0.1\r\n     cap_add:\r\n       - SYS_ADMIN\r\n       - NET_ADMIN\r\n       - IPC_LOCK\r\n     volumes:\r\n       - .\/volumes\/otbr-data:\/data\r\n       - \/etc\/localtime:\/etc\/localtime:ro\r\n     environment:\r\n       - DEVICE=\/tmp\/ttyOTBR\r\n       - NETWORK_DEVICE=192.168.0.128:7638\r\n       - BAUDRATE=460800\r\n       - FLOW_CONTROL=0\r\n       - AUTOFLASH_FIRMWARE=0\r\n       - OTBR_LOG_LEVEL=warning\r\n       - OTBR_REST_PORT=8081\r\n       - OTBR_WEB_PORT=8082\r\n       - FIREWALL=0\r\n       - NAT64=1\r\n       - OTBR_ENABLE=1\r\n       - BACKBONE_IF=enp2s0\r\n       - TZ=Europe\/Warsaw\r\n     devices:\r\n       - \/dev\/net\/tun:\/dev\/net\/tun\r\n  matter-server:\r\n    container_name: matter-server\r\n    image: ghcr.io\/home-assistant-libs\/python-matter-server:stable\r\n    volumes:\r\n      - .\/volumes\/matter-data:\/data\r\n      - \/run\/dbus:\/run\/dbus:ro\r\n      - \/etc\/localtime:\/etc\/localtime:ro\r\n    network_mode: host\r\n    privileged: true\r\n    restart: unless-stopped\r\n    security_opt:\r\n      - apparmor:unconfined\r\n    environment:\r\n      - MATTER_SERVER_STORAGE_PATH=\/data\r\n<\/pre>\n<p>Not solved yet &#8211; mDNS conflicts (but it looks to not cause any real problems)<\/p>\n<pre class=\"lang:default decode:true\">open-thread  | Default: mDNSCoreReceiveResponse: Received from fe80::8022:f4ff:fe52:e990:5353   19 0.9.9.e.2.5.e.f.f.f.4.f.2.2.0.8.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. PTR home-53.local.\r\nopen-thread  | Default: mDNSCoreReceiveResponse: Unexpected conflict discarding   21 0.9.9.E.2.5.E.F.F.F.4.F.2.2.0.8.0.0.0.0.0.0.0.0.0.0.0.0.0.8.E.F.ip6.arpa. PTR home-otbr.local.\r\nopen-thread  | Default: mDNSCoreReceiveResponse: Received from fe80::2491:4ff:fe15:81d9:5353   19 9.d.1.8.5.1.e.f.f.f.4.0.1.9.4.2.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. PTR home-53.local.\r\nopen-thread  | Default: mDNSCoreReceiveResponse: Unexpected conflict discarding   21 9.D.1.8.5.1.E.F.F.F.4.0.1.9.4.2.0.0.0.0.0.0.0.0.0.0.0.0.0.8.E.F.ip6.arpa. PTR home-otbr.local.\r\nopen-thread  | Default: mDNSCoreReceiveResponse: Received from fe80::7869:85ff:fe29:b08a:5353   19 a.8.0.b.9.2.e.f.f.f.5.8.9.6.8.7.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. PTR home-53.local.\r\nopen-thread  | Default: mDNSCoreReceiveResponse: Unexpected conflict discarding   21 A.8.0.B.9.2.E.F.F.F.5.8.9.6.8.7.0.0.0.0.0.0.0.0.0.0.0.0.0.8.E.F.ip6.arpa. PTR home-otbr.local.\r\nopen-thread  | Default: mDNSCoreReceiveResponse: Received from 192.168.0.66:5353   19 b.0.8.7.8.d.e.f.f.f.3.2.c.9.2.3.c.9.8.7.f.e.d.0.b.b.9.e.b.0.d.f.ip6.arpa. PTR home-53.local.\r\nopen-thread  | Default: mDNSCoreReceiveResponse: Unexpected conflict discarding   21 B.0.8.7.8.D.E.F.F.F.3.2.C.9.2.3.C.9.8.7.F.E.D.0.B.B.9.E.B.0.D.F.ip6.arpa. PTR home-otbr.local.\r\nopen-thread  | Default: mDNSCoreReceiveResponse: Received from fe80::e4ed:24ff:fef3:d56b:5353   19 b.6.5.d.3.f.e.f.f.f.4.2.d.e.4.e.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. PTR home-53.local.\r\nopen-thread  | Default: mDNSCoreReceiveResponse: Unexpected conflict discarding   21 B.6.5.D.3.F.E.F.F.F.4.2.D.E.4.E.0.0.0.0.0.0.0.0.0.0.0.0.0.8.E.F.ip6.arpa. PTR home-otbr.local.\r\nopen-thread  | Default: mDNSCoreReceiveResponse: Received from fe80::dc70:73ff:fe9d:b289:5353   19 9.8.2.b.d.9.e.f.f.f.3.7.0.7.c.d.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. PTR home-54.local.\r\nopen-thread  | Default: mDNSCoreReceiveResponse: Unexpected conflict discarding   21 9.8.2.B.D.9.E.F.F.F.3.7.0.7.C.D.0.0.0.0.0.0.0.0.0.0.0.0.0.8.E.F.ip6.arpa. PTR home-otbr.local<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is my configuration to run Thread\/Matter configuration to work together with Home Assistant. Assumptions: enp2s0 &#8211; ethernet card id 192.168.0.128:7638 &#8211; ip and port of socket listening on SLZB-MR3 This works on Debian 13 (trixie) and OpenWRT 24.10.2 SLZB-MR3 &nbsp; OpenWRT # Add IPv6 to existing LAN interface uci&#8230; <a class=\"continue-reading-link\" href=\"https:\/\/kszyh.kisim.eu.org\/?p=535\"> Continue reading <span class=\"meta-nav\">&rarr; <\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,23],"tags":[133,130,132,134,131],"class_list":["post-535","post","type-post","status-publish","format-standard","hentry","category-bez-kategorii","category-linux","tag-debian","tag-iot","tag-matter","tag-slzb-mr3","tag-thread"],"_links":{"self":[{"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/535","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=535"}],"version-history":[{"count":11,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/535\/revisions"}],"predecessor-version":[{"id":560,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=\/wp\/v2\/posts\/535\/revisions\/560"}],"wp:attachment":[{"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=535"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=535"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kszyh.kisim.eu.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}