Matter is an IP-based, royalty-free connectivity protocol standard that enables communication among a wide range of smart devices.

Posts under Matter tag

134 Posts

Post

Replies

Boosts

Views

Activity

Matter pairing without Matter client developer profile
To be able to paire a matter device on ios I need to installed on my iPhone the matter client developper profile as indicate on the apple documentation Adding Matter support to your ecosystem | Apple Developer Documentation (To test your app on the iOS or macOS device that initiates the pairing, download the developer profile now, then install it.) When I do that it works perfectly. Otherwise the documentation says that the profile is only needed for development but when I want to use my app from the apple store (validate by Apple) and when I remove the profile it doesn't work anymore. What do I have to do to paire Matter device on iphone without the Matter client developer profile.
13
2
3.1k
Sep ’24
Unable to commission with wifi device using iOS matter framework
Hi there: Following document: https://developer.apple.com/documentation/mattersupport to add wifi sensor to my own fabric. I added MatterExtension, Matter Allow Setup Payload = YES, Add following to info.plist _matter._tcp _matterc._udp _matterd._udp _meshcop._udp I can still not get callback from MatterAddDeviceExtensionRequestHandler commissionDevice. I know print log can not be seen in Extension, but I can still not see any logs even use os_log.
2
0
784
Sep ’24
Matter development - Matter Accessory - Apple Ecosystem
Apple developer support could not answer my question which is the following: How are Matter developers supposed to test accessory pairing, accessory communication and accessory discovery if the Console logs provided by Apple (iOS, MacOS, iPadOS) are encrypted, incomplete or straight up non-existent. Current issue is mDNS-SD discovery, pairing and PAKE requests initialisation. Impossible to figure out why X or Y stopped on the Apple Device. Chip-tool (provided by PROJECT-CHIP) acts 100% differently than iOS (Home) or iPadOS(Home). Thank you
0
1
1.3k
Sep ’24
MatterExtension with class MatterAddDeviceExtensionRequestHandler never called?!
Added the MatterExtension for MatterAddDeviceExtensionRequestHandler as new Target. Everything is automatically generated. But still only the default MatterAddDevice pickerView is displayed instead of MatterAddDeviceExtension?! func play() { Task { let homes = [MatterAddDeviceRequest.Home(displayName: "my Home")] let topology = MatterAddDeviceRequest.Topology(ecosystemName: "MyEcosystemName", homes: homes) let request = MatterAddDeviceRequest(topology: topology) do { try await request.perform() print("Successfully set up device!") } catch { print("Failed to set up device with error: \(error)") } } } Entitlements: Matter Allow Setup Payload = YES .plist is set up: NSLocalNetworkUsageDescription NSBonjourServices:
2
0
1.3k
Aug ’24
Matter.framework does not work properly in iOS 16.1.1
On iOS 16.0, I added accessories via the MTRDeviceController class in the Matter.framework, and it worked fine. But when I will phone upgrade to the latest version of the iOS (iOS 16.1.1), after I call "MTRDeviceController" class "pairDevice: onboardingPayload: error:" method. I get an error like this: CHIP: [BLE] BLE:Error writing Characteristics in Chip service on the device: [The specified UUID is not allowed for this operation.] According to the error message, I guess that the characteristics of a certain Bluetooth cannot be read and written. After trying to verify it, I find that the characteristics uuid of the Matter accessory: "18EE2EF5-263D-4559-959F-4F9C429F9D12" cannot be read. So, my question is what can I do in iOS 16.1.1 to make my app work as well as it does on iOS 16.0.
10
0
3.7k
Aug ’24
Commission Matter accessory added via Apple Home
Greetings! I've added a Matter accessory via the Apple Home app. In my app, I'm attempting to commission this device and add it to my fabric. However, when I try to open the commissioning window, I receive an error stating, MTRBaseDevice doesn't support openCommissioningWindowWithDiscriminator over XPC. It appears that opening a commissioning window via an XPC connection is not yet supported. Is there another method to commission the device? Can I retrieve the setup payload from the MTRBaseDevice object or the shared MTRDeviceController? Here's the simplified version of my code: var home: HMHome // HMHome received via HMHomeManager var accessory: HMAccessory = home.accessory[0] // my Matter-supported accessory let deviceController = MTRDeviceController.sharedController( withID: home.matterControllerID as NSCopying, xpcConnect: home.matterControllerXPCConnectBlock ) let device = MTRBaseDevice( nodeID: accessory.matterNodeID as NSNumber, controller: deviceController ) device.openCommissioningWindow( withDiscriminator: 0, duration: 900, queue: .main) { payload, error in if let payload { // payload not received } else if let error { // I'm getting here "Error Domain=MTRErrorDomain Code=6 "(null)"" // and "MTRBaseDevice doesn't support openCommissioningWindowWithDiscriminator over XPC" logged in the console print(error) }
1
0
1.6k
Aug ’24
Matter: Commissioning of a device
Hi everyone, I am pretty new to writing Swift and only doing it to extend a React Native App, thus my knowledge is a bit limited. I am trying to follow the example from https://developer.apple.com/documentation/mattersupport/adding-matter-support-to-your-ecosystem#Set-the-principal-class Without implementing the Extension, the Workflow starts but fails after a few minutes to add the device to Apple Home. Hence, I am currently trying to add the extension (as this is later on needed anyway to commission the device to our ecosystem). I added the class with some dummy logs to see if anything gets triggered but I am failing at registering the class as stated at https://developer.apple.com/documentation/mattersupport/adding-matter-support-to-your-ecosystem#Set-the-principal-class How is this meant to work? I guess I need to define it in info.plist but at least this did not work out: ... <key>NSExtensionPointIdentifier</key><string>com.apple.matter.support.extension.device-setup</string> <key>NSExtensionPrincipalClass</key><string>IoBrokerAddDeviceExtensionRequestHandler</string> ... Does anyone know how to register the class? Thanks in advance. Kind regards Moritz
1
0
926
Aug ’24
How use MatterSupport to commission a thread device?
Hi, Currently I would like to commission a thread device via MatterSupport. When I call MatterAddDeviceRequest API, it returns "Failed to perform Matter device setup setup: Error Domain=HMErrorDomain Code=18 "Pairing Failed" UserInfo={NSLocalizedDescription=Pairing Failed, NSUnderlyingError=0x282786e20 {Error Domain=HAPErrorDomain Code=15 "(null)"}}". As Log, I found I always get error while calling [THClient storeCredentialsForBorderAgent:activeOperationalDataSet:completion:]. It will return error "Invalid parameter sent to server..." so that I also get error log "CHIP Accessory Server failed to obtain Thread credentials for selected extended PAN ID... Error: (null)" in following. Logs: error 17:59:05.714183+0800 MatterExtension Client: -[THClient getConnectionEntitlementValidity]_block_invoke - Error: (null) error 17:59:05.714695+0800 MatterExtension -[THClient storeCredentialsForBorderAgent:activeOperationalDataSet:completion:]_block_invoke:646: - Response: Error Domain=ThreadCredentialsStore Code=4 "Invalid parameter sent to server..." UserInfo={NSLocalizedDescription=<private>} error 17:59:05.715346+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService listener:shouldAcceptNewConnection:]_block_invoke - XPC Connection invalidated error 17:59:05.747498+0800 CoreThreadCommissionerServiced ThreadCommissioningService is Enabled error 17:59:05.748245+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService checkEntitlements:connection:] - Entitlement Check is successful for the key : <private> error 17:59:05.749249+0800 homed Client: -[THClient getConnectionEntitlementValidity:]_block_invoke - Error: (null) error 17:59:05.750575+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService checkEntitlements:connection:] - Entitlement Check is successful for the key : <private> default 17:59:05.750705+0800 CoreThreadCommissionerServiced Request to fetch active dataset record with xpanid <private> default 17:59:05.751315+0800 CoreThreadCommissionerServiced nw_path_evaluator_start [AC0FC426-242F-40D0-945A-27682116B6EE <NULL> generic, attribution: developer]path: satisfied (Path is satisfied), interface: en0[802.11], ipv4, dns error 17:59:05.752692+0800 homed [1263984240/1] CHIP Accessory Server failed to obtain Thread credentials for selected extended PAN ID... Error: (null) error 17:59:05.754467+0800 homed Invalidating XPC connection. error 17:59:05.754694+0800 homed Client: -[THClient connectToXPCService]_block_invoke - CTCS XPC Client is invalidated. error 17:59:05.755485+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService listener:shouldAcceptNewConnection:]_block_invoke - XPC Connection invalidated May I get an advice?? Thanks
1
0
735
Aug ’24
How use MatterSupport to commission a thread device?
Hi, When I would like to use MatterAddDeviceRequest to commission a thread device, I will get error "Error Domain=HMErrorDomain Code=18 "Pairing Failed" UserInfo={NSLocalizedDescription=Pairing Failed, NSUnderlyingError=0x282786e20 {Error Domain=HAPErrorDomain Code=15 "(null)"}}". As checking logs, I found App will always get fail to store thread credential (-[THClient storeCredentialsForBorderAgent:activeOperationalDataSet:completion:]_block_invoke:646: - Response: Error Domain=ThreadCredentialsStore Code=1 "Backing store is nil..." UserInfo={NSLocalizedDescription=}) so that I will also get error "CHIP Accessory Server failed to obtain Thread credentials for selected extended PAN ID... Error: (null)" in following. Logs: error 17:59:05.713433+0800 CoreThreadCommissionerServiced ThreadCommissioningService is Enabled error 17:59:05.713597+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService checkEntitlements:connection:] - Entitlement Check is successful for the key : <private> error 17:59:05.714183+0800 MatterExtension Client: -[THClient getConnectionEntitlementValidity]_block_invoke - Error: (null) error 17:59:05.714695+0800 MatterExtension -[THClient storeCredentialsForBorderAgent:activeOperationalDataSet:completion:]_block_invoke:646: - Response: Error Domain=ThreadCredentialsStore Code=1 "Backing store is nil..." UserInfo={NSLocalizedDescription=<private>} error 17:59:05.715346+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService listener:shouldAcceptNewConnection:]_block_invoke - XPC Connection invalidated error 17:59:05.747498+0800 CoreThreadCommissionerServiced ThreadCommissioningService is Enabled error 17:59:05.748245+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService checkEntitlements:connection:] - Entitlement Check is successful for the key : <private> error 17:59:05.749249+0800 homed Client: -[THClient getConnectionEntitlementValidity:]_block_invoke - Error: (null) error 17:59:05.750575+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService checkEntitlements:connection:] - Entitlement Check is successful for the key : <private> default 17:59:05.750705+0800 CoreThreadCommissionerServiced Request to fetch active dataset record with xpanid <private> default 17:59:05.751315+0800 CoreThreadCommissionerServiced nw_path_evaluator_start [AC0FC426-242F-40D0-945A-27682116B6EE <NULL> generic, attribution: developer]path: satisfied (Path is satisfied), interface: en0[802.11], ipv4, dns error 17:59:05.752692+0800 homed [1263984240/1] CHIP Accessory Server failed to obtain Thread credentials for selected extended PAN ID... Error: (null) error 17:59:05.754467+0800 homed Invalidating XPC connection. error 17:59:05.754694+0800 homed Client: -[THClient connectToXPCService]_block_invoke - CTCS XPC Client is invalidated. error 17:59:05.755485+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService listener:shouldAcceptNewConnection:]_block_invoke - XPC Connection invalidated May I get an advice?? Thanks
2
0
865
Jul ’24
Matter Device OTA upgrade issue
I am using a Matter Device to do the OTA test with iPhone 8 Plus, HomePod mini, and the Home App. however, there is some abnormal behavior. The problem is that: The Matter device in the pop-up message is still the old firmware version after the OTA upgrade successfully. A few minutes later, the firmware version is updated in the device info but Apple Home still pop-up that a new firmware version is available for the Matter device with the same new version. When I restart the HomePod mini, no more updates are available for my device. is the HomePod cached the firmware version? The firmware version display format is incorrect? I remember the firmware format is in string e.g. 1.6.138. I could confirm this issue happened on HomePod mini V17.4. example: The old firmware version of the Matter device should be 251689472 in number and 1.5.122.0 in string. The new firmware version of the Matter device after OTA should be 1.6.138.0 in string and 268470784 in number (OTA upgrade with new firmware version) **Please let me know if more information is needed. ** Environment: iPhone 8 Plus, IOS 16.7.5 Apple HomePod Mini V17.5
0
0
977
Jul ’24
Pairing with MatterSupport framework
In my RequestHandler.swift, this is extension of MatterAddDeviceExtensionRequestHandler After commission device is completion. I call getBaseDevice method in the MTRDeviceController. func controller(_ controller: MTRDeviceController, commissioningComplete error: Error?, nodeID: NSNumber?) { if error != nil { os_log(.default, "TrinhVM: commissioningComplete error -> \(error!.localizedDescription)") } else { os_log(.default, "TrinhVM: commissioningComplete ->\(nodeID)") chipController.getBaseDevice(1, queue: DispatchQueue.main, completionHandler: { chipDevice, error in if chipDevice == nil { os_log(.debug, "Status: Failed to establish a connection with the device") } else { os_log(.error, "Status: Success to establish a connection with the device: \(chipDevice?.description ?? "")") let onOff = MTRBaseClusterOnOff(device: chipDevice, endpointID: 1, queue: DispatchQueue.main) // Send the "on" command to the device onOff?.on { error in let resultString: String if let error = error { resultString = String(format: "An error occurred: 0x%02lx", error._code) } else { resultString = "On command success" } debugPrint(resultString) } } }) } } It's working well, the status is always "Status: Success to establish a connection with the device". And I can control the lightbulb here with chipDevice (chipDevice is MTRBaseDevice). But, after the commission device has finished in the extension, get back the application scheme. I call method: chipController.getBaseDevice(1, queue: DispatchQueue.main, completionHandler: { chipDevice, error in if chipDevice == nil { os_log(.debug, "Status: Failed to establish a connection with the device") } else { os_log(.error, "Status: Success to establish a connection with the device: \(chipDevice?.description ?? "")") let onOff = MTRBaseClusterOnOff(device: chipDevice, endpointID: 1, queue: DispatchQueue.main) // Send the "on" command to the device onOff?.on { error in let resultString: String if let error = error { resultString = String(format: "An error occurred: 0x%02lx", error._code) } else { resultString = "On command success" } debugPrint(resultString) } } }) It's always show timeout error . Mdns: Resolve failure (src/platform/Darwin/DnssdImpl.cpp:476: CHIP Error 0x00000074: The operation has been cancelled) OperationalSessionSetup[1:0000000000000015]: operational discovery failed: src/lib/address_resolve/AddressResolve_DefaultImpl.cpp:119: CHIP Error 0x00000032: Timeout Creating NSError from src/lib/address_resolve/AddressResolve_DefaultImpl.cpp:119: CHIP Error 0x00000032: Timeout (context: (null)) "Failed to establish a connection with the device Optional(Error Domain=MTRErrorDomain Code=9 \"Transaction timed out.\" UserInfo={NSLocalizedDescription=Transaction timed out.})" I don't know why the same method, works in RequestHandler.swift but not in AppScheme. Any support for this issue. Thank and best regards.
1
1
1.2k
Jun ’24
How to connect OpenThread Border Router to Matter Home?
Does anyone know if this is even supported at the moment? I've tried pairing a sample light application based on Silicon Lab's EFR32 but it's unable to find the OTBR on the network. [module](GitHub - SiliconLabs/matter: Matter is creating more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.) I'm also using the RaspberryPi 4/RCP combination as directed by Silicon Lab's documentation. I have no problems pairing the devices to the OTBR directly through its chiptool interface but Home isn't discovering the Thread network or showing me options to add the OTBR devices. I'm currently running iOS 16.1 beta on my iPhone and I'm using a HomePod Mini which is on version 16.0 and has the HomeKit Matter Support profile installed.
2
3
4.2k
May ’24
Home App Jump to Supplier App Issue
When the Homekit device is added to the home app and the device settings interface is opened, the supplier app will be displayed. We are currently developing a Matter product and would like to implement this feature. We consulted with the Matter testing agency and they said they need to communicate with Apple. However, they did not find a solution after consulting with Apple customer service. No one knows how to do it?
0
0
657
Feb ’24
How to commission a device to our fabric after adding it using Matter.Support
How to commission a device to our fabric after adding it using Matter.Support We have the following configuration: eero border router our own thermostat device that we are developing no home pod or home TV are used We have followed this guide https://developer.apple.com/documentation/mattersupport/adding-matter-support-to-your-ecosystem and implemented Matter Extension, as Matter.Framework is no more allowed to pair device. In Matter Extension the following callbacks are fired: override func selectThreadNetwork(from threadScanResults: [MatterAddDeviceExtensionRequestHandler.ThreadScanResult]) async throws -> MatterAddDeviceExtensionRequestHandler.ThreadNetworkAssociation override func commissionDevice(in home: MatterAddDeviceRequest.Home?, onboardingPayload: String, commissioningID: UUID) async throws In our demo app the following function completes without errors try await request.perform() The thermostat device seems to be successfully commissioned. In https://developer.apple.com/documentation/mattersupport/adding-matter-support-to-your-ecosystem there is a comment that says: Use Matter.Framework APIs to pair the accessory to your application with the provided onboardingPayload. How should this thing be done ? We tried to start the matter controller in the old way: func start() -> Bool { if (self.matterController == nil) { let storage = MatterStorage.shared let factory = MTRDeviceControllerFactory.sharedInstance() let factoryParams = MTRDeviceControllerFactoryParams(storage: storage) do { try factory.start(factoryParams) } catch { return false } let keys = FabricKeys() let params = MTRDeviceControllerStartupParams(signing: keys, fabricId: UInt64(fabricId), ipk: keys.ipk) params.vendorID = NSNumber(value: self.vendorId) self.matterController = try? factory.createController(onExistingFabric: params) let controllerNid = self.matterController?.controllerNodeID if (self.matterController == nil) { self.matterController = try? factory.createController(onNewFabric: params) } } return (self.matterController != nil) } Certificate are generated locally as in Matter Darwin example. We tried to call let params = MTRCommissioningParameters() matterController?.commissionNode(withID: NSNumber(value: self.deviceNid), commissioningParams: params) in commissionDevice of Matter Extension but we get error: Invalid object state.
2
0
1.4k
Feb ’24
Error on commissioning step 'FindOperational' -CA certificate not found
Reproduction steps Xcode15.1 iPhone14Pro/iOS16.3 commission with MatterSupport implementation @objc class func commission(with setupPayload: MTRSetupPayload?) throws { MTRLog("MatterSupport start request") let topology: MatterAddDeviceRequest.Topology = .init( ecosystemName: "SmartHome", homes: [ // .init(displayName: "smart office"), // .init(displayName: "smart living"), ] ) let request = MatterAddDeviceRequest( topology: topology, setupPayload: setupPayload ) Task { do { try await request.perform() } catch { throw error } } } Always failed with Error on commissioning step 'FindOperational': '../../../../../../../../Sources/CHIPFramework/connectedhomeip/src/credentials/CHIPCert.cpp:488: CHIP Error 0x0000004A: CA certificate not found' relate issue: https://github.com/project-chip/connectedhomeip/issues/31309
0
0
809
Jan ’24
THClient "storeCredentials" error: "Can not store frozen credentials"
I have some user of my App reporting that they are not able to store thread network credentials in keychain, the error they get is "Can not store frozen credentials". I couldn't find documentation around this error message, can anyone help me with it's meaning? Why this specific credential can't be stored in keychain?
Replies
1
Boosts
0
Views
902
Activity
Sep ’24
Matter pairing without Matter client developer profile
To be able to paire a matter device on ios I need to installed on my iPhone the matter client developper profile as indicate on the apple documentation Adding Matter support to your ecosystem | Apple Developer Documentation (To test your app on the iOS or macOS device that initiates the pairing, download the developer profile now, then install it.) When I do that it works perfectly. Otherwise the documentation says that the profile is only needed for development but when I want to use my app from the apple store (validate by Apple) and when I remove the profile it doesn't work anymore. What do I have to do to paire Matter device on iphone without the Matter client developer profile.
Replies
13
Boosts
2
Views
3.1k
Activity
Sep ’24
Matter: Does iOS 16 and later versions support the Matter Mode Select Cluster?
Hello, I make a matter device with extended color light functions. I add the mode select cluster in device to set work mode of device. I can not find the work mode in Apple Home application, only the light related functions show in UI. I tested my device with chip-tool, and read out the mode from device. B.R. Ray
Replies
1
Boosts
0
Views
798
Activity
Sep ’24
Unable to commission with wifi device using iOS matter framework
Hi there: Following document: https://developer.apple.com/documentation/mattersupport to add wifi sensor to my own fabric. I added MatterExtension, Matter Allow Setup Payload = YES, Add following to info.plist _matter._tcp _matterc._udp _matterd._udp _meshcop._udp I can still not get callback from MatterAddDeviceExtensionRequestHandler commissionDevice. I know print log can not be seen in Extension, but I can still not see any logs even use os_log.
Replies
2
Boosts
0
Views
784
Activity
Sep ’24
Matter development - Matter Accessory - Apple Ecosystem
Apple developer support could not answer my question which is the following: How are Matter developers supposed to test accessory pairing, accessory communication and accessory discovery if the Console logs provided by Apple (iOS, MacOS, iPadOS) are encrypted, incomplete or straight up non-existent. Current issue is mDNS-SD discovery, pairing and PAKE requests initialisation. Impossible to figure out why X or Y stopped on the Apple Device. Chip-tool (provided by PROJECT-CHIP) acts 100% differently than iOS (Home) or iPadOS(Home). Thank you
Replies
0
Boosts
1
Views
1.3k
Activity
Sep ’24
MatterExtension with class MatterAddDeviceExtensionRequestHandler never called?!
Added the MatterExtension for MatterAddDeviceExtensionRequestHandler as new Target. Everything is automatically generated. But still only the default MatterAddDevice pickerView is displayed instead of MatterAddDeviceExtension?! func play() { Task { let homes = [MatterAddDeviceRequest.Home(displayName: "my Home")] let topology = MatterAddDeviceRequest.Topology(ecosystemName: "MyEcosystemName", homes: homes) let request = MatterAddDeviceRequest(topology: topology) do { try await request.perform() print("Successfully set up device!") } catch { print("Failed to set up device with error: \(error)") } } } Entitlements: Matter Allow Setup Payload = YES .plist is set up: NSLocalNetworkUsageDescription NSBonjourServices:
Replies
2
Boosts
0
Views
1.3k
Activity
Aug ’24
Matter.framework does not work properly in iOS 16.1.1
On iOS 16.0, I added accessories via the MTRDeviceController class in the Matter.framework, and it worked fine. But when I will phone upgrade to the latest version of the iOS (iOS 16.1.1), after I call "MTRDeviceController" class "pairDevice: onboardingPayload: error:" method. I get an error like this: CHIP: [BLE] BLE:Error writing Characteristics in Chip service on the device: [The specified UUID is not allowed for this operation.] According to the error message, I guess that the characteristics of a certain Bluetooth cannot be read and written. After trying to verify it, I find that the characteristics uuid of the Matter accessory: "18EE2EF5-263D-4559-959F-4F9C429F9D12" cannot be read. So, my question is what can I do in iOS 16.1.1 to make my app work as well as it does on iOS 16.0.
Replies
10
Boosts
0
Views
3.7k
Activity
Aug ’24
Commission Matter accessory added via Apple Home
Greetings! I've added a Matter accessory via the Apple Home app. In my app, I'm attempting to commission this device and add it to my fabric. However, when I try to open the commissioning window, I receive an error stating, MTRBaseDevice doesn't support openCommissioningWindowWithDiscriminator over XPC. It appears that opening a commissioning window via an XPC connection is not yet supported. Is there another method to commission the device? Can I retrieve the setup payload from the MTRBaseDevice object or the shared MTRDeviceController? Here's the simplified version of my code: var home: HMHome // HMHome received via HMHomeManager var accessory: HMAccessory = home.accessory[0] // my Matter-supported accessory let deviceController = MTRDeviceController.sharedController( withID: home.matterControllerID as NSCopying, xpcConnect: home.matterControllerXPCConnectBlock ) let device = MTRBaseDevice( nodeID: accessory.matterNodeID as NSNumber, controller: deviceController ) device.openCommissioningWindow( withDiscriminator: 0, duration: 900, queue: .main) { payload, error in if let payload { // payload not received } else if let error { // I'm getting here "Error Domain=MTRErrorDomain Code=6 "(null)"" // and "MTRBaseDevice doesn't support openCommissioningWindowWithDiscriminator over XPC" logged in the console print(error) }
Replies
1
Boosts
0
Views
1.6k
Activity
Aug ’24
Matter: Commissioning of a device
Hi everyone, I am pretty new to writing Swift and only doing it to extend a React Native App, thus my knowledge is a bit limited. I am trying to follow the example from https://developer.apple.com/documentation/mattersupport/adding-matter-support-to-your-ecosystem#Set-the-principal-class Without implementing the Extension, the Workflow starts but fails after a few minutes to add the device to Apple Home. Hence, I am currently trying to add the extension (as this is later on needed anyway to commission the device to our ecosystem). I added the class with some dummy logs to see if anything gets triggered but I am failing at registering the class as stated at https://developer.apple.com/documentation/mattersupport/adding-matter-support-to-your-ecosystem#Set-the-principal-class How is this meant to work? I guess I need to define it in info.plist but at least this did not work out: ... <key>NSExtensionPointIdentifier</key><string>com.apple.matter.support.extension.device-setup</string> <key>NSExtensionPrincipalClass</key><string>IoBrokerAddDeviceExtensionRequestHandler</string> ... Does anyone know how to register the class? Thanks in advance. Kind regards Moritz
Replies
1
Boosts
0
Views
926
Activity
Aug ’24
How use MatterSupport to commission a thread device?
Hi, Currently I would like to commission a thread device via MatterSupport. When I call MatterAddDeviceRequest API, it returns "Failed to perform Matter device setup setup: Error Domain=HMErrorDomain Code=18 "Pairing Failed" UserInfo={NSLocalizedDescription=Pairing Failed, NSUnderlyingError=0x282786e20 {Error Domain=HAPErrorDomain Code=15 "(null)"}}". As Log, I found I always get error while calling [THClient storeCredentialsForBorderAgent:activeOperationalDataSet:completion:]. It will return error "Invalid parameter sent to server..." so that I also get error log "CHIP Accessory Server failed to obtain Thread credentials for selected extended PAN ID... Error: (null)" in following. Logs: error 17:59:05.714183+0800 MatterExtension Client: -[THClient getConnectionEntitlementValidity]_block_invoke - Error: (null) error 17:59:05.714695+0800 MatterExtension -[THClient storeCredentialsForBorderAgent:activeOperationalDataSet:completion:]_block_invoke:646: - Response: Error Domain=ThreadCredentialsStore Code=4 "Invalid parameter sent to server..." UserInfo={NSLocalizedDescription=<private>} error 17:59:05.715346+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService listener:shouldAcceptNewConnection:]_block_invoke - XPC Connection invalidated error 17:59:05.747498+0800 CoreThreadCommissionerServiced ThreadCommissioningService is Enabled error 17:59:05.748245+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService checkEntitlements:connection:] - Entitlement Check is successful for the key : <private> error 17:59:05.749249+0800 homed Client: -[THClient getConnectionEntitlementValidity:]_block_invoke - Error: (null) error 17:59:05.750575+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService checkEntitlements:connection:] - Entitlement Check is successful for the key : <private> default 17:59:05.750705+0800 CoreThreadCommissionerServiced Request to fetch active dataset record with xpanid <private> default 17:59:05.751315+0800 CoreThreadCommissionerServiced nw_path_evaluator_start [AC0FC426-242F-40D0-945A-27682116B6EE <NULL> generic, attribution: developer]path: satisfied (Path is satisfied), interface: en0[802.11], ipv4, dns error 17:59:05.752692+0800 homed [1263984240/1] CHIP Accessory Server failed to obtain Thread credentials for selected extended PAN ID... Error: (null) error 17:59:05.754467+0800 homed Invalidating XPC connection. error 17:59:05.754694+0800 homed Client: -[THClient connectToXPCService]_block_invoke - CTCS XPC Client is invalidated. error 17:59:05.755485+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService listener:shouldAcceptNewConnection:]_block_invoke - XPC Connection invalidated May I get an advice?? Thanks
Replies
1
Boosts
0
Views
735
Activity
Aug ’24
How use MatterSupport to commission a thread device?
Hi, When I would like to use MatterAddDeviceRequest to commission a thread device, I will get error "Error Domain=HMErrorDomain Code=18 "Pairing Failed" UserInfo={NSLocalizedDescription=Pairing Failed, NSUnderlyingError=0x282786e20 {Error Domain=HAPErrorDomain Code=15 "(null)"}}". As checking logs, I found App will always get fail to store thread credential (-[THClient storeCredentialsForBorderAgent:activeOperationalDataSet:completion:]_block_invoke:646: - Response: Error Domain=ThreadCredentialsStore Code=1 "Backing store is nil..." UserInfo={NSLocalizedDescription=}) so that I will also get error "CHIP Accessory Server failed to obtain Thread credentials for selected extended PAN ID... Error: (null)" in following. Logs: error 17:59:05.713433+0800 CoreThreadCommissionerServiced ThreadCommissioningService is Enabled error 17:59:05.713597+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService checkEntitlements:connection:] - Entitlement Check is successful for the key : <private> error 17:59:05.714183+0800 MatterExtension Client: -[THClient getConnectionEntitlementValidity]_block_invoke - Error: (null) error 17:59:05.714695+0800 MatterExtension -[THClient storeCredentialsForBorderAgent:activeOperationalDataSet:completion:]_block_invoke:646: - Response: Error Domain=ThreadCredentialsStore Code=1 "Backing store is nil..." UserInfo={NSLocalizedDescription=<private>} error 17:59:05.715346+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService listener:shouldAcceptNewConnection:]_block_invoke - XPC Connection invalidated error 17:59:05.747498+0800 CoreThreadCommissionerServiced ThreadCommissioningService is Enabled error 17:59:05.748245+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService checkEntitlements:connection:] - Entitlement Check is successful for the key : <private> error 17:59:05.749249+0800 homed Client: -[THClient getConnectionEntitlementValidity:]_block_invoke - Error: (null) error 17:59:05.750575+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService checkEntitlements:connection:] - Entitlement Check is successful for the key : <private> default 17:59:05.750705+0800 CoreThreadCommissionerServiced Request to fetch active dataset record with xpanid <private> default 17:59:05.751315+0800 CoreThreadCommissionerServiced nw_path_evaluator_start [AC0FC426-242F-40D0-945A-27682116B6EE <NULL> generic, attribution: developer]path: satisfied (Path is satisfied), interface: en0[802.11], ipv4, dns error 17:59:05.752692+0800 homed [1263984240/1] CHIP Accessory Server failed to obtain Thread credentials for selected extended PAN ID... Error: (null) error 17:59:05.754467+0800 homed Invalidating XPC connection. error 17:59:05.754694+0800 homed Client: -[THClient connectToXPCService]_block_invoke - CTCS XPC Client is invalidated. error 17:59:05.755485+0800 CoreThreadCommissionerServiced Server: -[CTCSXPCService listener:shouldAcceptNewConnection:]_block_invoke - XPC Connection invalidated May I get an advice?? Thanks
Replies
2
Boosts
0
Views
865
Activity
Jul ’24
Matter Device OTA upgrade issue
I am using a Matter Device to do the OTA test with iPhone 8 Plus, HomePod mini, and the Home App. however, there is some abnormal behavior. The problem is that: The Matter device in the pop-up message is still the old firmware version after the OTA upgrade successfully. A few minutes later, the firmware version is updated in the device info but Apple Home still pop-up that a new firmware version is available for the Matter device with the same new version. When I restart the HomePod mini, no more updates are available for my device. is the HomePod cached the firmware version? The firmware version display format is incorrect? I remember the firmware format is in string e.g. 1.6.138. I could confirm this issue happened on HomePod mini V17.4. example: The old firmware version of the Matter device should be 251689472 in number and 1.5.122.0 in string. The new firmware version of the Matter device after OTA should be 1.6.138.0 in string and 268470784 in number (OTA upgrade with new firmware version) **Please let me know if more information is needed. ** Environment: iPhone 8 Plus, IOS 16.7.5 Apple HomePod Mini V17.5
Replies
0
Boosts
0
Views
977
Activity
Jul ’24
Pairing with MatterSupport framework
In my RequestHandler.swift, this is extension of MatterAddDeviceExtensionRequestHandler After commission device is completion. I call getBaseDevice method in the MTRDeviceController. func controller(_ controller: MTRDeviceController, commissioningComplete error: Error?, nodeID: NSNumber?) { if error != nil { os_log(.default, "TrinhVM: commissioningComplete error -> \(error!.localizedDescription)") } else { os_log(.default, "TrinhVM: commissioningComplete ->\(nodeID)") chipController.getBaseDevice(1, queue: DispatchQueue.main, completionHandler: { chipDevice, error in if chipDevice == nil { os_log(.debug, "Status: Failed to establish a connection with the device") } else { os_log(.error, "Status: Success to establish a connection with the device: \(chipDevice?.description ?? "")") let onOff = MTRBaseClusterOnOff(device: chipDevice, endpointID: 1, queue: DispatchQueue.main) // Send the "on" command to the device onOff?.on { error in let resultString: String if let error = error { resultString = String(format: "An error occurred: 0x%02lx", error._code) } else { resultString = "On command success" } debugPrint(resultString) } } }) } } It's working well, the status is always "Status: Success to establish a connection with the device". And I can control the lightbulb here with chipDevice (chipDevice is MTRBaseDevice). But, after the commission device has finished in the extension, get back the application scheme. I call method: chipController.getBaseDevice(1, queue: DispatchQueue.main, completionHandler: { chipDevice, error in if chipDevice == nil { os_log(.debug, "Status: Failed to establish a connection with the device") } else { os_log(.error, "Status: Success to establish a connection with the device: \(chipDevice?.description ?? "")") let onOff = MTRBaseClusterOnOff(device: chipDevice, endpointID: 1, queue: DispatchQueue.main) // Send the "on" command to the device onOff?.on { error in let resultString: String if let error = error { resultString = String(format: "An error occurred: 0x%02lx", error._code) } else { resultString = "On command success" } debugPrint(resultString) } } }) It's always show timeout error . Mdns: Resolve failure (src/platform/Darwin/DnssdImpl.cpp:476: CHIP Error 0x00000074: The operation has been cancelled) OperationalSessionSetup[1:0000000000000015]: operational discovery failed: src/lib/address_resolve/AddressResolve_DefaultImpl.cpp:119: CHIP Error 0x00000032: Timeout Creating NSError from src/lib/address_resolve/AddressResolve_DefaultImpl.cpp:119: CHIP Error 0x00000032: Timeout (context: (null)) "Failed to establish a connection with the device Optional(Error Domain=MTRErrorDomain Code=9 \"Transaction timed out.\" UserInfo={NSLocalizedDescription=Transaction timed out.})" I don't know why the same method, works in RequestHandler.swift but not in AppScheme. Any support for this issue. Thank and best regards.
Replies
1
Boosts
1
Views
1.2k
Activity
Jun ’24
How to connect OpenThread Border Router to Matter Home?
Does anyone know if this is even supported at the moment? I've tried pairing a sample light application based on Silicon Lab's EFR32 but it's unable to find the OTBR on the network. [module](GitHub - SiliconLabs/matter: Matter is creating more connections between more objects, simplifying development for manufacturers and increasing compatibility for consumers, guided by the Connectivity Standards Alliance.) I'm also using the RaspberryPi 4/RCP combination as directed by Silicon Lab's documentation. I have no problems pairing the devices to the OTBR directly through its chiptool interface but Home isn't discovering the Thread network or showing me options to add the OTBR devices. I'm currently running iOS 16.1 beta on my iPhone and I'm using a HomePod Mini which is on version 16.0 and has the HomeKit Matter Support profile installed.
Replies
2
Boosts
3
Views
4.2k
Activity
May ’24
Home App Jump to Supplier App Issue
When the Homekit device is added to the home app and the device settings interface is opened, the supplier app will be displayed. We are currently developing a Matter product and would like to implement this feature. We consulted with the Matter testing agency and they said they need to communicate with Apple. However, they did not find a solution after consulting with Apple customer service. No one knows how to do it?
Replies
0
Boosts
0
Views
657
Activity
Feb ’24
How to commission a device to our fabric after adding it using Matter.Support
How to commission a device to our fabric after adding it using Matter.Support We have the following configuration: eero border router our own thermostat device that we are developing no home pod or home TV are used We have followed this guide https://developer.apple.com/documentation/mattersupport/adding-matter-support-to-your-ecosystem and implemented Matter Extension, as Matter.Framework is no more allowed to pair device. In Matter Extension the following callbacks are fired: override func selectThreadNetwork(from threadScanResults: [MatterAddDeviceExtensionRequestHandler.ThreadScanResult]) async throws -> MatterAddDeviceExtensionRequestHandler.ThreadNetworkAssociation override func commissionDevice(in home: MatterAddDeviceRequest.Home?, onboardingPayload: String, commissioningID: UUID) async throws In our demo app the following function completes without errors try await request.perform() The thermostat device seems to be successfully commissioned. In https://developer.apple.com/documentation/mattersupport/adding-matter-support-to-your-ecosystem there is a comment that says: Use Matter.Framework APIs to pair the accessory to your application with the provided onboardingPayload. How should this thing be done ? We tried to start the matter controller in the old way: func start() -> Bool { if (self.matterController == nil) { let storage = MatterStorage.shared let factory = MTRDeviceControllerFactory.sharedInstance() let factoryParams = MTRDeviceControllerFactoryParams(storage: storage) do { try factory.start(factoryParams) } catch { return false } let keys = FabricKeys() let params = MTRDeviceControllerStartupParams(signing: keys, fabricId: UInt64(fabricId), ipk: keys.ipk) params.vendorID = NSNumber(value: self.vendorId) self.matterController = try? factory.createController(onExistingFabric: params) let controllerNid = self.matterController?.controllerNodeID if (self.matterController == nil) { self.matterController = try? factory.createController(onNewFabric: params) } } return (self.matterController != nil) } Certificate are generated locally as in Matter Darwin example. We tried to call let params = MTRCommissioningParameters() matterController?.commissionNode(withID: NSNumber(value: self.deviceNid), commissioningParams: params) in commissionDevice of Matter Extension but we get error: Invalid object state.
Replies
2
Boosts
0
Views
1.4k
Activity
Feb ’24
Documentation / MatterSupport / MatterAddDeviceRequest / perform()
func perform() async throws What are the abnormal errors thrown by the above ? Can you provide a clear list? error:Error Domain=com.apple.MatterSupport Code=1 "(null)" Where can I find the error information in the document? MatterSupport / MatterAddDeviceRequest / perform() What does this error mean: Error Domain=com.apple.MatterSupport Code=1
Replies
1
Boosts
1
Views
851
Activity
Jan ’24
Error on commissioning step 'FindOperational' -CA certificate not found
Reproduction steps Xcode15.1 iPhone14Pro/iOS16.3 commission with MatterSupport implementation @objc class func commission(with setupPayload: MTRSetupPayload?) throws { MTRLog("MatterSupport start request") let topology: MatterAddDeviceRequest.Topology = .init( ecosystemName: "SmartHome", homes: [ // .init(displayName: "smart office"), // .init(displayName: "smart living"), ] ) let request = MatterAddDeviceRequest( topology: topology, setupPayload: setupPayload ) Task { do { try await request.perform() } catch { throw error } } } Always failed with Error on commissioning step 'FindOperational': '../../../../../../../../Sources/CHIPFramework/connectedhomeip/src/credentials/CHIPCert.cpp:488: CHIP Error 0x0000004A: CA certificate not found' relate issue: https://github.com/project-chip/connectedhomeip/issues/31309
Replies
0
Boosts
0
Views
809
Activity
Jan ’24