Skip to content

ESP Thread Border Router to EspHome ? (TZ-1930) #146

@radioelf

Description

@radioelf

Checklist

  • Checked the issue tracker for similar issues to ensure this is not a duplicate
  • Read the documentation to confirm the issue is not addressed there and your configuration is set correctly
  • Tested with the latest version to ensure the issue hasn't been fixed

How often does this bug occurs?

always

Expected behavior

Integrate new devices into Home Assistant via ESPHome

Actual behavior (suspected bug)

Hi.
I'm using the ESP Thread Border Router/Zigbee Gateway Board along with the Ethernet-based Thread Border Router daughterboard.

Everything seems to be working correctly: the OTBR starts without errors, and I can see and interact with the ESPHome device over IPv6 (e.g. accessing http://[fd4e:629e:d234:1:591e:d2c:680e:ba93]/ works fine and I can control the LEDs).

However, when I try to add a new device to Home Assistant via the ESPHome integration, I always get this error:

"Cannot connect to the ESPHome device. Make sure the device's YAML configuration includes an api section."

I've tested with both an ESP32-H2 and an ESP32-C6 using these two variants in the configuration:
api:
encryption:
key: !secret api_key
and also simply:
api:
Same result in both cases.
Versions:

ESPHome version: 2025.7.2

Home Assistant version: 2025.7.0

OTBR / Thread Border Router: Latest version from this repo (as of July 2025)

ESP32 firmware: Compiled and flashed with ESPHome directly

Is there something I'm missing in the configuration or setup process?
Could this be an issue with how IPv6 routing is being handled between Home Assistant and the Thread network?

Any help would be greatly appreciated — thanks in advance!

Image

Error logs or terminal output

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0xc (RTC_SW_CPU_RST),boot:0x2b (SPI_FAST_FLASH_BOOT)
Saved PC:0x40375b41
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce2820,len:0x1564
load:0x403c8700,len:0x4
load:0x403c8704,len:0xc80
load:0x403cb700,len:0x2ee0
entry 0x403c8914
I (26) boot: ESP-IDF v5.4.2 2nd stage bootloader
I (26) boot: compile time Jul 21 2025 16:48:04
I (26) boot: Multicore bootloader
I (27) boot: chip revision: v0.2
I (27) boot: efuse block revision: v1.3
I (27) boot.esp32s3: Boot SPI Speed : 80MHz
I (27) boot.esp32s3: SPI Mode       : DIO
I (27) boot.esp32s3: SPI Flash Size : 4MB
I (27) boot: Enabling RNG early entropy source...
I (28) boot: Partition Table:
I (28) boot: ## Label            Usage          Type ST Offset   Length
I (28) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (29) boot:  1 otadata          OTA data         01 00 0000f000 00002000
I (29) boot:  2 phy_init         RF data          01 01 00011000 00001000
I (29) boot:  3 ota_0            OTA app          00 10 00020000 00190000
I (30) boot:  4 ota_1            OTA app          00 11 001b0000 00190000
I (30) boot:  5 web_storage      Unknown data     01 82 00340000 00019000
I (30) boot:  6 rcp_fw           Unknown data     01 82 00359000 000a0000
I (31) boot: End of partition table
I (31) esp_image: segment 0: paddr=00020020 vaddr=3c110020 size=51a78h (334456) map
I (90) esp_image: segment 1: paddr=00071aa0 vaddr=3fc9b700 size=056a4h ( 22180) load
I (95) esp_image: segment 2: paddr=0007714c vaddr=40374000 size=08ecch ( 36556) load
I (104) esp_image: segment 3: paddr=00080020 vaddr=42000020 size=10cd9ch (1101212) map
I (298) esp_image: segment 4: paddr=0018cdc4 vaddr=4037cecc size=0e784h ( 59268) load
I (311) esp_image: segment 5: paddr=0019b550 vaddr=600fe000 size=0001ch (    28) load
I (321) boot: Loaded app from partition at offset 0x20000
I (321) boot: Disabling RNG early entropy source...
I (322) cpu_start: Multicore app
I (331) cpu_start: Pro cpu start user code
I (331) cpu_start: cpu freq: 160000000 Hz
I (331) app_init: Application information:
I (331) app_init: Project name:     esp_ot_br
I (331) app_init: App version:      v1.2-6-gda2303c
I (332) app_init: Compile time:     Jul 21 2025 16:48:00
I (332) app_init: ELF file SHA256:  d2cdbc402...
I (332) app_init: ESP-IDF:          v5.4.2
I (332) efuse_init: Min chip rev:     v0.0
I (332) efuse_init: Max chip rev:     v0.99 
I (332) efuse_init: Chip rev:         v0.2
I (333) heap_init: Initializing. RAM available for dynamic allocation:
I (333) heap_init: At 3FCB1060 len 000386B0 (225 KiB): RAM
I (333) heap_init: At 3FCE9710 len 00005724 (21 KiB): RAM
I (333) heap_init: At 3FCF0000 len 00008000 (32 KiB): DRAM
I (333) heap_init: At 600FE01C len 00001FCC (7 KiB): RTCRAM
I (335) spi_flash: detected chip: generic
I (335) spi_flash: flash io: dio
W (335) spi_flash: Detected size(8192k) larger than the size in the binary image header(4096k). Using the size in the binary image header.
I (336) sleep_gpio: Configure to isolate all GPIO pins in sleep state
I (336) sleep_gpio: Enable automatic switching of GPIO sleep configuration
I (337) main_task: Started on CPU0
I (347) main_task: Calling app_main()
I (407) mdns_mem: mDNS task will be created from internal RAM
I (407) RCP_UPDATE: RCP: using update sequence 0
I (407) uart: ESP_INTR_FLAG_IRAM flag not set while CONFIG_UART_ISR_IN_IRAM is enabled, flag updated
I (407) OPENTHREAD: spinel UART interface initialization completed
I (407) main_task: Returned from app_main()
I(407) OPENTHREAD:[I] P-SpinelDrive-: co-processor reset: RESET_POWER_ON
E(407) OPENTHREAD:[C] P-SpinelDrive-: Software reset co-processor successfully
I(457) OPENTHREAD:[I] CslTxScheduler: Set frame request ahead: 26605 usec
I(457) OPENTHREAD:[I] ChildSupervsn-: Timeout: 0 -> 190
I(477) OPENTHREAD:[I] Settings------: Read NetworkInfo {rloc:0x1400, extaddr:0ef49ecfdf93da49, role:leader, mode:0x0f, version:5, keyseq:0x0, ...
I(477) OPENTHREAD:[I] Settings------: ... pid:0x2dbaae58, mlecntr:0x43f9, maccntr:0x3d69, mliid:810599b9fe1bcfad}
I (487) esp_ot_br: Internal RCP Version: openthread-esp32/f5c3654a1c-ec2b0d487; esp32h2;  2025-07-21 14:32:49 UTC
I (497) esp_ot_br: Running  RCP Version: openthread-esp32/f5c3654a1c-ec2b0d487; esp32h2;  2025-07-21 14:32:49 UTC
I (497) OPENTHREAD: OpenThread attached to netif
> [5nI (497) ot_ext_cli: None wifi ssid in nvs
I (497) esp_ot_br: use the Wi-Fi config from Kconfig
I (507) pp: pp rom version: e7ae62f
I (507) net80211: net80211 rom version: e7ae62f
I (517) wifi:wifi driver task: 3fcc4278, prio:23, stack:6144, core=0
I (517) wifi:wifi firmware version: bea31f3
I (517) wifi:wifi certification version: v7.0
I (517) wifi:config NVS flash: enabled
I (517) wifi:config nano formatting: enabled
I (517) wifi:Init data frame dynamic rx buffer num: 32
I (517) wifi:Init static rx mgmt buffer num: 5
I (527) wifi:Init management short buffer num: 32
I (527) wifi:Init dynamic tx buffer num: 32
I (527) wifi:Init static tx FG buffer num: 2
I (527) wifi:Init static rx buffer size: 1600
I (527) wifi:Init static rx buffer num: 10
I (527) wifi:Init dynamic rx buffer num: 32
I (527) wifi_init: rx ba win: 6
I (527) wifi_init: accept mbox: 6
I (527) wifi_init: tcpip mbox: 32
I (527) wifi_init: udp mbox: 6
I (527) wifi_init: tcp mbox: 6
I (527) wifi_init: tcp tx win: 5760
I (527) wifi_init: tcp rx win: 5760
I (527) wifi_init: tcp mss: 1440
I (527) wifi_init: WiFi IRAM OP enabled
I (527) wifi_init: WiFi RX IRAM OP enabled
I (537) phy_init: phy_version 701,f4f1da3a,Mar  3 2025,15:50:10
I (567) phy_init: Saving new calibration data due to checksum failure or outdated calibration data, mode(0)
I (617) wifi:mode : sta (28:37:2f:e2:60:0c)
I (617) wifi:enable tsf
I (617) wifi:Set ps type: 2, coexist: 0

Steps to reproduce the behavior

Run command to home Assistant

Project release version

Release v1.2

System architecture

Intel/AMD 64-bit (modern PC, older Mac)

Operating system

Linux

Operating system version

Linux Mint

Shell

Bash

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions