blob: 179fb2e315a9c06f69d2f96af022b44db987e421 [file] [log] [blame] [view]
## Using ESP32 Factory Data Provider
By default applications uses test-mode or default commissionable data provider,
device attestation credentials provider, device instance info provider, and
device info provider.
To use different values for them you can use the ESP32 Factory Data Provider.
### Supported data
Following data can be added to the manufacturing partition using
`scripts/tools/generate_esp32_chip_factory_bin.py` script.
- Commissionable data
- Discriminator
- Spake2p verifier, salt, and iteration count
- Device attestation data
- Device attestation key and certificate
- Product attestation intermediate certificate
- Certificate declaration
- Device instance information
- Vendor id and name
- Product id and name
- Hardware version and version string
- Serial Number
- Unique identifier
- Device information
- Fixed Labels
- Supported locales
- Supported calendar types
- Supported modes
- Note: As per spec at max size of label should be 64 and `\0` will be
added at the end.
### Configuration Options
Enable config option `CONFIG_ENABLE_ESP32_FACTORY_DATA_PROVIDER` to use ESP32
specific implementation of `CommissionableDataProvider` and
`DeviceAttestationCredentialsProvider`.
[Component config CHIP Device Layer Commissioning options Use ESP32
Factory Data Provider]
Enable config option `CONFIG_ENABLE_ESP32_DEVICE_INSTANCE_INFO_PROVIDER` to use
ESP32 specific implementation of `DeviceInstanceInfoProvider`.
[Component config CHIP Device Layer Commissioning options Use ESP32 Device
Instance Info Provider]
Enable config option `CONFIG_ENABLE_ESP32_DEVICE_INFO_PROVIDER` to use ESP32
specific implementation of `DeviceInfoProvider`.
[Component config CHIP Device Layer Commissioning options Use ESP32 Device
Info Provider]
ESP32 implementation reads factory data from nvs partition, chip-factory data
must be flashed into the configured nvs partition. Factory partition can be
configured using `CONFIG_CHIP_FACTORY_NAMESPACE_PARTITION_LABEL` option, default
is "nvs".
[Component config -> CHIP Device Layer -> Matter Manufacturing Options ->
chip-factory namespace partition label]
### Generate NVS Binary Image
`scripts/tools/generate_esp32_chip_factory_bin.py` script generates the
chip-factory NVS binary image `partition.bin`.
Please check help for available options,
`scripts/tools/generate_esp32_chip_factory_bin.py`
#### Usage
Below mentioned command generates the nvs image with test DAC with VID:0xFFF2
and PID:8000 and some examples values for other fields.
For more help please check `./generate_esp32_chip_factory_bin.py -h`
```
./generate_esp32_chip_factory_bin.py -d 3434 -p 99663300 \
--product-name ESP-lighting-app --product-id 0x8000 \
--vendor-name Test-vendor --vendor-id 0xFFF2 \
--hw-ver 1 --hw-ver-str DevKit \
--dac-cert path/to/connectedhomeip/credentials/test/attestation/Chip-Test-DAC-FFF2-8001-0008-Cert.der \
--dac-key path/to/connectedhomeip/credentials/test/attestation/Chip-Test-DAC-FFF2-8001-0008-Key.der \
--pai-cert path/to/connectedhomeip/credentials/test/attestation/Chip-Test-PAI-FFF2-8001-Cert.der \
--cd path/to/connectedhomeip/credentials/test/certification-declaration/Chip-Test-CD-FFF2-8001.der
```
#### Flashing the generated NVS image
Use the following command to flash the NVS image. `0x9000` is default address
for `nvs` partition.
```
esptool.py -p <port> write_flash 0x9000 factory_partition.bin
```
NOTE: Above command uses the default NVS address, please flash the NVS image at
appropriate address.
### Securing NVS binary image with NVS Encryption
Please check [Flash and NVS encryption guide](flash_nvs_encryption.md)