สถานการณ์การทดสอบบางกรณีอาจไม่ใช่ข้อกำหนด แต่จะต้องสร้างเวอร์ชันที่ใช้งานจริงที่ไม่ใช่เวอร์ชันที่ใช้งานจริง ใบรับรอง Matter
ฟีเจอร์บางอย่างในระบบนิเวศของ Google ซึ่งรวมถึงซอฟต์แวร์ OTA ของอุปกรณ์ การอัปเดตดำเนินการโดยใช้ VID/PID การทดสอบไม่ได้
คู่มือนี้อธิบายวิธีสร้างและยืนยันเนื้อหาที่ไม่ได้ใช้งานจริง Matter ใบรับรองเพื่อใช้ในการทดสอบ ประเภทของ ได้แก่
- ประกาศการรับรอง (CD)
- ใบรับรองกลางในเอกสารรับรองผลิตภัณฑ์ (PAI)
- ใบรับรองเอกสารรับรองอุปกรณ์ (DAC)
ในกระบวนการจัดเตรียม บุคคล Matter ที่ได้รับการรับรอง อุปกรณ์ต้องรับรองด้วยตัวเอง กล่าวคือ พิสูจน์ว่า เป็นผลิตภัณฑ์ของแท้ที่ผ่านการรับรอง Matter ข้อมูลเข้าสู่ระบบ อุปกรณ์ Matter เครื่องใช้เพื่อรับรอง ประกอบด้วย
- คู่คีย์เอกสารรับรอง
- ชุดใบรับรอง
ใบรับรองเอกสารรับรองอุปกรณ์ (DAC) เป็นลิงก์แรกของใบรับรอง เชน และมีการตรวจสอบโดยใบรับรองกลางของเอกสารรับรองผลิตภัณฑ์ (PAI) ซึ่งมีการรับรองโดยหน่วยงานเอกสารรับรองผลิตภัณฑ์ (PAA)
ใบรับรองจะลงนามพร้อมกับคู่คีย์เอกสารรับรอง สร้างแล้ว และมีการรับรองโดยใช้คีย์ส่วนตัวของผู้ออกใบรับรองหมายเลข 1 เพื่อสร้างห่วงโซ่ความไว้วางใจ ดังนั้น ใบรับรอง DAC จึงลงชื่อโดยคีย์ PAI และลงชื่อในใบรับรอง PAI คีย์ PAA ใบรับรอง PAA ถือเป็นใบรับรองชั้นแนวหน้าของเชนธุรกิจ โดยใช้การลงนามด้วยตนเอง ห่วงโซ่ความน่าเชื่อถือนี้ทำให้เกิดโครงสร้าง PAA แบบรวมศูนย์ ซึ่งซิงค์โดย Distributed Compliance Ledger (DCL)
ข้อมูลเพิ่มเติมเกี่ยวกับขั้นตอนเอกสารรับรองและประกาศการรับรอง (CD) อาจ พบได้ใน เอกสารรับรองเพิ่มเติมและ ข้อความ และในข้อกำหนดของ Matter
ติดตั้ง Matter SDK
คำแนะนำเหล่านี้จะสมมติว่าคุณมีการติดตั้ง SDK Matter โปรดดูเอกสารประกอบใน GitHub หรือดูหัวข้อเริ่มต้นใช้งาน Matter สําหรับ ข้อมูลเพิ่มเติม
ติดตั้งยูทิลิตี Hexdump xxd
หากคุณไม่มี เครื่องมือนี้มีประโยชน์
สำหรับการพิมพ์ข้อมูลรับรองในรูปแบบ C:
sudo apt-get install xxd
บิลด์ chip-cert
ตรวจสอบว่าคุณใช้ SDK เวอร์ชันล่าสุดอยู่ ขั้นตอนเหล่านี้คือ ทดสอบใน GitHub SHA
0b17bce8
ในสาขาv1.0-branch
:$ cd connectedhomeip $ git checkout v1.0-branch $ git pull
บิลด์
chip-cert
ซึ่งเป็นเครื่องมือที่ใช้สำหรับดำเนินการต่างๆ ใน ข้อมูลเข้าสู่ระบบสำหรับอุปกรณ์ Matter เครื่อง:กำหนดค่าบิลด์ดังนี้
$ cd src/credentials $ source ../../scripts/activate.sh $ gn gen out
ตัวอย่างเอาต์พุต
gn
Done. Made 5774 targets from 289 files in 658ms
เรียกใช้บิลด์:
$ ninja -C out
ตัวอย่างเอาต์พุต
ninja
ninja: Entering directory `out' [2000/2000] stamp obj/default.stamp
สร้างใบรับรอง
ส่งออก VID/PID ที่กำหนดเองเป็นตัวแปรสภาพแวดล้อมเพื่อลดโอกาส เกิดข้อผิดพลาดด้านเสมียนเมื่อแก้ไขอาร์กิวเมนต์คำสั่งของคุณ:
$ cd ../..
$ export VID=hexVendorId
$ export PID=hexProductId
สร้างซีดี
สร้างซีดีโดยใช้
chip-cert
ขณะนี้คณะกรรมาธิการจะตรวจสอบเพียง ว่า VID และ PID ตรงกับข้อมูลที่เปิดเผยในที่อื่นๆ ของอุปกรณ์ ดังนี้ คลัสเตอร์ข้อมูลพื้นฐาน, ต้นกำเนิดของ DAC และ DAC (หากมี) คุณออกจากได้ ฟิลด์อื่นๆ ที่ไม่ได้เปลี่ยนแปลง:$ 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"
ตรวจสอบซีดี ตรวจสอบว่าเอกสารมี VID/PID (ในรูปแบบทศนิยม) ดังนี้
$ src/credentials/out/chip-cert print-cd credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.der
ตัวอย่างเอาต์พุต:
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 และ DAC
ในตัวอย่างนี้ เราจะใช้ผลิตภัณฑ์ทดสอบของ Matter เอง
ใบรับรองของผู้ออกใบรับรอง (PAA) และคีย์การลงนาม Chip-Test-PAA-NoVID
เป็นใบรับรองรูทของเรา เราจะใช้เป็น CA ระดับรูทเพื่อสร้าง PAI ของเราเอง
และ DAC
สร้าง PAI โดยใช้ PAA คุณอาจใส่ PID ด้วยก็ได้ ใน PAI แต่การละเว้นข้อมูลนั้นจะทำให้คุณมีความยืดหยุ่นมากขึ้น การทดสอบ หากคุณจำเป็นต้องใช้ DAC สำหรับ PID เพิ่มเติม คุณสามารถเรียกใช้เฉพาะ ขั้นตอนการสร้าง 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
สร้าง DAC โดยใช้ 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
ยืนยันเชน DAC, PAI และ PAA หากไม่มีข้อผิดพลาดปรากฏในเอาต์พุต หมายความว่าชุดเอกสารรับรองใบรับรองได้รับการยืนยันเรียบร้อยแล้ว ดังนี้
$ 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
คุณสามารถตรวจสอบคีย์ได้โดยใช้
openssl
ดังนี้$ openssl ec -noout -text -in \ credentials/test/attestation/test-DAC-${VID}-${PID}-key.pem
ตัวอย่างเอาต์พุต:
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
คุณยังใช้
openssl
เพื่อตรวจสอบใบรับรองที่สร้างขึ้นได้ด้วย โดยทำดังนี้$ openssl x509 -noout -text -in \ credentials/test/attestation/test-DAC-${VID}-${PID}-cert.pem
ตัวอย่างเอาต์พุต:
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
สามารถใช้กระบวนการที่คล้ายกันนี้เพื่อสร้าง PAA แบบ Self-Signed ได้ แต่การทำเช่นนั้น เป็นสิ่งที่ไม่จำเป็น
แต่สิ่งที่เราทำที่นี่คือการใช้ PAA สำหรับการพัฒนาแบบ Self-Signed ที่มีอยู่ ซึ่งจะไม่มีข้อมูล VID
สำหรับตัวอย่างเพิ่มเติมในการสร้างซีดี โปรดดูที่
credentials/test/gen-test-cds.sh
และสำหรับตัวอย่างเพิ่มเติมในการสร้าง PAA, PAI และ DAC โปรดดู
credentials/test/gen-test-attestation-certs.sh
แทนที่ใบรับรอง
แทนที่ PAA และ PAI
- เรียกใช้สคริปต์ตัวช่วยต่อไปนี้ ซึ่งใช้
เครื่องมือใบรับรอง CHIP (
chip-cert
) เพื่อสร้างอาร์เรย์รูปแบบ C ของใบรับรอง
ดาวน์โหลดสคริปต์ตัวช่วยของใบรับรองที่ฝังได้
#!/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"
คัดลอกเนื้อหาของเอาต์พุต PAI และ DAC ไปยังการติดตั้งใช้งาน
DeviceAttestationCredentialsProvider::GetProductAttestationIntermediateCert
PAI และ DAC อยู่ในอุปกรณ์เวอร์ชันที่ใช้งานจริง ข้อมูลเริ่มต้น, ในขณะที่ซีดีฝังอยู่ในเฟิร์มแวร์
หากยังไม่ได้ใช้ข้อมูลเริ่มต้น คุณอาจต้องวาง PAI ใน
src/credentials/examples/ExampleDACs.cpp
ในกรณีนี้ ให้เพิ่ม ผลลัพธ์ที่เป็นโค้ดที่สร้างขึ้นลงในไฟล์ExampleDACs.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
หากคุณใช้ข้อมูลเริ่มต้นหรือผู้ให้บริการข้อมูลเข้าสู่ระบบที่กำหนดเอง โปรดตรวจสอบว่า เพื่อใส่ข้อมูลเข้าสู่ระบบในตำแหน่งที่เหมาะสม คุณอาจต้องการ โปรดตรวจสอบกับผู้ให้บริการ SoC ของคุณเกี่ยวกับข้อมูลเฉพาะของแพลตฟอร์ม
เปลี่ยนซีดี
ดึงการนำเสนอข้อความเนื้อหาของไฟล์ซีดีโดยใช้
xxd
:$ xxd -i credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.der
ตัวอย่างเอาต์พุต:
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; ```
คัดลอกข้อความที่แยกออกมาในขั้นตอนก่อนหน้าไปยังไฟล์ที่ใช้กำหนด ใส่ซีดีลงในงานสร้างของคุณ อย่างในกรณีของ PAI และ DAC คุณจะทำสิ่งนี้ได้อย่างไร ขึ้นอยู่กับแพลตฟอร์มที่คุณกำลังพัฒนา
หากคุณใช้ตัวอย่างข้อมูลเข้าสู่ระบบ คุณอาจต้องแทนที่
เนื้อหาของ kCdForAllExamples
ใน
ExampleDACProvider::GetCertificationDeclaration
ใน
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
};
สร้างเป้าหมาย
สร้างและแฟลชเป้าหมายโดยใช้ข้อมูลเข้าสู่ระบบที่สร้างใหม่ ช่วงเวลานี้ จะขึ้นอยู่กับแพลตฟอร์ม ดูเอกสารประกอบ SoC หรือ อุปกรณ์ที่รองรับ เพื่อดูข้อมูลเพิ่มเติม
ค่าคอมมิชชันอุปกรณ์
ตอนนี้คุณสามารถทำตามขั้นตอนที่ระบุไว้ในหัวข้อจับคู่กรณี อุปกรณ์ไปยัง มอบหมายอุปกรณ์ Matter ของคุณใน Google Home platform
แก้ไขข้อบกพร่องโดยใช้ chip-tool
chip-tool
เป็นเครื่องมือที่มีประโยชน์ในการตรวจสอบว่าอุปกรณ์ของคุณส่งหมายเลขที่ถูกต้อง
ใบรับรอง วิธีสร้าง
$ 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 ../..
หากต้องการเปิดใช้บันทึกเพิ่มเติม เมื่อใดก็ตามที่เรียกใช้ chip-tool
โปรดตรวจสอบว่าคุณได้ส่งผ่าน
การแจ้งว่าไม่เหมาะสม --trace_decode 1
นอกจากนี้ แนวทางปฏิบัติที่ดีคือคุณต้องสอบผ่าน
ไฟล์ PAA ที่มีแฟล็ก --paa-trust-store-path
หากต้องการให้อุปกรณ์เทรดโดยใช้ BLE คุณสามารถเรียกใช้สิ่งต่อไปนี้ได้
```
$ 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
```
ในกรณีของอุปกรณ์ทดสอบ <PAIRING CODE>
คือ 20202021
และ
<DISCRIMINATOR>
คือ 3840
หากต้องการรับข้อมูลเข้าสู่ระบบ Thread จาก Google Nest Hub (2nd gen) คุณอาจ เรียกใช้:
$ adb connect border_router_ip_address
$ adb -e shell ot-ctl dataset active -x
$ adb disconnect
และหากต้องการมอบหมายอุปกรณ์ Wi-Fi คุณสามารถใช้ตัวเลือก ble-wifi
ดังนี้
$ examples/chip-tool/out/debug/chip-tool pairing ble-wifi 1 "SSID" SSID_password pairing_code discriminator