Protocol Overview#
Silicon Labs designed EZSP as a protocol to allow communications between components running pieces of the EmberZNet PRO wireless mesh stack, namely a Host processor and an NCP. The Host processor runs the application layer and executes on the POSIX platform such as Mac OS, Linux, or a Windows PC running Cygwin or the new Windows 10 BASH shell. You can also run this on an embedded platform like the Raspberry Pi. This lets you develop and test your application on an easy-to-use platform before porting your solution to a different Host processor with few changes. The NCP runs the EmberZNet PRO stack and physical layer (PHY). It is deployed and executed on a Silicon Labs wireless mesh chip processor such as the Wireless Gecko EFR32™. As of EmberZNet 7.1.0, EZSP can be run over CPC. This can be done by using Z3GatewayCpc project with a Zigbee NCP, with the Zigbee EZSP CPC component. This new feature enables a more seamless Zigbee integration with Silicon Labs multiprotocol solutions, and it provides heightened security to Zigbee applications.
Co-Processor Communication (CPC) is a protocol developed by Silicon Labs that allows a host system to communicate with a Network co-processor device (NCP), also known as the secondary device. This communication is facilitated over a physical transport link such as UART or SPI. In CPC, data transfers between processors are segmented in sequential packets, and these transfers are guaranteed to be error-free and sent in order.
A key component of this system is the CPC daemon (CPCd), which allows applications on Linux to interact with a secondary device running CPC. The CPCd is distributed as three components: the daemon binary (cpcd), a library that enables C applications to interact with the daemon (libcpc.so), and a configuration file (cpcd.conf).You can learn more about how CPC works for co-processor communication from the following sources: