Lecture 5 - ESP32-C6 practical path: devices, NCP, gateway, and Jetson context¶
Course: Zigbee guide | Phase 2 - Embedded Software, IoT
Previous: Lecture 04 - Security, commissioning, sleepy devices, and OTA
Why ESP32-C6 matters here¶
Espressif's official Zigbee material makes ESP32-C6 relevant because it can be used to build:
- Zigbee devices
- Zigbee coordinators and routers
- gateway-style host/co-processor systems
Official reference: ESP Zigbee SDK introduction
That makes ESP32-C6 a useful bridge between:
- pure MCU Zigbee devices
- Linux-hosted gateway experiments
Three practical implementation styles¶
1. Standalone Zigbee device¶
In this model, the ESP32-C6 runs the whole Zigbee application locally.
Use this for:
- sensors
- switches
- simple controllers
This is the cleanest way to learn endpoint, cluster, and role configuration.
2. Network Co-Processor (NCP)¶
In the Zigbee NCP model:
- the Zigbee stack lives on the coprocessor
- a host processor controls it over a host interface
- the protocol is ESP ZNSP over SLIP
- the transport can be UART or SPI
Official references: ESP Zigbee NCP guide, ESP Zigbee NCP API
This is the most relevant model for a Linux host such as Jetson.
3. Gateway / multi-chip design¶
Espressif also documents a zigbee_gateway example that uses:
- a host SoC
- an 802.15.4 radio side
That is useful because it shows real Zigbee gateway designs are often multi-processor systems, not single-chip toys.
Official reference: ESP Zigbee gateway example
What changes on Jetson¶
For Thread on Jetson, the model was:
- host stack on Linux
otbr-agentorot-daemonwpan0
For Zigbee on Jetson, the model is different:
- no
wpan0 - no OTBR-style IPv6 border-router path
- the host speaks Zigbee control messages to the coprocessor
That means success is measured by:
- forming or joining a Zigbee network
- reading state from the coprocessor
- sending cluster or management commands
not by seeing a Linux IP interface appear.
Why this matters for your current roadmap path¶
This roadmap now contains all three related ideas:
- OpenThread for low-power IP mesh networking
- ESP32-C6 OpenThread RCP on Jetson Orin Nano for Linux-hosted Thread with a radio coprocessor
- ESP32-C6 Zigbee NCP on Jetson Orin Nano for a Zigbee coprocessor path
That comparison is valuable because it shows the same radio family can support very different software architectures.
The right takeaway from this whole course¶
Zigbee should now look like:
- a low-power embedded network
- with strong device-behavior modeling
- where node role, security, and application structure are tightly coupled
- and where host/NCP designs are a real option, not just single-chip examples
If you can compare Zigbee against Thread and explain why one is IP-native while the other is cluster-and-endpoint-centric, then this course has done its job.
Lab¶
Design two architectures for the same smart-building product:
Architecture A¶
- ESP32-C6 as a standalone Zigbee device
Architecture B¶
- Jetson as host
- ESP32-C6 as Zigbee NCP
For each, answer:
- where does application logic live?
- where do network credentials live?
- which side handles user-visible device behavior?
- what becomes easier?
- what becomes harder?
Previous: Lecture 04 - Security, commissioning, sleepy devices, and OTA | Next: Course hub