Matter Operating Device issue

My team has developed an app with a biref Matter commissioner feature using the Matter framework on the MatterSupport extension.

Our app support iOS and Android. However, we ran into a problem that the control certificate generated by the iOS app could not control the device on the Android side. And the control certificate generated by the Android app could not control the device on the iOS side.

The Matter library used by Android is compiled by connectedhomeip.

Does anyone have the same problem as us? How to solve this?

Thank you

Our app support iOS and Android. However, we ran into a problem that the control certificate generated by the iOS app could not control the device on the Android side. And the control certificate generated by the Android app could not control the device on the iOS side.

What's going wrong? Have you compared the data from both cases looking of any obvious difference in format or behavior?

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

Our app tried to operate a Matter bulb in a local Wi-Fi.

At first,the iOS app generate the rootCertificate :

let rootKeypairs = FCSMTRKeys()
            
rootCertificate = try MTRCertificates.createRootCertificate(rootKeypairs, issuerID: __tmpIssuerID, fabricID: NSNumber(value: __tmpFabricId))

Then commissioning the bulb and generate the Operational Certificate like this:

let opKeypairs = FCSMTRKeys()
            
guard let rootCer = rootCertificate else {
      return false
}
            
let operationalPublicKey = FCSMTRKeys.getSecPublicKey(opKeypairs.publicKeyData)
            
let nocCertificate = try MTRCertificates.createOperationalCertificate(
rootKeypairs,                                                                            signingCertificate: rootCer,                                                                         operationalPublicKey:operationalPublicKey.takeUnretainedValue(),                                                                          fabricID: NSNumber(value: __tmpFabricId),
nodeID: NSNumber(value: deviceId),                                                                           caseAuthenticatedTags: nil)
            
factoryParams = MTRDeviceControllerStartupParams(
ipk: rootKeypairs.ipk,                                                                         operationalKeypair: opKeypairs,                                              operationalCertificate: nocCertificate,                                                                        intermediateCertificate: nil,                                                                         rootCertificate: rootCer)

At last commissioning complete,we can use iOS App operate the Matter bulb.

We have a problem:the Root Certificate、Operational Certificate and the keypairs we shared to the Android side. The Android App can’t operate the Matter bulb.

We don't know why.

We have a problem:the Root Certificate,Operational Certificate, and the key pairs we shared to the Android side. The Android App can’t operate the Matter bulb.

So, the first thing I would do here is create a new iOS app project (I'd duplicate your existing project and change the bundle ID), add/hard code those credentials into that app (you could also run this on macOS), and then see if you can communicate with the accessory (ideally, testing on a different device). If you can't, then you need to go back to the original app (which still works) and figure out what's missing/different/wrong. If the second app does work, then I think this is something you need to look at from the Android side.

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

Matter Operating Device issue
 
 
Q