Skip to content

[REQUEST] Add an ESP32-C6 as "coprocessor" and "IEEE 802.15.4 radio" module to future voice boards (making a single PCB that have both a ESP32-S3 and a ESP32-C6) so that second SoC can be used as Touchscreen Display Controller and/or Thread Border Router #300

@Hedda

Description

@Hedda

For the next-generation voice satellite board design/schematics (i.e. any new future second-generation voice hardware) please consider also adding another ESP32 SoC as a separate radio module / second co-processor MCU to the same PCB board as well as develop code for it to make it so that that secondary ESP32 SoC can be used as a "Thread Border Router" radio module and communication co-processor (or optionally also allow it to be used it as a dedicated Touchscreen Display Controller in order to both add a Thread radio to be a Thread Boarder Router as well as offload the other MCU and possibly add more GPIO for additional expansion). I think that this idea of an multi-ESP architecture should aline with the future concept of open voice hardware:

The main purpose of having an architecture consists of a central ESP32 that contains the main application firmware and then distributes additional processes/tasks to other ESP32 modules on the same circuit board would enable you to have the ability to also use each Home Assistant Voice PE as a Thread Border Router the same same as users can today use competing smart speakers/displays (such as those Apple and Google) which today all have built-in Thread Border Routers.

So for the specific purpose of adding a Thread radio co-processor I suggest adding an ESP32-C6 as a second radio SoC to the same so voice board PCB and make that secondary SoC act as a "co-processor" and dedicated "IEEE 802.15.4 radio" communication module for the Thread protocol.

Architecture:

  • Home Assistant's Thread integration <-> next-gen Home Assistant Voice PE hardware <-> Thread network.

For a similar proof-of-concept but for Wi-Fi and Bluetooth check out the Espressif’s ESP-Hosted-MCU component for using SoCs as WiFi and BLE Communication Co-Processors:

UPDATE: FYI, ESPHome has a new "Packet Transport Component" component to allow for communications between different ESP32 chips if they are both/all running ESPHome, see -> https://esphome.io/components/packet_transport/

The two main real-world use cases I see justify these goals are adding an ESP32-C6 SoC as coprocessor and radio module are primarily two-fold:

  1. Perhaps more interestingly, the ESP32-C6 has a built-in IEEE 802.15.4 radio which means it can be used as a "Thread Border Router" (with OpenThread Border Router RCP firmware), to enable a Thread network and another entry point that can be used by Matter standard fabric. So if add this and could get it working as a TBR/OTBR then it would be super easy for users to add multiple Thread Border Routers to their network.

This the reason why smart speakers from both Apple and Google have for a long time had Thread radio built-in to be future-proof.

  1. That ESP32-C6 could be used as a display/controller (or offload some other related things to free up resources and make it more future-proof).

Regardless if having an integrated "Thread Border Router" would be the most practical new feature or not in the long-run. For the short-term I personally believe that the coolness of having a alternative model variant of Home Assistant voice satellite is the coolest fearute that woulc attract the most new users and developers, as having at least one early model with a a relativly large touchscreen should attract interest for even those users and developers who are not interested in voice.

As such having the suggested secondary ESP32 on the same board should in theory allow support for a capacitive touchscreen display with a local UI without sacrificing resources on the primary ESP32. It would at least be awesome to have a variant of a Home Assistant Voice Satellite with a large touchscreen display (.i.e. something similar in design to the existing Google Nest Hub / Google Home Hub and the Amazon Echo Show products).

Image
(ex. CrowPanel Advance 5-inch/7-inch touchscreen use a SC7277 Display Driver and has presoldered ESP32-S3 + extra ESP32 slot -> https://www.elecrow.com/pub/wiki/1_Introduction_to_CrowPanel-Advance-HMI_Screen.html ):

Image

One downside of adding an extra ESP32 (ESP32-C6 or ESP32-H2) it obviously that it would take up some additional space on the PCB and complitate FCC certification a little because of it now having multiple radios, however I do not believe it would add that much larger BOM cost, but the additional possibilities such an extra ESP32 SoC could add should hopefully more than make-up for that slightly higher cost(?).

While I think that it having "Thread Border Router" will be of most interest to many users in the future, and alternativly use case for ESP32-C6 could be to instead use it as a remote Zigbee Coordinator (also known as a Serial-over-IP Zigbee controller adapter) for Home Assistant's built-in ZHA integration (native Zigbee Gateway), see/follow this work-in-progress but note that the ESP Zigbee radio for zigpy is is still very experimental and not yet fully working with ZHA:

And yet another option could of course be to also use the ESP32-C6 as a "coprocessor" module a a dedicated Bluetooth Proxy chip with ESPHome:

Note that the reason main you want to combine one ESP32-S3 (or alternativly a ESP32-P4) with a ESP32-C6 is not only to off-load those processes but more importantly so you separate Wi-Fi signals from Thread/Zigbee signals, and that is due to WiFi tendacy to overwhelm and interfer with Thread/Zigbee communication because how they both work. Same goes by the way for WiFi and Bluetooth Low Entergy but it usually is not a great impact on user experience as for Thread/Zigbee:

Anyway, what I think what would make a products like Home Assistant voice satellites perfect as a "Thread Border Router" is that a user can add multiple Thread Border Routers (TBR/OTBR) to their Thread/Matter network for redundacy (using fail-over) and having multiple voice assistant hardware apöliances around thier home is something that many Home Assistant users are likely to have many of and placed all over their home, so having many Thread Border Routers is one of the keys to getting a more robust Thread network.

Image

Image taken from the Thread Smart Home Fact Sheet by the Thread Group. It illustrates the landscape of Matter, Thread, and Border routers. Instead of Matter, you could also see another protocol here, such as HomeKit.

Unlike other IoT protocols, Thread can use multiple border routers in a single network. This increases wireless coverage and reduces the risk of a single point of failure. Ideal for home automation, with a potentially large number of devices spread over a large area.

Slightly different image here on the threadgroup.org when they describe a Thread based Matter fabric using similar text, again including mentioning that Thread Border Router can be built int many devices such as access points, smart speakers, etc.:

Image

Also check out this blog which better describe what a Thread Border Router actually is and why it is very good to have many:

Image

As proof-of-concept for the idea of using a ESP32-S3 (or ESP32-P4) + ESP32-H2 combination board made for this purpose check out the "ESP Thread Border Router" board which is an official Espressif official SDK reference hardware for this purpose (can that use used as either Thread Border Router or as a remote Zigbee Coordinator):

Not tested myself but suposedly you can already get those working with Home Assistant's Thread integration:

Development is primarily being done with Espressif's ESP Thread Border Router SDK hardware (based on ESP32-H2-MINI-1 module):

image

image

OpenThread Border Router Example as in a similar two-SoC setup combining both a ESP32-S3 (or ESP32-P4) and ESP32-H2 in the same solution:

image

PS: From a marketing point of view it would also allow you to add Thread's Thread Border Router icons on each product box too:

image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions