Hilfe: Esphome mit Thread funktioniert, aber flashen über Thread nicht.
Ich habe einen Seeed XIAO ESP32C6 auf Thread umgestellt. Ich wollte ein paar Thread Router ( Fully Thread Devices ) mit einigen ESP32C6 in der Wohnung installieren.
Das funktioniert ohne Probleme. Es dauert zwar etwas länger als bei Wifi, bis die Connection mit dem Border Router ( Smlight SLZB-MR1 via Ethernet an Homeassistant ) steht, aber dann ist alles ok. Der ESP32C6 meldet sich ordnungsgemäss an Thread mit role “Router”.
ABER: Ich kann die Thread devices nur über USB flashen. Das funktioniert schnell und bequem. Aber es ist mir absolut unmöglich, die Geräte dann über Thread upzudaten oder neu zu flashen.
Jeder Versuch, das Gerät über Esphome Builder zu flashen, scheitert. Auch ein Download und dann ein Update über den Webserver des ESP32C6 hochzuladen führt zu Abbruch. Habe ich da etwas nicht gelesen und ist das derzeit unmöglich oder gibt es da einen Trick ?
Bitte um Hilfe.
Ich möchte nicht im laufenden Betrieb für Updates die Leiter aufstellen, den ESP ausbauen und zum PC schleppen, um einen Update durchzuführen.
Hier ist ein Log eines vergeblichen Flash-Versuches
INFO ESPHome 2026.3.1
INFO Reading configuration /config/esphome/test-esp32c6.yaml...
WARNING GPIO15 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq/#why-am-i-getting-a-warning-about-strapping-pins
INFO Generating C++ source...
INFO Setting CONFIG_LWIP_MAX_SOCKETS to 13 (TCP=8 [api=3, web_server=5], UDP=2 [mdns=2], TCP_LISTEN=3 [api=1, ota=1, web_server_base=1])
INFO Compiling app... Build path: /data/build/test-esp32c6
Processing test-esp32c6 (board: seeed_xiao_esp32c6; framework: espidf; platform: https://github.com/pioarduino/platform-espressif32/releases/download/55.03.37/platform-espressif32.zip)
--------------------------------------------------------------------------------
HARDWARE: ESP32C6 160MHz, 320KB RAM, 4MB Flash
- contrib-piohome @ 3.4.4
- framework-espidf @ 3.50503.0 (5.5.3)
- tool-cmake @ 4.0.3
- tool-esp-rom-elfs @ 2024.10.11
- tool-esptoolpy @ 5.1.2
- tool-ninja @ 1.13.1
- tool-scons @ 4.40801.0 (4.8.1)
- toolchain-riscv32-esp @ 14.2.0+20251107
Reading CMake configuration...
Dependency Graph
|-- noise-c @ 0.1.11
Compiling .pioenvs/test-esp32c6/src/main.cpp.o
RAM: [= ] 13.8% (used 45140 bytes from 327680 bytes)
Flash: [===== ] 48.0% (used 880792 bytes from 1835008 bytes)
========================= [SUCCESS] Took 8.44 seconds =========================
INFO Build Info: config_hash=0x71b63954 build_time_str=2026-03-28 21:11:46 +0100
INFO Successfully compiled program.
INFO Connecting to fd25:477b:2492:1:99a:5154:17c2:c558 port 3232...
INFO Connected to fd25:477b:2492:1:99a:5154:17c2:c558
INFO Uploading /data/build/test-esp32c6/.pioenvs/test-esp32c6/firmware.bin (881152 bytes)
ERROR Error receiving acknowledge version: [Errno 104] Connection reset by peer
WARNING Failed to upload to ['test-esp32c6.local']
Das Flashen über USB und die anschliessende Inbetriebnahme funktioieren hingegen problemlos:
INFO ESPHome 2026.3.1
INFO Reading configuration /config/esphome/test-esp32c6.yaml...
WARNING GPIO15 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq/#why-am-i-getting-a-warning-about-strapping-pins
INFO Generating C++ source...
INFO Setting CONFIG_LWIP_MAX_SOCKETS to 13 (TCP=8 [api=3, web_server=5], UDP=2 [mdns=2], TCP_LISTEN=3 [api=1, ota=1, web_server_base=1])
INFO Compiling app... Build path: /data/build/test-esp32c6
Processing test-esp32c6 (board: seeed_xiao_esp32c6; framework: espidf; platform: https://github.com/pioarduino/platform-espressif32/releases/download/55.03.37/platform-espressif32.zip)
--------------------------------------------------------------------------------
HARDWARE: ESP32C6 160MHz, 320KB RAM, 4MB Flash
- contrib-piohome @ 3.4.4
- framework-espidf @ 3.50503.0 (5.5.3)
- tool-cmake @ 4.0.3
- tool-esp-rom-elfs @ 2024.10.11
- tool-esptoolpy @ 5.1.2
- tool-ninja @ 1.13.1
- tool-scons @ 4.40801.0 (4.8.1)
- toolchain-riscv32-esp @ 14.2.0+20251107
Reading CMake configuration...
Dependency Graph
|-- noise-c @ 0.1.11
Compiling .pioenvs/test-esp32c6/src/main.cpp.o
RAM: [= ] 13.8% (used 45140 bytes from 327680 bytes)
Flash: [===== ] 48.0% (used 880792 bytes from 1835008 bytes)
========================= [SUCCESS] Took 8.49 seconds =========================
INFO Build Info: config_hash=0x71b63954 build_time_str=2026-03-28 21:11:46 +0100
INFO Successfully compiled program.
esptool v5.2.0
Serial port /dev/ttyACM0:
Connecting...
Connected to ESP32-C6 on /dev/ttyACM0:
Chip type: ESP32-C6FH4 (QFN32) (revision v0.2)
Features: Wi-Fi 6, BT 5 (LE), IEEE802.15.4, Single Core + LP Core, 160MHz, Embedded Flash 4MB
Crystal frequency: 40MHz
USB mode: USB-Serial/JTAG
MAC: 58:e6:c5:ff:fe:00:90:f0
BASE MAC: 58:e6:c5:00:90:f0
MAC_EXT: ff:fe
Uploading stub flasher...
Running stub flasher...
Stub flasher running.
Changing baud rate to 460800...
Changed.
Configuring flash size...
Auto-detected flash size: 4MB
Flash will be erased from 0x00010000 to 0x000e7fff...
Compressed 881152 bytes to 554285...
Writing at 0x00010000 [ ] 0.0% 0/554285 bytes...
Writing at 0x0001bc0a [ ] 3.0% 16384/554285 bytes...
Writing at 0x00025dd8 [> ] 5.9% 32768/554285 bytes...
Writing at 0x0002a3ec [=> ] 8.9% 49152/554285 bytes...
Writing at 0x0003143d [==> ] 11.8% 65536/554285 bytes...
Writing at 0x000373c8 [===> ] 14.8% 81920/554285 bytes...
Writing at 0x0003d63c [====> ] 17.7% 98304/554285 bytes...
Writing at 0x00043631 [=====> ] 20.7% 114688/554285 bytes...
Writing at 0x000497ee [======> ] 23.6% 131072/554285 bytes...
Writing at 0x0004f95f [======> ] 26.6% 147456/554285 bytes...
Writing at 0x00055784 [=======> ] 29.6% 163840/554285 bytes...
Writing at 0x0005bd85 [========> ] 32.5% 180224/554285 bytes...
Writing at 0x00062271 [=========> ] 35.5% 196608/554285 bytes...
Writing at 0x000682fa [==========> ] 38.4% 212992/554285 bytes...
Writing at 0x0006edd9 [===========> ] 41.4% 229376/554285 bytes...
Writing at 0x00074d14 [============> ] 44.3% 245760/554285 bytes...
Writing at 0x0007aecb [=============> ] 47.3% 262144/554285 bytes...
Writing at 0x0008127b [==============> ] 50.2% 278528/554285 bytes...
Writing at 0x00087383 [==============> ] 53.2% 294912/554285 bytes...
Writing at 0x0008d6da [===============> ] 56.2% 311296/554285 bytes...
Writing at 0x000939f8 [================> ] 59.1% 327680/554285 bytes...
Writing at 0x0009996c [=================> ] 62.1% 344064/554285 bytes...
Writing at 0x0009f913 [==================> ] 65.0% 360448/554285 bytes...
Writing at 0x000a5627 [===================> ] 68.0% 376832/554285 bytes...
Writing at 0x000ab8a0 [====================> ] 70.9% 393216/554285 bytes...
Writing at 0x000b1934 [=====================> ] 73.9% 409600/554285 bytes...
Writing at 0x000b7ad2 [======================> ] 76.9% 425984/554285 bytes...
Writing at 0x000bdbd6 [======================> ] 79.8% 442368/554285 bytes...
Writing at 0x000c36c9 [=======================> ] 82.8% 458752/554285 bytes...
Writing at 0x000c925e [========================> ] 85.7% 475136/554285 bytes...
Writing at 0x000cef9f [=========================> ] 88.7% 491520/554285 bytes...
Writing at 0x000d4ab7 [==========================> ] 91.6% 507904/554285 bytes...
Writing at 0x000daa2e [===========================> ] 94.6% 524288/554285 bytes...
Writing at 0x000e0944 [============================> ] 97.5% 540672/554285 bytes...
Writing at 0x000e7200 [==============================] 100.0% 554285/554285 bytes...
Wrote 881152 bytes (554285 compressed) at 0x00010000 in 3.1 seconds (2253.9 kbit/s).
Verifying written data...
Hash of data verified.
SHA digest in image updated.
Flash will be erased from 0x00000000 to 0x00005fff...
Compressed 22576 bytes to 14044...
Writing at 0x00000000 [ ] 0.0% 0/14044 bytes...
Writing at 0x00005830 [==============================] 100.0% 14044/14044 bytes...
Wrote 22576 bytes (14044 compressed) at 0x00000000 in 0.2 seconds (977.5 kbit/s).
Verifying written data...
Hash of data verified.
Flash will be erased from 0x00008000 to 0x00008fff...
Compressed 3072 bytes to 134...
Writing at 0x00008000 [ ] 0.0% 0/134 bytes...
Writing at 0x00008c00 [==============================] 100.0% 134/134 bytes...
Wrote 3072 bytes (134 compressed) at 0x00008000 in 0.0 seconds (1047.3 kbit/s).
Verifying written data...
Hash of data verified.
Flash will be erased from 0x00009000 to 0x0000afff...
Compressed 8192 bytes to 31...
Writing at 0x00009000 [ ] 0.0% 0/31 bytes...
Writing at 0x0000b000 [==============================] 100.0% 31/31 bytes...
Wrote 8192 bytes (31 compressed) at 0x00009000 in 0.0 seconds (2166.0 kbit/s).
Verifying written data...
Hash of data verified.
Hard resetting via RTS pin...
INFO Successfully uploaded program.
INFO Starting log output from /dev/ttyACM0 with baud rate 115200
[21:15:07.144]I (193) esp_image: segment 3: paddr=000e470c vaddr=4080ce0c size[I][logger:120]: Log initialized
[21:15:07.145][C][safe_mode:136]: Unsuccessful boot attempts: 0
[21:15:07.148][D][esp32.preferences:144]: Writing 1 items: 0 cached, 1 written, 0 failed
[21:15:07.149][I][app:089]: Running through setup()
[21:15:07.151][D][binary_sensor:048]: 'System Boot Error' >> OFF
[21:15:07.152][D][light:079]: 'System Status LED' Setting:
[21:15:07.152][D][light:085]: Color mode: On/Off
[21:15:07.260][C][component:252]: Setup openthread took 107ms
[21:15:07.280][W][component:398]: api set Warning flag: unspecified
[21:15:07.282][D][openthread:157]: Setting up SRP services. count = 2
[21:15:07.283][D][openthread:207]: Added service: _esphomelib._tcp
[21:15:07.283][D][openthread:207]: Added service: _http._tcp
[21:15:07.283][D][openthread:211]: Finished SRP setup
[21:15:07.284][I][app:138]: setup() finished successfully!
[21:15:07.284][D][text_sensor:120]: 'Aktive Verbindung' >> 'Getrennt'
[21:15:07.284][D][openthread:113][ot_main]: Thread Version: 5
[21:15:07.285][D][openthread:137][ot_main]: Link Mode Device Type: TRUE, Network Data: TRUE, RX On When Idle: TRUE
[21:15:07.286][I][openthread:152][ot_main]: Activating dataset...
[21:15:07.288][I][app:231]: ESPHome version 2026.3.1 compiled on 2026-03-28 21:11:46 +0100
[21:15:07.288][I][app:233]: Project xiao.esp32c6_sensors version 1.0.0
[21:15:07.289][I][app:238]: ESP32 Chip: ESP32-C6 rev0.2, 1 core(s)
[21:15:07.289][C][logger:229]: Logger:
[21:15:07.289][C][logger:229]: Max Level: DEBUG
[21:15:07.289][C][logger:229]: Initial Level: DEBUG
[21:15:07.289][C][logger:236]: Log Baud Rate: 115200
[21:15:07.289][C][logger:236]: Hardware UART: USB_SERIAL_JTAG
[21:15:07.289][C][logger:246]: Task Log Buffer Size: 768 bytes
[21:15:07.305][C][gpio.output:010]: Binary Output:
[21:15:07.305][C][gpio.output:152]: Pin: GPIO15
[21:15:07.306][C][gpio.output:012]: Inverted: YES
[21:15:07.312][C][template.binary_sensor:016]: Template Binary Sensor 'System Boot Error'
[21:15:07.312][C][template.binary_sensor:237]: Device Class: 'problem'
[21:15:07.317][C][template.text_sensor:016]: Template Sensor 'Aktive Verbindung'
[21:15:07.318][C][template.text_sensor:228]: Icon: 'mdi:transit-connection-variant'
[21:15:07.323][C][light:092]: Light 'System Status LED'
[21:15:07.353][C][openthread:029]: Open Thread:
[21:15:07.353][C][openthread:031]: Device Type: FTD
[21:15:07.359][C][web_server:434]: Web Server:
[21:15:07.359][C][web_server:434]: Address: test-esp32c6.local:80
[21:15:07.364][C][esphome.ota:071]: Over-The-Air updates:
[21:15:07.364][C][esphome.ota:071]: Address: test-esp32c6.local:3232
[21:15:07.364][C][esphome.ota:071]: Version: 2
[21:15:07.369][C][safe_mode:026]: Safe Mode:
[21:15:07.370][C][safe_mode:026]: Successful after: 60s
[21:15:07.370][C][safe_mode:026]: Invoke after: 15 attempts
[21:15:07.370][C][safe_mode:026]: Duration: 300s
[21:15:07.370][C][safe_mode:043]: Bootloader rollback: support unknown
[21:15:07.375][C][web_server.ota:238]: Web Server OTA
[21:15:07.380][C][api:237]: Server:
[21:15:07.381][C][api:237]: Address: test-esp32c6.local:6053
[21:15:07.381][C][api:237]: Listen backlog: 4
[21:15:07.381][C][api:237]: Max connections: 8
[21:15:07.381][C][api:244]: Noise encryption: YES
[21:15:07.383][D][text_sensor:120]: 'Thread PAN ID' >> '16e7'
[21:15:07.387][C][openthread_info:016]: IPAddress 'Thread IP Adresse'
[21:15:07.393][C][openthread_info:016]: Role 'Thread Role'
[21:15:07.398][C][openthread_info:016]: PAN ID 'Thread PAN ID'
[21:15:07.403][C][mdns:194]: mDNS:
[21:15:07.403][C][mdns:194]: Hostname: test-esp32c6
[21:15:07.703][D][text_sensor:120]: 'Thread Role' >> 'detached'
[21:15:08.098][D][main:089]: Thread verloren oder noch nicht verbunden!
[21:15:12.092][D][text_sensor:120]: 'Thread IP Adresse' >> 'fd25:477b:2492:1:99a:5154:17c2:c558'
[21:15:12.093][I][openthread:107][ot_main]: SRP client has started
[21:15:12.711][D][text_sensor:120]: 'Thread Role' >> 'router'
[21:15:23.531][D][api:222]: Accept FD25:477B:2492:1:D3F6:6CB5:DB06:EB1
[21:15:23.532][W][component:429]: api cleared Warning flag
[21:15:23.532][D][main:341]: >>> SYSTEM ONLINE <<<
[21:15:23.533][D][light:079]: 'System Status LED' Setting:
[21:15:23.533][D][light:092]: State: ON
[21:15:23.534][D][light:079]: 'System Status LED' Setting:
[21:15:23.534][D][light:092]: State: OFF
[21:15:23.534][D][light:079]: 'System Status LED' Setting:
[21:15:23.535][D][main:022]: Thread Netzwerk steht, LED aus.
[21:15:23.535][D][light:079]: 'System Status LED' Setting:
[21:15:23.535][D][light:092]: State: ON
[21:15:23.536][D][light:079]: 'System Status LED' Setting:
[21:15:23.536][D][light:092]: State: OFF
[21:15:23.536][D][main:043]: >>> SYSTEM ONLINE <<<
[21:15:23.689][D][api.connection:2440]: Home Assistant 2026.3.4 (FD25:477B:2492:1:D3F6:6CB5:DB06:EB1): connected
[21:15:37.287][D][text_sensor:120]: 'Aktive Verbindung' >> 'Thread'
[21:16:07.150][I][safe_mode:091]: Boot seems successful; resetting boot loop counter
[21:16:07.292][D][text_sensor:120]: 'Aktive Verbindung' >> 'Thread'
[21:16:08.285][D][esp32.preferences:144]: Writing 1 items: 0 cached, 1 written, 0 failed