espressif / esp-idf

Espressif IoT Development Framework. Official development framework for Espressif SoCs.
Apache License 2.0
12.98k stars 7.12k forks source link

Integrating Thread RCP and Zigbee RCP functions in ESP32-H2 (IDFGH-12849) #13815

Open Askidea opened 1 month ago

Askidea commented 1 month ago

Answers checklist.

General issue report

I am testing whether Matter Thread devices and Zigbee devices can work well using ESP32-H2 DevKits according to the RCP method.

image [ESP Thread Border/Zigbee Gateway board]

Using the ESP Thread Border/Zigbee Gateway board, I tried operating ot_rcp(esp-idf/examples/openthread/ot_rcp) and Thread BR (esp-thread-br/examples/basic_thread_border_router), and on the other hand, esp_zigbee_rcp(esp-idf/examples/ zigbee/esp_zigbee_rcp) and Zigbee Bridge (esp-matter/examples/zigbee_bridge).

I have a few questions. [Q1] Is it possible to integrate the ot_rcp and esp_zigbee_rcp functions to operate as one process on one H2 chip?

[Q2] Another question is whether ot_rcp can really perform the roles of Thread RCP and Zigbee RCP at the same time. Looking at the example on the ESP Zigbee SDK, I found an explanation that ot_rcp running on H2 is needed to operate the Zigbee Gateway (esp-zigbee-sdk/examples/esp_zigbee_gateway). _"This example demonstrates how to build a Zigbee Gateway device. It runs on a Wi-Fi SoC such as ESP32, ESP32-C3 and ESP32-S3, with an 802.15.4 SoC like ESP32-H2 running ot_rcp to provide 802.15.4 radio ."_

zwx1995esp commented 1 month ago

Hi, @Askidea we are investigating the feature you metioned internally, and we have a solution to use the openthread multiple instances to run ESP Thread Border/Zigbee Gateway host on S3 and a multiple-instance supported RCP on H2.

For your question 1: the answer is yes, we have already run the Thread BR && Zigbee GW on ESP Thread Border/Zigbee Gateway board using our solution, and both thread BR features and zigbee network features seem to work fine. But this project is still WIP(run more test, clean the code).

For your question 2: we actually use the multiple spinel instances feature to support the roles of Thread RCP and Zigbee RCP at the same time. Please refer to https://github.com/openthread/openthread/pull/9360.