Für einige Testszenarien ist das Erstellen von Zertifikaten außerhalb der Produktionsversion von Matter nicht erforderlich.
Einige Funktionen von Google, einschließlich OTA-Softwareupdates für Geräte, können nicht mit einer Test-VID/PID durchgeführt werden.
In dieser Anleitung wird erläutert, wie Sie Nicht-Produktions-Matter-Zertifikate für die Verwendung in Tests erstellen und verifizieren. Es gibt folgende Arten von Zertifikaten:
- Die Zertifizierungserklärung (CD)
- Produktattestierungs-Zwischenzertifikat (Product Attestation, PPA)
- Geräteattestierungszertifikat (Device Attestation Certificate, DAC)
Während der Inbetriebnahme muss ein Matter-zertifiziertes Gerät sich selbst bestätigen, d. h. nachweisen, dass es ein echtes Matter-zertifiziertes Produkt ist. Die Anmeldedaten, die von Matter-Geräten für die Attestierung verwendet werden, bestehen aus:
- Ein Attestierungsschlüsselpaar
- Eine Zertifikatskette
Das Geräteattestierungszertifikat (Device Attestation Certificate, DAC) ist das erste Glied der Zertifikatskette und wird durch das Zwischenzertifikat für Produktattestierungen (Product Attestation Intermediate Certificate, PPA) validiert, das wiederum von der Product Attestation Authority (PAA) bestätigt wird.
Die Zertifikate werden zur gleichen Zeit signiert, zu der das Attestierungsschlüsselpaar generiert wird. Sie werden mit dem privaten Schlüssel der Zertifizierungsstelle eine Ebene darüber signiert und bilden eine Vertrauenskette. Ein DAC-Zertifikat wird also von einem PAI-Schlüssel und ein PAI-Zertifikat von einem PAA-Schlüssel signiert. PAA-Zertifikate stehen an der Spitze der Kette und werden selbst signiert. Diese Vertrauenskette bildet eine föderierte PAA-Struktur, die vom Distributed Compliance Ledger (DCL) synchronisiert wird.
Weitere Informationen zum Bestätigungsprozess und zu den Zertifizierungserklärungen (CD) findest du unter Zusätzliche Dokumente und Nachrichten für die Bestätigung und in der Matter-Spezifikation.
Matter SDK installieren
In dieser Anleitung wird davon ausgegangen, dass Sie das Matter SDK ordnungsgemäß installiert haben. Weitere Informationen finden Sie in der Dokumentation auf GitHub oder unter Erste Schritte mit Matter.
Installieren Sie das hexdump-Dienstprogramm xxd
, falls es nicht verfügbar ist. Dieses Tool eignet sich, um die Anmeldedaten im C-Stil auszugeben:
sudo apt-get install xxd
Build chip-cert
Stellen Sie sicher, dass Sie eine aktuelle Version des SDK verwenden. Diese Verfahren wurden mit GitHub-SHA
0b17bce8
im Zweigv1.0-branch
getestet:$ cd connectedhomeip $ git checkout v1.0-branch $ git pull
Erstellen Sie
chip-cert
. Dieses Tool wird für mehrere Vorgänge mit Anmeldedaten für Matter-Geräte verwendet:Konfigurieren Sie den Build:
$ cd src/credentials $ source ../../scripts/activate.sh $ gn gen out
Beispielausgabe für
gn
:Done. Made 5774 targets from 289 files in 658ms
Führen Sie den Build aus:
$ ninja -C out
Beispielausgabe für
ninja
:ninja: Entering directory `out' [2000/2000] stamp obj/default.stamp
Zertifikate erstellen
Exportieren Sie Ihre benutzerdefinierte VID/PID als Umgebungsvariablen, um die Wahrscheinlichkeit von Schreibfehlern beim Bearbeiten der Befehlsargumente zu verringern:
$ cd ../..
$ export VID=hexVendorId
$ export PID=hexProductId
CD generieren
Generieren Sie die CD mit
chip-cert
. Derzeit überprüft der Kommissar nur, dass die VID und die PID mit den Daten übereinstimmen, die an anderer Stelle vom Gerät offengelegt werden: dem Basisinformationscluster, dem DAC und dem DAC-Ursprung (sofern vorhanden). Sie können die anderen Felder unverändert lassen:$ src/credentials/out/chip-cert gen-cd \ --key credentials/test/certification-declaration/Chip-Test-CD-Signing-Key.pem \ --cert credentials/test/certification-declaration/Chip-Test-CD-Signing-Cert.pem \ --out credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.der \ --format-version "1" \ --vendor-id "${VID}" \ --product-id "${PID}" \ --device-type-id "0x1234" \ --certificate-id "ZIG20141ZB330001-24" \ --security-level "0" \ --security-info "0" \ --version-number "9876" \ --certification-type "0"
Überprüfen Sie die CD. Achte darauf, dass sie deine VID/PID (im Dezimalformat) enthält:
$ src/credentials/out/chip-cert print-cd credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.der
Beispielausgabe:
SignerKeyId value: hex:62FA823359ACFAA9963E1CFA140ADDF504F37160 0x01, tag[Anonymous]: 0xffffffff, type: Structure (0x15), container: 0x04, tag[Context Specific]: 0x0, type: Unsigned Fixed Point (0x04), value: 1 0x08, tag[Context Specific]: 0x1, type: Unsigned Fixed Point (0x04), value: XXXXX // <- VID 0x0A, tag[Context Specific]: 0x2, type: Array (0x16), container: 0x0D, tag[Anonymous]: 0xffffffff, type: Unsigned Fixed Point (0x04), value: XXXXX // <- PID 0x12, tag[Context Specific]: 0x3, type: Unsigned Fixed Point (0x04), value: 4660 0x15, tag[Context Specific]: 0x4, type: UTF-8 String (0x0c), length: 19, value: "ZIG20141ZB330001-24" 0x2B, tag[Context Specific]: 0x5, type: Unsigned Fixed Point (0x04), value: 0 0x2E, tag[Context Specific]: 0x6,type: Unsigned Fixed Point (0x04), value: 0 0x32, tag[Context Specific]: 0x7, type: Unsigned Fixed Point (0x04), value: 39030 0x35, tag[Context Specific]: 0x8, type: Unsigned Fixed Point (0x04), value: 0
PAI und DAC generieren
In diesem Beispiel verwenden wir das PAA-Zertifikat (Product Attestation Authority) von Matter und den Signaturschlüssel Chip-Test-PAA-NoVID
als Root-Zertifikat. Wir verwenden es als Stammzertifizierungsstelle, um einen eigenen PAI und einen eigenen DAC zu generieren.
Generieren Sie die PAI mithilfe der PAA. Sie können die PID-Informationen optional in die PAI aufnehmen. Durch das Weglassen dieser Information sind Sie jedoch beim Testen flexibler. Wenn Sie DACs für zusätzliche PIDs benötigen, können Sie nur den DAC-Generierungsschritt ausführen:
$ src/credentials/out/chip-cert gen-att-cert --type i \ --subject-cn "Matter Test PAI" \ --subject-vid "${VID}" \ --valid-from "2021-06-28 14:23:43" \ --lifetime "4294967295" \ --ca-key credentials/test/attestation/Chip-Test-PAA-NoVID-Key.pem \ --ca-cert credentials/test/attestation/Chip-Test-PAA-NoVID-Cert.pem \ --out-key credentials/test/attestation/"test-PAI-${VID}-key".pem \ --out credentials/test/attestation/"test-PAI-${VID}-cert".pem
Generieren Sie den DAC mit dem PAI:
$ src/credentials/out/chip-cert gen-att-cert --type d \ --subject-cn "Matter Test DAC 0" \ --subject-vid "${VID}" \ --subject-pid "${PID}" \ --valid-from "2021-06-28 14:23:43" \ --lifetime "4294967295" \ --ca-key credentials/test/attestation/"test-PAI-${VID}-key".pem \ --ca-cert credentials/test/attestation/"test-PAI-${VID}-cert".pem \ --out-key credentials/test/attestation/"test-DAC-${VID}-${PID}-key".pem \ --out credentials/test/attestation/"test-DAC-${VID}-${PID}-cert".pem
Überprüfen Sie die DAC-, PAI- und PAA-Kette. Wenn die Ausgabe keine Fehler enthält, bedeutet dies, dass die Zertifizierungskette erfolgreich verifiziert wurde:
$ src/credentials/out/chip-cert validate-att-cert \ --dac credentials/test/attestation/"test-DAC-${VID}-${PID}-cert".pem \ --pai credentials/test/attestation/"test-PAI-${VID}-cert".pem \ --paa credentials/test/attestation/Chip-Test-PAA-NoVID-Cert.pem
Sie können Ihre Schlüssel mit
openssl
prüfen:$ openssl ec -noout -text -in \ credentials/test/attestation/test-DAC-${VID}-${PID}-key.pem
Beispielausgabe:
read EC key Private-Key: (256 bit) priv: c9:f2:b3:04:b2:db:0d:6f:cd:c6:be:f3:7b:76:8d: 8c:01:4e:0b:9e:ce:3e:72:49:3c:0e:35:63:7c:6c: 6c:d6 pub: 04:4f:93:ba:3b:bf:63:90:73:98:76:1e:af:87:79: 11:e6:77:e8:e2:df:a7:49:f1:7c:ac:a8:a6:91:76: 08:5b:39:ce:6c:72:db:6d:9a:92:b3:ba:05:b0:e8: 31:a0:bf:36:50:2b:5c:72:55:7f:11:c8:01:ff:3a: 46:b9:19:60:28 ASN1 OID: prime256v1 NIST CURVE: P-256
Sie können auch
openssl
verwenden, um Ihre generierten Zertifikate zu prüfen:$ openssl x509 -noout -text -in \ credentials/test/attestation/test-DAC-${VID}-${PID}-cert.pem
Beispielausgabe:
Certificate: Data: Version: 3 (0x2) Serial Number: 2875998130766646679 (0x27e9990fef088d97) Signature Algorithm: ecdsa-with-SHA256 Issuer: CN = Matter Test PAI, 1.3.6.1.4.1.37244.2.1 = hexVendorId Validity Not Before: Jun 28 14:23:43 2021 GMT Not After : Dec 31 23:59:59 9999 GMT Subject: CN = Matter Test DAC 0, 1.3.6.1.4.1.37244.2.1 = hexVendorId, 1.3.6.1.4.1.37244.2.2 = hexProductId Subject Public Key Info: Public Key Algorithm: id-ecPublicKey Public-Key: (256 bit) pub: 04:4f:93:ba:3b:bf:63:90:73:98:76:1e:af:87:79: 11:e6:77:e8:e2:df:a7:49:f1:7c:ac:a8:a6:91:76: 08:5b:39:ce:6c:72:db:6d:9a:92:b3:ba:05:b0:e8: 31:a0:bf:36:50:2b:5c:72:55:7f:11:c8:01:ff:3a: 46:b9:19:60:28 ASN1 OID: prime256v1 NIST CURVE: P-256 X509v3 extensions: X509v3 Basic Constraints: critical CA:FALSE X509v3 Key Usage: critical Digital Signature X509v3 Subject Key Identifier: 21:0A:CA:B1:B6:5F:17:65:D8:61:19:73:84:1A:9D:52:81:19:C5:39 X509v3 Authority Key Identifier: 37:7F:24:9A:73:41:4B:16:6E:6A:42:6E:F5:E8:89:FB:75:F8:77:BB Signature Algorithm: ecdsa-with-SHA256 Signature Value: 30:45:02:20:38:8f:c5:0d:3e:90:95:dd:7d:7c:e9:5a:05:19: 1f:2d:14:08:a3:d7:0e:b5:15:6d:d3:b0:0b:f7:b8:28:4d:bf: 02:21:00:d4:05:30:43:a6:05:00:0e:b9:99:0d:34:3d:75:fe: d3:c1:4e:73:ff:e7:05:64:7a:62:8d:2d:38:8f:fd:4d:ad
PAA
Ein ähnlicher Prozess könnte zum Generieren einer selbst signierten PAA verwendet werden. Dies ist jedoch nicht erforderlich.
Stattdessen haben wir hier eine vorhandene selbstsignierte Entwicklungs-PAA verwendet, die keine VID-Informationen enthält.
Weitere Beispiele zum Generieren einer CD finden Sie unter credentials/test/gen-test-cds.sh
. Weitere Beispiele zum Generieren von PAA, PAI und DAC finden Sie unter credentials/test/gen-test-attestation-certs.sh
.
Zertifikate ersetzen
PAA und PAI ersetzen
- Führen Sie das folgende Hilfsskript aus, das mit dem CHIP-Zertifikatstool (
chip-cert
) C-ähnliche Arrays Ihrer Zertifikate generiert.
Hilfsskript für eingebettete Zertifikate herunterladen
#!/bin/bash # # generate-embeddable-certs.sh script # —---------------------------------- # # This script generates self-minted DAC and PAI. # The output may easily be included in your C++ source code. # # Edit this information with your paths and certificates folder="credentials/test/attestation" chip_cert_tool="src/credentials/out/chip-cert" cert_file_der="${folder}/test-PAI-${VID}-cert.der" cert_file_pem="${folder}/test-PAI-${VID}-cert.pem" key_file_pem="${folder}/test-PAI-${VID}-key.pem" type="Pai" printf "namespace chip {\n" printf "namespace DevelopmentCerts {\n\n" printf "#if CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID == ${PID}\n\n" printcert() { # convert cert to DER if [ -f "${cert_file_der}" ]; then rm "${cert_file_der}" fi "${chip_cert_tool}" convert-cert "${cert_file_pem}" "${cert_file_der}" --x509-der printf "// ------------------------------------------------------------ \n" printf "// ${type} CERTIFICATE ${cert_file_der} \n\n" printf "constexpr uint8_t ${type}_Cert_Array[] = {\n" less -f "${cert_file_der}" | od -t x1 -An | sed 's/\0x/g' | sed 's/\>/,/g' | sed 's/^/ /g' printf "};\n\n" printf "ByteSpan k${type}Cert = ByteSpan(${type}_Cert_Array);\n\n" printf "// ${type} PUBLIC KEY FROM ${key_file_pem} \n\n" printf "constexpr uint8_t ${type}_PublicKey_Array[] = {\n" openssl ec -text -noout -in "${key_file_pem}" 2>/dev/null | sed '/ASN1 OID/d' | sed '/NIST CURVE/d' | sed -n '/pub:/,$p' | sed '/pub:/d' | sed 's/\([0-9a-fA-F][0-9a-fA-F]\)/0x\1/g' | sed 's/:/, /g' printf "};\n\n" printf "ByteSpan k${type}PublicKey = ByteSpan(${type}_PublicKey_Array);\n\n" printf "// ${type} PRIVATE KEY FROM ${key_file_pem} \n\n" printf "constexpr uint8_t ${type}_PrivateKey_Array[] = {\n" openssl ec -text -noout -in "${key_file_pem}" 2>/dev/null | sed '/read EC key/d' | sed '/Private-Key/d' | sed '/priv:/d' | sed '/pub:/,$d' | sed 's/\([0-9a-fA-F][0-9a-fA-F]\)/0x\1/g' | sed 's/:/, /g' printf "};\n\n" printf "ByteSpan k${type}PrivateKey = ByteSpan(${type}_PrivateKey_Array);\n\n" } # generates PAI printcert type="Dac" cert_file_der="${folder}/test-DAC-${VID}-${PID}-cert.der" cert_file_pem="${folder}/test-DAC-${VID}-${PID}-cert.pem" key_file_pem="${folder}/test-DAC-${VID}-${PID}-key.pem" # generates DAC printcert printf "#endif // CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID\n" printf "} // namespace DevelopmentCerts\n" printf "} // namespace chip\n"
Kopieren Sie den Inhalt der PAI- und DAC-Ausgabe in Ihre Implementierung von
DeviceAttestationCredentialsProvider::GetProductAttestationIntermediateCert
.Auf Produktionsgeräten befinden sich der PAI und der DAC in Factory Data, während die CD in die Firmware selbst eingebettet ist.
Wenn Sie Factory Data noch nicht verwenden, sollten Sie Ihre PAI in
src/credentials/examples/ExampleDACs.cpp
ablegen. Hängen Sie in diesem Fall den generierten generierten Code an die DateiExampleDACs.cpp
an:ByteSpan kDacCert = ByteSpan(kDevelopmentDAC_Cert_FFF1_801F); ByteSpan kDacPrivateKey = ByteSpan(kDevelopmentDAC_PrivateKey_FFF1_801F); ByteSpan kDacPublicKey = ByteSpan(kDevelopmentDAC_PublicKey_FFF1_801F); #endif } // namespace DevelopmentCerts } // namespace chip /* ------------------------------------------ */ /* current end-of-file */ /* ------------------------------------------ */ /* ------------------------------------------ */ /* output of creds-codelab.sh script */ /* ------------------------------------------ */ namespace chip { namespace DevelopmentCerts { #if CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID == hexProductId ... ByteSpan kDacPrivateKey = ByteSpan(Dac_PrivateKey_Array); #endif // CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID } // namespace DevelopmentCerts } // namespace chip
Wenn Sie Factory Data oder einen benutzerdefinierten Credentials Provider verwenden, müssen Sie die Anmeldedaten an den entsprechenden Speicherorten einfügen. Erkundigen Sie sich bei Ihrem SoC-Anbieter nach den Einzelheiten Ihrer Plattform.
CD ersetzen
Extrahieren Sie mithilfe von
xxd
eine Textdarstellung des Inhalts Ihrer CD-Datei:$ xxd -i credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.der
Beispielausgabe:
unsigned char credentials_test_certification_declaration_Chip_Test_CD_hexVendorId_hexProductId_der[] = { 0x30, 0x81, 0xe9, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x81, 0xdb, 0x30, 0x81, 0xd8, 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, 0x45, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x38, 0x04, 0x36, 0x15, 0x24, 0x00, 0x01, 0x25, 0x01, 0xfe, 0xca, 0x36, 0x02, 0x05, 0xce, 0xfa, 0x18, 0x25, 0x03, 0x34, 0x12, 0x2c, 0x04, 0x13, 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x31, 0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x31, 0x2d, 0x32, 0x34, 0x24, 0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x76, 0x98, 0x24, 0x08, 0x00, 0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa, 0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a, 0xdd, 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02, 0x20, 0x53, 0x25, 0x03, 0x2c, 0x96, 0x50, 0xb6, 0x64, 0xf4, 0x18, 0xbf, 0x99, 0x47, 0xf8, 0x9d, 0xe6, 0xeb, 0x43, 0x94, 0xf1, 0xce, 0xb2, 0x61, 0x00, 0xe0, 0xf9, 0x89, 0xa8, 0x71, 0x82, 0x02, 0x0a, 0x02, 0x21, 0x00, 0xea, 0x0a, 0x40, 0xab, 0x87, 0xad, 0x7e, 0x25, 0xe1, 0xa1, 0x6c, 0xb1, 0x12, 0xfa, 0x86, 0xfe, 0xea, 0x8a, 0xaf, 0x4b, 0xc1, 0xf3, 0x6f, 0x09, 0x85, 0x46, 0x50, 0xb6, 0xd0, 0x55, 0x40, 0xe2 }; unsigned int credentials_test_certification_declaration_Chip_Test_CD_hexVendorId_hexProductId_der_len = 236; ```
Kopieren Sie den im vorherigen Schritt extrahierten Text in die Datei, mit der die CD in Ihrem Build definiert wurde. Wie im Fall von PAI und DAC hängt die Vorgehensweise von der Plattform ab, auf der Sie entwickeln.
Wenn Sie die Beispiele für Anmeldedaten verwenden, sollten Sie den Inhalt von kCdForAllExamples
in ExampleDACProvider::GetCertificationDeclaration
in src/credentials/examples/DeviceAttestationCredsExample.cpp
ersetzen:
const uint8_t kCdForAllExamples[] = {
0x30, 0x81, 0xe9, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
0x07, 0x02, 0xa0, 0x81, 0xdb, 0x30, 0x81, 0xd8, 0x02, 0x01, 0x03, 0x31,
0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04,
0x02, 0x01, 0x30, 0x45, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
0x01, 0x07, 0x01, 0xa0, 0x38, 0x04, 0x36, 0x15, 0x24, 0x00, 0x01, 0x25,
0x01, 0xfe, 0xca, 0x36, 0x02, 0x05, 0xce, 0xfa, 0x18, 0x25, 0x03, 0x34,
0x12, 0x2c, 0x04, 0x13, 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x31,
0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x31, 0x2d, 0x32, 0x34, 0x24,
0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x76, 0x98, 0x24, 0x08, 0x00,
0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa,
0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a,
0xdd, 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86,
0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, 0x0a, 0x06, 0x08, 0x2a,
0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02,
0x20, 0x53, 0x25, 0x03, 0x2c, 0x96, 0x50, 0xb6, 0x64, 0xf4, 0x18, 0xbf,
0x99, 0x47, 0xf8, 0x9d, 0xe6, 0xeb, 0x43, 0x94, 0xf1, 0xce, 0xb2, 0x61,
0x00, 0xe0, 0xf9, 0x89, 0xa8, 0x71, 0x82, 0x02, 0x0a, 0x02, 0x21, 0x00,
0xea, 0x0a, 0x40, 0xab, 0x87, 0xad, 0x7e, 0x25, 0xe1, 0xa1, 0x6c, 0xb1,
0x12, 0xfa, 0x86, 0xfe, 0xea, 0x8a, 0xaf, 0x4b, 0xc1, 0xf3, 0x6f, 0x09,
0x85, 0x46, 0x50, 0xb6, 0xd0, 0x55, 0x40, 0xe2
};
Ziel erstellen
Erstellen und aktualisieren Sie Ihr Ziel mithilfe Ihrer neu erstellten Anmeldedaten. Dieser Abschnitt ist plattformabhängig. Weitere Informationen finden Sie in der SoC-Dokumentation oder unter Unterstützte Geräte.
Gerät in Betrieb nehmen
Du kannst jetzt die bereits unter Matter-Gerät koppeln beschriebenen Schritte ausführen, um dein Matter-Gerät auf der Google Home platform in Betrieb zu nehmen.
Probleme mit chip-tool
beheben
Mit chip-tool
lässt sich prüfen, ob Ihr Gerät die richtigen Zertifikate sendet. So erstellen Sie sie:
$ cd examples/chip-tool
$ gn gen out/debug
Done. Made 114 targets from 112 files in 157ms
$ ninja -C out/debug
ninja: Entering directory `out/debug'
$ cd ../..
Wenn Sie zusätzliche Logs aktivieren möchten, müssen Sie bei jeder Ausführung von chip-tool
das Flag --trace_decode 1
übergeben. Außerdem empfiehlt es sich, den Pfad Ihrer PA-Datei mit dem Flag --paa-trust-store-path
zu übergeben.
Um ein Thread-Gerät mit BLE in Betrieb zu nehmen, können Sie Folgendes ausführen:
```
$ examples/chip-tool/out/debug/chip-tool pairing ble-thread 1 \
hex:Thread_credentials \
pairing_code \
discriminator \
--paa-trust-store-path <path to PAA folder> \
--trace_decode 1
```
Bei Testgeräten ist <PAIRING CODE>
20202021
und <DISCRIMINATOR>
3840
.
Mit dem folgenden Befehl können Sie die Thread-Anmeldedaten von Google Nest Hub (2nd gen) abrufen:
$ adb connect border_router_ip_address
$ adb -e shell ot-ctl dataset active -x
$ adb disconnect
Zur Inbetriebnahme eines WLAN-Geräts können Sie die Option ble-wifi
verwenden:
$ examples/chip-tool/out/debug/chip-tool pairing ble-wifi 1 "SSID" SSID_password pairing_code discriminator