The all-clusters example implements a server which can be accessed by a CHIP controller and can accept basic cluster commands.
The example is based on Project CHIP and the NXP RW612 SDK, and provides a prototype application that demonstrates device commissioning and different cluster control.
The RW61x all-cluster application provides a working demonstration of the RW610/RW612 board integration, built using the Project CHIP codebase and the NXP RW612 SDK.
The example supports:
For Matter over Thread configuration :
NXP RD-RW612-BGA
] boardFor Matter over WiFi configuration :
NXP RD-RW612-BGA
] or [NXP RD-RW610-BGA
] boardFor Matter over Wi-Fi with OpenThread Border Router :
NXP RD-RW612-BGA
] boardIn order to build the Project CHIP example, we recommend using a Linux distribution (the demo-application was compiled on Ubuntu 20.04).
Follow instruction in BUILDING.md to setup the environment to be able to build Matter.
Download RD-RW612 SDK for Project CHIP. Creating an nxp.com account is required before being able to download the SDK. Once the account is created, login and follow the steps for downloading SDK. The SDK Builder UI selection should be similar with the one from the image below.
(Note: All SDK components should be selected. If size is an issue Azure RTOS component can be omitted.)
Please refer to Matter release notes for getting the latest released SDK.
Start building the application.
user@ubuntu:~/Desktop/git/connectedhomeip$ export NXP_SDK_ROOT=/home/user/Desktop/SDK_RW612/ user@ubuntu:~/Desktop/git/connectedhomeip$ scripts/checkout_submodules.py --shallow --platform nxp --recursive user@ubuntu:~/Desktop/git/connectedhomeip$ source ./scripts/bootstrap.sh user@ubuntu:~/Desktop/git/connectedhomeip$ source ./scripts/activate.sh user@ubuntu:~/Desktop/git/connectedhomeip$ cd examples/all-clusters-app/nxp/rt/rw61x/
user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x$ gn gen --args="chip_enable_wifi=true is_sdk_package=true" out/debug user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x$ ninja -C out/debug
user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x$ gn gen --args="chip_enable_openthread=true chip_inet_config_enable_ipv4=false chip_config_network_layer_ble=true is_sdk_package=true" out/debug user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw61x$ ninja -C out/debug
This configuration requires enabling the Matter CLI in order to control the Thread network on the Border Router.
user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw610$ gn gen --args="chip_enable_wifi=true chip_enable_openthread=true chip_enable_matter_cli=true is_sdk_package=true openthread_root=\"//third_party/connectedhomeip/third_party/openthread/ot-nxp/openthread-br\"" out/debug user@ubuntu:~/Desktop/git/connectedhomeip/examples/all-clusters-app/nxp/rt/rw610$ ninja -C out/debug
The resulting output file can be found in out/debug/chip-rw61x-all-cluster-example.
Optional GN options that can be added when building an application:
chip_enable_matter_cli=true
must be added to the gn gen command.is_<sdk_type>=true
must be added to the gn gen command (with <sdk_type> being either sdk_package or sdk_internal).board_version=\"A2\"
must be added to the gn gen command.is_debug=true optimize_debug=false
must be added to the gn gen command.chip_with_factory_data=1
must be added to the gn gen command. (for more information see Guide for writing manufacturing data on NXP devices.chip_enable_ota_requestor=true no_mcuboot=false
must be added to the gn gen command. (More information about the OTA Requestor feature in OTA Requestor READMESee Guide for writing manufacturing data on NXP devices
Other comments:
The all cluster app demonstrates the usage of encrypted Matter manufacturing data storage. Matter manufacturing data should be encrypted using an AES 128 software key before flashing them to the device flash.
Using DAC private key secure usage: Experimental feature, contain some limitation: potential concurrent access issue during sign with dac key operation due to the lack of protection between multiple access to ELS
crypto module. The argument chip_enable_secure_dac_private_key_storage=1
must be added to the gn gen command to enable secure private DAC key usage with S50. chip_with_factory_data=1
must have been added to the gn gen command
DAC private key generation: The argument chip_convert_dac_private_key=1
must be added to the gn gen command to enable DAC private plain key conversion to blob with S50. chip_enable_secure_dac_private_key_storage=1
must have been added to the gn gen command
ELS
contain concurrent access risks. They must be fixed before enabling it by default.
In order to flash the application we recommend using MCUXpresso IDE (version >= 11.6.0).
Right click the empty space in the MCUXpresso IDE “Installed SDKs” tab to show the menu, select the “Import archive” (or “Import folder” if a folder is used) menu item.
File -> Import -> C/C++ -> Existing Code as Makefile Project
Right click on the Project -> Properties -> C/C++ Build -> MCU Settings -> Select RW612 -> Apply & Close
Right click on the Project -> C/C++ Build-> Tool Chain Editor -> NXP MCU Tools -> Apply & Close
Right click on the Project -> Debug -> As->SEGGER JLink probes -> OK -> Select elf file
(Note : if SDK package is used, a simpler way could be duplicating the debug configuration from the SDK Hello World example after importing it.)
CHIP Tool is a Matter controller which can be used to commission a Matter device into the network. For more information regarding how to use the CHIP Tool controller, please refer to the CHIP Tool guide.
To know how to commission a device over BLE, follow the instructions from chip-tool's README.md ‘Commission a device over BLE’.
To know how to commissioning a device over IP, follow the instructions from chip-tool's README.md ‘Pair a device over IP’
The “ble-wifi” pairing method can be used in order to commission the device.
The “ble-thread” pairing method can be used in order to commission the device.
In order to create or join a Thread network on the Matter Border Router, the otcli
commands from the matter CLI can be used. For more information about using the matter shell, follow instructions from ‘Testing the all-clusters application with Matter CLI’.
In this configuration, the device can be commissioned over Wi-Fi with the ‘ble-wifi’ pairing method.
Prepare the board with the flashed All-cluster application
(as shown above).
The All-cluster example uses UART1 (FlexComm3
) to print logs while running the server. To view raw UART output, start a terminal emulator like PuTTY and connect to the used COM port with the following UART settings:
Open a terminal connection on the board and watch the printed logs.
On the client side, start sending commands using the chip-tool application as it is described here.
The Matter CLI can be enabled with the all-clusters application.
For more information about the Matter CLI default commands, you can refer to the dedicated ReadMe.
The All-clusters application supports additional commands :
> help [...] mattercommissioning Open/close the commissioning window. Usage : mattercommissioning [on|off] matterfactoryreset Perform a factory reset on the device matterreset Reset the device
matterfactoryreset
command erases the file system completely (all Matter settings are erased).matterreset
enables the device to reboot without erasing the settings.Here are described steps to use the all-cluster-app with the Matter CLI enabled
Prepare the board with the flashed All-cluster application
(as shown above).
The matter CLI is accessible in UART1. For that, start a terminal emulator like PuTTY and connect to the used COM port with the following UART settings:
The All-cluster example uses UART2 (FlexComm0
) to print logs while running the server. To view raw UART output, a pin should be plugged to an USB to UART adapter (connector HD2 pin 03
), then start a terminal emulator like PuTTY and connect to the used COM port with the following UART settings:
On the client side, start sending commands using the chip-tool application as it is described here.
For Matter with OpenThread Border Router support, the matter CLI can be used to start/join the Thread network, using the following ot-cli commands. (Note that setting channel, panid, and network key is not enough anymore because of an Open Thread stack update. We first need to initialize a new dataset.)
> otcli dataset init new Done > otcli dataset Active Timestamp: 1 Channel: 25 Channel Mask: 0x07fff800 Ext PAN ID: 42af793f623aab54 Mesh Local Prefix: fd6e:c358:7078:5a8d::/64 Network Key: f824658f79d8ca033fbb85ecc3ca91cc Network Name: OpenThread-b870 PAN ID: 0xb870 PSKc: f438a194a5e968cc43cc4b3a6f560ca4 Security Policy: 672 onrc 0 Done > otcli dataset panid 0xabcd Done > otcli dataset channel 25 Done > otcli dataset commit active Done > otcli ifconfig up Done > otcli thread start Done > otcli state leader Done
Over-The-Air software updates are supported with the RW61x all-clusters example. The process to follow in order to perform a software update is described in the dedicated guide ‘Matter Over-The-Air Software Update with NXP RW61x example applications’.