This tool is designed to generate factory partitions for mass production.
Please make sure you have had the following tools before using the generator tool.
Using the following commands to generate chip-tool, spake2p and chip-cert at path/to/connectedhomeip/build/out/host
.
cd path/to/connectedhomeip source scripts/activate.sh gn gen build/out/host ninja -C build/out/host
Add the tools path to $PATH
export PATH="$PATH:path/to/connectedhomeip/build/out/host"
cd path/to/connectedhomeip/scripts/tools/telink/ python3 -m pip install -r requirements.txt
The following commands generate factory partitions using the default testing PAI keys, certificates, and CD in Matter project. You can make it using yours instead in real production.
python3 mfg_tool.py -v 0xFFF2 -p 0x8001 \ --serial-num AABBCCDDEEFF11223344556677889900 \ --vendor-name "Telink Semiconductor" \ --product-name "not-specified" \ --mfg-date 2022-12-12 \ --hw-ver 1 \ --hw-ver-str "prerelase" \ --pai \ --key /path/to/connectedhomeip/credentials/test/attestation/Chip-Test-PAI-FFF2-8001-Key.pem \ --cert /path/to/connectedhomeip/credentials/test/attestation/Chip-Test-PAI-FFF2-8001-Cert.pem \ -cd /path/to/connectedhomeip/credentials/test/certification-declaration/Chip-Test-CD-FFF2-8001.der \ --spake2-path /path/to/spake2p \ --chip-tool-path /path/to/chip-tool \ --chip-cert-path /path/to/chip-cert
python3 mfg_tool.py --count 5 -v 0xFFF2 -p 0x8001 \ --serial-num AABBCCDDEEFF11223344556677889900 \ --vendor-name "Telink Semiconductor" \ --product-name "not-specified" \ --mfg-date 2022-02-02 \ --hw-ver 1 \ --hw-ver-str "prerelase" \ --pai \ --key /path/to/connectedhomeip/credentials/test/attestation/Chip-Test-PAI-FFF2-8001-Key.pem \ --cert /path/to/connectedhomeip/credentials/test/attestation/Chip-Test-PAI-FFF2-8001-Cert.pem \ -cd /path/to/connectedhomeip/credentials/test/certification-declaration/Chip-Test-CD-FFF2-8001.der \ --spake2-path /path/to/spake2p \ --chip-tool-path /path/to/chip-tool \ --chip-cert-path /path/to/chip-cert
out ├── device_sn.csv └── fff2_8001 ├── aabbccddeeff11223344556677889900 │ ├── factory_data.bin │ ├── factory_data.hex │ ├── internal │ │ ├── DAC_cert.der │ │ ├── DAC_cert.pem │ │ ├── DAC_key.pem │ │ ├── DAC_private_key.bin │ │ ├── DAC_public_key.bin │ │ └── pai_cert.der │ ├── onb_codes.csv │ ├── pin_disc.csv │ ├── qrcode.png │ └── summary.json ├── aabbccddeeff11223344556677889901 │ ├── factory_data.bin │ ├── factory_data.hex │ ├── internal │ │ ├── DAC_cert.der │ │ ├── DAC_cert.pem │ │ ├── DAC_key.pem │ │ ├── DAC_private_key.bin │ │ ├── DAC_public_key.bin │ │ └── pai_cert.der │ ├── onb_codes.csv │ ├── pin_disc.csv │ ├── qrcode.png │ └── summary.json ├── aabbccddeeff11223344556677889902 │ ├── factory_data.bin │ ├── factory_data.hex │ ├── internal │ │ ├── DAC_cert.der │ │ ├── DAC_cert.pem │ │ ├── DAC_key.pem │ │ ├── DAC_private_key.bin │ │ ├── DAC_public_key.bin │ │ └── pai_cert.der │ ├── onb_codes.csv │ ├── pin_disc.csv │ ├── qrcode.png │ └── summary.json └── aabbccddeeff11223344556677889903 ├── factory_data.bin ├── factory_data.hex ├── internal │ ├── DAC_cert.der │ ├── DAC_cert.pem │ ├── DAC_key.pem │ ├── DAC_private_key.bin │ ├── DAC_public_key.bin │ └── pai_cert.der ├── onb_codes.csv ├── pin_disc.csv ├── qrcode.png └── summary.json
Tool generates following output files:
factory_data.bin
and factory_data.hex
summary.json
onb_codes.csv
qrcode.png
Other intermediate files are stored in internal/
directory:
pai_cert.der
DAC_cert.der
and DAC_cert.pem
DAC_private_key.bin
DAC_public_key.bin
Above files are stored at out/<vid_pid>/<SN>
. Each device is identified with an unique SN.
You can try one of these factory partition FW on developing stage.
Prepare a Matter App FW with empty factory data partition.
For example, lighting-app
. Please generate the FW as below:
cd path/to/connectedhomeip/example/ligting-app/telink/ west build -- -DCONFIG_CHIP_FACTORY_DATA=y
The output FW is stored at ./build/zephyr/zephyr.bin
.
Then flash Matter App FW onto B91 board.
Then flash the factory_data.bin
generated from the generator tool at specific address:
Note: The offset for Matter v1.0-branch is
0xF4000
and for master branch is0x104000
. You can check thefactory_partition
reg attlsr9518adk80d.dts
for details.
For example, the factory_data_bin
with serial number aabbccddeeff11223344556677889900
. Here is the expected output in logging:
... I: 947 [DL]Device Configuration: I: 951 [DL] Serial Number: aabbccddeeff11223344556677889900 I: 957 [DL] Vendor Id: 65522 (0xFFF2) I: 961 [DL] Product Id: 32769 (0x8001) I: 965 [DL] Hardware Version: 1 I: 969 [DL] Setup Pin Code (0 for UNKNOWN/ERROR): 93320241 I: 975 [DL] Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3008 (0xBC0) I: 983 [DL] Manufacturing Date: 2022-02-02 I: 988 [DL] Device Type: 65535 (0xFFFF) I: 993 [SVR]SetupQRCode: [MT:634J042C00O-KB7Z-10] I: 999 [SVR]Copy/paste the below URL in a browser to see the QR Code: I: 1006 [SVR]https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3A634J042C00O-KB7Z-10 I: 1017 [SVR]Manual pairing code: [26251356956] ...