Một số tình huống phát triển nhất định, chẳng hạn như lệnh gọi kiểm thử OTA để tạo chứng chỉ không liên quan đến vấn đề về sản xuất.
Một số tính năng trong hệ sinh thái của Google, bao gồm cả tính năng Cập nhật phần mềm OTA trên thiết bị không dùng được VID/PID thử nghiệm.
Hướng dẫn này giải thích cách tạo và xác minh chứng chỉ Matter không phải là chứng chỉ Phát hành công khai để sử dụng trong quá trình kiểm thử. Có các loại chứng chỉ sau:
- Tuyên bố chứng nhận (CD)
- Chứng chỉ trung gian chứng thực sản phẩm (PAI)
- Chứng chỉ chứng thực thiết bị (DAC)
Trong quá trình vận hành, một thiết bị được Matter chứng nhận cần phải chứng thực, tức là chứng minh rằng đó là sản phẩm chính hãng được Matter chứng nhận. Thông tin xác thực mà thiết bị Matter sử dụng để chứng thực bao gồm:
- Cặp khoá chứng thực
- Chuỗi chứng chỉ
Chứng chỉ chứng thực thiết bị (DAC) là mối liên kết đầu tiên của chuỗi chứng chỉ và được xác thực bằng Chứng chỉ trung gian chứng thực sản phẩm (PAI), sau đó được Cơ quan chứng thực sản phẩm (PAA) xác thực.
Chứng chỉ được ký cùng lúc với quá trình tạo cặp khoá chứng thực 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. Do đó, chứng chỉ DAC được ký bằng khoá PAI và chứng chỉ PAI được ký bằng khoá PAA. Ở vị trí đầu tiên trong 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ằng Bảng tổng quan về việc tuân thủ được phân phối (DCL).
Bạn có thể tìm thêm thông tin về quy trình Chứng thực và Tuyên bố chứng nhận (CD) trong phần Giấy tờ và thông báo chứng thực bổ sung và trong Thông số kỹ thuật về vấn đề.
Cài đặt SDK Matter
Hướng dẫn này giả định rằng bạn đã cài đặt SDK Matter đang hoạt động. Vui lòng tham khảo tài liệu 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 khi in thông tin xác thực ở đị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 mới nhất. Các quy trình này đã được kiểm thử trên GitHub SHA
0b17bce8
, trên nhánhv1.0-branch
:$ cd connectedhomeip $ git checkout v1.0-branch $ git pull
Tạo
chip-cert
, đây là công cụ dùng cho một số thao tác trên thông tin xác thực cho thiết bị Matter:Định cấu hình bản dựng:
$ cd src/credentials $ source ../../scripts/activate.sh $ gn gen out
Ví dụ về kết quả
gn
:Done. Made 5774 targets from 289 files in 658ms
Chạy bản dựng:
$ ninja -C out
Ví dụ về kết quả
ninja
:ninja: Entering directory `out' [2000/2000] stamp obj/default.stamp
Phát hành chứng chỉ
Xuất VID/PID tuỳ chỉnh dưới dạng biến môi trường để giảm khả năng xảy ra lỗi hành chính khi chỉnh sửa đối số lệnh:
$ cd ../..
$ export VID=hexVendorId
$ export PID=hexProductId
Tạo đĩa CD
Tạo đĩa CD bằng
chip-cert
. Hiện tại, Uỷ viên chỉ xác thực rằng VID và PID khớp với dữ liệu mà 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 (nếu 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 đĩa CD. Đảm bảo rằng tệp này chứa VID/PID (ở định dạng thập phân):
$ src/credentials/out/chip-cert print-cd credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.der
Kết quả điểm dữ liệu:
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 chứng chỉ Tổ chức chứng thực sản phẩm (PAA) kiểm thử của riêng Matter và khoá ký Chip-Test-PAA-NoVID
làm chứng chỉ gốc. Chúng ta sẽ sử dụng CA gốc này để tạo PAI và DAC của riêng mình.
Tạo PAI bằng PAA. Bạn có thể đưa thông tin PID vào PAI (không bắt buộc), 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 bổ sung, bạn chỉ có thể thực thi 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".pem
Tạ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".pem
Xác minh chuỗi DAC, PAI và PAA. Nếu không có lỗi nào xuất hiện trong kết quả, thì điều đó có nghĩa là chuỗi chứng 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.pem
Bạn có thể kiểm tra các khoá bằng
openssl
:$ openssl ec -noout -text -in \ credentials/test/attestation/test-DAC-${VID}-${PID}-key.pem
Kết quả điểm dữ liệu:
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
Bạ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.pem
Kết quả điểm dữ liệu:
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 quy trình tương tự để tạo PAA tự ký, nhưng không nhất 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 bao gồm thông tin VID.
Để biết thêm ví dụ về cách tạo CD, hãy xem credentials/test/gen-test-cds.sh
. Để biết 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 các mảng kiểu C của chứng chỉ.
Tải tập lệnh Trình trợ giúp 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 ban đầu, còn CD được nhúng trong chính phần mềm.
Nếu chưa sử dụng Dữ liệu ban đầu, 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 chip
Nếu bạn đang sử dụng Dữ liệu gốc hoặc Trình cung cấp thông tin xác thực tuỳ chỉnh, hãy nhớ chèn thông tin xác thực vào các vị trí thích hợp. Bạn nên tham khảo ý kiến của nhà cung cấp SoC về thông tin cụ thể của nền tảng.
Thay đĩa CD
Giải nén nội dung của tệp CD dưới dạng văn bản bằng
xxd
:$ xxd -i credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.der
Kết quả điểm dữ liệu:
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 đĩa CD vào bản dựng. Như trong trường hợp của PAI và DAC, cách bạn thực hiện việc này phụ thuộc vào nền tảng bạn đang phát triển.
Nếu đang sử dụng các ví dụ về thông tin xác thực, bạn có thể 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
Hãy tạo và cài đặt mục tiêu của bạn bằng thông tin đăng nhập mới được 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.
Ủy quyền cho thiết bị
Giờ đây, bạn có thể làm theo các bước đã đề cập trong phần Ghép nối thiết bị Matter để uỷ quyền thiết bị Matter trên Google Home platform.
Khắc phục vấn đề bằng chip-tool
chip-tool
có thể là một công cụ có giá trị để 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:
$ 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 các nhật ký bổ sung, mỗi khi chạy chip-tool
, hãy nhớ truyền cờ --trace_decode 1
. Hơn nữa, bạn nên truyền đường dẫn của tệp PaA bằng cờ --paa-trust-store-path
.
Do đó, để kích hoạt thiết bị Thread 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ị thử nghiệm, <PAIRING CODE>
là 20202021
và <DISCRIMINATOR>
là 3840
.
Để lấy thông tin xác thực 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
Và để uỷ quyền cho một thiết bị Wi-Fi, 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