blob: 576339cd43b22422994c9de9c42397e7a38f1372 [file] [log] [blame] [view]
# Matter ESP32 Thread Border Router Example
A prototype application that demonstrates OpenThread Border Router on ESP32-S3 +
ESP32-H2 Thread Border Router DevKit Board.
Please
[setup ESP-IDF and CHIP Environment](../../../docs/guides/esp32/setup_idf_chip.md)
and refer
[building and commissioning](../../../docs/guides/esp32/build_app_and_commission.md)
guides to get started.
---
- [OpenThread Border Router Board](#openthread-border-router-board)
- [OpenThread RCP](#openthread-rcp)
- [OpenThread CLI](#openthread-cli)
- [Setup Thread Network](#setup-thread-network)
- [Commissioning Thread End Devices](#commissioning-thread-end-devices)
---
### OpenThread Border Router Board
The ESP Thread border router board provides an integrated module of an ESP32-S3
and an ESP32-H2.
![Border Router Board](image/esp-thread-border-router-board.png)
### OpenThread RCP
We need to build an OpenThread RCP(Radio Co-Processor) firmware for ESP32-H2 of
the Border Router Board before building this Thread Border example.
```
cd $IDF_PATH/examples/openthread/ot_rcp
idf.py set-target esp32h2
idf.py build
```
Then we need to connect the USB2 port(ESP32-S3) of the Border Router Board to
your host machine. Build and flash this example.
```
cd ${CHIP_ROOT}/examples/thread-br-app/esp32
idf.py set-target esp32s3
idf.py build
idf.py -p {port} erase-flash flash monitor
```
This example will detect the RCP firmware built in ESP-IDF path and flash it to
the spiffs partition. When starting this example, the ESP32-S3 will compare the
versions of both the RCP firmware in the spiffs partition and the firmware on
ESP32-H2. if the spiffs RCP firmware is newer than the firmware on ESP32-H2, the
Thread BR will flash the RCP firmware to ESP32-H2 automatically.
### OpenThread CLI
After you build this example and flash it to the ESP32-S3 of Border Router
Board, you can access a standard OpenThread CLI via the device console with a
`matter otcli` prefix.
For instance, you can get the state:
```
> matter otcli state
Detached
Done
```
### Setup Thread Network
You can send SetActiveDatasetRequest command to the Thread BR after
commissioning it as a Matter-Over-Wi-Fi device to setup the Thread network or
join an existing Thread network.
```
./chip-tool pairing ble-wifi 1 <ssid> <password> 20202021 3840
./chip-tool generalcommissioning arm-fail-safe 180 1 1 0
./chip-tool threadborderroutermanagement set-active-dataset-request hex:<dataset-tlvs> 1 1 1
./chip-tool generalcommissioning commissioning-complete 1 0
```
The Thread BR with enable the Thread network interface and start Thread network
after it receives SetActiveDatasetRequest command. And after the Thread BR sets
up or join a Thread network, it will send the success response.
### Commissioning Thread End Devices
After setting up the Thread network, you can commission a Thread End-device to
the Thread network.
```
./chip-tool pairing ble-wifi 2 hex:<dataset_tlvs> <pincode> <discriminator>
```