Meskipun bukan persyaratan, beberapa skenario pengujian memerlukan pembuatan sertifikat Matter non-Produksi.
Beberapa fitur ekosistem Google, termasuk Pembaruan Software OTA Perangkat tidak dapat dilakukan menggunakan VID/PID Pengujian.
Panduan ini menjelaskan cara membuat dan memverifikasi sertifikat Matter non-Produksi Matter untuk digunakan dalam pengujian. Jenis sertifikatnya adalah:
- Deklarasi Sertifikasi (CD)
- Sertifikat Menengah Atribusi Produk (PAI)
- Sertifikat Atribusi Perangkat (DAC)
Selama proses komisioning, perangkat Matter bersertifikasi harus mengatestasi dirinya sendiri, yaitu membuktikan bahwa perangkat tersebut adalah produk bersertifikasi Matter yang asli. Kredensial yang digunakan oleh Matter perangkat untuk atribusi terdiri dari:
- Pasangan kunci atribusi
- Rantai sertifikat
Sertifikat Atribusi Perangkat (DAC) adalah link pertama dari rantai sertifikat, dan divalidasi oleh Sertifikat Menengah Atribusi Produk (PAI), yang pada gilirannya divalidasi oleh Otoritas Atribusi Produk (PAA).
Sertifikat ditandatangani pada saat yang sama dengan pembuatan pasangan kunci atribusi, dan ditandatangani menggunakan kunci pribadi Otoritas Sertifikat satu tingkat di atasnya, yang membentuk rantai kepercayaan. Jadi, sertifikat DAC ditandatangani oleh kunci PAI, dan sertifikat PAI ditandatangani oleh kunci PAA. Sebagai bagian teratas dari rantai, sertifikat PAA ditandatangani sendiri. Rantai kepercayaan ini membentuk struktur PAA gabungan, yang disinkronkan oleh Distributed Compliance Ledger (DCL).
Info selengkapnya tentang proses Atribusi dan Deklarasi Sertifikasi (CD) dapat ditemukan di Dokumen & Pesan Atribusi Tambahan dan di Spesifikasi Matter.
Menginstal Matter SDK
Petunjuk ini mengasumsikan bahwa Anda telah menginstal Matter SDK. Lihat dokumentasinya di Github atau lihat Memulai Matter untuk mengetahui informasi selengkapnya.
Instal utilitas hexdump xxd jika Anda belum memilikinya. Alat ini berguna
untuk mencetak kredensial dalam format gaya C:
sudo apt-get install xxd
Membuat chip-cert
Pastikan Anda menggunakan SDK versi terbaru. Prosedur ini diuji di Github SHA
0b17bce8, di cabangv1.0-branch:$ cd connectedhomeip $ git checkout v1.0-branch $ git pullBuat
chip-cert, yang merupakan alat yang digunakan untuk beberapa operasi pada kredensial untuk Matter perangkat:Konfigurasi build:
$ cd src/credentials $ source ../../scripts/activate.sh $ gn gen outContoh output
gn:Done. Made 5774 targets from 289 files in 658msJalankan build:
$ ninja -C outContoh output
ninja:ninja: Entering directory `out' [2000/2000] stamp obj/default.stamp
Membuat sertifikat
Ekspor VID/PID kustom Anda sebagai variabel lingkungan untuk mengurangi kemungkinan kesalahan administrasi saat mengedit argumen perintah:
$ cd ../..
$ export VID=hexVendorId
$ export PID=hexProductId
Membuat CD
Buat CD menggunakan
chip-cert. Saat ini, Pengawas hanya memvalidasi bahwa VID dan PID cocok dengan data yang ditampilkan di tempat lain oleh perangkat: Cluster Informasi Dasar, DAC, dan asal DAC (jika ada). Anda dapat membiarkan kolom lainnya tidak berubah:$ 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"Verifikasi CD. Pastikan CD berisi VID/PID Anda (dalam format desimal):
$ src/credentials/out/chip-cert print-cd credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.derContoh output:
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
Membuat PAI dan DAC
Dalam contoh ini, kita akan menggunakan Mattersertifikat Otoritas
Atribusi Produk (PAA) pengujian sendiri dan kunci penandatanganan Chip-Test-PAA-NoVID
sebagai sertifikat root. Kita akan menggunakannya sebagai CA root untuk membuat PAI dan DAC kita sendiri.
Buat PAI menggunakan PAA. Anda dapat menyertakan informasi PID di PAI, tetapi menghapusnya akan memberi Anda lebih banyak fleksibilitas untuk pengujian. Jika Anda memerlukan DAC untuk PID tambahan, Anda dapat menjalankan langkah pembuatan DAC saja:
$ 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".pemBuat DAC menggunakan 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".pemVerifikasi rantai DAC, PAI, dan PAA. Jika tidak ada error yang muncul dalam output, berarti rantai atribusi sertifikat berhasil diverifikasi:
$ 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.pemAnda dapat memeriksa kunci menggunakan
openssl:$ openssl ec -noout -text -in \ credentials/test/attestation/test-DAC-${VID}-${PID}-key.pemContoh output:
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-256Anda juga dapat menggunakan
openssluntuk memeriksa sertifikat yang dibuat:$ openssl x509 -noout -text -in \ credentials/test/attestation/test-DAC-${VID}-${PID}-cert.pemContoh output:
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
Proses serupa dapat digunakan untuk membuat PAA yang ditandatangani sendiri, tetapi hal ini tidak diperlukan.
Sebagai gantinya, yang telah kita lakukan di sini adalah menggunakan PAA pengembangan yang ditandatangani sendiri yang tidak menyertakan informasi VID.
Untuk contoh pembuatan CD lainnya, lihat
credentials/test/gen-test-cds.sh
Untuk contoh pembuatan PAA, PAI, dan DAC lainnya, lihat
credentials/test/gen-test-attestation-certs.sh
Mengganti sertifikat
Mengganti PAA dan PAI
- Jalankan skrip helper berikut, yang menggunakan
Alat Sertifikat CHIP (
chip-cert) untuk membuat array gaya C dari sertifikat Anda.
Download skrip Helper Sertifikat yang Dapat Disematkan
#!/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"
Salin konten output PAI dan DAC ke penerapan
DeviceAttestationCredentialsProvider::GetProductAttestationIntermediateCert.Di perangkat produksi, PAI dan DAC berada di Data Pabrik, sedangkan CD disematkan di firmware itu sendiri.
Jika belum menggunakan Data Pabrik, Anda mungkin ingin menempatkan PAI di
src/credentials/examples/ExampleDACs.cpp. Dalam hal ini, tambahkan kode yang dihasilkan ke fileExampleDACs.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 chipJika Anda menggunakan Data Pabrik atau Penyedia Kredensial kustom, pastikan untuk menyisipkan kredensial di lokasi yang sesuai. Sebaiknya hubungi penyedia SoC Anda untuk mengetahui detail platform Anda.
Mengganti CD
Ekstrak representasi teks dari konten file CD Anda menggunakan
xxd:$ xxd -i credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.derContoh output:
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; ```Salin teks yang Anda ekstrak pada langkah sebelumnya ke file yang digunakan untuk menentukan CD ke dalam build Anda. Seperti halnya PAI dan DAC, cara Anda melakukannya bergantung pada platform yang Anda gunakan untuk pengembangan.
Jika Anda menggunakan contoh kredensial, Anda mungkin ingin mengganti konten kCdForAllExamples di ExampleDACProvider::GetCertificationDeclaration, di 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
};
Membuat target
Buat dan flash target Anda menggunakan kredensial yang baru dibuat. Bagian ini bergantung pada platform. Lihat dokumentasi SoC atau Perangkat yang didukung untuk mengetahui informasi selengkapnya.
Memastikan perangkat
Anda kini dapat mengikuti langkah-langkah yang telah dibahas di Menghubungkan perangkat Matter untuk memastikan perangkat Matter Anda diGoogle Home platform.
Men-debug masalah menggunakan chip-tool
chip-tool dapat menjadi alat yang berharga untuk memeriksa apakah perangkat Anda mengirimkan sertifikat yang benar. Untuk membuatnya:
$ 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 ../..
Untuk mengaktifkan log tambahan, setiap kali menjalankan chip-tool, pastikan untuk meneruskan flag --trace_decode 1. Selain itu, sebaiknya teruskan jalur file PAA Anda dengan flag --paa-trust-store-path.
Jadi, untuk memastikan perangkat Thread menggunakan BLE, Anda dapat menjalankan:
```
$ 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
```
Dalam kasus perangkat pengujian, <PAIRING CODE> adalah 20202021 dan
<DISCRIMINATOR> adalah 3840.
Untuk mendapatkan kredensial Thread dari Google Nest Hub (2nd gen), Anda dapat menjalankan:
$ adb connect border_router_ip_address
$ adb -e shell ot-ctl dataset active -x
$ adb disconnect
Untuk memastikan perangkat Wi-Fi, Anda dapat menggunakan opsi ble-wifi:
$ examples/chip-tool/out/debug/chip-tool pairing ble-wifi 1 "SSID" SSID_password pairing_code discriminator