blob: 7961597d4df0550e3f2594368fa5665e6136351d [file] [log] [blame] [view]
# Matter `Genio` Light Switch Example
An example showing the use of Matter on the MediaTek `Genio` MT793X.
<hr>
- [Matter Genio Light Switch Example](#matter-genio-light-switch-example)
- [Introduction](#introduction)
- [Building](#building)
- [Flashing the Application](#flashing-the-application)
- [Running the Complete Example](#running-the-complete-example)
- [Notes](#notes)
<hr>
## Introduction
The `Genio` (MT793X) light switch example provides a baseline demonstration of a
on-off light switch device, built using Matter and the MediaTek `Genio` SDK. It
can be controlled by a Chip controller over Wi-Fi network..
The `Genio` device can be commissioned over Bluetooth Low Energy where the
device and the Chip controller will exchange security information with the
Rendez-vous procedure. Network credentials are then provided to the `Genio`
device which will then join the network.
The light switch example is intended to serve both as a means to explore the
workings of Matter as well as a template for creating real products based on the
MediaTek platform.
## Building
- Following the Linux related descriptions in
[Build Matter](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/BUILDING.md)
to prepare the build environment.
- Supported hardware:
`Genio` 130A (MT7931) board:
- `EK-AI7931LD KIT`
* Build the example application:
`cd ~/connectedhomeip`
`./scripts/examples/gn_genio_example.sh ./examples/light-switch-app/genio` `./out/light-switch-app`
- To delete generated executable, libraries and object files use:
`$ cd ~/connectedhomeip`
`$ rm -rf ./out/`
OR use GN/Ninja directly
`$ cd ~/connectedhomeip/examples/light-switch-app/genio`
`$ git submodule update --init`
`$ source third_party/connectedhomeip/scripts/activate.sh`
`$ gn gen out/debug`
`$ ninja -C out/debug`
- To delete generated executable, libraries and object files use:
`$ cd ~/connectedhomeip/examples/light-switch-app/genio`
`$ rm -rf out/`
## Flashing the Application
- Copy the GUI based
[Flash Tool](https://github.com/MediaTek-Labs/genio-matter-bsp/tree/main/flash_tool/FlashBurningTool_V2.83).
from the Linux Host that the example was build to a Windows PC.
Flash Tool can be found in this source tree under this directory
`third_party/mt793x_sdk/filogic/flash_tool`
- On the Windows PC, run the Flash Tool
1. Select the scatter.ini file in the `./out/light-switch-app` directory.
2. Follow the instruction that comes with `EK-AI7931LD KIT` to switch the
kit to download mode.
3. Click `Download` on FLASH TOOL.
## Running the Complete Example
- This example needs one lighting-app device and one light-switch-app device.
- You can provision and control the Chip device using the python controller,
Chip tool standalone, Android or iOS app
[CHIP
Tool]](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/chip_tool_guide.md)
- First of all, you have to commission with the light-switch-app (nodeID 1)
and the lighting-app (nodeID 2) with the CHIP tool by following commands.
```
chip-tool pairing ble-wifi 1 my-ap myappassword 20202021 3840
chip-tool pairing ble-wifi 2 my-ap myappassword 20202021 3840
```
- Next, you have to configure the ACL in the lighting-app device to allow
access from switch device and chip-tool, and binding the lighting-app device
to the light-switch-app device by following commands.
```
chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [1], "targets": null }]' 2 0
chip-tool binding write binding '[{"fabricIndex": 1, "node":2, "endpoint":1, "cluster":6}]' 1 1
```
- Once all setup successfully, you can control the lighting-app device through
the Matter Shell on the light-switch-app device.
```
> switch onoff on
> switch onoff off
```
### Notes
- Depending on your network settings your router might not provide native ipv6
addresses to your devices (Border router / PC). If this is the case, you
need to add a static ipv6 addresses on both device and then an ipv6 route to
the border router on your PC