Mặc dù không bắt buộc, nhưng một số trường hợp kiểm thử yêu cầu bạn phải tạo chứng chỉ Matter không dành cho môi trường sản xuất.
Bạn không thể thực hiện một số tính năng trong hệ sinh thái của Google, bao gồm cả Bản cập nhật phần mềm qua mạng (OTA) cho thiết bị **bằng cách sử dụng VID/PID kiểm thử**.
Hướng dẫn này giải thích cách tạo và xác minh chứng chỉ không dành cho môi trường sản xuất Matter để sử dụng trong quá trình kiểm thử. Các loại chứng chỉ là:
- Tuyên bố chứng nhận (CD)
- Chứng chỉ trung gian xác thực sản phẩm (PAI)
- Chứng chỉ xác thực thiết bị (DAC)
Trong quá trình đưa vào hoạt động, một thiết bị được chứng nhận Matter cần phải tự xác thực, tức là chứng minh rằng thiết bị đó là sản phẩm chính hãng được chứng nhận Matter. Thông tin đăng nhập mà thiết bị Matter sử dụng để xác thực bao gồm:
- Một cặp khoá xác thực
- Một chuỗi chứng chỉ
Chứng chỉ xác thực thiết bị (DAC) là đường liên kết đầu tiên của chuỗi chứng chỉ và được xác thực bởi Chứng chỉ trung gian xác thực sản phẩm (PAI). Chứng chỉ này lần lượt được xác thực bởi Tổ chức xác thực sản phẩm (PAA).
Chứng chỉ được ký cùng lúc với thời điểm cặp khoá xác thực được tạo và được ký bằng khoá riêng tư của Tổ chức phát hành chứng chỉ ở cấp trên, tạo thành một chuỗi tin cậy. Vì vậy, chứng chỉ DAC được ký bằng khoá PAI và chứng chỉ PAI được ký bằng khoá PAA. Là phần đầu của chuỗi, chứng chỉ PAA được tự ký. Chuỗi tin cậy này tạo thành một cấu trúc PAA liên kết, được đồng bộ hoá bởi Sổ cái tuân thủ phân tán (DCL).
Bạn có thể xem thêm thông tin về quy trình Xác thực và Tuyên bố chứng nhận (CD) có thể tìm thấy trong Tài liệu và thông báo xác thực bổ sung và trong Thông số kỹ thuật Matter.
Cài đặt SDK Matter
Các hướng dẫn này giả định rằng bạn đã cài đặt Matter SDK. Vui lòng tham khảo tài liệu của SDK này trên Github hoặc xem bài viết Bắt đầu sử dụng Matter để biết thêm thông tin.
Cài đặt tiện ích hexdump xxd nếu bạn chưa có. Công cụ này hữu ích
cho việc in thông tin đăng nhập ở định dạng kiểu C:
sudo apt-get install xxd
Tạo chip-cert
Đảm bảo bạn đang sử dụng phiên bản SDK gần đây. Các quy trình này đã được kiểm thử trên SHA
0b17bce8của Github, trên nhánhv1.0-branch:$ cd connectedhomeip $ git checkout v1.0-branch $ git pullBản dựng
chip-cert, là công cụ dùng cho một số thao tác trên thông tin đăng nhập của Matter thiết bị:Định cấu hình bản dựng:
$ cd src/credentials $ source ../../scripts/activate.sh $ gn gen outVí dụ về đầu ra
gn:Done. Made 5774 targets from 289 files in 658msChạy bản dựng:
$ ninja -C outVí dụ về đầu ra
ninja:ninja: Entering directory `out' [2000/2000] stamp obj/default.stamp
Đúc chứng chỉ
Xuất VID/PID tuỳ chỉnh của bạn dưới dạng biến môi trường để giảm khả năng xảy ra lỗi do sơ suất khi chỉnh sửa đối số lệnh:
$ cd ../..
$ export VID=hexVendorId
$ export PID=hexProductId
Tạo CD
Tạo CD bằng
chip-cert. Hiện tại, Bộ điều khiển chỉ xác thực rằng VID và PID khớp với dữ liệu được thiết bị hiển thị ở nơi khác: Cụm thông tin cơ bản, DAC và nguồn gốc DAC (khi có). Bạn có thể giữ nguyên các trường khác:$ 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"Xác minh CD. Đảm bảo CD chứa VID/PID của bạn (ở định dạng thập phân):
$ src/credentials/out/chip-cert print-cd credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.derVí dụ về đầu ra:
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
Tạo PAI và DAC
Trong ví dụ này, chúng ta sẽ sử dụng Matter chứng chỉ và khoá ký Tổ chức xác thực sản phẩm (PAA) kiểm thử của riêng
làm chứng chỉ gốc.Chip-Test-PAA-NoVID Chúng ta sẽ sử dụng chứng chỉ này làm CA gốc để tạo PAI và DAC của riêng mình.
Tạo PAI bằng PAA. Bạn có thể tuỳ ý đưa thông tin PID vào PAI, nhưng việc bỏ qua thông tin này sẽ giúp bạn linh hoạt hơn trong quá trình kiểm thử. Nếu cần DAC cho các PID khác, bạn chỉ cần thực hiện bước tạo DAC:
$ 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".pemTạo DAC bằng 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".pemXác minh chuỗi DAC, PAI và PAA. Nếu không có lỗi nào xuất hiện trong đầu ra, tức là chuỗi xác thực chứng chỉ đã được xác minh thành công:
$ 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.pemBạn có thể kiểm tra các khoá của mình bằng
openssl:$ openssl ec -noout -text -in \ credentials/test/attestation/test-DAC-${VID}-${PID}-key.pemVí dụ về đầu ra:
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-256Bạn cũng có thể sử dụng
opensslđể kiểm tra các chứng chỉ đã tạo:$ openssl x509 -noout -text -in \ credentials/test/attestation/test-DAC-${VID}-${PID}-cert.pemVí dụ về đầu ra:
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
Bạn có thể sử dụng một quy trình tương tự để tạo PAA tự ký, nhưng không cần thiết phải làm như vậy.
Thay vào đó, chúng ta đã sử dụng một PAA phát triển tự ký hiện có không chứa thông tin VID.
Để xem thêm ví dụ về cách tạo CD, hãy xem
credentials/test/gen-test-cds.sh
Để xem thêm ví dụ về cách tạo PAA, PAI và DAC, hãy xem
credentials/test/gen-test-attestation-certs.sh
Thay thế chứng chỉ
Thay thế PAA và PAI
- Chạy tập lệnh trợ giúp sau đây. Tập lệnh này sử dụng
Công cụ chứng chỉ CHIP (
chip-cert) để tạo mảng kiểu C cho chứng chỉ của bạn.
Tải tập lệnh Trợ giúp về chứng chỉ có thể nhúng
#!/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"
Sao chép nội dung của đầu ra PAI và DAC vào quá trình triển khai
DeviceAttestationCredentialsProvider::GetProductAttestationIntermediateCert.Trên các thiết bị sản xuất, PAI và DAC nằm trong Dữ liệu gốc, trong khi CD được nhúng trong chính phần sụn.
Nếu chưa sử dụng Dữ liệu gốc, bạn nên đặt PAI vào
src/credentials/examples/ExampleDACs.cpp. Trong trường hợp này, hãy thêm mã được tạo vào tệpExampleDACs.cpp: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 chipNếu bạn đang sử dụng Dữ liệu gốc hoặc Nhà cung cấp thông tin đăng nhập tuỳ chỉnh, hãy nhớ chèn thông tin đăng nhập vào các vị trí thích hợp. Bạn nên kiểm tra với nhà cung cấp SoC về thông tin cụ thể của nền tảng.
Thay thế CD
Trích xuất bản trình bày văn bản về nội dung của tệp CD bằng
xxd:$ xxd -i credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.derVí dụ về đầu ra:
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; ```Sao chép văn bản bạn đã trích xuất ở bước trước vào tệp dùng để xác định CD trong bản dựng của bạn. Tương tự như trường hợp PAI và DAC, cách thực hiện việc này phụ thuộc vào nền tảng mà bạn đang phát triển.
Nếu bạn đang sử dụng các ví dụ về thông tin đăng nhập, có thể bạn muốn thay thế nội dung của kCdForAllExamples trong ExampleDACProvider::GetCertificationDeclaration, trong src/credentials/examples/DeviceAttestationCredsExample.cpp:
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
};
Tạo mục tiêu
Tạo và cài đặt ROM mục tiêu bằng thông tin đăng nhập mới tạo. Phần này phụ thuộc vào nền tảng. Hãy xem tài liệu về SoC hoặc Thiết bị được hỗ trợ để biết thêm thông tin.
Đưa thiết bị vào hoạt động
Giờ đây, bạn có thể làm theo các bước đã trình bày trong bài viết Ghép nối thiết bị Matter để đưa thiết bị Matter vào hoạt động trên Google Home platform.
Gỡ lỗi bằng chip-tool
chip-tool có thể là một công cụ hữu ích để kiểm tra xem thiết bị của bạn có gửi đúng chứng chỉ hay không. Cách tạo công cụ này:
$ 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 ../..
Để bật nhật ký bổ sung, bất cứ khi nào chạy chip-tool, hãy nhớ truyền cờ --trace_decode 1. Ngoài ra, bạn nên truyền đường dẫn của tệp PAA bằng cờ --paa-trust-store-path.
Do đó, để đưa thiết bị Thread vào hoạt động bằng BLE, bạn có thể chạy:
```
$ 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
```
Trong trường hợp thiết bị kiểm thử, <PAIRING CODE> là 20202021 và
<DISCRIMINATOR> là 3840.
Để lấy thông tin đăng nhập Thread từ Google Nest Hub (2nd gen), bạn có thể chạy:
$ adb connect border_router_ip_address
$ adb -e shell ot-ctl dataset active -x
$ adb disconnect
Để đưa thiết bị Wi-Fi vào hoạt động, bạn có thể sử dụng tuỳ chọn ble-wifi:
$ examples/chip-tool/out/debug/chip-tool pairing ble-wifi 1 "SSID" SSID_password pairing_code discriminator