# Matter PSoC6 Lock Example An example showing the use of Matter on the Infineon CY8CKIT-062S2-43012 board.
- [Matter PSoC6 Lock Example](#matter-psoc6-lock-example) - [Introduction](#introduction) - [Building](#building) - [Flashing the Application](#flashing-the-application) - [Commissioning and cluster control](#commissioning-and-cluster-control) - [Setting up chip-tool](#setting-up-chip-tool) - [Commissioning over BLE](#commissioning-over-ble) - [Notes](#notes) - [Cluster control](#cluster-control) - [Factory Reset](#factory-reset) - [Building with Optiga Trust M as HSM](#building-with-optiga-trust-m-as-hsm) - [Optiga Trust M Provisioning](#optiga-trust-m-provisioning) - [OTA Software Update](#ota-software-update)
## Introduction The PSoC6 lock example provides a demonstration of a door lock control device, built using Matter and the Infineon Modustoolbox SDK. It can be controlled by a Matter controller over Wi-Fi network. The PSoC6 device can be commissioned over Bluetooth Low Energy where the device and the Matter controller will exchange security information with the Rendezvous procedure. Wi-Fi Network credentials are then provided to the PSoC6 device which will then join the network. ## Building - Download and install [Modustoolbox Software v3.2](https://www.infineon.com/modustoolbox) Refer to `integrations/docker/images/stage-2/chip-build-infineon/Dockerfile` or `scripts/examples/gn_psoc6_example.sh` for downloading the Software and related tools. - Install some additional tools (likely already present for Matter developers): \$ sudo apt install gcc g++ clang ninja-build python python3-venv libssl-dev libavahi-client-dev libglib2.0-dev git cmake python3-pip - Supported hardware: [CY8CKIT-062S2-43012](https://www.infineon.com/CY8CKIT-062S2-43012) * Build the example application: $ source scripts/activate.sh $ scripts/build/build_examples.py --no-log-timestamps --target 'infineon-psoc6-lock' build - To delete generated executable, libraries and object files use: $ cd ~/connectedhomeip $ rm -rf out/ _To build with Infineon Hardware Security Module-OPTIGA™ Trust M for Device attestation and other security use cases, please refer to the [Building with OPTIGA™ Trust M as HSM](#building-with-optiga-trust-m-as-hsm) for more instructions_ ## Flashing the Application - Put CY8CKIT-062S2-43012 board on KitProg3 CMSIS-DAP Mode by pressing the `MODE SELECT` button. `KITPROG3 STATUS` LED is ON confirms board is in proper mode. (Modustoolbox Software needs to be installed) - On the command line: $ cd ~/connectedhomeip $ export CY_TOOLS_PATHS=/tools_3.2 $ python3 out/infineon-psoc6-lock/chip-psoc6-lock-example.flash.py ## Commissioning and cluster control Commissioning can be carried out using BLE. ### Setting up Chip tool Once PSoC6 is up and running, we need to set up chip-tool on Raspberry Pi 4 to perform commissioning and cluster control. - Set up python controller. $ cd {path-to-connectedhomeip} $ ./scripts/examples/gn_build_example.sh examples/chip-tool out/debug - Execute the controller. $ ./out/debug/chip-tool ### Commissioning over BLE Run the built executable and pass it the discriminator and pairing code of the remote device, as well as the network credentials to use. $ ./out/debug/chip-tool pairing ble-wifi 1234 ${SSID} ${PASSWORD} 20202021 3840 Parameters: 1. Discriminator: 3840 2. Setup-pin-code: 20202021 3. Node ID: 1234 (you can assign any node id) 4. SSID : Wi-Fi SSID 5. PASSWORD : Wi-Fi Password #### Notes Raspberry Pi 4 BLE connection issues can be avoided by running the following commands. These power cycle the BlueTooth hardware and disable BR/EDR mode. $ sudo btmgmt -i hci0 power off $ sudo btmgmt -i hci0 bredr off $ sudo btmgmt -i hci0 power on ### Cluster control - After successful commissioning, use the doorlock cluster command to toggle device between lock or Unlock states. `$ ./out/debug/chip-tool doorlock lock-door 1234 1 --timedInteractionTimeoutMs 100` `$ ./out/debug/chip-tool doorlock unlock-door 1234 1 --timedInteractionTimeoutMs 100` - Cluster OnOff can also be done using the `USER_BTN1` button on the board. This button is configured with `APP_LOCK_BUTTON` in `include/AppConfig.h`. Press `USER_BTN1` on the board to toggle between lock and unlock states. The Lock/Unlock status of door can be observed with 'LED9' on the board. This LED is configured with `LOCK_STATE_LED` in `include/AppConfig.h`. ### Factory Reset - Commissioned Wi-Fi Credentials can be cleared by pressing `USER_BTN2` button on the board. All the data configured on the device during the initial commissioning will be deleted and device will be ready for commissioning again. - Pressing the button again within 5 seconds will cancel the factory reset of the board. ## Building with Optiga Trust M as HSM Infineon Hardware Security Module-OPTIGA™ Trust M is a high-end security solution that provides an anchor of trust for connecting IoT devices to the cloud, giving every IoT device its own unique identity. - Supported hardware setup: [CY8CKIT-062S2-43012](https://www.cypress.com/CY8CKIT-062S2-43012) [OPTIGA™ Trust M MTR](https://www.infineon.com/cms/en/product/evaluation-boards/trust-m-mtr-shield/) [OPTIGA™ Trust Adapter](https://www.infineon.com/cms/en/product/evaluation-boards/optiga-trust-adapter/) - Building: Follow the steps to build with OPTIGA™ Trust M for device attestation use case: ``` $ source scripts/activate.sh $ scripts/build/build_examples.py --no-log-timestamps --target 'infineon-psoc6-lock-trustm' build ``` - To delete generated executable, libraries and object files use: $ cd ~/connectedhomeip $ rm -rf out/ - Proceed to OPTIGA™ Trust M Provisioning section to complete the credential storage into HSM. ### Optiga Trust M Provisioning For the description of OPTIGA™ Trust M Provisioning with test DAC generation and PAI and CD storage, please refer to [Infineon OPTIGA™ Trust M Provisioning](../../../../docs/platforms/infineon/infineon_trustm_provisioning.md) After completing OPTIGA™ Trust M Provisioning, proceed to [Flashing the Application](#flashing-the-application) section to continue with subsequent steps. ## OTA Software Update For the description of Software Update process with infineon PSoC6 example applications see [Infineon PSoC6 OTA Software Update](../../../../docs/platforms/infineon/infineon_psoc6_software_update.md)