From 6b01b547fee118410436fd71e9be2e4631e512d6 Mon Sep 17 00:00:00 2001 From: Stefan Agner Date: Thu, 3 Sep 2026 18:24:23 +0200 Subject: [PATCH] openthread_border_router: Bump OTBR to v2026.08.0 (stable) / v2026.09.0 (beta) Bump stable to OTBR POSIX 337711e7 (tag v2026.08.0) and beta to fd872ab9 (tag v2026.09.0). For beta, build with OTBR_PLATFORM_RESET_EXIT=ON (ot-br-posix #3537) so otbr-agent exits cleanly on a platform reset (e.g. factory reset from the OpenThread Web UI) and is restarted by s6 instead of re-executing itself in place. The in-place re-exec created a fresh OpenThread instance while the s6 service stayed "up", so the runtime configuration applied by the otbr-agent-configure oneshot (TREL, NAT64, upstream DNS, mDNS hostname and enable, TX power) was lost until the add-on was restarted; with OPENTHREAD_CONFIG_MULTICAST_DNS_AUTO_ENABLE_ON_INFRA_IF 0 this left mDNS disabled. A s6-rc oneshot only runs on an s6-rc state transition and is not re-run when s6-supervise restarts a longrun, so move the configuration into the otbr-agent readiness check instead. It now runs for every process instance before the service is reported ready, keeping the start ordering for otbr-web and otbr-agent-rest-discovery unchanged. Note that Home Assistant's "Reset border router" (REST DELETE /node) uses an in-process RcpHost::Reset() and never goes through otPlatReset(), so it is not covered by this change and still loses the runtime configuration on both stable and beta. The beta build also picks up the upstream fix for upstream DNS resolution (openthread/openthread#13545); the workaround from 3.1.2 is kept until stable has it as well. Co-Authored-By: Claude Fable 5.1 --- openthread_border_router/CHANGELOG.md | 12 ++++++++++++ openthread_border_router/Dockerfile | 1 + openthread_border_router/build.yaml | 4 ++-- openthread_border_router/config.yaml | 2 +- .../openthread-core-ha-config-posix.h | 6 ++++++ .../otbr-agent-configure/dependencies.d/otbr-agent | 0 .../etc/s6-overlay/s6-rc.d/otbr-agent-configure/type | 1 - .../etc/s6-overlay/s6-rc.d/otbr-agent-configure/up | 1 - .../dependencies.d/otbr-agent-configure | 0 .../etc/s6-overlay/s6-rc.d/otbr-agent/data/check | 6 ++++++ .../rootfs/etc/s6-overlay/s6-rc.d/otbr-agent/finish | 2 ++ .../otbr-web/dependencies.d/otbr-agent-configure | 0 .../s6-rc.d/user/contents.d/otbr-agent-configure | 0 13 files changed, 30 insertions(+), 5 deletions(-) delete mode 100644 openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent-configure/dependencies.d/otbr-agent delete mode 100644 openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent-configure/type delete mode 100755 openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent-configure/up delete mode 100644 openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent-rest-discovery/dependencies.d/otbr-agent-configure delete mode 100644 openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-web/dependencies.d/otbr-agent-configure delete mode 100644 openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/otbr-agent-configure diff --git a/openthread_border_router/CHANGELOG.md b/openthread_border_router/CHANGELOG.md index 4c5090a1c..a454e2f0f 100644 --- a/openthread_border_router/CHANGELOG.md +++ b/openthread_border_router/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## 3.2.0 + +- Bump to OTBR POSIX version 337711e7 (tag v2026.08.0) + - Improved startup robustness: multicast router setup is retried on transient errors + - Various fixes and stability improvements in OpenThread +- Bump beta to OTBR POSIX version fd872ab9 (tag v2026.09.0) + - Thread 1.4 Credentials Sharing (ePSKc): share Thread network credentials with other devices directly from the Web UI + - Web UI: QR codes are now generated locally instead of using a remote service + - Upstream DNS resolution for Thread devices is now fixed in OpenThread itself (the workaround from 3.1.2 remains in place for stable) + - Various fixes and stability improvements in OpenThread and OTBR + - On OpenThread reset (e.g. when forming or joining a network through the OpenThread Web UI), the app runtime configuration (TREL, NAT64, mDNS, TX power) is now re-applied cleanly on every start + ## 3.1.2 - Fix upstream DNS/DNS64 resolution for Thread devices by not binding the upstream DNS resolver socket to the infra interface (fixes #3947, regression since 2.12.0) diff --git a/openthread_border_router/Dockerfile b/openthread_border_router/Dockerfile index d41777e9c..66740c678 100644 --- a/openthread_border_router/Dockerfile +++ b/openthread_border_router/Dockerfile @@ -81,6 +81,7 @@ RUN \ -DOT_THREAD_VERSION=1.4 \ -DOT_PROJECT_CONFIG="/usr/src/ot-br-posix/third_party/openthread/repo/openthread-core-ha-config-posix.h" \ -DOT_RCP_RESTORATION_MAX_COUNT=2 \ + -DOTBR_PLATFORM_RESET_EXIT=ON \ && ninja \ && ninja install diff --git a/openthread_border_router/build.yaml b/openthread_border_router/build.yaml index c51ded6a4..3f51fdbcc 100644 --- a/openthread_border_router/build.yaml +++ b/openthread_border_router/build.yaml @@ -3,7 +3,7 @@ build_from: aarch64: ghcr.io/home-assistant/aarch64-base-debian:trixie amd64: ghcr.io/home-assistant/amd64-base-debian:trixie args: - OTBR_BETA_VERSION: d83ddc62ecbb3d8a766ce3f1c58d6362d793d70b - OTBR_VERSION: ec16e396382b4559e70a2c6fdeecb7d596a5e915 + OTBR_BETA_VERSION: fd872ab9d4afdfaf034b3b1154fed08b8b6d1e43 + OTBR_VERSION: 337711e7038d0b9c8fb46a1ce888ce7f9c4c0c35 UNIVERSAL_SILABS_FLASHER_VERSION: 0.1.2 SERIALX_VERSION: 1.8.0 diff --git a/openthread_border_router/config.yaml b/openthread_border_router/config.yaml index 3bf4813e9..5c3bd647f 100644 --- a/openthread_border_router/config.yaml +++ b/openthread_border_router/config.yaml @@ -1,5 +1,5 @@ --- -version: 3.1.2 +version: 3.2.0 breaking_versions: [3.0.0] slug: openthread_border_router name: OpenThread Border Router diff --git a/openthread_border_router/openthread-core-ha-config-posix.h b/openthread_border_router/openthread-core-ha-config-posix.h index 2fd96b1f8..4e676f0be 100644 --- a/openthread_border_router/openthread-core-ha-config-posix.h +++ b/openthread_border_router/openthread-core-ha-config-posix.h @@ -94,6 +94,12 @@ * queries out the physical interface, breaking upstream DNS/DNS64 for * Thread devices. Disable the bind so queries follow the host routing * table (see home-assistant/addons#3947). + * + * OpenThread 82eb4863a (openthread/openthread#13545, included in OTBR + * v2026.09.0 and later) fixes this upstream: resolv.conf nameservers are no + * longer bound to the infra interface, and this option only governs + * RDNSS-discovered servers. Keep the define until the stable build has + * picked up that fix, then drop it. */ #define OPENTHREAD_POSIX_CONFIG_UPSTREAM_DNS_BIND_TO_INFRA_NETIF 0 diff --git a/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent-configure/dependencies.d/otbr-agent b/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent-configure/dependencies.d/otbr-agent deleted file mode 100644 index e69de29bb..000000000 diff --git a/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent-configure/type b/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent-configure/type deleted file mode 100644 index bdd22a185..000000000 --- a/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent-configure/type +++ /dev/null @@ -1 +0,0 @@ -oneshot diff --git a/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent-configure/up b/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent-configure/up deleted file mode 100755 index 073717792..000000000 --- a/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent-configure/up +++ /dev/null @@ -1 +0,0 @@ -/etc/s6-overlay/scripts/otbr-agent-configure.sh diff --git a/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent-rest-discovery/dependencies.d/otbr-agent-configure b/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent-rest-discovery/dependencies.d/otbr-agent-configure deleted file mode 100644 index e69de29bb..000000000 diff --git a/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent/data/check b/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent/data/check index 8722f197b..d9aaaeb9e 100755 --- a/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent/data/check +++ b/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent/data/check @@ -7,3 +7,9 @@ test -S /run/openthread-wpan0.sock # Check REST API port is open mapfile -t < /tmp/otbr-agent-rest-api nc -z "${MAPFILE[@]}" + +# Apply runtime configuration (TREL, NAT64, mDNS, TX power) before reporting +# the service as ready. Running this here (rather than as a oneshot) ensures the +# configuration is re-applied whenever s6 restarts otbr-agent, e.g. after a +# platform reset. +/etc/s6-overlay/scripts/otbr-agent-configure.sh diff --git a/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent/finish b/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent/finish index 5c1039bee..2aea76f0d 100755 --- a/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent/finish +++ b/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-agent/finish @@ -13,6 +13,8 @@ fi if test "$e" -ne 0; then bashio::log.warning "otbr-agent exited with code $e (by signal $2)." else + # A clean exit also happens on platform reset (e.g. reset/factoryreset), + # in which case s6 restarts the service. bashio::log.info "otbr-agent exited with code $e (by signal $2)." fi diff --git a/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-web/dependencies.d/otbr-agent-configure b/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/otbr-web/dependencies.d/otbr-agent-configure deleted file mode 100644 index e69de29bb..000000000 diff --git a/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/otbr-agent-configure b/openthread_border_router/rootfs/etc/s6-overlay/s6-rc.d/user/contents.d/otbr-agent-configure deleted file mode 100644 index e69de29bb..000000000