From 3d5724817a41b1e0235bd3a0a7d0a82fd83480ba Mon Sep 17 00:00:00 2001 From: Rehan Rasool Date: Wed, 7 Sep 2022 16:58:42 +0000 Subject: [PATCH] Pull request #67: v0.3.0 documentation updates based on Catherine's review Merge in WMN_TOOLS/matter from cjo_review_silabs_doc to silabs Squashed commit of the following: commit 94d3c1f81fc61ca9bb7cdbb7aee582b9f10248df Author: Ezra Hale Date: Wed Sep 7 09:06:15 2022 -0400 fix typo 0.4.0 -> 0.3.0 commit c5074af84b3063b044d9c93e49ec1084b1536688 Author: Ezra Hale Date: Wed Sep 7 08:28:03 2022 -0400 added change to Raspi image password commit 9ae5509e5dacc4b42d568b9d73b6bab0e8ee6227 Author: Rehan Rasool Date: Tue Sep 6 19:41:20 2022 -0400 Fix broken link commit 54cb8f70fa3f3e7f8fb5c791dc23fe6d2a93f4a3 Author: Rehan Rasool Date: Tue Sep 6 19:27:12 2022 -0400 Shorten URL commit 8c9192f0297f8fce1e2c13c4eab8079d7488f6f1 Author: Rehan Rasool Date: Tue Sep 6 19:23:41 2022 -0400 Add note about release notes and fix couple of links commit ce5bc0c2a814fbb3c76f0d86a5f79428ca9b79a2 Author: Ezra Hale Date: Tue Sep 6 14:44:00 2022 -0400 responses to Catherine's requests and edits accordingly commit 24fe8605729429a5286e1fcf4b9263cc99cd9a1a Author: Sergei Lissianoi Date: Tue Sep 6 13:41:55 2022 -0400 Fix link typo commit 6cd97c58ced1f587f46c945acfe03b5d39d2bcdb Author: rosahay-silabs Date: Tue Sep 6 19:54:28 2022 +0530 Removing unnecessary steps from documentation commit b89507a2def8c582d51ef000bd96cbc26d155cab Author: rosahay-silabs Date: Tue Sep 6 19:42:09 2022 +0530 Adds updated documentation as per comments commit 2f423f314df5c6e88b5986f377bd09b02f7cb2fe Author: Sergei Lissianoi Date: Tue Sep 6 09:52:44 2022 -0400 Update link to the Thread demo doc commit 0dd35a545a1be726f897f0e53081e981c9207710 Author: cjo-tra Date: Mon Sep 5 16:18:23 2022 -0400 Edits for v 0.3.0 commit 8ee2a7d3a4d5d9fc632bf621ebfe1747916abfce Author: Shrinivas Date: Mon Sep 5 19:30:52 2022 +0530 Added updated documents for wifi --- README.md | 34 +++- docs/silabs/OVERVIEW.md | 20 +-- docs/silabs/README.md | 6 +- docs/silabs/dev/vscode/BUILD.md | 13 +- docs/silabs/dev/vscode/DEBUG.md | 9 +- docs/silabs/dev/vscode/FLASH.md | 4 +- docs/silabs/dev/vscode/SETUP.md | 14 +- docs/silabs/general/ARTIFACTS.md | 4 +- docs/silabs/general/CUSTOM_MATTER_DEVICE.md | 34 ++-- docs/silabs/general/EP.md | 10 +- docs/silabs/general/FIND_RASPI.md | 2 +- docs/silabs/general/GATT.md | 11 +- docs/silabs/general/HARDWARE_REQUIREMENTS.md | 48 +++--- docs/silabs/general/OTA_SOFTWARE_UPDATE.md | 4 +- docs/silabs/general/PINTOOL.md | 20 ++- docs/silabs/general/SOFTWARE_REQUIREMENTS.md | 24 +-- docs/silabs/general/WIRESHARK.md | 4 +- docs/silabs/images/silicon_labs_matter.png | Bin 0 -> 176164 bytes docs/silabs/thread/BUILD_FLASH_MAD.md | 13 +- docs/silabs/thread/CHIP_TOOL.md | 34 ++-- docs/silabs/thread/DEMO_OVERVIEW.md | 10 +- docs/silabs/thread/FAQ.md | 12 +- docs/silabs/thread/RASPI_IMG.md | 37 +++-- docs/silabs/thread/RCP.md | 17 +- docs/silabs/thread/THREAD.md | 29 ++-- docs/silabs/wifi/BUILD_CHIP_ENV.md | 160 ++++++++++++++++--- docs/silabs/wifi/BUILD_PI_ENV.md | 14 +- docs/silabs/wifi/DEMO_OVERVIEW.md | 56 ++++--- docs/silabs/wifi/FAQ.md | 128 +++++++++++++-- docs/silabs/wifi/RUN_DEMO.md | 74 +++++---- docs/silabs/wifi/SW_SETUP.md | 57 ++++--- docs/silabs/wifi/WIFI_ANDROID.md | 18 +-- docs/silabs/wifi/WIFI_PREREQS.md | 99 ++++++++++++ 33 files changed, 694 insertions(+), 325 deletions(-) create mode 100644 docs/silabs/images/silicon_labs_matter.png create mode 100644 docs/silabs/wifi/WIFI_PREREQS.md diff --git a/README.md b/README.md index d063ab227c9e04..e5a9348314e3c7 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,34 @@ # Silicon Labs Matter -Welcome to the Silicon Labs Matter Github repo. This is your one stop shop for -all things related to Silicon Labs and Matter development. - -**To develop a Matter application with Silicon Labs please start here:** - -**[Silicon Labs Matter Table of Contents](./docs/silabs/README.md)** +Welcome to the Silicon Labs Matter Github repo. Matter is an application layer +that provides a standardized interface between protocols and devices. With +Matter, it is transparent to the underlying device whether the interaction is +from a Thread application or a Wi-Fi application. For more information on Matter +in general see the main +[Matter Overview](https://www.silabs.com/wireless/matter) page. This repo is the +starting point for all Silicon Labs-related Matter development. Silicon Labs +supports Matter on both 802.15.4 (Thread) and 802.11 (Wi-Fi) transport +protocols. + +_To see release notes containing list of features and knowns issues go to +[SiliconLabs/matter/releases](https://github.com/SiliconLabs/matter/releases) +and find the corresponding notes for the release you are using._ + +![Silicon Labs](./docs/silabs/images/silicon_labs_matter.png) + +This repo contains documentation, demos, examples and all the code needed for +Matter Accessory Device development on both Thread and Wi-Fi. The Thread +development use cases differs from Wi-Fi because the Thread protocol requires +the use of an Open Thread Border Router (OTBR). + +- To get started with the Thread demo and development see + [Matter Thread](./docs/silabs/thread/DEMO_OVERVIEW.md) +- To get started with the Wi-Fi demo and development see + [Matter Wi-Fi](./docs/silabs/wifi/DEMO_OVERVIEW.md) + +The full documentation set starts here: +[Silicon Labs Matter Table of Contents](./docs/silabs/README.md) --- diff --git a/docs/silabs/OVERVIEW.md b/docs/silabs/OVERVIEW.md index b5b6698cfd7727..7da7b024c39df2 100644 --- a/docs/silabs/OVERVIEW.md +++ b/docs/silabs/OVERVIEW.md @@ -1,16 +1,18 @@ -# Silicon Labs Matter Repo Overview +# Silicon Labs Matter User's Guide Overview -Welcome to the Silicon Labs Matter Repo. For more information on Matter in general see the main [Matter Overview](https://www.silabs.com/wireless/matter) page. - -Silicon Labs supports Matter on both 802.15.4 (Thread) and 802.11 (Wi-Fi) transport protocols. - -This Repo is the starting point for all Silicon Labs-related Matter development. In this repo you will find documentation, demos, examples and all the code needed for Matter Accessory Device development on both Thread and Wi-Fi. +Welcome to the Silicon Labs Matter user documentation set. This provides all of the information required to use the Matter demos or start development with Matter on the Thread and Wi-Fi transport protocols. The Thread development use cases differs from Wi-Fi because the Thread protocol requires the use of an Open Thread Border Router (OTBR). -The Thread demo and development use case is described in the Thread section of this documentation located here: [Matter Thread](./thread/DEMO_OVERVIEW.md) +This content covers -The Wi-Fi demo and development use case is described in the Wi-Fi section of this documentation located here: [Matter Wi-Fi](./wifi/DEMO_OVERVIEW.md) +- Software and Hardware prerequisites for working with Silicon Labs Matter. +- [Thread demo and development information](./thread/DEMO_OVERVIEW.md) +- [Wi-Fi demo and development information](./wifi/DEMO_OVERVIEW.md) +- Information on using [VSCode and the provided container environment](./dev/vscode/SETUP.md) +- A list of useful reference guides +- Frequently asked questions about both Thread and Wi-Fi development ---- -[Table of Contents](./README.md) | [Thread Demo](./thread/DEMO_OVERVIEW.md) | [Wi-Fi Demo](./wifi/DEMO_OVERVIEW.md) \ No newline at end of file + +[Table of Contents](./README.md) \ No newline at end of file diff --git a/docs/silabs/README.md b/docs/silabs/README.md index bbd6a411a38849..85111892d06d06 100644 --- a/docs/silabs/README.md +++ b/docs/silabs/README.md @@ -1,8 +1,8 @@ # Silicon Labs Matter Table of Contents -1. [Silicon Labs Matter Overview](OVERVIEW.md)
+1. [Silicon Labs Matter Documentation Overview](OVERVIEW.md)
-2. Matter Pre-requisites +2. Matter Prerequisites 1. [Matter Hardware Requirements](general/HARDWARE_REQUIREMENTS.md) 2. [Matter Software Requirements](general/SOFTWARE_REQUIREMENTS.md)

@@ -44,7 +44,7 @@ 8. [Building a Custom Matter Device](general/CUSTOM_MATTER_DEVICE.md) 9. [Matter OTA Software Update](general/OTA_SOFTWARE_UPDATE.md) 10. [Matter Attestation Credentials for EFR32](../../silabs_examples/credentials/README.md) - 11. [Using Simplicity Studio's Pin Tool and Project Configurator with Matter](./general/PINTOOL.m) + 11. [Using Simplicity Studio's Pin Tool and Project Configurator with Matter](./general/PINTOOL.md) 12. [Using Simplicity Studio's BLE GATT Configurator with Matter](./general/GATT.md) 13. [Using Simplicity Studio's Energy Profiler with Matter](./general/EP.md) 14. [Using Wireshark to Capture Network Traffic in Matter](./general/WIRESHARK.md)

diff --git a/docs/silabs/dev/vscode/BUILD.md b/docs/silabs/dev/vscode/BUILD.md index 43f8ea6d078930..d93d1ceeb6e3df 100644 --- a/docs/silabs/dev/vscode/BUILD.md +++ b/docs/silabs/dev/vscode/BUILD.md @@ -17,7 +17,7 @@ Search for "run build task" and select the "Run Build Task" option. ### Step 3: -A new drop down menu will appear, select "Build efr32 example". +A new drop down menu will appear. Select "Build efr32 example". ### Step 4: @@ -31,7 +31,7 @@ Select the appropriate target board. ## Windows -Building for Windows requires one extra step prior to running the build example +Building for Windows requires one extra step before running the build example task. ### Step 1: @@ -40,8 +40,7 @@ Press (Ctrl + Shift + P) to trigger the command pallet. ### Step 2: -Search for "run build task" and select "Run build task" from the drop -down menu. +Search for "run build task" and select "Run build task" from the drop-down menu. ### Step 3: @@ -50,10 +49,10 @@ On the next menu, select "Windows setup" from the options. ### Step 4: The next menu contains two options, "setup" and -"cleanup". Select _setup_ in order to initiate the setup process or _cleanup_ to -clean up the environment after building the examples. This step installs crucial +"cleanup". Select _setup_ in order to initiate the setup process. This step installs crucial packages that are required to build the examples such as openssl. if openssl -is not detected, an installation will be initiated in a new window. Follow the installation prompts in order for the setup to be successful. +is not detected, an installation will be initiated in a new window. Follow the installation prompts in order for the setup to be successful. Select _cleanup_ to +clean up the environment after building the examples. ### Step 5: diff --git a/docs/silabs/dev/vscode/DEBUG.md b/docs/silabs/dev/vscode/DEBUG.md index 74aa4a3565b6e9..5e32e68e31ac95 100644 --- a/docs/silabs/dev/vscode/DEBUG.md +++ b/docs/silabs/dev/vscode/DEBUG.md @@ -1,6 +1,6 @@ # Debugging in VS Code -This section covers remote Debugging (GDB jlink) of Matter Examples in VS Code. +This section covers remote debugging (GDB jlink) of Matter examples in VS Code. ## Requirements @@ -14,7 +14,7 @@ This section covers remote Debugging (GDB jlink) of Matter Examples in VS Code. ## Settings -Before starting a debug session please ensure the following: +Before starting a debug session ensure the following:
    @@ -32,8 +32,7 @@ Use the shortcut (Ctrl + Shift + P) to trigger the command pallet. ### Step 2: -A drop down menu will appear along with a prompt. Please -select the "Debug efr32 example app" and Start Debugging, or press F5 on +A drop-down menu will appear along with a prompt. Select the "Debug efr32 example app" and Start Debugging, or press F5 on your keyboard. ### Step 3: @@ -42,7 +41,7 @@ Select the example you want to debug. ### Step 4: -Select the desired target device, from the drop down menu. +From the drop-down menu, select the desired target device. ![](../../images/debug_session.gif) diff --git a/docs/silabs/dev/vscode/FLASH.md b/docs/silabs/dev/vscode/FLASH.md index 7c2e0591e6fbcc..5821026571d749 100644 --- a/docs/silabs/dev/vscode/FLASH.md +++ b/docs/silabs/dev/vscode/FLASH.md @@ -32,13 +32,13 @@ Select "Flash efr32 example" from the options. ### Step 4: -On the next down menu, please choose the proper example to flash to your +On the next menu, select the example to flash to your target device. The example must have an "out" directory that contains a binary file with the ".out" extension. ### Step 4: -The final prompt will ask the user to choose the target device. Please select the target device. +In response to the final prompt, select the target device. ## ![](../../images/flash_efr32_example.gif) diff --git a/docs/silabs/dev/vscode/SETUP.md b/docs/silabs/dev/vscode/SETUP.md index 8e9465cf64554a..69a91905c98131 100644 --- a/docs/silabs/dev/vscode/SETUP.md +++ b/docs/silabs/dev/vscode/SETUP.md @@ -1,6 +1,6 @@ -# Setup VS Code environment +# Set Up the VS Code environment -## Requirements +## General Requirements 1. Install Visual Studio Code for your operating system of choice here: https://code.visualstudio.com/Download @@ -20,19 +20,19 @@ 8. ARM GCC Toolchain (https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads) - required arm-none-eabi tools -9. J-Link Software Tools - required J-Link GDB Server for J-Link based debuggers +9. J-Link Software Tools - required J-Link GDB Server for J-Link-based debuggers (https://www.segger.com/downloads/jlink) 10. Python - (https://www.python.org/downloads/) ### Installing prerequisites on macOS -On macOS, first install Xcode from the Mac App Store. The remaining dependencies -can be installed and satisfied using [Brew](https://brew.sh/): +On macOS, you must install Xcode from the Mac App Store. The remaining +dependencies can be installed and satisfied using [Brew](https://brew.sh/): > `$ brew install openssl pkg-config` -However, that does not expose the package to `pkg-config`. To fix that, one -needs to run something like the following: +However, that does not expose the package to `pkg-config`. To fix that, run +something like the following: Intel: diff --git a/docs/silabs/general/ARTIFACTS.md b/docs/silabs/general/ARTIFACTS.md index 6e57458546d9e4..9d8f8b8eec7594 100644 --- a/docs/silabs/general/ARTIFACTS.md +++ b/docs/silabs/general/ARTIFACTS.md @@ -9,7 +9,7 @@ used to set up the Matter Demo for the Thread and Wi-Fi use cases. The Matter Hub image is intended to be flashed onto an SD card for a Raspberry Pi. The Matter Hub Image provides both an Open Thread Border Router and the -Matter "ChipTool". Note the image is ~10GB in size so depending on your internet +Matter chiptool. Note the image is ~10GB in size so depending on your internet connection this download may take some time. Start the Matter Hub Raspberry Pi image download here: @@ -41,7 +41,7 @@ https://github.com/SiliconLabs/matter/releases/tag/v0.3.0 ## Matter Bootloader Binaries If you are using the OTA functionality and especially if you are using an -EFR32MG2x device you will need to flash a bootloader binary on your device along +EFR32MG2x device, you will need to flash a bootloader binary on your device along with the application image. Bootloader binaries for all of the Matter supported devices are available here: diff --git a/docs/silabs/general/CUSTOM_MATTER_DEVICE.md b/docs/silabs/general/CUSTOM_MATTER_DEVICE.md index f504dfa57df95d..c1cabfdd238cc5 100644 --- a/docs/silabs/general/CUSTOM_MATTER_DEVICE.md +++ b/docs/silabs/general/CUSTOM_MATTER_DEVICE.md @@ -1,10 +1,10 @@ # Custom Matter Device Development -Build a customizable lighting app using the Matter protocol +Build a customizable lighting app using the Matter protocol. ## Overview -This guide will cover the basics of building a customizable lighting application +This guide covers the basics of building a customizable lighting application using Matter. ## Using Matter with Clusters @@ -25,12 +25,12 @@ Note that you can also create your own custom cluster. ## ZAP configuration From the matter repository, run the following command in a terminal to launch -the ZAP UI. This will open up the ZAP configuration for the EFR32 lighting +the ZAP user interface (UI). This will open up the ZAP configuration for the EFR32 lighting application example. > `$ ./scripts/tools/zap/run_zaptool.sh examples/lighting-app/lighting-common/lighting-app.zap` -On the left hand side of the application, there is a tab for Endpoint 0 and +On the left side of the application, there is a tab for Endpoint 0 and Endpoint 1. Endpoint 0 is known as the root node. This endpoint is akin to a "read me first" endpoint that describes itself and the other endpoints that make up the node. Endpoint 1 represents a lighting application device type. There are @@ -39,8 +39,8 @@ common across most device types, such as identify and group clusters. Others, such as the On/Off, Level Control and Color Control clusters are required for a lighting application device type. -Clicking on the blue settings icon on the right hand side of the application -will bring you to the zap configuration settings for that cluster. Each cluster +Clicking on the blue settings icon on the right side of the application +brings you to the zap configuration settings for that cluster. Each cluster has some required attributes that may cause compile-time errors if they are not selected in the zap configuration. Other attributes are optional and are allowed to be disabled. Clusters also have a list of client-side commands, again some @@ -48,14 +48,14 @@ are mandatory and others are optional depending on the cluster. ZCL offers an extensive list of optional attributes and commands that allow you to customize your application to the full power of the Matter SDK. -For example, if one was building a lighting application which only includes +For example, if a lighting application only includes single color LEDs instead of RGB LEDs, it might make sense to disable the Color -Control cluster in the ZAP configuration. Similarly, if one were to build a -lighting application that doesn't take advantage of the Level Control cluster, +Control cluster in the ZAP configuration. Similarly, if a +lighting application doesn't take advantage of the Level Control cluster, which allows you to customize current flow to an LED, it might make sense to disable the Level Control cluster. -Each time a modification is made to the ZAP UI, one must save (Electron→Save on +Each time a modification is made to the ZAP UI, save (Electron→Save on a Mac toolbar) the current ZAP configuration and run the following command to generate ZAP code. @@ -73,7 +73,7 @@ received. ## Adding a cluster to a ZAP configuration In the ZAP UI, navigate to the Level Control cluster. Make sure this cluster is -enabled as a server in the drop down menu in the "Enable" column. Then click on +enabled as a server in the drop-down menu in the "Enable" column. Then click on the blue settings wheel in the "Configure" column. This cluster can be used to gather power source configuration settings from a Matter device. It contains a few required attributes, and a number of optional attributes. @@ -86,13 +86,13 @@ is set to enabled. Set the default value of this attribute as 1. ## Adding a new command Navigate to the commands tab in zap and enable the MoveToLevel command. Now save -the current zap configuration, and run the aforementioned generate.py script. +the current zap configuration, and run the generate.py script above. ## React to Level Control cluster commands in ZclCallbacks In the MatterPostAttributeCallback function in ZclCallbacks, add the following -line of code or similar. This will give the application the ability to react to -MoveToLevel commands. The developer can define platform specific behavior for a +line of code or a similar line. This will give the application the ability to react to +MoveToLevel commands. You can define platform-specific behavior for a MoveToLevel action. else if (clusterId == LevelControl::Id) @@ -113,7 +113,7 @@ MoveToLevel action. Rebuild the application and load the new executable on your EFR32 device. Send the following mattertool commands and verify that the current-level default attribute was updated as was configured. Replace {desired_level} with 10, and -node_ID with the node ID assigned to the device upon commissioning +node_ID with the node ID assigned to the device upon commissioning. > `$ mattertool levelcontrol read current-level 1 1 // Returns 1` @@ -121,8 +121,8 @@ node_ID with the node ID assigned to the device upon commissioning > `$ mattertool levelcontrol read current-level 1 1 // Returns 10` -More Information Silicon Labs lighting example on a Thunderboard Sense 2 - -[sl-newlight/efr32](../../../silabs_examples/sl-newLight/efr32/README.md) +For more information on running a Silicon Labs lighting example on a Thunderboard Sense 2 see +[sl-newlight/efr32](../../../silabs_examples/sl-newLight/efr32/README.md). --- diff --git a/docs/silabs/general/EP.md b/docs/silabs/general/EP.md index 6c3d80f74c902e..abf66cc83a86eb 100644 --- a/docs/silabs/general/EP.md +++ b/docs/silabs/general/EP.md @@ -1,13 +1,13 @@ # Using Simplicity Studio's Energy Profiler with Matter Simplicity Studio's Energy Profiler allows the developer to see a graphical view -of their devices energy usage over time. This can be very useful when developing -an energy friendly device. +of their device's energy usage over time. This can be very useful when +developing an energy-friendly device. Using Energy Profiler with Matter is the same as any other protocol except that -you need to start the usage from within Energy Profiler rather than using an -existing Simplicity Studio project since your Matter project will not have been -created inside Simplicity Studio. +you need to start the usage from within Energy Profiler inside Simplicity +Studio, rather than using an existing Simplicity Studio project, since your +Matter project will not have been created inside Simplicity Studio. Complete documentation on using the Simplicity Studio Energy Profiler is provided in the diff --git a/docs/silabs/general/FIND_RASPI.md b/docs/silabs/general/FIND_RASPI.md index c898bc2c5fcbd9..3b157b92f23a68 100644 --- a/docs/silabs/general/FIND_RASPI.md +++ b/docs/silabs/general/FIND_RASPI.md @@ -4,7 +4,7 @@ Sometimes it can be difficult to find your Raspberry Pi on the network. One way of interacting with the Raspberry Pi is connecting a keyboard, mouse and monitor to it. The preferred method, however, is over SSH. For this, you will need to know the IP address of your Raspberry Pi. -[This](https://raspberryexpert.com/find-raspberry-pi-ip-address/) is a good tutorial on how to find the IP address. +This is a [good tutorial](https://raspberryexpert.com/find-raspberry-pi-ip-address/) on how to find the IP address. | Platform | Strategy | diff --git a/docs/silabs/general/GATT.md b/docs/silabs/general/GATT.md index aff39f1c548cdf..3ca001535b4030 100644 --- a/docs/silabs/general/GATT.md +++ b/docs/silabs/general/GATT.md @@ -1,17 +1,12 @@ # Using Simplicity Studio's GATT Configurator with Matter The Simplicity Studio Bluetooth GATT Configurator is an Advanced Configurator -within the Simplitiy Studio Project Confguration suite. For more information on +within the Simplicity Studio Project Configuration suite. For more information on using the -[Simplicity Studio Project Configurator in Matter please refer to this guide](./PINTOOL.md). +[Simplicity Studio Project Configurator in Matter refer to this guide](./PINTOOL.md). Use of the BLE GATT Configurator in Matter assumes that you are already familiar with creating and using an `Empty C++` Project in Simplicity Studio. -Once you have created your `Empty C++` project, you can add the Bluetooth -component which will give you access to the GATT configurator for your project. -More information on use of the -[BLE GATT Configurator in Simplicity Studio is provided here](https://docs.silabs.com/simplicity-studio-5-users-guide/latest/ss-5-users-guide-developing-with-project-configurator/bluetooth-gatt-configurator). - The basic steps for using the Simplicity Studio BLE GATT Configurator are as follows: @@ -37,7 +32,7 @@ follows: More information on using the [BLE GATT Configurator is provided here.](https://docs.silabs.com/simplicity-studio-5-users-guide/latest/ss-5-users-guide-developing-with-project-configurator/bluetooth-gatt-configurator) -5. Save your project which will force the generation of your BLE GATT +5. Save your project, which will force the generation of your BLE GATT Configuration 6. BLE GATT database is stored in the `autogen` folder in your project directory diff --git a/docs/silabs/general/HARDWARE_REQUIREMENTS.md b/docs/silabs/general/HARDWARE_REQUIREMENTS.md index 6f96c159e8862d..356864186750e0 100644 --- a/docs/silabs/general/HARDWARE_REQUIREMENTS.md +++ b/docs/silabs/general/HARDWARE_REQUIREMENTS.md @@ -1,23 +1,22 @@ # Matter Hardware Requirements -Whether you are running Matter over Thread or Matter over Wi-Fi you will need -some Silicon Labs hardware in order to run demos and do development. What -follows are the hardware requirements for both Thread and Wi-Fi use cases broken -down by platform and transport protocol. +To run Matter over Thread or over Wi-Fi requires some Silicon Labs hardware in +order to run demos and do development. Following are the hardware requirements +for both Thread and Wi-Fi use cases broken down by platform and transport +protocol. ## Matter Over Thread "Matter Hub" Requirements If you are running Matter over Thread and do not have a platform on which to run -the Open Thread Border Router and Chip-Tool, Silicon Labs recommends that you -run them on a Raspberry Pi. This recommendation leads to the following -requirements: +the Open Thread Border Router and chiptool, Silicon Labs recommends that you run +them on a Raspberry Pi. To do so you will need: - **Raspberry Pi** - Raspberry Pi 4 with an SD card with storage >= 64 GB > The Raspberry Pi 4 is used to run the Open Thread Border Router and - > the Chip-Tool. In this documentation the combination of this software + > the chiptool. In this documentation the combination of this software > on the Raspberry Pi is also called the 'Matter Hub' A software image > for the Raspberry Pi is provided on the > [Matter Artifacts page](./ARTIFACTS.md). @@ -29,8 +28,8 @@ requirements: development board that is capable of running the OpenThread RCP firmware. The RCP radio board is connected to the Raspberry Pi via USB. - Over 60 Silicon Labs boards support the running of the RCP firmware. For a - complete list of boards supported please download and build your image in + Over 60 Silicon Labs boards support running the RCP firmware. To build an + image for a board which is not listed here, download and build your image in Simplicity Studio. Pre-built OpenThread RCP firmware images are provided for the following boards on the [Matter Artifacts page](./ARTIFACTS.md): @@ -55,12 +54,11 @@ requirements: ## Matter Over Thread Accessory Device Requirements The Matter Accessory Device (MAD) is the actual device that the Matter -application firmware runs on. This is the Matter Light or the Matter Switch for -instance. Several different platforms for the Matter Accessory Device are -supported. Pre-built binary images for the Matter accessory devices are provided -on the [Matter Artifacts page](./ARTIFACTS.md). Silicon Labs supports -development of Matter Accessory Devices for Matter over Thread on the following -platforms: +application firmware (such as the Matter Light or Matter Switch) runs on. +Several different platforms for the Matter Accessory Device are supported. +Pre-built binary images for the Matter accessory devices are provided on the +[Matter Artifacts page](./ARTIFACTS.md). Silicon Labs supports development of +Matter Accessory Devices for Matter over Thread on the following platforms: - **MG12 boards:** @@ -93,12 +91,11 @@ platforms: ## Matter over Wi-Fi Accessory Device Requirements -The Silicon Labs Matter over Wi-Fi demo and development requires two boards, the -Silicon Labs EFR32 Radio board to run the Matter code along with either the -RS9116 or the WF200 to run the Wi-Fi protocol stack. Pre-built images for both -the EFR32 and the RS9116 are provided on the -[Matter Artifacts page](./ARTIFACTS.md). The following boards are supported for -the Matter over Wi-Fi demos and development: +The Silicon Labs Matter over Wi-Fi demo and development requires two boards: the +Silicon Labs EFR32 Radio board to run the Matter code and either the RS9116 or +the WF200 to run the Wi-Fi protocol stack. Pre-built images for both the EFR32 +and the RS9116 are provided on the [Matter Artifacts page](./ARTIFACTS.md). The +following boards are supported for the Matter over Wi-Fi demos and development: - **MG12 boards:** @@ -133,10 +130,9 @@ the Matter over Wi-Fi demos and development: ## Additional Matter over Wi-Fi Hardware Requirements -Matter over Wi-Fi has a few additional requirements for the working of the demo -and development. In addition to your Matter over Wi-Fi Accessory Device you will -need the following: +In addition to your Matter over Wi-Fi Accessory Device you will need the +following for both running the demo and for development: - Access point with Internet access - microSD card (32GB) (if using Raspberry Pi) -- **[Optional]** Android Mobile phone (If using the ChipTool on Android) +- **[Optional]** Android Mobile phone (If using the chiptool on Android) diff --git a/docs/silabs/general/OTA_SOFTWARE_UPDATE.md b/docs/silabs/general/OTA_SOFTWARE_UPDATE.md index ebb4289cde02b9..90cfaaa16301f7 100644 --- a/docs/silabs/general/OTA_SOFTWARE_UPDATE.md +++ b/docs/silabs/general/OTA_SOFTWARE_UPDATE.md @@ -7,7 +7,7 @@ controlled by the `chip_enable_ota_requestor` compile flag. ## Running the OTA Download Scenario - For Matter with OpenThread: Bring up the OpenThread Border Router as - discussed in examples/lighting-app/efr32/README.md and get its operational + discussed in [Thread Demo Overview](../thread/DEMO_OVERVIEW.md) and get its operational dataset. - On a Linux or Darwin platform build the chip-tool and the ota-provider-app @@ -69,7 +69,7 @@ where operationalDataset is obtained from the OpenThread Border Router. Internal storage bootloader for Matter OTA software update is supported on MG24 boards only. In this use case both the running image and the downloadable update image must fit on the internal flash at the same time. This in turn requires -that both images are built with a reduced feature set such as disabled logging +that both images are built with a reduced feature set, such as disabled logging and Matter shell. The following set of compile flags leaves out all the optional features and results in the minimal image size: diff --git a/docs/silabs/general/PINTOOL.md b/docs/silabs/general/PINTOOL.md index 29ad5eea7a85bc..f6be88c1f5ecd1 100644 --- a/docs/silabs/general/PINTOOL.md +++ b/docs/silabs/general/PINTOOL.md @@ -1,9 +1,7 @@ # Using Simplicity Studio's Pintool and Project Configuration with Matter -In the course of developing your product you will likely run into a situation -where you need to move your project over to your custom hardware. In this case, -you will likely need to change the pinout and hardware configuration from what -it is in the example project to reflect your own custom project. You can do this +At some point during product development you may need to move your project over to your custom hardware. In this case, +you will likely need to change the pinout and hardware configuration in the example project to reflect your own custom project. You can do this with Simplicity Studio's Pintool starting from a blank C++ project. ## 1. Locating the board support files in the Matter repo @@ -14,7 +12,7 @@ the matter repository, the peripheral and pin configurations are stored at `./third_party/silabs/matter_support/matter/efr32///config` -When creating a configuration for a custom board you do the following: +When creating a configuration for a custom board do the following: 1. Create a Custom C++ project within Simplicity Studio. 2. Include your desired peripherals in the project. @@ -23,13 +21,13 @@ When creating a configuration for a custom board you do the following: ## 2. Create a sample "Empty C++ project" in Simplicity Studio -1. Create a project Open Simplicity Studio and click on `Create a New Project` +1. In Simplicity Studio click `Create a New Project` to start the project wizard. Choose your development board type, and the - latest Gecko SDK you'll be working from. Click `Next` + latest Gecko SDK you'll be working from. Click **Next**. -1. Example C++ Project Choose your example `Empty C++ Project` and click `Next` +1. Select the `Empty C++ Project` example and click **Next**. -1. Create your project Click on `Finish` to create your project. +1. Click **Finish** to create your project. ## 3. Customize your Components and Pin configuration in Simplicity Studio @@ -40,7 +38,7 @@ the use of the Project Configurator and Pin Tool are located here: ## 4. Generate your Component and Pin configuration in Simplicity Studio -When you save your project configuration, you will notice that Simplicity Studio +When you save your project configuration, Simplicity Studio saves all the generated header files out into a `config` directory in your project. These are the files that make up the software component and pin tool configuration for your device. @@ -48,7 +46,7 @@ configuration for your device. ## 5. Move your pin configuration over to your Matter project All of the header files in your `config` project directory constitute the -hardware configuration for your device. You will want to copy these files over +hardware configuration for your device. Copy these files into your Matter project so that they can be used in place of the ones provided in the example. diff --git a/docs/silabs/general/SOFTWARE_REQUIREMENTS.md b/docs/silabs/general/SOFTWARE_REQUIREMENTS.md index 91a8ab1f5c065d..b926611f692f96 100644 --- a/docs/silabs/general/SOFTWARE_REQUIREMENTS.md +++ b/docs/silabs/general/SOFTWARE_REQUIREMENTS.md @@ -1,9 +1,11 @@ # Matter Software Requirements -## **System Agnostic Software Requirements (Windows/Mac/Linux):** +This section first covers system-agnostic software requirements and then requirements by system (Windows, Mac, and Linux). Finally, if you are working with Matter over Wi-Fi, you need to [update the firmware](#wi-fi-rs9116-specific-requirements) + +## **System-Agnostic Software Requirements (Windows/Mac/Linux):** 1. SSH Client ([PuTTY](https://www.putty.org/), Terminal, or similar): - > SSH client is used to communicate with the Raspberry Pi over a secure + > The SSH client is used to communicate with the Raspberry Pi over a secure > shell. 2. [Raspberry Pi Disk Imager](https://www.raspberrypi.com/software/) > Raspberry Pi Disk Imager is used to flash the SD Card that contains the @@ -25,7 +27,7 @@ > `$ ./scripts/checkout_submodules.py --shallow --recursive --platform efr32` -5. If you are using an EFR32MG2x device you will require a bootloader to run the +5. If you are using an EFR32MG2x device you will need a bootloader to run the demo applications. When you flash your application image be sure to include a bootloader as well (if one is not already present). Bootloader images are provided on the [Matter Artifacts page](../general/ARTIFACTS.md). @@ -34,7 +36,7 @@ ## **Windows-Specific Software Requirements:** -  These requirements are in addition to those mentioned above, for Windows +  These requirements are in addition to the system-agnostic requirements, for Windows only.
      A Unix-like command line: @@ -51,7 +53,7 @@ only.
    ## **Mac-Specific Requirements (building own images):** -  These requirements are in addition to those mentioned above for Mac OS +  These requirements are in addition to the system-agnostic requirements for Mac OS users building their own images.
    1. Install Homebrew @@ -70,12 +72,12 @@ users building their own images.

    - Depending on your Mac processor, you will have to complete the following additional steps. +Depending on your Mac processor, you will have to complete the following additional steps. ### **Apple Silicon (M1) Software Requirements:** Users may also have to specify which `pkg-config`/`openssl` to use by adding -these lines of code to `bootstrap.sh` as well: +these lines of code to `bootstrap.sh`: > `$ export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"` @@ -97,7 +99,7 @@ dependency.
    -## **Linux Specific Requirements:** +## **Linux-Specific Requirements:** On Debian-based Linux distributions such as Ubuntu, these dependencies can be satisfied with the following: @@ -106,18 +108,18 @@ satisfied with the following:
    -## **Wi-Fi RS9116 Specific Requirements:** +## **Wi-Fi RS9116-Specific Requirements:** Before you run the demo or development on the RS9116 please be sure that you update the RS9116 firmware. Pre-Built Rs9116 firmware is available on the -[Matter Artifacts page](../general/ARTIFACTS.md) +[Matter Artifacts page](../general/ARTIFACTS.md). The following instructions are found on the docs.silabs.com website: 1. [Setting up TeraTerm](https://docs.silabs.com/rs9116/wiseconnect/2.0/tera-term-setup) 2. [Updating the RS9116 Firmware](https://docs.silabs.com/rs9116/wiseconnect/2.0/update-evk-firmware) --- -[Table of Contents](../README.md) | [Thread Demo](./DEMO_OVERVIEW.md) | +[Table of Contents](../README.md) | [Thread Demo](../thread/DEMO_OVERVIEW.md) | [Wi-Fi Demo](../wifi/DEMO_OVERVIEW.md) diff --git a/docs/silabs/general/WIRESHARK.md b/docs/silabs/general/WIRESHARK.md index 6677c6ce0c19b5..56e4d4cf86c887 100644 --- a/docs/silabs/general/WIRESHARK.md +++ b/docs/silabs/general/WIRESHARK.md @@ -26,9 +26,9 @@ If you don't have Wireshark, you can ## 3. Follow Instructions for Wireshark Integration -In order to capture from a Silicon Labs device like a WSTK you will need to use +To capture from a Silicon Labs device like a WSTK use the Silabs-PTI.jar utility you built in the previous step. You will further need -to integrate the execution of the utility into Wireskark through Wireshark's +to integrate the execution of the utility into Wireshark through Wireshark's `excap` interface. A complete guide to [Wireshark Integration is provided here](https://github.com/SiliconLabs/java_packet_trace_library/blob/master/doc/wireshark.md). You integrate the Silabs-PTI.jar utility into Wirehshark by adding a small diff --git a/docs/silabs/images/silicon_labs_matter.png b/docs/silabs/images/silicon_labs_matter.png new file mode 100644 index 0000000000000000000000000000000000000000..6ab009dc651d1b0d111478ac11439b6c6de477da GIT binary patch literal 176164 zcmc%xg;QJK_XP~2#oaZ<-AaqQr8pFK30jH-cXw~0NO8B~!QE-`;_hz6CCHn8zRx_* z?>~6Y43kOb=H{NW&)IwJwbv#}O$CUBPL2)-2Zts9QRWjI9HI*x9J~$c8`vk$L-`o6 z7kHOXKq$8CrksI5jeAYZF$Jkiu_xZ7ercIjJnTmPM1O>MQ8EzEDdmp$=3+x3>=|BRbO`QFUr|8LA#Go!hD`adHl zkA77C{|vwIZ`@4(_XcDN|9`r{4Sa|11AYV!Ku%2!*ZpiIYIyjgVTbn(lV9dIF*S9( zVk#$#-{Rt;0C+3(QmnD2hC5R{!1!?F*RP&3jgqz7u+Y$r>%(b<^$MNp^$ARg5I68`6U3v2eU*A~<>o71?x z^!nmHQ^f0&Ama%J7S=#IuXS?g%8Fs8u!oAE$H_KbYTx#l%dlnXqvr}nb_ttKmFeBt zssdm>BRl)$R>Y{w-$)Oq#Kp&pvsom1KX`fQuC}PCh-F#w;vU?k>F0BI=I4X$m7QNu zuzq_XQZ~K`doWx8pjv5P$SYeQ&incR@7uR;Yq#LeyNRTuH0OtMmy4$dmtB#v$Nc>K zwQP)RCVx&Z|HYwa7EjK5J)N5ifzokVW8>`0tj!jko3c*TlWi~cj)Wm?w`_F(oMu4z zRiRMvzug%oi@#S08)9#<_fAhw&8)3an3$M;>eb7o%Yh|Ef>=wqj9Lk)sj1Od)F~m( zrlVqwL~Pp3h=$Qll4Dr)hyUbf`AfXVPUqongaa1z~e2~@jgk2!U`u4IMn1v z$?W1q*aLdF+;vPHk*xe&GXc-rWHdVzRQl8b9Fd$CE#ueN#Myu7^V)>%aT+27qQ`WZos&e8fXc|4 zChT*2vMg4WG$iGQjVAg;S@wvkxFQ!ll(4VXphRsV#Vade*yaDcESAlbjToJKa(Y_H zo-kxOlEUG*nZB{NzhBZG;g`W@|4AZw%R2CH|J8^XXHE`J^f7~4*`sH+=Kj`Vy*0Yc zm0?Z7@=qa>r}4k_KWc5c6P;`a8X==0kyim>c56k)M}5B{rUl@T zDDUA!SqO!nbw;ygjiH93+LVh)!Bw&m0v_~dffaG+BKQ8B5!y<(E@Xzp12@jg0$Fj# z+LBDrX4Ue$3s09W=Ccu~AMyl2Lf+@}m3f>jCav{|aRMlMHq-5tbCFQ7ucjWvbF{@* zWgEI+@>k@7(pj|pR6U4j;8{KEKU0sJ^;{JmZM&<9_^()N0TQZ@C@-6@Nb3_$pRf8| z`tE9~H@v)GDV@p6U3y%GZz}#u5mu2)m{;pD59xf4R}#$8I(mc9K~!|L6Q~vQb@Pg9_YK zc8wVs7;YY-&r)O0K__{?$8=%0Dd+z9Ur3li>0fvooay@O+qcIjhJU|MUi1G33(dR~ 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%0D>*cwyd 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 literal 0 HcmV?d00001 diff --git a/docs/silabs/thread/BUILD_FLASH_MAD.md b/docs/silabs/thread/BUILD_FLASH_MAD.md index 7eef051698d819..ca5ac2e3eec886 100644 --- a/docs/silabs/thread/BUILD_FLASH_MAD.md +++ b/docs/silabs/thread/BUILD_FLASH_MAD.md @@ -2,7 +2,7 @@ The Matter Accessory Device, such as the lighting-app, is the actual Matter device that you will commission onto the Matter network and control using the -Chip-Tool. +chiptool. ## Step 1: Get the Image File to Flash the MAD @@ -17,10 +17,13 @@ use one of the following options: - ### **Using the Pre-Built Image File** All of the Matter Accessory Device image files are accessible through the - [Matter Artifacts Page](../general/ARTIFACTS.md). If you are using a pre-built image file, you can skip forward to Step #2: Flashing the MAD. + If you are coming from Simplicity Studio, you may have already installed the + demo image in Simplicity Studio in which case you can skip forward to the + next step. +
    - ### **Building the Matter Image File from the Repository** @@ -38,7 +41,7 @@ use one of the following options: Please note that you only need to build a single device for the demo such as the lighting-app. If you wish to build other examples such as the sleepy end - device you are welcome to it is just not necessary for the demo. + device you are welcome to, but it is not necessary for the demo. The build process puts all image files in the following location: @@ -48,8 +51,8 @@ use one of the following options: ## Step 2: Flash the Matter Accessory Device -For more information on how to flash your Silabs development platform consider -the following instructions: +For more information on how to flash your Silabs development platform see the +following instructions: [How to Flash a Silicon Labs Device](../general/FLASH_SILABS_DEVICE.md) Once your Matter Accessory Device has been flashed it should show a QR code on diff --git a/docs/silabs/thread/CHIP_TOOL.md b/docs/silabs/thread/CHIP_TOOL.md index 544894e1d21f13..b20c68d376d518 100644 --- a/docs/silabs/thread/CHIP_TOOL.md +++ b/docs/silabs/thread/CHIP_TOOL.md @@ -1,4 +1,4 @@ -# Using the ChipTool +# Using the Chiptool The following commands show how to start a new Thread network from the local OTBR, commission an EFR32 Matter End Device (Matter Accessory Device), and then @@ -7,17 +7,17 @@ send the on/off commands with the `mattertool` automated script. | **Command** | **Usage** | | ------------------------ | ------------------------------------------------------------------------- | | `mattertool startThread` | Starts the thread network on the OTBR | -| `mattertool bleThread` | Starts commissioning of a Matter Accessory Device using the ChipTool | -| `mattertool on` | Sends the _on_ command to the Matter Accessory Device using the ChipTool | -| `mattertool off` | Sends the _off_ command to the Matter Accessory Device using the ChipTool | +| `mattertool bleThread` | Starts commissioning of a Matter Accessory Device using the chiptool | +| `mattertool on` | Sends the _on_ command to the Matter Accessory Device using the chiptool | +| `mattertool off` | Sends the _off_ command to the Matter Accessory Device using the chiptool | -You can also use the full ChipTool command as usual (still using mattertool) +You can also use the full chiptool command set (still using mattertool) > `$ mattertool levelcontrol read current-level 106 1`

    -## Informational Section [Optional] +## Advanced information on the Matter Hub ### Image tree @@ -38,7 +38,7 @@ You can also use the full ChipTool command as usual (still using mattertool) ## Open Thread Border Router (OTBR) -For information on what commits to use for the OTBR and RCP, please consult the +For information on what commits to use for the OTBR and RCP, consult the [Matter Repositories and Commit Hashes page](../general/COMMIT_HASHES.md) The pre-installed OTBR is configured for the infrastructure interface eth0. @@ -82,7 +82,7 @@ Change OTBR commit reference/version
    -## Upgrading the Matter - ChipTool +## Upgrading the Matter - Chiptool For more information on the commit hashes used for this demo please consult the following page: @@ -98,7 +98,7 @@ To change the ChipTool commit reference/version, follow these steps: > `$ mattertool buildCT` -The mattertool script centralizes and simplifies the use of ChipTool and +The mattertool script centralizes and simplifies the use of chiptool and starting a clean thread network.
    @@ -109,15 +109,15 @@ Available commands: | ------------ | ------------------------------------------------------------------------------------------------------------- | | help | Prints help options | | startThread | Start a new thread network and store the operational thread dataset for the commissioning purpose (bleThread) | -| bleThread | For Matter Ble thread commissioning with an EFR32 device | -| bleWifi | For Matter Ble Wi-FI commissioning with an EFR32 device | -| buildCT | Clean build of the chip-tool | +| bleThread | For Matter Bluetooth LE thread commissioning with an EFR32 device | +| bleWifi | For Matter Bluetooth LE Wi-FI commissioning with an EFR32 device | +| buildCT | Clean build of the chiptool | | cleanVars | Erase every Set variable used in the script. They will be set back to default or randomized value | -| off | Turn off the Light on the already commissioned EFR32 device | -| on | Turn on the Light on the already commissioned EFR32 device | -| toggle | Toggle the Light on the already commissioned EFR32 device | +| off | Turn off the Light on the already-commissioned EFR32 device | +| on | Turn on the Light on the already-commissioned EFR32 device | +| toggle | Toggle the Light on the already-commissioned EFR32 device | | parsePayload | Parse the given Payload (QrCode string) | -| rebuildCT | Rebuild the chip-tool | +| rebuildCT | Rebuild the chiptool | | vars | Print the Variables in use by the script |
    @@ -163,7 +163,7 @@ available options to change some of them. > remain at the default set value. > For commissioning commands (bleThread, bleWifi) NODE_ID will be randomized if -> it is the same as the last paring +> it is the same as the last pairing > When the startThread command is used, THREAD_DATA_SET will be assigned with > the right operation dataset for the created Thread Network. diff --git a/docs/silabs/thread/DEMO_OVERVIEW.md b/docs/silabs/thread/DEMO_OVERVIEW.md index b869fbcbd9139c..c1de7026acbbb5 100644 --- a/docs/silabs/thread/DEMO_OVERVIEW.md +++ b/docs/silabs/thread/DEMO_OVERVIEW.md @@ -1,10 +1,10 @@ # Matter over Thread Demo Overview -This section reviews the steps for running an example lighting-app for Matter +This section reviews the steps for running an example lighting app for Matter over Thread. See [this file](THREAD.md) for an introduction to the Matter over Thread setup. -At a high level, we will walk through starting a Thread network, commissioning a +At a high level, this section walks through starting a Thread network, commissioning a new device to the Thread network using Bluetooth LE, and finally sending a basic OnOff command to the end device. @@ -12,7 +12,7 @@ OnOff command to the end device. ## Step 0: Prerequisites -Before beginning your Silicon Labs Matter project be sure you have satisfied all +Before beginning your Silicon Labs Matter over Thread project be sure you have satisfied all of the [Matter Hardware](../general/HARDWARE_REQUIREMENTS.md) and [Matter Software](../general/SOFTWARE_REQUIREMENTS.md) Requirements. @@ -20,8 +20,8 @@ of the [Matter Hardware](../general/HARDWARE_REQUIREMENTS.md) and ## Step 1: Setting up the Matter Hub (Raspberry Pi) -The Matter Hub consists of the OTBR and the ChipTool running on a Raspberry Pi. -Silicon Labs has developed a Raspberry Pi image that can be downloaded and +The Matter Hub consists of the Open Thread Border Router (OTBR) and the chiptool running on a Raspberry Pi. +Silicon Labs has developed a Raspberry Pi image combining the OTBR and chiptool that can be downloaded and flashed onto an SD Card, which is then inserted into the Raspberry Pi. The Matter Controller sends IPv6 packets to the OTBR, which converts the IPv6 diff --git a/docs/silabs/thread/FAQ.md b/docs/silabs/thread/FAQ.md index 511448391cc7fe..0065009425cc21 100644 --- a/docs/silabs/thread/FAQ.md +++ b/docs/silabs/thread/FAQ.md @@ -4,23 +4,23 @@ - Why are the `mattertool` commands not working after all the steps? - - You should check if the Radio Co-Processor (RCP) image was built and/or - flashed correctly to the device + - Check if the Radio Co-Processor (RCP) image was built and/or + flashed correctly to the device. - Make sure you see a QR code on the display of the Matter Accessory - Device (MAD) + Device (MAD). - Make sure the images being used to flash the Raspberry Pi, RCP and MAD - are correct + are correct.
    - How can I find the IP address of my Raspberry Pi? - First, make sure the Raspberry Pi is connected to a network (ethernet or - Wi-Fi). This page has more information on the same: + Wi-Fi). This page has more information: [Setting up the Matter Hub (Raspberry Pi)](RASPI_IMG.md) - Refer to this page for general questions on finding the Raspberry Pi on your network: [Finding your Raspberry Pi](../general/FIND_RASPI.md) - - For more detailed information, please refer to this page: + - For more detailed information, refer to this page: [Raspberry Pi Remote Access](https://www.raspberrypi.com/documentation/computers/remote-access.html)
    diff --git a/docs/silabs/thread/RASPI_IMG.md b/docs/silabs/thread/RASPI_IMG.md index 91f96abf9ff9d7..6a3af5decc1f35 100644 --- a/docs/silabs/thread/RASPI_IMG.md +++ b/docs/silabs/thread/RASPI_IMG.md @@ -1,6 +1,6 @@ # Setting up the Matter Hub (Raspberry Pi) -The Matter Hub consists of the Open Thread Border Router (OTBR) and the ChipTool +The Matter Hub consists of the Open Thread Border Router (OTBR) and the chiptool running on a Raspberry Pi. Silicon Labs has developed a Raspberry Pi image that can be downloaded and flashed onto an SD Card for the Raspberry Pi. @@ -30,7 +30,7 @@ The image can be downloaded from the > Please note that this image, even when zipped up, is quite large ~5GB so this > download will take a while if you are on a slow connection. This image > includes both the Ubuntu operating system as well as the OTBR and Chip-Tool, -> so there is a lot of sofware pre-packaged in this image, hence the size. +> hence the size.
    @@ -60,35 +60,38 @@ Wi-Fi network. > connect your Raspberry Pi to a network as you can interface with it directly > as you would with any computer running Ubuntu Linux. -The preference here is to use Ethernet, however if you are using Wi-Fi for your -connection to the Raspberry Pi, please see +The preference here is to use Ethernet, however, if you are using Wi-Fi for your +connection to the Raspberry Pi, see [Connecting Raspberry Pi to Wi-Fi](https://www.raspberrypi.com/documentation/computers/configuration.html#configuring-networking) for instructions on how to connect your Raspberry Pi to a Wi-Fi network. -Once you have connected your Raspberry Pi to the network, you will want to -connect to your Raspberry Pi over SSH. In order to do this you will need the IP -address of your Raspberry Pi. Please see the -[Finding Your Raspberry Pi page](../general/FIND_RASPI.md) for more information -on finding the Raspberry Pi on the local network. +Once you have connected your Raspberry Pi to the network, you need to connect to +your Raspberry Pi over SSH. This requires the IP address of your Raspberry Pi. +See [Finding Your Raspberry Pi](../general/FIND_RASPI.md) for more information +on finding the IP address and connecting to the Raspberry Pi by SSH. . #### Raspberry Pi Login Credentials -- user: **ubuntu** -- password: **raspberrypi** +- user: **`ubuntu`** +- password: **`raspberrypi`** **OR** **`ubuntu`** (0.3.0 and above) -> When you log into the Raspberry Pi for the first time over SSH you may receive -> a warning regarding a 'key fingerprint' - this is normal and expected. You can -> get past this by just typing '_yes_' at the prompt. +> **Note:** On later images of the Matter Hub the password has changed to the +> default "ubuntu". you will be asked to change your password the first time you +> log in. You may change it to whatever value you like. + +> **Note:** When you log into the Raspberry Pi for the first time over SSH you +> may receive a warning regarding a 'key fingerprint' - this is normal and +> expected. You can get past this by typing '_yes_' at the prompt.
    ### Step 4: Using the Matter Hub -The ChipTool, also referred to as the `mattertool`, is provided as a pre-built +The chiptool, also referred to as the `mattertool`, is provided as a pre-built application inside the Raspberry Pi image. -Please refer to the ChipTool page for information on using the Matter Hub with -`mattertool` commands: [ChipTool page](./CHIP_TOOL.md) +Refer to the [ChipTool page](./CHIP_TOOL.md) for information on using the Matter +Hub with `mattertool` commands. --- diff --git a/docs/silabs/thread/RCP.md b/docs/silabs/thread/RCP.md index 3188f075e0b7c9..e18258c301efc5 100644 --- a/docs/silabs/thread/RCP.md +++ b/docs/silabs/thread/RCP.md @@ -17,8 +17,8 @@ First, in order to flash the RCP, connect it to your laptop directly by USB. We have provided two ways to get the required image to flash the RCP. You can use one of the following options: -1. Use the pre-built image `ot-rcp` image file -2. Build the image file from the '`ot-efr32`' repository, which is listed on the +1. Use the pre-built 'ot-rcp' image file +2. Build the image file from the 'ot-efr32' repository, which is listed on the [Matter Repositories and Commit Hashes page](../general/COMMIT_HASHES.md)
    @@ -27,7 +27,7 @@ use one of the following options: RCP image files for all demo boards are accessible through the [Matter Artifacts Page](../general/ARTIFACTS.md). If you are using a pre-built -image file, you can skip forward to Step #2: Flashing the RCP. +image file, you can skip to [Step #2: Flash the RCP](#step-2-flash-the-rcp).
    @@ -35,7 +35,7 @@ image file, you can skip forward to Step #2: Flashing the RCP. **1. Clone the ot-efr32 repository** -The ot-efr32 repo is located in Github here: +The 'ot-efr32' repo is located in Github here: https://github.com/SiliconLabs/ot-efr32. You must have Git installed on your local machine. To clone the repo use the @@ -65,10 +65,10 @@ https://github.com/SiliconLabs/ot-efr32/blob/main/src/README.md to build the RCP image for your EFR platform. This process will build several images for your board. The filename of the image -to be flashed onto the board to create an RCP is '`ot-rcp.s37`'. +to be flashed onto the board to create an RCP is 'ot-rcp.s37'. The output of the build process puts all the image files in the following -location: `/ot-efr32/build/` +location: '/ot-efr32/build/'
    @@ -77,9 +77,8 @@ location: `/ot-efr32/build/` Once you get the RCP image, either by downloading a prebuilt image or building the image file from the repo, you can flash it onto your device. This is done directly from your laptop and not through the Raspberry Pi, so make sure that -the device is connected directly over USB to your laptop. Further information on -flashing a Silicon Labs device is located here: -[How to Flash a Silicon Labs Device](../general/FLASH_SILABS_DEVICE.md) +the device is connected directly over USB to your laptop. See +[How to Flash a Silicon Labs Device](../general/FLASH_SILABS_DEVICE.md) for more information. Once you have flashed the image, the device becomes the RCP. Disconnect it from you laptop and connect it via USB to the Raspberry Pi. diff --git a/docs/silabs/thread/THREAD.md b/docs/silabs/thread/THREAD.md index 7006dfe104d288..230a3d89ee029c 100644 --- a/docs/silabs/thread/THREAD.md +++ b/docs/silabs/thread/THREAD.md @@ -1,17 +1,18 @@ # Introduction -This section provides an overview of the Matter 15.4 setup and operation. A typical simple Matter 15.4 (Thread) network setup is shown in the following -image. +This section provides an overview of the Matter 15.4 setup and operation. A +typical simple Matter 15.4 (Thread) network setup is shown in the following +image. **Matter 15.4 Setup** ![Overview](./images/thread_overview.png) The setup consists of the following four elements: -1. A **Controller** such as an app running on a phone or the ChipTool running +1. A **Controller** such as an app running on a phone or the chiptool running on a Linux box or Raspberry Pi. 2. An Open Thread Border Router (**OTBR**) running on a Linux box or Raspberry Pi. -3. A Radio Co-Processor (**RCP**), which the OTBR uses to communicate with +3. A Radio Co-Processor (**RCP**), which the OTBR uses to communicate with the Thread network (not shown). This is attached to the Raspberry Pi. 4. An End Device such as a light or switch, which is the Matter Accessory Device (**MAD**). @@ -19,7 +20,7 @@ The setup consists of the following four elements: The flow of the setup described above is as follows: 1. The controller commissions the End Device directly over Bluetooth – this - makes the End Device join the Thread network and the CHIP fabric. + makes the End Device join the Thread network and the Matter "Fabric". 2. After commissioning, the Bluetooth connection is terminated and all further communication is done over Matter. 3. The controller sends ZCL commands, such as the OnOff Toggle, and the End @@ -28,16 +29,18 @@ The flow of the setup described above is as follows:
    -A Matter network can be built in a number of ways using a -combination of Silicon Labs hardware, a Raspberry Pi, and any external -controller (Macbook, Ubuntu, Android, etc.) +A Matter network can be built in a number of ways using a combination of Silicon +Labs hardware, a Raspberry Pi, and any external controller (Macbook, Ubuntu, +Android, etc.) The suggested method involves using a Raspberry Pi to function as both the controller and the OTBR, with a Silicon Labs device as the MAD. -An alternate configuration is to use a Macbook as the controller, a -Raspberry Pi as the OTBR, and a Silicon Labs Device as the MAD. This requires -additional routing between the controller and OTBR. +An alternate configuration is to use a Macbook as the controller, a Raspberry Pi +as the OTBR, and a Silicon Labs Device as the MAD. This requires additional +routing between the controller and OTBR. ----- -[Table of Contents](../README.md) | [Thread Demo](./DEMO_OVERVIEW.md) | [Wi-Fi Demo](../wifi/DEMO_OVERVIEW.md) \ No newline at end of file +--- + +[Table of Contents](../README.md) | [Thread Demo](./DEMO_OVERVIEW.md) | +[Wi-Fi Demo](../wifi/DEMO_OVERVIEW.md) diff --git a/docs/silabs/wifi/BUILD_CHIP_ENV.md b/docs/silabs/wifi/BUILD_CHIP_ENV.md index 0a9d80f778857e..8251161b63e942 100644 --- a/docs/silabs/wifi/BUILD_CHIP_ENV.md +++ b/docs/silabs/wifi/BUILD_CHIP_ENV.md @@ -1,43 +1,162 @@ # Building Your Wi-Fi Matter End Device and the Chip-Tool -## Compiling the Lighting-app +# Build Environment using Linux + +This section will go through the steps required to build the demo using Linux. + +> **Do not execute any commands on this page as ROOT (no _su_ required), unless +> specified** + +
    + +## Prepare Linux Packages + +Update the latest packages by typing following commands in terminal: + +```shell +$ sudo apt update +$ sudo apt install +``` + +
    + +## Prerequisites for Matter (CHIP) project on Linux + +### 1. Installing packages on Ubuntu Laptop/PC + +- Open the Linux terminal from Start menu +- Install required packages on Ubuntu Laptop/PC using the following commands: + + ```shell + $ sudo apt install git gcc g++ pkg-config libssl-dev libdbus-1-dev \ + libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \ + python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev + ``` + +
    + +### 2. Matter codebase + +- Check out Matter codebase from GitHub: + + - Download the + [Matter codebase](https://github.com/SiliconLabs/matter.git) from here + as follows: + + `$ git clone https://github.com/SiliconLabs/matter.git` + +- Sync submodules by running the following commands: + + ```shell + $ cd matter + $ ./scripts/checkout_submodules.py --shallow --platform efr32 + ``` + +- Environment Builds + + - Activate environment builds: + + `$ . scripts/bootstrap.sh` + + - Create a directory where binaries will be updated: + + `$ mkdir out` + +- **[Optional:** Increasing stack size **]**
      Navigate to + `git/matter` and open the file in the path + `examples/lighting-app/efr32/include/FreeRTOSConfig.h`. Find the macro: + \``configMINIMAL_STACK_SIZE`\`, and change the macro value from `140` to + **`320`**. + +
    + +
    + +## 3 .Compiling the Lighting-app The following commands are for building the example. Depending on which device you are using, select the appropriate build command to run. -> Please note that these examples reference a specific board the BRD4161A. You -> may be using a different board like the BRD4186C, please change the board -> referenced in the build command to your specific board before running the -> command. +> Please change the board referenced in the build command to your specific board +> before running the command. Build command for RS911x + EFR32MG12: -> `$ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/rs911x_lighting BRD4161A --wifi rs911x |& tee out/rs911x_lighting.out` +`$ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/rs911x_lighting BRD41xxx --wifi rs911x |& tee out/rs911x_lighting.log` Build command for WF200 + EFR32MG12: -> `$ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/wf200_lighting BRD4161A is_debug=false --wifi wf200 |& tee out/rs911x_lighting.out` +`$ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/wf200_lighting BRD41xxx is_debug=false --wifi wf200 |& tee out/wf200_lighting.log` Build command for RS911x + EFR32MG24: -> `$ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/rs911x_mg24_lighting BRD4186C disable_lcd=true show_qr_code=false use_external_flash=false --wifi rs911x` +`$ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/rs911x_lighting BRD41xxx disable_lcd=true show_qr_code=false use_external_flash=false --wifi rs911x` Build command for WF200 + EFR32MG24: -> `$ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/rs911x_mg24_lighting BRD4186C disable_lcd=true show_qr_code=false use_external_flash=false --wifi wf200` +`$ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/wf200_lighting BRD41xxx disable_lcd=true show_qr_code=false use_external_flash=false chip_build_libshell=false --wifi wf200` -Run the following: +MG12 Boards: + +``` +BRD4161A, BRD4163A, BRD4164A +``` + +MG24 Boards: + +``` +BRD4186C, BRD4187C +``` + +By using the following flags we can enable or disable the features of lighting +application. + +1. `rs91x_wpa3_only` : To use rs91x wifi in wpa3 enable this flag while + building. + + ```shell + $ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/rs911x_lighting BRD41xxx rs91x_wpa3_only=true --wifi rs911x |& tee out/rs911x_lighting.log + ``` -> `$ cd matter` +2. `chip_enable_wifi_ipv4` : To enable ipv4 of device add this flag while + building the application. -> `$ ` + ```shell + $ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/rs911x_lighting BRD41xxx chip_enable_wifi_ipv4=true --wifi rs911x |& tee out/rs911x_lighting.log + ``` + +3. `To enable different options for WPA/WPA2` : + + 1)Get the router address by entering `route -n` or ifconfig of ipconfig. + + 2)Enter router address in the browser and enter the appropriate username and + password. + + 3)Select appropriate band. + + 4)In security, select type. + + > Note: It is enabled by default for the rs911x, wf200. + +4. `Flag to get the complete logs without truncation` : + + ```shell + $ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/rs911x_lighting BRD41xxx segger_rtt_buffer_size_up=2068 --wifi rs911x |& tee out/rs911x_lighting.log + ``` + +Run the following: + +```shell +$ cd matter +$ +```
    -> Look for build problems in `out/*.out`, which is the log file that was +> Look for build problems in `out/*.log`, which is the log file that was > generated by the above command -The generated software can be found in `out/rs911x_xxx/BRD4161A/*.out`. +The generated software can be found in `out/rs911x_xxx/BRD4161A/*.log`. This is what you will flash into the EFR32. @@ -48,16 +167,15 @@ This is what you will flash into the EFR32. - Build the ChipTool on a laptop which has Wi-Fi and Bluetooth LE - Run the following commands: - > `$ cd $MATTER_WORKDIR/matter`
    - - > `$ ./scripts/examples/gn_build_example.sh examples/chip-tool out/standalone` + ```shell + $ cd $MATTER_WORKDIR/matter + $ ./scripts/examples/gn_build_example.sh examples/chip-tool out/standalone + ``` This will build chiptool in `out/standalone` -Now you have all the binaries to flash onto the Silicon Labs platform (MG12, -MG24, etc...). For more information on how to flash a Silicon Labs device please -consult the [Flashing Silicon Labs Device](../general/FLASH_SILABS_DEVICE.md) -page. +For more information on how to flash a Silicon Labs device please consult the +[Flashing Silicon Labs Device](../general/FLASH_SILABS_DEVICE.md) page. --- diff --git a/docs/silabs/wifi/BUILD_PI_ENV.md b/docs/silabs/wifi/BUILD_PI_ENV.md index 08f745fced8dfc..ee32d26a0a854f 100644 --- a/docs/silabs/wifi/BUILD_PI_ENV.md +++ b/docs/silabs/wifi/BUILD_PI_ENV.md @@ -10,7 +10,7 @@ To flash the Ubuntu OS onto the SD card: 1. Insert the flashed SD card (directly or using a card reader) into the laptop/PC that will run the Raspberry Pi Imager tool 2. Launch Raspberry Pi 4 Imager -3. Click on 'Choose OS' --> 'Other General-purpose OS' --> 'Ubuntu' --> 'Ubuntu +3. Click 'Choose OS' --> 'Other General-purpose OS' --> 'Ubuntu' --> 'Ubuntu 22.04 64-bit server OS' 4. Click 'Storage' and select the 'SD card detect' 5. This Raspberry Pi 4's console can be accessed in multiple ways, refer to: @@ -48,23 +48,23 @@ start using the Raspberry Pi: > `$ sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \ > libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \ - > python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev' + > python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev`
    > If you see any popups between installs, you can select 'Ok' or 'Continue' ## Installing prerequisites on Raspberry Pi 4 -Finally, install some Raspberry Pi specific dependencies: +Finally, install some Raspberry Pi-specific dependencies: -In -[this link to the Project CHIP GitHub Site](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/BUILDING.md), -follow the instructions in the section "Installing prerequisites on Raspberry Pi +Follow the instructions in +[the Project CHIP GitHub Site](https://github.com/project-chip/connectedhomeip/blob/master/docs/guides/BUILDING.md), +in the section "Installing prerequisites on Raspberry Pi 4". ## Bluetooth Setup -Make sure BLE is up and running on Raspberry Pi. Raspberry Pi internally has +Make sure Bluetooth LE (BLE) is up and running on Raspberry Pi. Raspberry Pi internally has some issues with BLE that may cause it to crash. Because BLE is used for commissioning on Matter, make sure BLE is running. diff --git a/docs/silabs/wifi/DEMO_OVERVIEW.md b/docs/silabs/wifi/DEMO_OVERVIEW.md index 4352b7e949705c..3f86498bee2548 100644 --- a/docs/silabs/wifi/DEMO_OVERVIEW.md +++ b/docs/silabs/wifi/DEMO_OVERVIEW.md @@ -1,53 +1,69 @@ # Matter over Wi-Fi Demo Overview -This document walks through the steps to build the Matter Lighting-app project using -EFR32 BRD4161A, BRD4163A, or BRD4164A + RS911X and EFR32 BRD4161A, BRD4163A, or BRD4164A + WF200. -Silicon Labs has two families of Wi-Fi adapters (1. RS911X 2. WF200). Both are supported in this Wi-Fi -port of Matter. +This document walks through the steps to build the Matter Lighting-app project +using + +`EFR32 BRD4161A, BRD4163A, or BRD4164A + RS911X and EFR32 BRD4161A, BRD4163A, or BRD4164A + WF200`, + +`EFR32 BRD4186C, BRD4187C + RS911X, or EFR32 BRD4186C, BRD4187C + WF200`. + +Silicon Labs has two families of Wi-Fi adapters (1. RS911X 2. WF200). Both are +supported in this Wi-Fi port of Matter. ## Step 1: Matter Wi-Fi Prerequisites -Before you being running the Matter Wi-Fi demo or developing for Wi-Fi you will want to make sure that you have all the required hardware and software for each use case. +Before you being running the Matter Wi-Fi demo or developing for Wi-Fi you will +want to make sure that you have all the required hardware and software for each +use case. -1. [Matter Wi-Fi Prerequisites](WIFI_PREREQS.md) +1. [Matter Wi-Fi Prerequisites](WIFI_PREREQS.md) - This page goes through the hardware and software (host side) required for the demo. + This page goes through the hardware and software (host side) required for + the demo. ## Step 2: Building the Chip-Tool for Wi-Fi -In order to run the Matter Wi-Fi demo you will need to run the Chip-Tool on one of two platforms, either Linux/Mac or Raspberry Pi. +In order to run the Matter Wi-Fi demo you will need to run the Chip-Tool on one +of two platforms, either Linux/Mac or Raspberry Pi. 1. [Build Linux Environment](BUILD_CHIP_ENV.md) - This page contains instructions to set up the build environment on a Linux machine. - The instructions provide build steps for the application and the ChipTool. + This page contains instructions to set up the build environment on a Linux + machine. The instructions provide build steps for the application and the + ChipTool. 1. [Build Raspberry-Pi Environment](BUILD_PI_ENV.md) - This page contains instructions to set up the build environment on the Raspberry - Pi. This is an alternative if you do not have a Linux machine. + This page contains instructions to set up the build environment on the + Raspberry Pi. This is an alternative if you do not have a Linux machine. ## Step 3: Building the Matter Accessory Device (MAD) for Wi-Fi -If you are running the demo, you can simply download the proper image for your Matter Accessory Device from the [Matter Software Artifacts Page](../general/ARTIFACTS.md). Otherwise if you wish to build your Matter Accessory Device from scratch, you can begin with the [Software Setup](SW_SETUP.md): +If you are running the demo, you can simply download the proper image for your +Matter Accessory Device from the +[Matter Software Artifacts Page](../general/ARTIFACTS.md). Otherwise if you wish +to build your Matter Accessory Device from scratch, you can begin with the +[Software Setup](SW_SETUP.md): 1. [Software Setup](SW_SETUP.md) - This page contains instructions to build the Lighting-app over Wi-Fi. Build commands are provided for both - the RS911x and WF200 adapters. + This page contains instructions to build the Lighting-app over Wi-Fi. Build + commands are provided for both the RS911x and WF200 adapters. ## Step 4: Running the Demo 1. [Running Matter Demo over Wi-Fi using Linux](RUN_DEMO.md) - This contains instructions to run the Matter Wi-Fi demo using ChipTool running - on a Linux Machine (either Laptop or Raspberry Pi) - follow this after - successfully executing the above steps. + This contains instructions to run the Matter Wi-Fi demo using ChipTool + running on a Linux Machine (either Laptop or Raspberry Pi) - follow this + after successfully executing the above steps. 1. [optional] [Running Matter Demo over Wi-Fi using Android](WIFI_ANDROID.md) This part give you steps to run the Matter Wi-Fi demo using ChipTool running on an Android phone (either Laptop or Raspberry Pi). ----- -[Table of Contents](../README.md) | [Thread Demo](../thread/DEMO_OVERVIEW.md) | [Wi-Fi Demo](./DEMO_OVERVIEW.md) \ No newline at end of file +--- + +[Table of Contents](../README.md) | [Thread Demo](../thread/DEMO_OVERVIEW.md) | +[Wi-Fi Demo](./DEMO_OVERVIEW.md) diff --git a/docs/silabs/wifi/FAQ.md b/docs/silabs/wifi/FAQ.md index d8fcdc19488cac..884113809df3e6 100644 --- a/docs/silabs/wifi/FAQ.md +++ b/docs/silabs/wifi/FAQ.md @@ -10,7 +10,7 @@ **Command leading to error:** -> `$ out/standalone/chip-tool pairing ble-wifi 1122 mySSID myPassword 20202021 3840` +`$ out/standalone/chip-tool pairing ble-wifi 1122 mySSID myPassword 20202021 3840` > Where `mySSID` is **your AP's SSID** and `mypassword` is **your AP's > password**. @@ -19,11 +19,11 @@ **Error example:** +```log [1659464425.856025][34818:34823] CHIP:DL: HandlePlatformSpecificBLEEvent 16386 - [1659464425.856035][34818:34823] CHIP:IN: Clearing BLE pending packets. - [1659464425.856055][34818:34823] CHIP:IN: BleConnection Error: ../../examples/chip-tool/third_party/connectedhomeip/src/platform/Linux/bluez/Helper.cpp:1775: CHIP Error 0x000000AC: Internal error +``` > This error indicates that the Bluetooth connection between your system and > laptop is failing. Follow the given procedure and then retry the ChipTool @@ -34,18 +34,25 @@ **Procedure:** 1. Stop Bluetooth service: - > `$ systemctl stop bluetooth.service` + + `$ systemctl stop bluetooth.service` + 2. Wait 20 seconds 3. Restart Bluetooth service: - > `$ sudo service bluetooth restart` + + `$ sudo service bluetooth restart` + 4. Unblock Bluetooth service: - > `$ rfkill unblock all` + + `$ rfkill unblock all` + 5. Enable Bluetooth service: - > `$ sudo systemctl enable bluetooth` + + `$ sudo systemctl enable bluetooth` + 6. Issue the pairing command: - > `$ out/standalone/chip-tool pairing ble-wifi 1122 mySSID mypassword 20202021 3840` - >
    + `$ out/standalone/chip-tool pairing ble-wifi 1122 mySSID mypassword 20202021 3840` > Where `mySSID` is **your AP's SSID** and `mypassword` is **your AP's > password**. @@ -56,14 +63,16 @@
    -When trying to commission the system, if an `Unsupported certificate format` -error (example below) is encountered, follow the procedure stated below. +> When trying to commission the system, if an `Unsupported certificate format` +> error (example below) is encountered, follow the procedure stated below.
    **Error example:** - [1659631352.672826][5076:5076] CHIP:TOO: Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1275: CHIP Error 0x00000050: Unsupported certificate format +```log +[1659631352.672826][5076:5076] CHIP:TOO: Run command failure: ../../examples/chip-tool/third_party/connectedhomeip/src/controller/CHIPDeviceController.cpp:1275: CHIP Error 0x00000050: Unsupported certificate format +```
    @@ -72,12 +81,105 @@ error (example below) is encountered, follow the procedure stated below. - Delete the existing certificates on your laptop with the following command run from the `/connectedhomeip` directory: - > $ /bin/rm/tmp/chip\_\* + `$ /bin/rm /tmp/chip_*` - Issue the commissioning command
    +### 3. WLAN connection fails from RS9116 during commissioning when channel 13 is selected on the AP: + +
    + +```c +The required channel becomes available for connection when the WLAN connection +region is configured during compilation to one that supports the channel. For +e.g. Japan for channel 13. Refer below build instructions. + +Instructions : + +Before building, make sure the WLAN connection region is configured correctly by reviewing/modifying the following lines under + +/third_party/silabs/matter_support/wifi/rs911x/rsi_wlan_config.h + +//Make sure this is set to RSI_ENABLE + +#define RSI_SET_REGION_SUPPORT RSI_ENABLE + +Note that the channels available for WLAN connection depend on the region selected +// Make sure this is set to 1 to configure from RSI_REGION_CODE value below + +#define RSI_SET_REGION_FROM_USER_OR_BEACON 1 + +1: region configurations taken from user +0: region configurations taken from beacon +#define RSI_REGION_CODE 3 + +0 : Default Region domain +1 : US +2 : EUROPE +3 : JAPAN +``` + +
    + +### 4 . Incorrect firmware version + +
    + +```shell +cd ./third_party/silabs/wiseconnect-wifi-bt-sdk/firmware +``` + +You will get appropriate firmware in the above mentioned path. + +Note: + +1. How to check the current using firmware version? + + > You can find the currently using firmware version in the DUT log. + +2. How to check whether you are using correct firmware vesrsion or not? + + > Compare last 5 digits of fimware version mention in the above path with + > the currently using firmware version. + +
    + +### 5 . Homepod associated failures + +
    + +`Error: if commissioning failure with error :3000001` (homepod is on the +network) + +> Remove the homepod and retry to do the commissioning. + +
    + +### 6 . Commissioning failure at step 18 + +
    + +> 1. Verify router configuration specifically related to IPV6 SLAAC, Internet +> Group Management Protocol (IGMP) snooping. +> 2. Delete all the files of chip-tool /tmp folder. (`rm -rf /tmp/chip_*`) +> 3. Factory reset of your access point after checking the router configuration. + +
    + +### 7. Commissioning failure at step 16 + +> Verify the access point settings, SSID, PSK, secirity type, REGION, CHANNEL. + +
    + +### 8 . Inconsistent logs + +> Verify external power is supplied to rs911x + +
    + --- [Table of Contents](../README.md) | [Thread Demo](../thread/DEMO_OVERVIEW.md) | diff --git a/docs/silabs/wifi/RUN_DEMO.md b/docs/silabs/wifi/RUN_DEMO.md index 2d9cd5a90f0f89..cf0ff9dd436c64 100644 --- a/docs/silabs/wifi/RUN_DEMO.md +++ b/docs/silabs/wifi/RUN_DEMO.md @@ -1,56 +1,60 @@ -# Runing the Matter Demo over Wi-fi +# Running the Matter Demo over Wi-fi -## Flashing images/binaries on MG12 platform using Ozone, Simplicity Studio or Simplicity Commander. +## Flashing images/binaries on MG12, MG24 platform using Ozone, Simplicity Studio or Simplicity Commander. -1. Plug the WSTK and EFR into the laptop. +> Note: If you are coming from Simplicity Studio, you may have already installed +> the demo image in Simplicity Studio in which case you can skip forward to the +> next step. -2. Launch Ozone, Simplicity Studio or Simplicity Commander Standalone - this - will display a GUI. If you are not using Ozone, you can follow the - instructions to - [Flash a Silicon Labs Device](../general/FLASH_SILABS_DEVICE.md) +1. Plug the WSTK and EFR into the laptop. -3. In 'New Project Wizard': +2. Launch Ozone, Simplicity Studio or Simplicity Commander Standalone - this + will display a GUI. If you are not using Ozone, you can follow the + instructions to + [Flash a Silicon Labs Device](../general/FLASH_SILABS_DEVICE.md) + +3. In 'New Project Wizard': 1. Click the three-dots on the 'Device' tab and select 'Manufacturer' as '`Silicon Labs`' - 2. Select 'Device' as '`EFR32MG12PXXF1024`' or `EFR32MG24XX` depending on - the device you are using. + 2. Select 'Device' as '`EFR32MG12PxxxF1024`' or `EFR32MG24Bxxx1536` + depending on the device you are using. 3. Click 'OK' 4. The 'Register set' tab will get filled automatically 5. 'Peripherals' tab need not be changed as it is optional -4. Click 'Next' - the window that is displayed will contain: +4. Click 'Next' - the window that is displayed will contain: - - Serial Number: Read from device - - Target Interface: JTAG - - Speed: 4MHz - - Host Interface: USB - - There will be one product in the 'Emulators connected via USB' tab - - select this and click 'Next' + - Serial Number: Read from device + - Target Interface: JTAG + - Speed: 4MHz + - Host Interface: USB + - There will be one product in the 'Emulators connected via USB' tab - + select this and click 'Next' -5. Click on the 'Silicon Labs device' detected, and then click 'Next' +5. Click on the 'Silicon Labs device' detected, and then click 'Next' -6. You will be asked to select the image/binary to be loaded: click on the - three-dots on that tab and navigate to '`out/rs911x_lighting/BRD4161A`' - through 'Browse', select the file named `chip-efr32-lighting-example.out` and - click 'Next'. This is the image built in previous step. +6. You will be asked to select the image/binary to be loaded: click on the + three-dots on that tab and navigate to '`out/rs911x_lighting/BRD4161A`' + through 'Browse', select the file named `chip-efr32-lighting-example.out` + and click 'Next'. This is the image built in previous step. - > Note that you may be using a different board like the BRD4186C in which - > case your image will be in a directory corresponding to that board - > identifier. + > Note that you may be using a different board like the BRD4163A, BRD4164A, + > BRD4186C, or BRD4187C in which case your image will be in a directory + > corresponding to that board identifier. -7. Make sure the next screen has 'Initial PC' selected as 'ELF Entry Point' - - click 'Finish' +7. Make sure the next screen has 'Initial PC' selected as 'ELF Entry Point' - + click 'Finish' > Ignore Diagnostics warning about 'FreeRTOS' detected - click 'Continue' -8. Select 'Download and Reset Program' in the dropdown next to the Power button - on the top left of the page +8. Select 'Download and Reset Program' in the dropdown next to the Power button + on the top left of the page > The Silabs chip, EFR32MG12 or EFR32MG24 will be erased and programmed -9. Run the image by clicking the 'Play' button on the top left (or press the F5 - key) +9. Run the image by clicking the 'Play' button on the top left (or press the F5 + key) > The output of the EFR32 can be viewed on the console of the Ozone GUI @@ -92,9 +96,9 @@ > '\$SSID' is a placeholder for your Wi-Fi SSID and '\$PSK' is a placeholder > for the password of your Wi-Fi network. -3. To turn **on** the LED on the EFR32MG12: +3. To turn **on** the LED on the EFR32MG12 or EFR32MG24 : > `$ out/standalone/chip-tool onoff on 1122 1` -4. To turn **off** the LED on the EFR32MG12: +4. To turn **off** the LED on the EFR32MG12 or EFR32MG24 : > `$ out/standalone/chip-tool onoff off 1122 1` If there are any failures, run the following command and then re-run the @@ -113,8 +117,8 @@ need to unplug the Ethernet connection and try running the Chip-Tool as in step As the device remembers the Access Point credentials given for commissioning, if you want to run the demo multiple times, do a factory reset by pressing the BTN0 -on EFR32 MG12 for about 6-7 seconds. The LED0 will flash 3 times and the QR code -will appear again on the LCD screen. +on EFR32MG12 or EFR32MG24 for about 6-7 seconds. The LED0 will flash 3 times and +the QR code will appear again on the LCD screen.
    diff --git a/docs/silabs/wifi/SW_SETUP.md b/docs/silabs/wifi/SW_SETUP.md index a3bc3978fb1588..090225284abac2 100644 --- a/docs/silabs/wifi/SW_SETUP.md +++ b/docs/silabs/wifi/SW_SETUP.md @@ -22,48 +22,59 @@ application images. 1. To download the [SiliconLabs Matter codebase](https://github.com/SiliconLabs/matter.git) run - the following commands. Create a working directory named `git`: + the following commands. - > `$ mkdir git` + ```shell + $ git clone https://github.com/SiliconLabs/matter.git + ``` - > `$ cd git` +2. Bootstrapping: - > `$ MATTER_WORKDIR=git`    --> We will use $MATTER_WORKDIR later + ```shell + $ cd matter + $ ./scripts/checkout_submodules.py --shallow --recursive --platform efr32 + $ . scripts/bootstrap.sh + # Create a directory where binaries will be updated/compiled called `out` + $ mkdir out + ``` - > `$ git clone https://github.com/SiliconLabs/matter.git` +
    -2. Bootstrapping: +## Building Software + +The following commands are for building the example. Depending on which device +you are using, select the appropriate build command to run. - > `$ cd matter` +Build command for EFR32MG12 + RS911x: - > `$ ./scripts/checkout_submodules.py --shallow --recursive --platform efr32` +`$ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/rs911x_lighting BRD41xxx --wifi rs911x |& tee out/rs911x_lighting.log` - > `$ . scripts/bootstrap.sh` +Build command for EFR32MG12 + WF200: - Create a directory where binaries will be updated/compiled called `out`: +`$ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32 out/wf200_lighting_app BRD41xxx is_debug=false --wifi wf200 |& tee out/wf200_lighting.log` - > `$ mkdir out` +In above command BRD41xxx represent the MG12 boards -
    +> `BRD4161A, BRD4163A, BRD4164A` -## Building Software +Build command for EFR32MG24 + RS911x: -The following commands are for building the example. Depending on which device -you are using, select the appropriate build command to run. +`$ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/rs911x_lighting BRD41xxx disable_lcd=true show_qr_code=false use_external_flash=false --wifi rs911x` -Build command for RS911x: +Build command for EFR32MG24 + WF200: -> `$ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/rs911x_lighting BRD4161A --wifi rs911x |& tee out/rs911x_lighting.out` +`$ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/wf200_lighting BRD41xxx disable_lcd=true show_qr_code=false use_external_flash=false chip_build_libshell=false --wifi wf200` -Build command for WF200: +In above command BRD41xxx represent the MG24 boards -> `$ ./scripts/examples/gn_efr32_example.sh examples/lighting-app/efr32/ out/wf200_lighting BRD4161A is_debug=false --wifi wf200 |& tee out/rs911x_lighting.out` +> `BRD4186C, BRD4187C` Run the following: -> `$ cd matter` - -> `$ ` +```shell +$ cd matter +$ +``` The generated software can be found in `out/rs911x_xxx/BRD4161A/*.out` for the RS9116 and in `out/wf200_xxx/BRD4161A/*.out` for the WF200. @@ -81,7 +92,7 @@ access to a Raspberry Pi that will work as well. 1. Build the Chip-Tool - > `$ ./scripts/examples/gn_build_example.sh examples/chip-tool out/standalone` + `$ ./scripts/examples/gn_build_example.sh examples/chip-tool out/standalone` This will build chiptool in `out/standalone`. diff --git a/docs/silabs/wifi/WIFI_ANDROID.md b/docs/silabs/wifi/WIFI_ANDROID.md index ee4bcf6fe48086..f81787c0bbb26f 100644 --- a/docs/silabs/wifi/WIFI_ANDROID.md +++ b/docs/silabs/wifi/WIFI_ANDROID.md @@ -2,19 +2,17 @@ Commissioning can be done using an Android Phone through the following steps. -Download pre-build application from the +Download pre-built application from the [Matter Artifacts page](../general/ARTIFACTS.md). -1. Open the .apk that is installed in the Android mobile -1. Connect the Android phone to the Wi-Fi Access Point that is going to be used -1. Run the installed CHIP app -1. Click 'Provision Chip device with Wi-Fi' +1. Open the .apk that is installed in the Android mobile. +1. Connect the Android phone to the Wi-Fi Access Point that is going to be used. +1. Run the installed CHIP app. +1. Click 'Provision Chip device with Wi-Fi'. 1. The app will bring up the camera: - Hold the camera to the LCD on the WSTK board - Scan the QR Code displayed on LCD screen of EFR32 MG12 Platform -1. Input the SSID/Passphrase of the Wi-Fi Access Point on the next screen -1. You will see messages (Toasts) pop up - saying that the App is 'Scanning', - then 'Pairing', followed by 'Commissioning Done' +1. Input the SSID/Passphrase of the Wi-Fi Access Point on the next screen. You will see messages (Toasts) pop up - saying that the App is 'Scanning', then 'Pairing', followed by 'Commissioning Done' 1. Once commissioning is completed, the app will go back to the original/home screen 1. Click on 'Light ON/OFF & Level Cluster' @@ -22,13 +20,13 @@ Download pre-build application from the does not work as required currently) - this will cause LED 1 on the WSTK to change states -If the Commissioning is not successful, try to re-boot your mobile and try +If the Commissioning is not successful, try rebooting your mobile and try again. Once commissioning is completed, if you want to repeat the test, follow these steps: -- Remove power to the system (EFR32MG12 + RS9116) +- Disconnect the system (EFR32MG12 + RS9116) from power. - Power up the system again - this should cause the LCD to turn on and the QR code to show up - Press the BTN0 button and keep it pressed for about 1 min - this should diff --git a/docs/silabs/wifi/WIFI_PREREQS.md b/docs/silabs/wifi/WIFI_PREREQS.md new file mode 100644 index 00000000000000..5e792106fdba37 --- /dev/null +++ b/docs/silabs/wifi/WIFI_PREREQS.md @@ -0,0 +1,99 @@ +# Matter Wi-Fi Prerequisites + +Silicon Labs Matter Wi-Fi is supported on two different platforms, the +[WF200](https://www.silabs.com/wireless/wi-fi/wf200-series-2-transceiver-ics) +and the +[RS9116](https://www.silabs.com/development-tools/wireless/wi-fi/rs9116x-sb-evk-development-kit). +In both cases the Wi-Fi part is attached to an EFR32MG12 or EFR32MG24 +development board via a daughter card. The EFR32MG12 or REFR32MG24 is used as a +host processor for the application and for its Bluetooth capability, which is +necessary for Matter commissioning. + +In addition to the EFR32MG12 or EFR32MG24 and Wi-Fi boards, you will need to run +the Matter ChipTool. This can be built and run on a Linux or Mac laptop or on a +Raspberry Pi. + +The hardware that you will need for Silicon Labs Matter Wi-Fi development is as +follows: + +## EFR32MG12 + RS9116 Hardware Overview + +![Overview](./images/wifi_setup.png) + +> Note : For EFR32MG24 + RS911x hardware overview will be looking like same +> which is shown in the above diagram, only EFR32MG24 board need to change. + +## EFR32MG12 + WF200 Hardware Overview + +![EFR32MG12 + WF200 connection ](./images/MG12_WF200.jpg) + +
    + +> Note : For EFR32MG24 + WF200 hardware overview also looking like same which is +> shown in the above diagram. Only EFR32MG24 board need to change. + +## Hardware + +- Linux PC/Laptop **or** Raspberry Pi 4 (This is for running the ChipTool to + commission and control the device) +- Kits/Boards: + - SLWSTK6000B Wireless Starter Kit main board + - BRD4161A/BRD4163A/BRD4164A/BRD4186C/BRD4187C daughter boards are + supported + - [SLWRB4161A](https://www.silabs.com/development-tools/wireless/zigbee/slwrb4161a-efr32mg12-radio-board) + - [SLWRB4163A](https://www.silabs.com/development-tools/wireless/zigbee/slwrb4163a-efr32mg12-radio-board) + - [SLWRB4164A](https://www.silabs.com/development-tools/wireless/zigbee/slwrb4164a-efr32mg12-radio-board) + - [XG24-RB4186C](https://www.silabs.com/development-tools/wireless/xg24-rb4186c-efr32xg24-wireless-gecko-radio-board) + - [XG24-RB4187C](https://www.silabs.com/development-tools/wireless/xg24-rb4187c-efr32xg24-wireless-gecko-radio-board) + > BLE and Matter code run here + - Wi-Fi Dev Kit, either + [RS9116X-SB-EVK1](https://www.silabs.com/development-tools/wireless/wi-fi/rs9116x-sb-evk-development-kit) + **or** + [WF200](https://www.silabs.com/wireless/wi-fi/wf200-series-2-transceiver-ics) + - Interconnect board (included in the Wi-Fi kits) + - SPI Cable (included in the RS9116 kit) + - Jumper Cables (included in the RS9116 kit) +- Access point with Internet access +- microSD card (32GB) (if using Raspberry Pi) +- **[Optional]** Android Mobile phone (If using the ChipTool on Android) + +
    + +## Software + +- Ozone (optional) to flash the images generated + - Windows: [Download Ozone](https://www.segger.com/downloads/jlink/) + > Search for "Ozone - The J-Link Debugger" and download the latest + > Windows (32 or 64 bit) version and install it + - Linux: + [Download Ozone](https://www.segger.com/downloads/jlink/Ozone_Linux_x86_64.deb) + and install it +- [Simplicity Studio or Simplicity Commander](../general/FLASH_SILABS_DEVICE.md) + (optional) to flash images generated +- Raspberry Pi imager tool (optional): To flash an operating system or + Raspberry Pi image on the SD card of the Raspberry Pi if you are using one + to run the ChipTool. Note: The ChipTool may also be compiled and run on a + Linux machine or Mac. [Download](https://www.raspberrypi.com/software/) +- Upgrade firmware on RS9116 EVK: Firmware for the RS9116 can be downloaded + from the [Matter Artifacts page](../general/ARTIFACTS.md). Information on + how to update the firmware is provided in this + [Reference Guide](https://docs.silabs.com/rs9116/wiseconnect/2.0/update-evk-firmware) +- If you are using an EFR32MG2x device you will require a bootloader to run + the demo applications. When you flash your application image be sure to + include a bootloader as well (if one is not already present). Bootloader + images are provided on the [Matter Artifacts page](../general/ARTIFACTS.md). + +
    + +## RS9116: Steps to Update Firmware + +Pre-Built Rs9116 firmware is available on the +[Matter Artifacts page](../general/ARTIFACTS.md) + +1. [Setting up TeraTerm](https://docs.silabs.com/rs9116/wiseconnect/2.0/tera-term-setup) +2. [Updating the RS9116 Firmware](https://docs.silabs.com/rs9116/wiseconnect/2.0/update-evk-firmware) + +--- + +[Table of Contents](../README.md) | [Thread Demo](../thread/DEMO_OVERVIEW.md) | +[Wi-Fi Demo](./DEMO_OVERVIEW.md)