Matter over Thread: koppelt niet via ESP32-C6 RCP

Pagina: 1
Acties:

Vraag


  • Jeffrey_K
  • Registratie: September 2017
  • Laatst online: 21:31
Situatie
Ik probeer een IKEA KAJPLATS-lamp via Matter over Thread toe te voegen aan Home Assistant. Hiervoor gebruik ik een ESP32-C6 als Thread Border Router (OTBR), aangesloten via USB op Home Assistant.

Het Thread-netwerk wordt aangemaakt en is zichtbaar in Home Assistant & Thread tools app op telefoon. De ESP32-C6 lijkt als Border Router actief te zijn, maar tijdens het koppelen van de lamp loopt de commissioning vast bij ‘Controleren van netwerkverbinding’. Uiteindelijk krijg ik de melding dat het apparaat niet bereikbaar is en dat mijn telefoon verbinding moet hebben met wifi.

In de OTBR-logs zie ik daarnaast herhaaldelijk NoAck-meldingen. Ik vermoed daarom dat de oorzaak mogelijk bij de ESP32-C6, de Thread-radio, de firmware of de communicatie tussen Thread en IPv6 ligt.

Ik zoek hulp bij het systematisch achterhalen van de oorzaak.
1. Hardware
  • Host: Proxmox VE.
  • Virtualisatie: Home Assistant OS draait als virtuele machine op Proxmox.
  • Home Assistant-host: VM met netwerkinterface enp6s18.
  • Thread Border Router: NanoESP32-C6 V1.0, met geïntegreerde antenne.
  • Aansluiting: USB-passthrough vanuit Proxmox naar de Home Assistant-VM.
  • End device: IKEA KAJPLATS-lamp, Matter over Thread. En geprobeerd met een IKEA Myggbett
  • Bediening: Android-telefoon met de Home Assistant Companion-app.
De lamp is tijdens eerdere pogingen op ongeveer 30–50 cm van de ESP32-C6 geplaatst. Daarmee probeer ik een probleem met de afstand zo veel mogelijk uit te sluiten.

Ik wil de commissioning via mijn telefoon en de Home Assistant-app uitvoeren.
2. Softwareopbouw
De softwarestack ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Android-telefoon
└── Home Assistant Companion-app
    ├── Bluetooth / commissioning
    ├── Thread-credentials op de telefoon
    └── Lokale verbinding met Home Assistant
             │
             ▼
Proxmox VE
└── Home Assistant OS 18.3
    ├── Home Assistant Core 2026.10.2
    ├── Home Assistant Supervisor 2026.10.3
    ├── Matter-integratie
    │   └── Matter Server add-on 9.2.0
    ├── OpenThread Border Router add-on 3.1.1
    │   └── USB / UART
    │       └── NanoESP32-C6 V1.0
    │           └── ESP32-C6 RCP-firmware
    │               └── IEEE 802.15.4 / Thread
    └── Home Assistant Thread-integratie
             │
             ▼
      Thread-netwerk
             │
             ▼
      IKEA KAJPLATS-lamp
De ESP32-C6 functioneert hierbij als radio-co-processor (RCP). De OpenThread Border Router-software draait in de Home Assistant-add-on; de ESP32 verzorgt de Thread-radiofunctionaliteit.
Firmware
Ik heb de ESP32-C6 geflasht met de voorgecompileerde firmware generic-esp32c6.bin uit deze repository:

https://github.com/rayanamal/esp32-otbr-firmware

Het flashen is uitgevoerd via ESPHome Web:

https://web.esphome.io/

Ik gebruik deze ESP32 dus niet als een zelfstandig ESPHome-apparaat met eigen automatiseringen, maar als radio voor OTBR.
3. OTBR-configuratie
De huidige configuratie van de OpenThread Border Router-add-on is:
YAML:
1
2
3
4
5
6
7
device: /dev/serial/by-id/usb-Espressif_USB_JTAG_serial_debug_unit_58:8C:81:30:0A:C4-if00
baudrate: '460800'
flow_control: false
otbr_log_level: debug
firewall: true
nat64: false
beta: false
De USB-seriële verbinding wordt herkend en de OTBR kan met de ESP32-C6 communiceren. In de logs zie ik onder andere succesvolle Spinel-communicatie en het uitlezen van radio-eigenschappen.

De OTBR-webinterface is voor mij niet bereikbaar; een poging om deze te openen loopt uit op een timeout. Ik heb ook geen bruikbare CLI tot mijn beschikking via de ESP32 of de OTBR-webinterface.

De OTBR-logs zijn daarom mijn belangrijkste hulpmiddel voor diagnose.
4. Thread-netwerk
Home Assistant heeft een Thread-netwerk aangemaakt met de naam:

ha-thread-f96a

De volgende gegevens zijn eerder uit Home Assistant en de Thread-configuratie gehaald:
  • Network name: ha-thread-f96a
  • PAN ID: f96a
  • Extended PAN ID: 9cb27f995d6459ee
  • Dataset ID: 01M0GD7VE22PB265XWP5BHHJTP
  • Channel: 20 volgens de later uitgelezen dataset
  • Aantal zichtbare Border Routers: 1
Het netwerk wordt in Home Assistant Thread Tools als online/gezond weergegeven. Home Assistant beschikt over de Thread-credentials en het netwerk is als voorkeursnetwerk ingesteld.

Er is ook een ander Thread-netwerk in de omgeving waargenomen, maar dat is van de buren en moet buiten beschouwing blijven.

Deze duiken wel op bij in de logging van de OTBR.

De actieve dataset is eerder uitgelezen. Ik heb geprobeerd de configuratie zo veel mogelijk intact te laten en wil niet zonder duidelijke reden het Thread-netwerk opnieuw aanmaken of de credentials wijzigen.
5. Netwerkconfiguratie
Home Assistant draait als VM op Proxmox en heeft de volgende netwerkgegevens:
  • IPv4: 192.168.178.250/24
  • Gateway: 192.168.178.1
  • Netwerkinterface: enp6s18
  • IPv6-adres: 2001:1c01:46c4:6200:1bce:f15c:ad01:0577/64
  • IPv6-gateway: fe80::3a17:b1ff:fe40:98dd
In eerdere controles bleek dat de Proxmox-host op vmbr0 alleen een link-local IPv6-adres en geen IPv6-default route had. Het is voor mij nog niet duidelijk of dit relevant is voor het probleem in de Home Assistant-VM.

In de OTBR-logs verschijnen ook meldingen over IPv6, waaronder:
code:
1
P-InfraNetif--: Failed to handle ICMPv6 message: Drop
Ik weet nog niet of deze meldingen een oorzaak zijn of een gevolg van de mislukte verbinding.
6. Wat gebeurt er tijdens commissioning?
De koppelpoging komt verder dan alleen het ontdekken van de lamp.

Tijdens eerdere pogingen zag ik onder andere:
code:
1
addNoc statusCode: 0 fabricIndex: 1
en:
code:
1
addOrUpdateThreadNetwork status 0
Dit wijst erop dat deze stappen op dat moment succesvol zijn verlopen.

De commissioning loopt vervolgens vast bij de netwerkcontrole. De app meldt dat het apparaat niet bereikbaar is en verwijst naar de wifi-verbinding van de telefoon.

De fout is eerder ook als volgt in de logs naar voren gekomen:
code:
1
operative-connection-failed / peer-unreachable
Er zijn daarnaast pogingen geweest waarbij de BLE-verbinding werd verbroken. De commissioning is dus niet bij iedere poging exact op dezelfde stap gestopt.

De Matter Server-logs vertoonden tijdens een recente nieuwe koppelpoging geen duidelijke nieuwe commissioningmeldingen. Ik kan daarom nog niet met zekerheid vaststellen of de fout de Matter Server bereikt, of dat de verbinding al eerder wegvalt.
7. De belangrijkste OTBR-fout: NoAck
In de OTBR-logs zie ik herhaaldelijk meldingen zoals:
code:
1
Frame tx attempt 16/16 failed, error:NoAck
Gevolgd door bijvoorbeeld:
code:
1
2
MeshForwarder-: Failed to send IPv6 UDP msg
error:NoAck, radio:15.4
Ook is deze melding gezien:
code:
1
Mle-----------: Child 0x0000 timeout expired
Verder zijn er radio-ontvangstregels met onder andere:
code:
1
2
3
rssi:-56
lqi:10
rxerr:0
De precieze waarden verschillen per logregel.

De ESP32-C6 blijft dus radioverkeer verwerken, maar bepaalde verzonden frames krijgen na herhaalde pogingen geen link-layerbevestiging.

Ik weet nog niet of de frames die mislukken daadwerkelijk van of naar de IKEA-lamp gaan. In de logs staan ook andere Thread-adressen. Het is daarom nog niet bewezen dat de lamp zelf de ontvanger is bij de NoAck-meldingen.
8. Wat heb ik al geprobeerd of gecontroleerd?
  • De ESP32-C6 geflasht met de RCP-firmware.
  • De USB-passthrough naar de Home Assistant-VM opnieuw ingesteld.
  • De OTBR-add-on geconfigureerd en gestart.
  • Het Thread-netwerk aangemaakt en in Home Assistant gecontroleerd.
  • De Thread-credentials naar de telefoon gesynchroniseerd.
  • De telefoon ingesteld om de interne Home Assistant-URL via het lokale netwerk te gebruiken.
  • De interne en externe URL van de Companion-app ingesteld met http:// en het IP-adres.
  • De wifi- en locatiepermissies van de Companion-app gecontroleerd.
  • Google Play Services en Google Home gecontroleerd op updates.
  • BLE Proxy ingeschakeld.
  • De lamp gereset en op ongeveer 30–50 cm van de ESP32-C6 geplaatst.
  • De OTBR-logs op debugniveau bekeken.
  • De Matter Server-logs tijdens een nieuwe koppelpoging gecontroleerd.
  • De OTBR-webinterface proberen te openen, zonder succes.
De Play Store bood geen nieuwe Home Assistant-appupdate aan toen ik dit controleerde. Ik wil daarom niet aannemen dat de appversie de hoofdoorzaak is.
9. Wat ik graag zou willen onderzoeken
Ik zou graag gericht willen vaststellen:
  1. ESP32-C6 en firmware: kan de gebruikte RCP-firmware betrouwbaar functioneren met deze OTBR-versie en baudrate?
  2. Radioverbinding: wat kan de herhaaldelijke NoAck verklaren, en hoe kan ik vaststellen bij welk Thread-apparaat deze fouten optreden?
  3. Thread-kanaal en interferentie: is er aanleiding om het radiokanaal of mogelijke interferentie te onderzoeken, zonder direct het bestaande netwerk te wijzigen?
  4. IPv6 en Border Routing: kunnen de IPv6-configuratie van Proxmox, de Home Assistant-VM en de OTBR-add-on de mislukte operational connection verklaren?
  5. Matter Server: waarom zijn er tijdens de recente commissioningpoging geen duidelijke nieuwe gebeurtenissen in de Matter Server-logs zichtbaar?
  6. Diagnostiek zonder CLI: welke controles zijn mogelijk via Home Assistant, de add-on-logboeken of een andere eenvoudige methode, zonder ADB of een pc-geforceerde koppelpoging?
Mijn voorkeur is om eerst de radio- en netwerklaag te isoleren voordat ik firmware ga vervangen, het Thread-netwerk opnieuw aanmaak of andere instellingen wijzig.

Groet,

Jeffrey