blob: 2102aabd1a714d26f38852aeef131423226d3170 [file] [log] [blame] [view]
# CHIP ESP32 OTA Provider Example
A prototype application that demonstrates OTA provider capabilities.
Please
[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md)
---
- [Building and Commissioning](#building-and-commissioning)
- [Access control list requirements](#access-control-list-requirements)
- [Set delayed action time (Optional)](#set-delayed-action-time-optional)
---
### Building and Commissioning
Generate the OTA image as described
[here](../../../docs/guides/esp32/ota.md#generate-chip-ota-image)
#### Configure OTA image to serve
- Copy the binary file which you are going to send to the OTA Requestor to
`./spiffs_image` path and make sure the `OTA_IMAGE_NAME` is the same as the
name of the image file you placed in `./spiffs_image`.
- Please set the below configuration after setting the target
Edit the `OTA_IMAGE_NAME` through `Demo`->`OTA image file name`.
```
idf.py menuconfig
```
Length of `OTA_IMAGE_NAME` SHALL NOT be more than 30 bytes excluding NULL
terminator.
Follow
[ESP32 Application Usage Guide](../../../docs/guides/esp32/build_app_and_commission.md)
to Build, Flash, Monitor, and Commission the device.
Once device is commissioned successfully, then please try below steps.
### Access control list requirements
Commissioner or Administrator should install necessary ACL entries at
commissioning time or later to enable processing of QueryImage commands from OTA
Requestors on their fabric, otherwise that OTA Provider will not be usable by
OTA Requestors.
Since the ACL attribute contains a list of entries, we cannot append a single
entry to it. So, read the ACL entries and append an entry which grants operate
privileges to all nodes for the OTA Provider cluster (0x0029) on every endpoint.
- Read the ACL attribute
```
./out/debug/chip-tool accesscontrol read acl <PROVIDER NODE ID> 0
```
- Write the ACL attribute
```
out/chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null}, {"fabricIndex": 1, "privilege": 3, "authMode": 2, "subjects": null, "targets": [{"cluster": 41, "endpoint": null, "deviceType": null}]}]' <PROVIDER NODE ID>0
```
First entry created as part of commissioning which grants administer privilege
to the node ID 112233 (default controller node ID) for all clusters on every
endpoint. Seconds entry is the new entry being added which grants operate
privileges to all nodes for the OTA Provider cluster (0x0029) on every endpoint
### Set delayed action time (Optional)
- Set delayed action time in the Query Image Response and Apply Update
Response, default is zero.
```
> matter OTAProvider delay <delay seconds>
```
---
Once OTA provider is commissioned then head over to
[OTA Requestor Example](../../ota-requestor-app/esp32/README.md).