برخیاز سناریوهای توسعه مانند آزمایش OTA نیازمند ایجاد گواهینامههای Matter غیرتولیدی است.
برخیاز ویژگیهای بومسازگان Google، ازجمله بهروزرسانیهای نرمافزار OTA دستگاه، بااستفاده از VID/PID آزمایشی قابلاجرا نیستند.
این راهنما نحوه ایجاد و درستیسنجی گواهیهای غیرتولیدی Matter را برای استفاده در آزمایش توضیح میدهد. انواع گواهیها عبارتاند از:
- اظهارنامه گواهینامه (CD)
- گواهینامه واسط گواهی محصول (PAI)
- گواهی تصدیق دستگاه (DAC)
درطول فرایند راهاندازی، دستگاه دارای گواهینامه Matter باید خودش را تصدیق کند، یعنی ثابت کند که محصولی اصل و دارای گواهینامه Matter است. اعتبارنامههایی که دستگاههای Matter برای گواهیدهی استفاده میکنند شامل موارد زیر است:
- جفت کلید گواهی
- زنجیره گواهینامه
«گواهینامه تصدیق دستگاه» (DAC) اولین پیوند زنجیره گواهینامه است و توسط «گواهینامه واسط تصدیق محصول» (PAI) اعتبارسنجی میشود که آن هم بهنوبه خود توسط «مرجع تصدیق محصول» (PAA) اعتبارسنجی میشود.
گواهیها همزمان با تولید جفت کلید گواهی امضا میشوند و بااستفاده از کلید خصوصی «مرجع صدور گواهی» یک سطح بالاتر امضا میشوند و زنجیره اعتماد را تشکیل میدهند. بنابراین، گواهینامه DAC با کلید PAI امضا میشود و گواهینامه PAI با کلید PAA امضا میشود. گواهینامههای PAA که در بالای زنجیره قرار دارند، خودامضا هستند. این زنجیره اعتماد یک ساختار PAA فدراسیونی را تشکیل میدهد که توسط «دفتر کل توزیعشده رعایت مقررات» (DCL) همگامسازی میشود.
اطلاعات بیشتر درباره فرایند «تصدیق» و «اظهاریههای گواهینامه» (CD) را میتوانید در اسناد و پیامهای تصدیق اضافی و در «مشخصات Matter» پیدا کنید.
نصب Matter SDK
این دستورالعملها فرض میکنند که شما یک نصب فعال از Matter SDK دارید. لطفاً به اسناد آن در Github مراجعه کنید یا برای اطلاعات بیشتر، شروع کار با Matter را ببینید.
اگر ابزار کمکی hexdump xxd را ندارید، آن را نصب کنید. این ابزار برای چاپ کردن اطلاعات اعتباری در قالب C-style مفید است:
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
بااستفاده از
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
در این مثال، از گواهی «مرجع گواهی محصول» (PAA) آزمایشی خود Matter و کلید امضای Chip-Test-PAA-NoVID بهعنوان گواهی ریشه استفاده میکنیم. از آن بهعنوان مرجع صدور گواهی ریشه برای تولید PAI و DAC خودمان استفاده خواهیم کرد.
PAI را بااستفاده از PAA تولید کنید. میتوانید بهصورت اختیاری اطلاعات PID را در PAI اضافه کنید، اما حذف آن انعطافپذیری بیشتری برای آزمایش به شما میدهد. اگر برای شناسههای محصول دیگر به DAC نیاز دارید، میتوانید فقط مرحله تولید 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 خودامضا استفاده کرد، اما انجام این کار ضروری نیست.
درعوض، کاری که در اینجا انجام دادهایم این است که از یک 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 در خود سفتافزار جاسازی شده است.
اگر هنوز از «دادههای کارخانه» استفاده نمیکنید، شاید بخواهید 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، نمایش نوشتاری محتوای فایل 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 (GHP) راهاندازی کنید.
مشکلات را بااستفاده از 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