Skip to content

Can't commission matter devices #12042

@SchneiderMaster

Description

@SchneiderMaster

Board

XIAO_ESP32C6

Device Description

directly attached via USB-C to my PC

Hardware Configuration

No, just using the on-board LED and boot-Button

Version

v3.3.3

Type

Question

IDE Name

Arduino IDE

Operating System

Windows 11

Flash frequency

80MHz

PSRAM enabled

no

Upload speed

921600

Description

Hi, I'm currently experimenting around with the Matter examples. I've tried out multiple of them, but I can't get any of them to work. Upon starting any of them, it starts of with an error:

Logs

WiFi connected
IP address: 
192.168.188.189
> E (5661) chip[DMG]: Endpoint 0, Cluster 0x0000_0031 not found in IncreaseClusterDataVersion!
E (5662) chip[DMG]: Endpoint 0, Cluster 0x0000_0031 not found in IncreaseClusterDataVersion!

Matter Node is not commissioned yet.
Matter Node is not commissioned yet.
Matter Node is not commissioned yet.
...

Upon trying to commission the device with the [python-matter-server](https://github.com/matter-js/python-matter-server), the following error occurs:
Logs

E (469840) chip[SVR]: Failsafe timer expired
E (469841) chip[SVR]: Commissioning failed (attempt 1): 32
E (469852) chip[ZCL]: OpCreds: Got FailSafeTimerExpired
E (469852) chip[ZCL]: OpCreds: Proceeding to FailSafeCleanup on fail-safe expiry!
E (469854) chip[DMG]: Endpoint 2, Cluster 0x0000_0031 not found in IncreaseClusterDataVersion!
E (470806) chip[IN]: Data received on an unknown session (LSID=16656). Dropping it!
Matter Node not commissioned yet. Waiting for commissioning.
E (471833) chip[IN]: Data received on an unknown session (LSID=16656). Dropping it!
E (473472) chip[IN]: Data received on an unknown session (LSID=16656). Dropping it!
E (474138) chip[EM]: <<5 [E:5871r S:0 M:53051891] (U) Msg Retransmission to 0:0000000000000000 failure (max retries:4)
Matter Node not commissioned yet. Waiting for commissioning.
E (476143) chip[IN]: Data received on an unknown session (LSID=16656). Dropping it!
...

At the end, the commissioning just fails and my device waits again to be commissioned. I did disable CONFIG_ENABLE_CHIPOBLE because of my setup but the rest is unchanged. The logs above are taken from the MatterOnOffLight.ino example.

Thank you for any help.

Sketch

// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at

//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Matter Manager
#include <Matter.h>
#undef CONFIG_ENABLE_CHIPOBLE
#define CONFIG_ENABLE_CHIPOBLE 0
#if !CONFIG_ENABLE_CHIPOBLE
// if the device can be commissioned using BLE, WiFi is not used - save flash space
#include <WiFi.h>
#endif
#include <Preferences.h>

// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
#if !CONFIG_ENABLE_CHIPOBLE
// WiFi is manually set and started
const char *ssid = "<my ssid>";          // Change this to your WiFi SSID
const char *password = "<my password>";  // Change this to your WiFi password
#endif

// List of Matter Endpoints for this Node
// On/Off Light Endpoint
MatterOnOffLight OnOffLight;

// it will keep last OnOff state stored, using Preferences
Preferences matterPref;
const char *onOffPrefKey = "OnOff";

// set your board LED pin here
#ifdef LED_BUILTIN
const uint8_t ledPin = LED_BUILTIN;
#else
const uint8_t ledPin = 2;  // Set your pin here if your board has not defined LED_BUILTIN
#warning "Do not forget to set the LED pin"
#endif

// set your board USER BUTTON pin here
const uint8_t buttonPin = BOOT_PIN;  // Set your pin here. Using BOOT Button.

// Button control
uint32_t button_time_stamp = 0;                // debouncing control
bool button_state = false;                     // false = released | true = pressed
const uint32_t debouceTime = 250;              // button debouncing time (ms)
const uint32_t decommissioningTimeout = 5000;  // keep the button pressed for 5s, or longer, to decommission

// Matter Protocol Endpoint Callback
bool setLightOnOff(bool state) {
  Serial.printf("User Callback :: New Light State = %s\r\n", state ? "ON" : "OFF");
  if (state) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
  // store last OnOff state for when the Light is restarted / power goes off
  matterPref.putBool(onOffPrefKey, state);
  // This callback must return the success state to Matter core
  return true;
}

void setup() {
  // Initialize the USER BUTTON (Boot button) GPIO that will act as a toggle switch
  pinMode(buttonPin, INPUT_PULLUP);
  // Initialize the LED (light) GPIO and Matter End Point
  pinMode(ledPin, OUTPUT);

  Serial.begin(115200);

// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
#if !CONFIG_ENABLE_CHIPOBLE
  // We start by connecting to a WiFi network
  Serial.print("Connecting to ");
  Serial.println(ssid);
  // Manually connect to WiFi
  WiFi.begin(ssid, password);
  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\r\nWiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  delay(500);
#endif

  // Initialize Matter EndPoint
  matterPref.begin("MatterPrefs", false);
  bool lastOnOffState = matterPref.getBool(onOffPrefKey, true);
  OnOffLight.begin(lastOnOffState);
  OnOffLight.onChange(setLightOnOff);

  // Matter beginning - Last step, after all EndPoints are initialized
  Matter.begin();
  // This may be a restart of a already commissioned Matter accessory
  if (Matter.isDeviceCommissioned()) {
    Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
    Serial.printf("Initial state: %s\r\n", OnOffLight.getOnOff() ? "ON" : "OFF");
    OnOffLight.updateAccessory();  // configure the Light based on initial state
  }
}

void loop() {
  // Check Matter Light Commissioning state, which may change during execution of loop()
  if (!Matter.isDeviceCommissioned()) {
    Serial.println("");
    Serial.println("Matter Node is not commissioned yet.");
    Serial.println("Initiate the device discovery in your Matter environment.");
    Serial.println("Commission it to your Matter hub with the manual pairing code or QR code");
    Serial.printf("Manual pairing code: %s\r\n", Matter.getManualPairingCode().c_str());
    Serial.printf("QR code URL: %s\r\n", Matter.getOnboardingQRCodeUrl().c_str());
    // waits for Matter Light Commissioning.
    uint32_t timeCount = 0;
    while (!Matter.isDeviceCommissioned()) {
      delay(100);
      if ((timeCount++ % 50) == 0) {  // 50*100ms = 5 sec
        Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
      }
    }
    Serial.printf("Initial state: %s\r\n", OnOffLight.getOnOff() ? "ON" : "OFF");
    OnOffLight.updateAccessory();  // configure the Light based on initial state
    Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
  }

  // A button is also used to control the light
  // Check if the button has been pressed
  if (digitalRead(buttonPin) == LOW && !button_state) {
    // deals with button debouncing
    button_time_stamp = millis();  // record the time while the button is pressed.
    button_state = true;           // pressed.
  }

  // Onboard User Button is used as a Light toggle switch or to decommission it
  uint32_t time_diff = millis() - button_time_stamp;
  if (button_state && time_diff > debouceTime && digitalRead(buttonPin) == HIGH) {
    button_state = false;  // released
    // Toggle button is released - toggle the light
    Serial.println("User button released. Toggling Light!");
    OnOffLight.toggle();  // Matter Controller also can see the change
  }

  // Onboard User Button is kept pressed for longer than 5 seconds in order to decommission matter node
  if (button_state && time_diff > decommissioningTimeout) {
    Serial.println("Decommissioning the Light Matter Accessory. It shall be commissioned again.");
    OnOffLight.setOnOff(false);  // turn the light off
    Matter.decommission();
    button_time_stamp = millis();  // avoid running decommissining again, reboot takes a second or so
  }
}

Debug Message

WiFi connected
IP address: 
192.168.188.189
> E (5661) chip[DMG]: Endpoint 0, Cluster 0x0000_0031 not found in IncreaseClusterDataVersion!
E (5662) chip[DMG]: Endpoint 0, Cluster 0x0000_0031 not found in IncreaseClusterDataVersion!

Matter Node is not commissioned yet.
Matter Node is not commissioned yet.
Matter Node is not commissioned yet.
...


E (469840) chip[SVR]: Failsafe timer expired
E (469841) chip[SVR]: Commissioning failed (attempt 1): 32
E (469852) chip[ZCL]: OpCreds: Got FailSafeTimerExpired
E (469852) chip[ZCL]: OpCreds: Proceeding to FailSafeCleanup on fail-safe expiry!
E (469854) chip[DMG]: Endpoint 2, Cluster 0x0000_0031 not found in IncreaseClusterDataVersion!
E (470806) chip[IN]: Data received on an unknown session (LSID=16656). Dropping it!
Matter Node not commissioned yet. Waiting for commissioning.
E (471833) chip[IN]: Data received on an unknown session (LSID=16656). Dropping it!
E (473472) chip[IN]: Data received on an unknown session (LSID=16656). Dropping it!
E (474138) chip[EM]: <<5 [E:5871r S:0 M:53051891] (U) Msg Retransmission to 0:0000000000000000 failure (max retries:4)
Matter Node not commissioned yet. Waiting for commissioning.
E (476143) chip[IN]: Data received on an unknown session (LSID=16656). Dropping it!

Other Steps to Reproduce

No response

I have checked existing issues, online documentation and the Troubleshooting Guide

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions