Skip to content

[bug] Direct Device Connection #103

Open
@leonardpitzu

Description

@leonardpitzu

Hardware

SparkFun Thing Plus Matter - MGM240P

Core version

2.2.0

Arduino IDE version

2.3.3

Operating system

macOS 15.1

Radio stack variant

Matter

OpenThread Border Router device (if using Matter)

Apple iPhone 15 PRO

Issue description

According to https://appleinsider.com/articles/24/09/18/apple-enables-direct-thread-control-for-smart-home-devices-with-ios-18 iOS 18 supports direct Thread connection.
Currently this does not work - the thread device is detected by the phone and pairing is initiated. The process hangs at the "adding devices" step and times out eventually with iOS presenting and error "Unable to Add Accessory".

Serial output

12:45:42.403 -> Matter temperature sensor
12:45:42.799 -> Matter device is not commissioned
12:45:42.799 -> Commission it to your Matter hub with the manual pairing code or QR code
12:45:42.833 -> Manual pairing code: 34970112332
12:45:42.833 -> QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A6FCJ142C00KA0648G00
12:46:04.228 -> Waiting for Thread network...
12:46:38.355 -> Connected to Thread network
12:46:38.355 -> Waiting for Matter device discovery...

RTT output (if using Matter)

No response

Minimal reproducer code

#include <Matter.h>
#include <MatterTemperature.h>

MatterTemperature matter_temp_sensor;

void setup()
{
  Serial.begin(115200);
  Matter.begin();
  matter_temp_sensor.begin();

  Serial.println("Matter temperature sensor");

  if (!Matter.isDeviceCommissioned()) {
    Serial.println("Matter device is not commissioned");
    Serial.println("Commission it to your Matter hub with the manual pairing code or QR code");
    Serial.printf("Manual pairing code: %s\n", Matter.getManualPairingCode().c_str());
    Serial.printf("QR code URL: %s\n", Matter.getOnboardingQRCodeUrl().c_str());
  }
  while (!Matter.isDeviceCommissioned()) {
    delay(200);
  }

  Serial.println("Waiting for Thread network...");
  while (!Matter.isDeviceThreadConnected()) {
    delay(200);
  }
  Serial.println("Connected to Thread network");

  Serial.println("Waiting for Matter device discovery...");
  while (!matter_temp_sensor.is_online()) {
    delay(200);
  }
  Serial.println("Matter device is now online");
}

void loop()
{
  float current_cpu_temp = getCPUTemp();
  matter_temp_sensor.set_measured_value_celsius(current_cpu_temp);
  Serial.printf("Current CPU temperature: %.02f C\n", current_cpu_temp);
  delay(2000);
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions