برخیاز سناریوهای توسعه مثل آزمایش OTA نیازمند ایجاد گواهینامههای غیرتولیدی Matter است.
برخیاز ویژگیهای بومسازگان Google، ازجمله «بهروزرسانیهای نرمافزار ازطریق هوا برای دستگاه» بااستفاده از VID/PID آزمایشی قابلانجام نیست.
این راهنما نحوه ایجاد و درستیسنجی گواهینامههای غیرتولیدی Matter را برای استفاده در آزمایش توضیح میدهد. انواع گواهینامهها عبارتاند از:
- اظهارنامه گواهینامه (CD)
- گواهینامه واسط گواهی محصول (PAI)
- گواهینامه گواهی دستگاه (DAC)
درطول فرایند راهاندازی، دستگاه دارای گواهینامه Matter باید خود را تأیید کند، یعنی ثابت کند که محصول دارای گواهینامه Matter است. اطلاعات اعتباری مورد استفاده Matter دستگاه برای گواهی شامل موارد زیر است:
- جفت کلید گواهی
- زنجیره گواهینامه
«گواهینامه گواهی دستگاه» (DAC) اولین پیوند زنجیره گواهینامه است و توسط «گواهینامه واسطه گواهی محصول» (PAI) تأیید میشود، که به نوبه خود توسط «مرجع گواهی محصول» (PAA) تأیید میشود.
گواهینامهها همزمان با تولید جفت کلید گواهی امضا میشوند و بااستفاده از کلید خصوصی «مرجع صدور گواهینامه» در سطح بالاتر امضا میشوند و زنجیره اعتماد را تشکیل میدهند. بنابراین، گواهینامه DAC با کلید PAI امضا میشود و گواهینامه PAI با کلید PAA امضا میشود. گواهینامههای PAA که در بالای زنجیره قرار دارند، خودامضا هستند. این زنجیره اعتماد ساختار PAA فدرال را تشکیل میدهد که توسط دفتر کل انطباق توزیعشده (DCL) همگامسازی میشود.
اطلاعات بیشتر درباره فرایند «گواهی» و «اظهارنامههای گواهی» (CD) را میتوانید در اسناد و پیامهای تکمیلی گواهی و در «مشخصات Matter» پیدا کنید.
نصب کیت توسعه نرمافزار Matter
این دستورالعملها فرض میکند که نصب کاری از Matter SDK دارید. برای اطلاعات بیشتر، لطفاً به اسناد آن در Github مراجعه کنید یا شروع کار با Matter را ببینید.
اگر ابزار hexdump را ندارید، آن را xxd نصب کنید. این ابزار برای
چاپ اطلاعات اعتباری در قالب C مفید است:
sudo apt-get install xxd
ساختن chip-cert
مطمئن شوید که روی نسخه جدیدی از کیت توسعه نرمافزار کار میکنید. این رویهها در 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
تولید کردن CD
تولید CD بااستفاده از
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
خود بهعنوان گواهی ریشه استفاده میکنیم. از آن بهعنوان مرجع صدور گواهی ریشه برای تولید PAI و DAC خودمان استفاده خواهیم کرد.
تولید PAI بااستفاده از PAA. میتوانید بهصورت اختیاری اطلاعات PID را در PAI بگنجانید، اما حذف آن انعطافپذیری بیشتری برای آزمایش به شما میدهد. اگر برای «شناسههای محصول» اضافی به «کدهای دسترسی داده» نیاز دارید، میتوانید فقط مرحله تولید «کدهای دسترسی داده» را اجرا کنید:
$ 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 خودامضا استفاده کرد، اما انجام این کار ضروری نیست.
درعوض، کاری که در اینجا انجام دادهایم این است که از PAA توسعه خودامضاشده موجودی استفاده کنیم که اطلاعات VID را ندارد.
برای نمونههای بیشتر از تولید CD، به
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 در دادههای کارخانه قرار دارند، درحالیکه CD در خود میانافزار جاسازی شده است.
اگر هنوز از «دادههای کارخانه» استفاده نمیکنید، شاید بخواهید «اطلاعات شناسایی شخصی» خود را در
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 خود مشورت کنید.
جایگزین کردن CD
بااستفاده از
xxd، نمایش نوشتاری محتوای فایل CD خود را استخراج کنید:$ 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; ```نوشتاری را که در مرحله قبلی استخراج کردید در فایلی که برای تعریف کردن CD در ساخت شما استفاده میشود کپی کنید. همانند 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 را دنبال کنید تا دستگاه 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 ارسال کنید.
بنابراین برای راهاندازی دستگاه Thread بااستفاده از 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