diff --git a/rpc_tool/README.md b/rpc_tool/README.md
new file mode 100644
index 0000000..fe7629c
--- /dev/null
+++ b/rpc_tool/README.md
@@ -0,0 +1,192 @@
+# Matter RPC Verification Tool
+
+## Overview
+
+The Matter RPC verification tool can help verify if the Matter SDK (or Matter solution) has the required RPCs defined in the [Matter RPC guidelines document](https://docs.google.com/document/d/1uOFa_xLk7H03BnrTGNE5gV3TtiGoEfIE6Yh2fctSeMc), and offer a free stress test suite to help verify the SDK software quality and robustness.
+
+With RPC implemented in the SDK (or the Matter solution), on-device automation testing becomes feasible, such as regression tests (ex: automatic execution every x hour) and stress tests (ex: 100 times device boot up test) can be easily enabled to catch bugs in an early stage.
+
+
+## Features
+
+1. Provides simple tests to verify if the SDK or the Matter solution contains all the required RPCs.
+2. Provides stress test suites to test the quality and robustness of the SDK or the Matter solution.
+3. Generates test result in compressed file for the above tests.
+
+
+## Prerequisites
+
+Make sure the host meets the following prerequisites before setting up the RPC tool.
+
+
+### Host Minimum Requirements
+
+1. Ubuntu LTS or any other Linux-based environments.
+2. `Python3` installed with version `>=3.7`
+3. Internet access.
+4. Device debug interface (Typically UART over USB)
+
+
+## Setup tool
+
+1. Clone the repository at ```$HOME``` (or any desired place):
+   ```
+   $ cd $HOME
+   $ git clone https://testsuite-smarthome-matter.googlesource.com/matter_rpc_verification
+   ```
+
+2. Change directory to the tool folder:
+   ```
+   $ cd $HOME/matter_rpc_verification/rpc_tool
+   ```
+
+3. Run the script to install packages:
+   ```
+   $ sh verify_rpc.sh build
+   ```
+
+
+## Usage
+
+### Run verification test
+
+To check if the SDK contains the required RPCs: `firmware_version` RPC, `reboot` RPC, `factory_reset` RPC, `descriptor cluster` RPC and `attribute_service` RPC.
+
+1. Connect the device (flashed with the SDK you want to test) to the machine (the host where you installed this tool).
+
+2. Inside the ```rpc_tool``` directory, run the script:
+   ```
+   $ sh verify_rpc.sh run
+   ```
+
+3. The tool will ask you to select the device to test, use arrow keys on the keyboard to select. (The tool only supports running 1 device at a time).
+
+4. The tool will start testing the RPC functionality of the device, a successful test result looks like:
+
+```
+$ sh verify_rpc.sh run
+[RpcTest] 06-09 11:42:34.896 INFO ==========> MatterRpcTest <==========
+[RpcTest] 06-09 11:42:35.578 INFO [Test] test_rpc_attribute_service
+[RpcTest] 06-09 11:42:36.624 INFO [Test] test_rpc_attribute_service PASS
+[RpcTest] 06-09 11:42:36.629 INFO [Test] test_rpc_descriptor_cluster
+[RpcTest] 06-09 11:42:37.657 INFO [Test] test_rpc_descriptor_cluster PASS
+[RpcTest] 06-09 11:42:37.661 INFO [Test] test_rpc_factory_reset
+[RpcTest] 06-09 11:42:38.686 INFO [Test] test_rpc_factory_reset PASS
+[RpcTest] 06-09 11:42:38.691 INFO [Test] test_rpc_firmware_version
+[RpcTest] 06-09 11:42:39.848 WARNING Failed to decode frame: frame check sequence failure; discarded 3962 bytes
+[RpcTest] 06-09 11:42:40.880 INFO [Test] test_rpc_firmware_version PASS
+[RpcTest] 06-09 11:42:40.884 INFO [Test] test_rpc_reboot
+[RpcTest] 06-09 11:42:41.898 INFO [Test] test_rpc_reboot PASS
+[RpcTest] 06-09 11:42:42.722 INFO Summary for test class MatterRpcTest: Error 0, Executed 5, Failed 0, Passed 5, Requested 5, Skipped 0
+[RpcTest] 06-09 11:42:42.723 INFO Summary for test run RpcTest@06-09-2022_11-42-34-895:
+Total time elapsed 7.827033718116581s
+Artifacts are saved in "/tmp/logs/mobly/RpcTest/06-09-2022_11-42-34-895"
+Test results: Error 0, Executed 5, Failed 0, Passed 5, Requested 5, Skipped 0
+```
+
+A failing test result looks like (device is not responsive to some RPCs):
+
+```
+$ sh verify_rpc.sh run
+[RpcTest] 06-09 11:48:32.649 INFO ==========> MatterRpcTest <==========
+[RpcTest] 06-09 11:48:33.251 INFO [Test] test_rpc_attribute_service
+[RpcTest] 06-09 11:48:34.318 INFO [Test] test_rpc_attribute_service PASS
+[RpcTest] 06-09 11:48:34.323 INFO [Test] test_rpc_descriptor_cluster
+[RpcTest] 06-09 11:48:35.354 INFO [Test] test_rpc_descriptor_cluster PASS
+[RpcTest] 06-09 11:48:35.359 INFO [Test] test_rpc_factory_reset
+[RpcTest] 06-09 11:48:36.373 INFO [Test] test_rpc_factory_reset PASS
+[RpcTest] 06-09 11:48:36.374 INFO [Test] test_rpc_firmware_version
+[RpcTest] 06-09 11:48:36.624 WARNING Failed to decode frame: frame check sequence failure; discarded 10 bytes
+[RpcTest] 06-09 11:48:36.739 WARNING Failed to decode frame: frame check sequence failure; discarded 54 bytes
+[RpcTest] 06-09 11:48:39.375 ERROR Exception occurred in test_rpc_firmware_version.
+Traceback (most recent call last):
+  File "/home/user/rpc_tool_venv/lib/python3.9/site-packages/pw_rpc/callback_client/call.py", line 179, in _get_responses
+    response = self._response_queue.get(True, timeout_s)
+_queue.Empty
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+  File "/home/user/rpc_tool_venv/lib/python3.9/site-packages/mobly/base_test.py", line 756, in exec_one_test
+    test_method()
+  File "/home/user/rainier_agent/rpc_tool/push_code/rainier-engprod/rpc_tool/./verify_rpc/rpc_tool.py", line 131, in test_rpc_firmware_version
+    ack, device_info = self.dut.device_service.GetDeviceInfo()
+  File "/home/user/rpc_tool_venv/lib/python3.9/site-packages/pw_rpc/callback_client/impl.py", line 383, in call
+    return self.invoke(
+  File "/home/user/rpc_tool_venv/lib/python3.9/site-packages/pw_rpc/callback_client/call.py", line 261, in wait
+    return self._unary_wait(timeout_s)
+  File "/home/user/rpc_tool_venv/lib/python3.9/site-packages/pw_rpc/callback_client/call.py", line 142, in _unary_wait
+    for _ in self._get_responses(timeout_s=timeout_s):
+  File "/home/user/rpc_tool_venv/lib/python3.9/site-packages/pw_rpc/callback_client/call.py", line 189, in _get_responses
+    raise RpcTimeout(self._rpc, timeout_s)
+pw_rpc.callback_client.errors.RpcTimeout: No response received for chip.rpc.Device.GetDeviceInfo after 3 s
+[RpcTest] 06-09 11:48:40.380 INFO [Test] test_rpc_firmware_version ERROR
+[RpcTest] 06-09 11:48:40.382 INFO [Test] test_rpc_reboot
+[RpcTest] 06-09 11:48:40.395 WARNING Failed to decode frame: frame check sequence failure; discarded 41 bytes
+[RpcTest] 06-09 11:48:41.457 INFO [Test] test_rpc_reboot PASS
+[RpcTest] 06-09 11:48:42.390 INFO Summary for test class MatterRpcTest: Error 1, Executed 5, Failed 0, Passed 4, Requested 5, Skipped 0
+[RpcTest] 06-09 11:48:42.401 INFO Summary for test run RpcTest@06-09-2022_11-48-32-648:
+Total time elapsed 9.75229246309027s
+Artifacts are saved in "/tmp/logs/mobly/RpcTest/06-09-2022_11-48-32-648"
+Test results: Error 1, Executed 5, Failed 0, Passed 4, Requested 5, Skipped 0
+```
+
+5. The test result will be compressed in a zip file ```(rpc_test_result-xxxx.zip)``` under the same directory, which contains the device's logs and test framework logs during execution.
+
+```
+$ ls
+'rpc_test_result-2022-06-08 14:50:26.499469.zip'   verify_rpc   verify_rpc.sh
+```
+
+
+### Run stress test
+
+To run stress test suite on the SDK (or Matter solution), verifying the software quality and robustness.
+The tool will run 50 iterations of each RPC tests.
+
+1. Connect the device to the machine.
+
+2. Inside the ```rpc_tool``` directory, run the script:
+   ```
+   $ sh verify_rpc.sh stress
+   ```
+
+3. Select the device you want to test, then the tool will start stress testing. A successful test result looks like:
+
+```
+$ sh verify_rpc.sh stress
+[RpcTest] 06-08 11:58:13.719 INFO ==========> MatterRpcStressTest <==========
+[RpcTest] 06-08 11:58:15.136 INFO [Test] test_rpc_attribute_service
+[RpcTest] 06-08 11:58:16.205 INFO [Test] test_rpc_attribute_service PASS
+[RpcTest] 06-08 11:58:16.209 INFO [Test] test_rpc_descriptor_cluster
+[RpcTest] 06-08 11:58:17.234 INFO [Test] test_rpc_descriptor_cluster PASS
+[RpcTest] 06-08 11:58:17.238 INFO [Test] test_rpc_factory_reset
+[RpcTest] 06-08 11:58:18.255 INFO [Test] test_rpc_factory_reset PASS
+[RpcTest] 06-08 11:58:18.260 INFO [Test] test_rpc_firmware_version
+[RpcTest] 06-08 11:58:19.428 WARNING Failed to decode frame: frame check sequence failure; discarded 3962 bytes
+[RpcTest] 06-08 11:58:20.435 INFO [Test] test_rpc_firmware_version PASS
+[RpcTest] 06-08 11:58:20.441 INFO [Test] test_rpc_reboot
+[RpcTest] 06-08 11:58:21.458 INFO [Test] test_rpc_reboot PASS
+[RpcTest] 06-08 11:58:21.464 INFO [Test] test_reboot_0
+[RpcTest] 06-08 11:58:22.479 INFO [Test] test_reboot_0 PASS
+[RpcTest] 06-08 11:58:22.483 INFO [Test] test_reboot_1
+[RpcTest] 06-08 11:58:23.494 INFO [Test] test_reboot_1 PASS
+[RpcTest] 06-08 11:58:23.498 INFO [Test] test_reboot_2
+[RpcTest] 06-08 11:58:24.516 INFO [Test] test_reboot_2 PASS
+[RpcTest] 06-08 11:58:24.520 INFO [Test] test_reboot_3
+[RpcTest] 06-08 11:58:25.535 INFO [Test] test_reboot_3 PASS
+
+....
+
+[RpcTest] 06-08 12:02:43.830 INFO [Test] test_attribute_service_48
+[RpcTest] 06-08 12:02:44.877 INFO [Test] test_attribute_service_48 PASS
+[RpcTest] 06-08 12:02:44.881 INFO [Test] test_attribute_service_49
+[RpcTest] 06-08 12:02:45.945 INFO [Test] test_attribute_service_49 PASS
+[RpcTest] 06-08 12:02:47.648 INFO Summary for test class MatterRpcStressTest: Error 0, Executed 205, Failed 0, Passed 205, Requested 205, Skipped 0
+[RpcTest] 06-08 12:02:47.648 INFO Summary for test run RpcTest@06-08-2022_11-58-13-700:
+Total time elapsed 273.94792108098045s
+Artifacts are saved in "/tmp/logs/mobly/RpcTest/06-08-2022_11-58-13-700"
+Test results: Error 0, Executed 205, Failed 0, Passed 205, Requested 205, Skipped 0
+```
+
+4. The stress test result will also be compressed as a zip file under the same directory.
diff --git a/rpc_tool/verify_rpc.sh b/rpc_tool/verify_rpc.sh
new file mode 100644
index 0000000..29bb5f9
--- /dev/null
+++ b/rpc_tool/verify_rpc.sh
@@ -0,0 +1,89 @@
+# Copyright 2022 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#!/bin/bash
+
+# Script for building and running Matter RPC tool
+
+RPC_VENV="rpc_tool_venv"
+BASEDIR=$(dirname "$0")
+
+# Install the required packages
+install_packages ()
+{
+  python3 -m venv $HOME/$RPC_VENV
+  source $HOME/$RPC_VENV/bin/activate
+  pip install -r $BASEDIR/verify_rpc/requirements.txt
+}
+
+
+# Run RPC mobly tests
+run_mobly_test ()
+{
+  source $HOME/$RPC_VENV/bin/activate
+  python $BASEDIR/verify_rpc/rpc_tool.py -c $BASEDIR/verify_rpc/test_config.yml
+  deactivate
+}
+
+
+# Run the unit tests
+run_unit_tests ()
+{
+  source $HOME/$RPC_VENV/bin/activate
+  coverage run $BASEDIR/verify_rpc/rpc_tool_test.py && coverage report -m
+  deactivate
+}
+
+
+# Run the stress tests
+run_stress_tests ()
+{
+  source $HOME/$RPC_VENV/bin/activate
+  python $BASEDIR/verify_rpc/stress_test_suite.py -c $BASEDIR/verify_rpc/test_config.yml
+  deactivate
+}
+
+
+usage ()
+{
+  echo "Usage: 'sh $0 build' or 'sh $0 run' or 'sh $0 stress'"
+}
+
+# Exit if the script usage is invalid
+if [ $# -ne 1 ]; then
+  usage
+  exit 1
+fi
+
+
+# Install the packages of the tool
+if [ $1 == "build" ]; then
+  install_packages
+
+# Run the RPC tests for SDK
+elif [ $1 == "run" ]; then
+  run_mobly_test
+
+# Run the unit tests for tool
+elif [ $1 == "unit_test" ]; then
+  run_unit_tests
+
+# Run the stress tests for SDK
+elif [ $1 == "stress" ]; then
+  run_stress_tests
+
+else
+  echo "Invalid option"
+  usage
+
+fi
diff --git a/rpc_tool/verify_rpc/protos/__init__.py b/rpc_tool/verify_rpc/protos/__init__.py
new file mode 100644
index 0000000..bb488a8
--- /dev/null
+++ b/rpc_tool/verify_rpc/protos/__init__.py
@@ -0,0 +1,14 @@
+# Copyright 2022 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
diff --git a/rpc_tool/verify_rpc/protos/attributes_service_pb2.py b/rpc_tool/verify_rpc/protos/attributes_service_pb2.py
new file mode 100644
index 0000000..ba3b223
--- /dev/null
+++ b/rpc_tool/verify_rpc/protos/attributes_service_pb2.py
@@ -0,0 +1,1366 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: attributes_service.proto
+# pylint: skip-file
+"""Generated protocol buffer code."""
+from google.protobuf.internal import enum_type_wrapper
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+from protos import common_pb2 as common__pb2
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='attributes_service.proto',
+  package='chip.rpc',
+  syntax='proto3',
+  serialized_options=None,
+  create_key=_descriptor._internal_create_key,
+  serialized_pb=b'\n\x18\x61ttributes_service.proto\x12\x08\x63hip.rpc\x1a\x0c\x63ommon.proto\"\x8a\x01\n\x11\x41ttributeMetadata\x12\x10\n\x08\x65ndpoint\x18\x01 \x01(\r\x12&\n\x07\x63luster\x18\x02 \x01(\x0e\x32\x15.chip.rpc.ClusterType\x12\x14\n\x0c\x61ttribute_id\x18\x03 \x01(\r\x12%\n\x04type\x18\x04 \x01(\x0e\x32\x17.chip.rpc.AttributeType\"\xc7\x01\n\rAttributeData\x12\x13\n\tdata_bool\x18\x01 \x01(\x08H\x00\x12\x14\n\ndata_uint8\x18\x02 \x01(\rH\x00\x12\x15\n\x0b\x64\x61ta_uint16\x18\x03 \x01(\rH\x00\x12\x15\n\x0b\x64\x61ta_uint32\x18\x04 \x01(\rH\x00\x12\x14\n\ndata_bytes\x18\x05 \x01(\x0cH\x00\x12\x13\n\tdata_int8\x18\x06 \x01(\x05H\x00\x12\x14\n\ndata_int16\x18\x07 \x01(\x05H\x00\x12\x14\n\ndata_int32\x18\x08 \x01(\x05H\x00\x42\x06\n\x04\x64\x61ta\"f\n\x0e\x41ttributeWrite\x12-\n\x08metadata\x18\x01 \x01(\x0b\x32\x1b.chip.rpc.AttributeMetadata\x12%\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32\x17.chip.rpc.AttributeData*\xab\x10\n\rAttributeType\x12\x1e\n\x1aZCL_NO_DATA_ATTRIBUTE_TYPE\x10\x00\x12\x1e\n\x1aZCL_BOOLEAN_ATTRIBUTE_TYPE\x10\x10\x12\x1e\n\x1aZCL_BITMAP8_ATTRIBUTE_TYPE\x10\x18\x12\x1f\n\x1bZCL_BITMAP16_ATTRIBUTE_TYPE\x10\x19\x12\x1f\n\x1bZCL_BITMAP32_ATTRIBUTE_TYPE\x10\x1b\x12\x1f\n\x1bZCL_BITMAP64_ATTRIBUTE_TYPE\x10\x1f\x12\x1c\n\x18ZCL_INT8U_ATTRIBUTE_TYPE\x10 \x12\x1d\n\x19ZCL_INT16U_ATTRIBUTE_TYPE\x10!\x12\x1d\n\x19ZCL_INT24U_ATTRIBUTE_TYPE\x10\"\x12\x1d\n\x19ZCL_INT32U_ATTRIBUTE_TYPE\x10#\x12\x1d\n\x19ZCL_INT40U_ATTRIBUTE_TYPE\x10$\x12\x1d\n\x19ZCL_INT48U_ATTRIBUTE_TYPE\x10%\x12\x1d\n\x19ZCL_INT56U_ATTRIBUTE_TYPE\x10&\x12\x1d\n\x19ZCL_INT64U_ATTRIBUTE_TYPE\x10\'\x12\x1c\n\x18ZCL_INT8S_ATTRIBUTE_TYPE\x10(\x12\x1d\n\x19ZCL_INT16S_ATTRIBUTE_TYPE\x10)\x12\x1d\n\x19ZCL_INT24S_ATTRIBUTE_TYPE\x10*\x12\x1d\n\x19ZCL_INT32S_ATTRIBUTE_TYPE\x10+\x12\x1d\n\x19ZCL_INT40S_ATTRIBUTE_TYPE\x10,\x12\x1d\n\x19ZCL_INT48S_ATTRIBUTE_TYPE\x10-\x12\x1d\n\x19ZCL_INT56S_ATTRIBUTE_TYPE\x10.\x12\x1d\n\x19ZCL_INT64S_ATTRIBUTE_TYPE\x10/\x12\x1c\n\x18ZCL_ENUM8_ATTRIBUTE_TYPE\x10\x30\x12\x1d\n\x19ZCL_ENUM16_ATTRIBUTE_TYPE\x10\x31\x12\x1d\n\x19ZCL_SINGLE_ATTRIBUTE_TYPE\x10\x39\x12\x1d\n\x19ZCL_DOUBLE_ATTRIBUTE_TYPE\x10:\x12#\n\x1fZCL_OCTET_STRING_ATTRIBUTE_TYPE\x10\x41\x12\"\n\x1eZCL_CHAR_STRING_ATTRIBUTE_TYPE\x10\x42\x12(\n$ZCL_LONG_OCTET_STRING_ATTRIBUTE_TYPE\x10\x43\x12\'\n#ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE\x10\x44\x12\x1c\n\x18ZCL_ARRAY_ATTRIBUTE_TYPE\x10H\x12\x1d\n\x19ZCL_STRUCT_ATTRIBUTE_TYPE\x10L\x12\x1b\n\x16ZCL_TOD_ATTRIBUTE_TYPE\x10\xe0\x01\x12\x1c\n\x17ZCL_DATE_ATTRIBUTE_TYPE\x10\xe1\x01\x12\x1b\n\x16ZCL_UTC_ATTRIBUTE_TYPE\x10\xe2\x01\x12 \n\x1bZCL_EPOCH_US_ATTRIBUTE_TYPE\x10\xe3\x01\x12\x1f\n\x1aZCL_EPOCH_S_ATTRIBUTE_TYPE\x10\xe4\x01\x12\"\n\x1dZCL_SYSTIME_US_ATTRIBUTE_TYPE\x10\xe5\x01\x12\x1f\n\x1aZCL_PERCENT_ATTRIBUTE_TYPE\x10\xe6\x01\x12%\n ZCL_PERCENT100THS_ATTRIBUTE_TYPE\x10\xe7\x01\x12\"\n\x1dZCL_CLUSTER_ID_ATTRIBUTE_TYPE\x10\xe8\x01\x12!\n\x1cZCL_ATTRIB_ID_ATTRIBUTE_TYPE\x10\xe9\x01\x12 \n\x1bZCL_FIELD_ID_ATTRIBUTE_TYPE\x10\xea\x01\x12 \n\x1bZCL_EVENT_ID_ATTRIBUTE_TYPE\x10\xeb\x01\x12\"\n\x1dZCL_COMMAND_ID_ATTRIBUTE_TYPE\x10\xec\x01\x12!\n\x1cZCL_ACTION_ID_ATTRIBUTE_TYPE\x10\xed\x01\x12 \n\x1bZCL_TRANS_ID_ATTRIBUTE_TYPE\x10\xef\x01\x12\x1f\n\x1aZCL_NODE_ID_ATTRIBUTE_TYPE\x10\xf0\x01\x12!\n\x1cZCL_VENDOR_ID_ATTRIBUTE_TYPE\x10\xf1\x01\x12\"\n\x1dZCL_DEVTYPE_ID_ATTRIBUTE_TYPE\x10\xf2\x01\x12!\n\x1cZCL_FABRIC_ID_ATTRIBUTE_TYPE\x10\xf3\x01\x12 \n\x1bZCL_GROUP_ID_ATTRIBUTE_TYPE\x10\xf4\x01\x12\x1e\n\x19ZCL_STATUS_ATTRIBUTE_TYPE\x10\xf5\x01\x12 \n\x1bZCL_DATA_VER_ATTRIBUTE_TYPE\x10\xf6\x01\x12 \n\x1bZCL_EVENT_NO_ATTRIBUTE_TYPE\x10\xf7\x01\x12#\n\x1eZCL_ENDPOINT_NO_ATTRIBUTE_TYPE\x10\xf8\x01\x12\"\n\x1dZCL_FABRIC_IDX_ATTRIBUTE_TYPE\x10\xf9\x01\x12\x1d\n\x18ZCL_IPADR_ATTRIBUTE_TYPE\x10\xfa\x01\x12\x1f\n\x1aZCL_IPV4ADR_ATTRIBUTE_TYPE\x10\xfb\x01\x12\x1f\n\x1aZCL_IPV6ADR_ATTRIBUTE_TYPE\x10\xfc\x01\x12\x1f\n\x1aZCL_IPV6PRE_ATTRIBUTE_TYPE\x10\xfd\x01\x12\x1d\n\x18ZCL_HWADR_ATTRIBUTE_TYPE\x10\xfe\x01\x12\x1f\n\x1aZCL_UNKNOWN_ATTRIBUTE_TYPE\x10\xff\x01*\xc5$\n\x0b\x43lusterType\x12\x1a\n\x16ZCL_INVALID_CLUSTER_ID\x10\x00\x12\x1f\n\x1bZCL_POWER_CONFIG_CLUSTER_ID\x10\x01\x12\x1e\n\x1aZCL_DEVICE_TEMP_CLUSTER_ID\x10\x02\x12\x1b\n\x17ZCL_IDENTIFY_CLUSTER_ID\x10\x03\x12\x19\n\x15ZCL_GROUPS_CLUSTER_ID\x10\x04\x12\x19\n\x15ZCL_SCENES_CLUSTER_ID\x10\x05\x12\x19\n\x15ZCL_ON_OFF_CLUSTER_ID\x10\x06\x12\'\n#ZCL_ON_OFF_SWITCH_CONFIG_CLUSTER_ID\x10\x07\x12 \n\x1cZCL_LEVEL_CONTROL_CLUSTER_ID\x10\x08\x12\x18\n\x14ZCL_ALARM_CLUSTER_ID\x10\t\x12\x17\n\x13ZCL_TIME_CLUSTER_ID\x10\n\x12%\n!ZCL_BINARY_INPUT_BASIC_CLUSTER_ID\x10\x0f\x12 \n\x1cZCL_POWER_PROFILE_CLUSTER_ID\x10\x1a\x12$\n ZCL_APPLIANCE_CONTROL_CLUSTER_ID\x10\x1b\x12\x1d\n\x19ZCL_DESCRIPTOR_CLUSTER_ID\x10\x1d\x12\x1f\n\x1bZCL_POLL_CONTROL_CLUSTER_ID\x10 \x12\"\n\x1eZCL_BRIDGED_ACTIONS_CLUSTER_ID\x10%\x12\x18\n\x14ZCL_BASIC_CLUSTER_ID\x10(\x12\x1f\n\x1bZCL_OTA_PROVIDER_CLUSTER_ID\x10)\x12 \n\x1cZCL_OTA_REQUESTOR_CLUSTER_ID\x10*\x12$\n ZCL_UNIT_LOCALIZATION_CLUSTER_ID\x10-\x12\x1f\n\x1bZCL_POWER_SOURCE_CLUSTER_ID\x10/\x12(\n$ZCL_GENERAL_COMMISSIONING_CLUSTER_ID\x10\x30\x12(\n$ZCL_NETWORK_COMMISSIONING_CLUSTER_ID\x10\x31\x12\"\n\x1eZCL_DIAGNOSTIC_LOGS_CLUSTER_ID\x10\x32\x12&\n\"ZCL_GENERAL_DIAGNOSTICS_CLUSTER_ID\x10\x33\x12\'\n#ZCL_SOFTWARE_DIAGNOSTICS_CLUSTER_ID\x10\x34\x12-\n)ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID\x10\x35\x12+\n\'ZCL_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_ID\x10\x36\x12/\n+ZCL_ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER_ID\x10\x37\x12\'\n#ZCL_BRIDGED_DEVICE_BASIC_CLUSTER_ID\x10\x39\x12\x19\n\x15ZCL_SWITCH_CLUSTER_ID\x10;\x12.\n*ZCL_ADMINISTRATOR_COMMISSIONING_CLUSTER_ID\x10<\x12*\n&ZCL_OPERATIONAL_CREDENTIALS_CLUSTER_ID\x10>\x12\x1e\n\x1aZCL_FIXED_LABEL_CLUSTER_ID\x10@\x12 \n\x1cZCL_BOOLEAN_STATE_CLUSTER_ID\x10\x45\x12\x1e\n\x1aZCL_MODE_SELECT_CLUSTER_ID\x10P\x12 \n\x1bZCL_SHADE_CONFIG_CLUSTER_ID\x10\x80\x02\x12\x1d\n\x18ZCL_DOOR_LOCK_CLUSTER_ID\x10\x81\x02\x12#\n\x1eZCL_WINDOW_COVERING_CLUSTER_ID\x10\x82\x02\x12#\n\x1eZCL_BARRIER_CONTROL_CLUSTER_ID\x10\x83\x02\x12\'\n\"ZCL_PUMP_CONFIG_CONTROL_CLUSTER_ID\x10\x80\x04\x12\x1e\n\x19ZCL_THERMOSTAT_CLUSTER_ID\x10\x81\x04\x12\x1f\n\x1aZCL_FAN_CONTROL_CLUSTER_ID\x10\x82\x04\x12#\n\x1eZCL_DEHUMID_CONTROL_CLUSTER_ID\x10\x83\x04\x12(\n#ZCL_THERMOSTAT_UI_CONFIG_CLUSTER_ID\x10\x84\x04\x12!\n\x1cZCL_COLOR_CONTROL_CLUSTER_ID\x10\x80\x06\x12)\n$ZCL_BALLAST_CONFIGURATION_CLUSTER_ID\x10\x81\x06\x12+\n&ZCL_ILLUMINANCE_MEASUREMENT_CLUSTER_ID\x10\x80\x08\x12$\n\x1fZCL_TEMP_MEASUREMENT_CLUSTER_ID\x10\x82\x08\x12(\n#ZCL_PRESSURE_MEASUREMENT_CLUSTER_ID\x10\x83\x08\x12$\n\x1fZCL_FLOW_MEASUREMENT_CLUSTER_ID\x10\x84\x08\x12\x31\n,ZCL_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_ID\x10\x85\x08\x12%\n ZCL_OCCUPANCY_SENSING_CLUSTER_ID\x10\x86\x08\x12=\n8ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x8c\x08\x12<\n7ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x8d\x08\x12\x36\n1ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x8e\x08\x12<\n7ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x8f\x08\x12\x36\n1ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x90\x08\x12?\n:ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x91\x08\x12:\n5ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x92\x08\x12>\n9ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x93\x08\x12\x34\n/ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x94\x08\x12\x33\n.ZCL_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x95\x08\x12<\n7ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x96\x08\x12>\n9ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x97\x08\x12\x35\n0ZCL_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x98\x08\x12\x39\n4ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x99\x08\x12\x36\n1ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x9a\x08\x12G\nBZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x9b\x08\x12\x36\n1ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x9c\x08\x12>\n9ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x9d\x08\x12\x43\n>ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x9e\x08\x12\x45\n@ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\x9f\x08\x12\x37\n2ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\xa0\x08\x12\x34\n/ZCL_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\xa1\x08\x12\x32\n-ZCL_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\xa2\x08\x12\x37\n2ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\xa3\x08\x12\x35\n0ZCL_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\xa4\x08\x12\x42\n=ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\xa5\x08\x12\x37\n2ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\xa6\x08\x12\x42\n=ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\xa7\x08\x12\x38\n3ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\xa8\x08\x12\x34\n/ZCL_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_ID\x10\xa9\x08\x12\x1c\n\x17ZCL_IAS_ZONE_CLUSTER_ID\x10\x80\n\x12\x1b\n\x16ZCL_IAS_ACE_CLUSTER_ID\x10\x81\n\x12\x1a\n\x15ZCL_IAS_WD_CLUSTER_ID\x10\x82\n\x12\x1f\n\x1aZCL_WAKE_ON_LAN_CLUSTER_ID\x10\x83\n\x12\x1b\n\x16ZCL_CHANNEL_CLUSTER_ID\x10\x84\n\x12$\n\x1fZCL_TARGET_NAVIGATOR_CLUSTER_ID\x10\x85\n\x12\"\n\x1dZCL_MEDIA_PLAYBACK_CLUSTER_ID\x10\x86\n\x12\x1f\n\x1aZCL_MEDIA_INPUT_CLUSTER_ID\x10\x87\n\x12\x1d\n\x18ZCL_LOW_POWER_CLUSTER_ID\x10\x88\n\x12 \n\x1bZCL_KEYPAD_INPUT_CLUSTER_ID\x10\x89\n\x12\"\n\x1dZCL_CONTENT_LAUNCH_CLUSTER_ID\x10\x8a\n\x12 \n\x1bZCL_AUDIO_OUTPUT_CLUSTER_ID\x10\x8b\n\x12(\n#ZCL_APPLICATION_LAUNCHER_CLUSTER_ID\x10\x8c\n\x12%\n ZCL_APPLICATION_BASIC_CLUSTER_ID\x10\x8d\n\x12!\n\x1cZCL_ACCOUNT_LOGIN_CLUSTER_ID\x10\x8e\n\x12\x18\n\x13ZCL_TEST_CLUSTER_ID\x10\x8f\n\x12\x1d\n\x18ZCL_MESSAGING_CLUSTER_ID\x10\x83\x0e\x12,\n\'ZCL_APPLIANCE_IDENTIFICATION_CLUSTER_ID\x10\x80\x16\x12(\n#ZCL_METER_IDENTIFICATION_CLUSTER_ID\x10\x81\x16\x12.\n)ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_ID\x10\x82\x16\x12(\n#ZCL_APPLIANCE_STATISTICS_CLUSTER_ID\x10\x83\x16\x12*\n%ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_ID\x10\x84\x16\x12\x1c\n\x16ZCL_BINDING_CLUSTER_ID\x10\x80\xe0\x03\x12)\n#ZCL_GROUP_KEY_MANAGEMENT_CLUSTER_ID\x10\x84\xe0\x03\x12(\n\"ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_ID\x10\x80\xf8\x03\x32\x85\x01\n\nAttributes\x12\x37\n\x05Write\x12\x18.chip.rpc.AttributeWrite\x1a\x12.pw.protobuf.Empty\"\x00\x12>\n\x04Read\x12\x1b.chip.rpc.AttributeMetadata\x1a\x17.chip.rpc.AttributeData\"\x00\x62\x06proto3'
+  ,
+  dependencies=[common__pb2.DESCRIPTOR,])
+
+_ATTRIBUTETYPE = _descriptor.EnumDescriptor(
+  name='AttributeType',
+  full_name='chip.rpc.AttributeType',
+  filename=None,
+  file=DESCRIPTOR,
+  create_key=_descriptor._internal_create_key,
+  values=[
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_NO_DATA_ATTRIBUTE_TYPE', index=0, number=0,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BOOLEAN_ATTRIBUTE_TYPE', index=1, number=16,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BITMAP8_ATTRIBUTE_TYPE', index=2, number=24,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BITMAP16_ATTRIBUTE_TYPE', index=3, number=25,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BITMAP32_ATTRIBUTE_TYPE', index=4, number=27,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BITMAP64_ATTRIBUTE_TYPE', index=5, number=31,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT8U_ATTRIBUTE_TYPE', index=6, number=32,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT16U_ATTRIBUTE_TYPE', index=7, number=33,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT24U_ATTRIBUTE_TYPE', index=8, number=34,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT32U_ATTRIBUTE_TYPE', index=9, number=35,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT40U_ATTRIBUTE_TYPE', index=10, number=36,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT48U_ATTRIBUTE_TYPE', index=11, number=37,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT56U_ATTRIBUTE_TYPE', index=12, number=38,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT64U_ATTRIBUTE_TYPE', index=13, number=39,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT8S_ATTRIBUTE_TYPE', index=14, number=40,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT16S_ATTRIBUTE_TYPE', index=15, number=41,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT24S_ATTRIBUTE_TYPE', index=16, number=42,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT32S_ATTRIBUTE_TYPE', index=17, number=43,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT40S_ATTRIBUTE_TYPE', index=18, number=44,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT48S_ATTRIBUTE_TYPE', index=19, number=45,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT56S_ATTRIBUTE_TYPE', index=20, number=46,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INT64S_ATTRIBUTE_TYPE', index=21, number=47,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ENUM8_ATTRIBUTE_TYPE', index=22, number=48,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ENUM16_ATTRIBUTE_TYPE', index=23, number=49,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_SINGLE_ATTRIBUTE_TYPE', index=24, number=57,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_DOUBLE_ATTRIBUTE_TYPE', index=25, number=58,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_OCTET_STRING_ATTRIBUTE_TYPE', index=26, number=65,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_CHAR_STRING_ATTRIBUTE_TYPE', index=27, number=66,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_LONG_OCTET_STRING_ATTRIBUTE_TYPE', index=28, number=67,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE', index=29, number=68,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ARRAY_ATTRIBUTE_TYPE', index=30, number=72,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_STRUCT_ATTRIBUTE_TYPE', index=31, number=76,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_TOD_ATTRIBUTE_TYPE', index=32, number=224,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_DATE_ATTRIBUTE_TYPE', index=33, number=225,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_UTC_ATTRIBUTE_TYPE', index=34, number=226,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_EPOCH_US_ATTRIBUTE_TYPE', index=35, number=227,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_EPOCH_S_ATTRIBUTE_TYPE', index=36, number=228,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_SYSTIME_US_ATTRIBUTE_TYPE', index=37, number=229,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_PERCENT_ATTRIBUTE_TYPE', index=38, number=230,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_PERCENT100THS_ATTRIBUTE_TYPE', index=39, number=231,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_CLUSTER_ID_ATTRIBUTE_TYPE', index=40, number=232,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ATTRIB_ID_ATTRIBUTE_TYPE', index=41, number=233,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_FIELD_ID_ATTRIBUTE_TYPE', index=42, number=234,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_EVENT_ID_ATTRIBUTE_TYPE', index=43, number=235,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_COMMAND_ID_ATTRIBUTE_TYPE', index=44, number=236,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ACTION_ID_ATTRIBUTE_TYPE', index=45, number=237,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_TRANS_ID_ATTRIBUTE_TYPE', index=46, number=239,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_NODE_ID_ATTRIBUTE_TYPE', index=47, number=240,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_VENDOR_ID_ATTRIBUTE_TYPE', index=48, number=241,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_DEVTYPE_ID_ATTRIBUTE_TYPE', index=49, number=242,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_FABRIC_ID_ATTRIBUTE_TYPE', index=50, number=243,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_GROUP_ID_ATTRIBUTE_TYPE', index=51, number=244,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_STATUS_ATTRIBUTE_TYPE', index=52, number=245,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_DATA_VER_ATTRIBUTE_TYPE', index=53, number=246,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_EVENT_NO_ATTRIBUTE_TYPE', index=54, number=247,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ENDPOINT_NO_ATTRIBUTE_TYPE', index=55, number=248,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_FABRIC_IDX_ATTRIBUTE_TYPE', index=56, number=249,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_IPADR_ATTRIBUTE_TYPE', index=57, number=250,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_IPV4ADR_ATTRIBUTE_TYPE', index=58, number=251,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_IPV6ADR_ATTRIBUTE_TYPE', index=59, number=252,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_IPV6PRE_ATTRIBUTE_TYPE', index=60, number=253,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_HWADR_ATTRIBUTE_TYPE', index=61, number=254,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_UNKNOWN_ATTRIBUTE_TYPE', index=62, number=255,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+  ],
+  containing_type=None,
+  serialized_options=None,
+  serialized_start=500,
+  serialized_end=2591,
+)
+_sym_db.RegisterEnumDescriptor(_ATTRIBUTETYPE)
+
+AttributeType = enum_type_wrapper.EnumTypeWrapper(_ATTRIBUTETYPE)
+_CLUSTERTYPE = _descriptor.EnumDescriptor(
+  name='ClusterType',
+  full_name='chip.rpc.ClusterType',
+  filename=None,
+  file=DESCRIPTOR,
+  create_key=_descriptor._internal_create_key,
+  values=[
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_INVALID_CLUSTER_ID', index=0, number=0,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_POWER_CONFIG_CLUSTER_ID', index=1, number=1,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_DEVICE_TEMP_CLUSTER_ID', index=2, number=2,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_IDENTIFY_CLUSTER_ID', index=3, number=3,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_GROUPS_CLUSTER_ID', index=4, number=4,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_SCENES_CLUSTER_ID', index=5, number=5,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ON_OFF_CLUSTER_ID', index=6, number=6,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ON_OFF_SWITCH_CONFIG_CLUSTER_ID', index=7, number=7,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_LEVEL_CONTROL_CLUSTER_ID', index=8, number=8,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ALARM_CLUSTER_ID', index=9, number=9,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_TIME_CLUSTER_ID', index=10, number=10,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BINARY_INPUT_BASIC_CLUSTER_ID', index=11, number=15,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_POWER_PROFILE_CLUSTER_ID', index=12, number=26,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_APPLIANCE_CONTROL_CLUSTER_ID', index=13, number=27,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_DESCRIPTOR_CLUSTER_ID', index=14, number=29,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_POLL_CONTROL_CLUSTER_ID', index=15, number=32,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BRIDGED_ACTIONS_CLUSTER_ID', index=16, number=37,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BASIC_CLUSTER_ID', index=17, number=40,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_OTA_PROVIDER_CLUSTER_ID', index=18, number=41,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_OTA_REQUESTOR_CLUSTER_ID', index=19, number=42,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_UNIT_LOCALIZATION_CLUSTER_ID', index=20, number=45,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_POWER_SOURCE_CLUSTER_ID', index=21, number=47,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_GENERAL_COMMISSIONING_CLUSTER_ID', index=22, number=48,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_NETWORK_COMMISSIONING_CLUSTER_ID', index=23, number=49,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_DIAGNOSTIC_LOGS_CLUSTER_ID', index=24, number=50,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_GENERAL_DIAGNOSTICS_CLUSTER_ID', index=25, number=51,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_SOFTWARE_DIAGNOSTICS_CLUSTER_ID', index=26, number=52,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID', index=27, number=53,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_ID', index=28, number=54,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER_ID', index=29, number=55,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BRIDGED_DEVICE_BASIC_CLUSTER_ID', index=30, number=57,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_SWITCH_CLUSTER_ID', index=31, number=59,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ADMINISTRATOR_COMMISSIONING_CLUSTER_ID', index=32, number=60,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_OPERATIONAL_CREDENTIALS_CLUSTER_ID', index=33, number=62,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_FIXED_LABEL_CLUSTER_ID', index=34, number=64,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BOOLEAN_STATE_CLUSTER_ID', index=35, number=69,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_MODE_SELECT_CLUSTER_ID', index=36, number=80,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_SHADE_CONFIG_CLUSTER_ID', index=37, number=256,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_DOOR_LOCK_CLUSTER_ID', index=38, number=257,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_WINDOW_COVERING_CLUSTER_ID', index=39, number=258,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BARRIER_CONTROL_CLUSTER_ID', index=40, number=259,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_PUMP_CONFIG_CONTROL_CLUSTER_ID', index=41, number=512,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_THERMOSTAT_CLUSTER_ID', index=42, number=513,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_FAN_CONTROL_CLUSTER_ID', index=43, number=514,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_DEHUMID_CONTROL_CLUSTER_ID', index=44, number=515,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_THERMOSTAT_UI_CONFIG_CLUSTER_ID', index=45, number=516,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_COLOR_CONTROL_CLUSTER_ID', index=46, number=768,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BALLAST_CONFIGURATION_CLUSTER_ID', index=47, number=769,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ILLUMINANCE_MEASUREMENT_CLUSTER_ID', index=48, number=1024,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_TEMP_MEASUREMENT_CLUSTER_ID', index=49, number=1026,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_PRESSURE_MEASUREMENT_CLUSTER_ID', index=50, number=1027,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_FLOW_MEASUREMENT_CLUSTER_ID', index=51, number=1028,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_ID', index=52, number=1029,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_OCCUPANCY_SENSING_CLUSTER_ID', index=53, number=1030,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=54, number=1036,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=55, number=1037,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=56, number=1038,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=57, number=1039,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=58, number=1040,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=59, number=1041,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=60, number=1042,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=61, number=1043,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=62, number=1044,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=63, number=1045,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=64, number=1046,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=65, number=1047,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=66, number=1048,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=67, number=1049,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=68, number=1050,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=69, number=1051,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=70, number=1052,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=71, number=1053,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=72, number=1054,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=73, number=1055,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=74, number=1056,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=75, number=1057,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=76, number=1058,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=77, number=1059,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=78, number=1060,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=79, number=1061,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=80, number=1062,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=81, number=1063,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=82, number=1064,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_ID', index=83, number=1065,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_IAS_ZONE_CLUSTER_ID', index=84, number=1280,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_IAS_ACE_CLUSTER_ID', index=85, number=1281,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_IAS_WD_CLUSTER_ID', index=86, number=1282,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_WAKE_ON_LAN_CLUSTER_ID', index=87, number=1283,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_CHANNEL_CLUSTER_ID', index=88, number=1284,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_TARGET_NAVIGATOR_CLUSTER_ID', index=89, number=1285,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_MEDIA_PLAYBACK_CLUSTER_ID', index=90, number=1286,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_MEDIA_INPUT_CLUSTER_ID', index=91, number=1287,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_LOW_POWER_CLUSTER_ID', index=92, number=1288,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_KEYPAD_INPUT_CLUSTER_ID', index=93, number=1289,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_CONTENT_LAUNCH_CLUSTER_ID', index=94, number=1290,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_AUDIO_OUTPUT_CLUSTER_ID', index=95, number=1291,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_APPLICATION_LAUNCHER_CLUSTER_ID', index=96, number=1292,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_APPLICATION_BASIC_CLUSTER_ID', index=97, number=1293,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ACCOUNT_LOGIN_CLUSTER_ID', index=98, number=1294,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_TEST_CLUSTER_ID', index=99, number=1295,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_MESSAGING_CLUSTER_ID', index=100, number=1795,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_APPLIANCE_IDENTIFICATION_CLUSTER_ID', index=101, number=2816,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_METER_IDENTIFICATION_CLUSTER_ID', index=102, number=2817,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_ID', index=103, number=2818,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_APPLIANCE_STATISTICS_CLUSTER_ID', index=104, number=2819,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_ID', index=105, number=2820,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_BINDING_CLUSTER_ID', index=106, number=61440,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_GROUP_KEY_MANAGEMENT_CLUSTER_ID', index=107, number=61444,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+    _descriptor.EnumValueDescriptor(
+      name='ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_ID', index=108, number=64512,
+      serialized_options=None,
+      type=None,
+      create_key=_descriptor._internal_create_key),
+  ],
+  containing_type=None,
+  serialized_options=None,
+  serialized_start=2594,
+  serialized_end=7271,
+)
+_sym_db.RegisterEnumDescriptor(_CLUSTERTYPE)
+
+ClusterType = enum_type_wrapper.EnumTypeWrapper(_CLUSTERTYPE)
+ZCL_NO_DATA_ATTRIBUTE_TYPE = 0
+ZCL_BOOLEAN_ATTRIBUTE_TYPE = 16
+ZCL_BITMAP8_ATTRIBUTE_TYPE = 24
+ZCL_BITMAP16_ATTRIBUTE_TYPE = 25
+ZCL_BITMAP32_ATTRIBUTE_TYPE = 27
+ZCL_BITMAP64_ATTRIBUTE_TYPE = 31
+ZCL_INT8U_ATTRIBUTE_TYPE = 32
+ZCL_INT16U_ATTRIBUTE_TYPE = 33
+ZCL_INT24U_ATTRIBUTE_TYPE = 34
+ZCL_INT32U_ATTRIBUTE_TYPE = 35
+ZCL_INT40U_ATTRIBUTE_TYPE = 36
+ZCL_INT48U_ATTRIBUTE_TYPE = 37
+ZCL_INT56U_ATTRIBUTE_TYPE = 38
+ZCL_INT64U_ATTRIBUTE_TYPE = 39
+ZCL_INT8S_ATTRIBUTE_TYPE = 40
+ZCL_INT16S_ATTRIBUTE_TYPE = 41
+ZCL_INT24S_ATTRIBUTE_TYPE = 42
+ZCL_INT32S_ATTRIBUTE_TYPE = 43
+ZCL_INT40S_ATTRIBUTE_TYPE = 44
+ZCL_INT48S_ATTRIBUTE_TYPE = 45
+ZCL_INT56S_ATTRIBUTE_TYPE = 46
+ZCL_INT64S_ATTRIBUTE_TYPE = 47
+ZCL_ENUM8_ATTRIBUTE_TYPE = 48
+ZCL_ENUM16_ATTRIBUTE_TYPE = 49
+ZCL_SINGLE_ATTRIBUTE_TYPE = 57
+ZCL_DOUBLE_ATTRIBUTE_TYPE = 58
+ZCL_OCTET_STRING_ATTRIBUTE_TYPE = 65
+ZCL_CHAR_STRING_ATTRIBUTE_TYPE = 66
+ZCL_LONG_OCTET_STRING_ATTRIBUTE_TYPE = 67
+ZCL_LONG_CHAR_STRING_ATTRIBUTE_TYPE = 68
+ZCL_ARRAY_ATTRIBUTE_TYPE = 72
+ZCL_STRUCT_ATTRIBUTE_TYPE = 76
+ZCL_TOD_ATTRIBUTE_TYPE = 224
+ZCL_DATE_ATTRIBUTE_TYPE = 225
+ZCL_UTC_ATTRIBUTE_TYPE = 226
+ZCL_EPOCH_US_ATTRIBUTE_TYPE = 227
+ZCL_EPOCH_S_ATTRIBUTE_TYPE = 228
+ZCL_SYSTIME_US_ATTRIBUTE_TYPE = 229
+ZCL_PERCENT_ATTRIBUTE_TYPE = 230
+ZCL_PERCENT100THS_ATTRIBUTE_TYPE = 231
+ZCL_CLUSTER_ID_ATTRIBUTE_TYPE = 232
+ZCL_ATTRIB_ID_ATTRIBUTE_TYPE = 233
+ZCL_FIELD_ID_ATTRIBUTE_TYPE = 234
+ZCL_EVENT_ID_ATTRIBUTE_TYPE = 235
+ZCL_COMMAND_ID_ATTRIBUTE_TYPE = 236
+ZCL_ACTION_ID_ATTRIBUTE_TYPE = 237
+ZCL_TRANS_ID_ATTRIBUTE_TYPE = 239
+ZCL_NODE_ID_ATTRIBUTE_TYPE = 240
+ZCL_VENDOR_ID_ATTRIBUTE_TYPE = 241
+ZCL_DEVTYPE_ID_ATTRIBUTE_TYPE = 242
+ZCL_FABRIC_ID_ATTRIBUTE_TYPE = 243
+ZCL_GROUP_ID_ATTRIBUTE_TYPE = 244
+ZCL_STATUS_ATTRIBUTE_TYPE = 245
+ZCL_DATA_VER_ATTRIBUTE_TYPE = 246
+ZCL_EVENT_NO_ATTRIBUTE_TYPE = 247
+ZCL_ENDPOINT_NO_ATTRIBUTE_TYPE = 248
+ZCL_FABRIC_IDX_ATTRIBUTE_TYPE = 249
+ZCL_IPADR_ATTRIBUTE_TYPE = 250
+ZCL_IPV4ADR_ATTRIBUTE_TYPE = 251
+ZCL_IPV6ADR_ATTRIBUTE_TYPE = 252
+ZCL_IPV6PRE_ATTRIBUTE_TYPE = 253
+ZCL_HWADR_ATTRIBUTE_TYPE = 254
+ZCL_UNKNOWN_ATTRIBUTE_TYPE = 255
+ZCL_INVALID_CLUSTER_ID = 0
+ZCL_POWER_CONFIG_CLUSTER_ID = 1
+ZCL_DEVICE_TEMP_CLUSTER_ID = 2
+ZCL_IDENTIFY_CLUSTER_ID = 3
+ZCL_GROUPS_CLUSTER_ID = 4
+ZCL_SCENES_CLUSTER_ID = 5
+ZCL_ON_OFF_CLUSTER_ID = 6
+ZCL_ON_OFF_SWITCH_CONFIG_CLUSTER_ID = 7
+ZCL_LEVEL_CONTROL_CLUSTER_ID = 8
+ZCL_ALARM_CLUSTER_ID = 9
+ZCL_TIME_CLUSTER_ID = 10
+ZCL_BINARY_INPUT_BASIC_CLUSTER_ID = 15
+ZCL_POWER_PROFILE_CLUSTER_ID = 26
+ZCL_APPLIANCE_CONTROL_CLUSTER_ID = 27
+ZCL_DESCRIPTOR_CLUSTER_ID = 29
+ZCL_POLL_CONTROL_CLUSTER_ID = 32
+ZCL_BRIDGED_ACTIONS_CLUSTER_ID = 37
+ZCL_BASIC_CLUSTER_ID = 40
+ZCL_OTA_PROVIDER_CLUSTER_ID = 41
+ZCL_OTA_REQUESTOR_CLUSTER_ID = 42
+ZCL_UNIT_LOCALIZATION_CLUSTER_ID = 45
+ZCL_POWER_SOURCE_CLUSTER_ID = 47
+ZCL_GENERAL_COMMISSIONING_CLUSTER_ID = 48
+ZCL_NETWORK_COMMISSIONING_CLUSTER_ID = 49
+ZCL_DIAGNOSTIC_LOGS_CLUSTER_ID = 50
+ZCL_GENERAL_DIAGNOSTICS_CLUSTER_ID = 51
+ZCL_SOFTWARE_DIAGNOSTICS_CLUSTER_ID = 52
+ZCL_THREAD_NETWORK_DIAGNOSTICS_CLUSTER_ID = 53
+ZCL_WIFI_NETWORK_DIAGNOSTICS_CLUSTER_ID = 54
+ZCL_ETHERNET_NETWORK_DIAGNOSTICS_CLUSTER_ID = 55
+ZCL_BRIDGED_DEVICE_BASIC_CLUSTER_ID = 57
+ZCL_SWITCH_CLUSTER_ID = 59
+ZCL_ADMINISTRATOR_COMMISSIONING_CLUSTER_ID = 60
+ZCL_OPERATIONAL_CREDENTIALS_CLUSTER_ID = 62
+ZCL_FIXED_LABEL_CLUSTER_ID = 64
+ZCL_BOOLEAN_STATE_CLUSTER_ID = 69
+ZCL_MODE_SELECT_CLUSTER_ID = 80
+ZCL_SHADE_CONFIG_CLUSTER_ID = 256
+ZCL_DOOR_LOCK_CLUSTER_ID = 257
+ZCL_WINDOW_COVERING_CLUSTER_ID = 258
+ZCL_BARRIER_CONTROL_CLUSTER_ID = 259
+ZCL_PUMP_CONFIG_CONTROL_CLUSTER_ID = 512
+ZCL_THERMOSTAT_CLUSTER_ID = 513
+ZCL_FAN_CONTROL_CLUSTER_ID = 514
+ZCL_DEHUMID_CONTROL_CLUSTER_ID = 515
+ZCL_THERMOSTAT_UI_CONFIG_CLUSTER_ID = 516
+ZCL_COLOR_CONTROL_CLUSTER_ID = 768
+ZCL_BALLAST_CONFIGURATION_CLUSTER_ID = 769
+ZCL_ILLUMINANCE_MEASUREMENT_CLUSTER_ID = 1024
+ZCL_TEMP_MEASUREMENT_CLUSTER_ID = 1026
+ZCL_PRESSURE_MEASUREMENT_CLUSTER_ID = 1027
+ZCL_FLOW_MEASUREMENT_CLUSTER_ID = 1028
+ZCL_RELATIVE_HUMIDITY_MEASUREMENT_CLUSTER_ID = 1029
+ZCL_OCCUPANCY_SENSING_CLUSTER_ID = 1030
+ZCL_CARBON_MONOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1036
+ZCL_CARBON_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1037
+ZCL_ETHYLENE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1038
+ZCL_ETHYLENE_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1039
+ZCL_HYDROGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1040
+ZCL_HYDROGEN_SULPHIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1041
+ZCL_NITRIC_OXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1042
+ZCL_NITROGEN_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1043
+ZCL_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1044
+ZCL_OZONE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1045
+ZCL_SULFUR_DIOXIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1046
+ZCL_DISSOLVED_OXYGEN_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1047
+ZCL_BROMATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1048
+ZCL_CHLORAMINES_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1049
+ZCL_CHLORINE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1050
+ZCL_FECAL_COLIFORM_AND_E_COLI_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1051
+ZCL_FLUORIDE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1052
+ZCL_HALOACETIC_ACIDS_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1053
+ZCL_TOTAL_TRIHALOMETHANES_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1054
+ZCL_TOTAL_COLIFORM_BACTERIA_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1055
+ZCL_TURBIDITY_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1056
+ZCL_COPPER_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1057
+ZCL_LEAD_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1058
+ZCL_MANGANESE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1059
+ZCL_SULFATE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1060
+ZCL_BROMODICHLOROMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1061
+ZCL_BROMOFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1062
+ZCL_CHLORODIBROMOMETHANE_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1063
+ZCL_CHLOROFORM_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1064
+ZCL_SODIUM_CONCENTRATION_MEASUREMENT_CLUSTER_ID = 1065
+ZCL_IAS_ZONE_CLUSTER_ID = 1280
+ZCL_IAS_ACE_CLUSTER_ID = 1281
+ZCL_IAS_WD_CLUSTER_ID = 1282
+ZCL_WAKE_ON_LAN_CLUSTER_ID = 1283
+ZCL_CHANNEL_CLUSTER_ID = 1284
+ZCL_TARGET_NAVIGATOR_CLUSTER_ID = 1285
+ZCL_MEDIA_PLAYBACK_CLUSTER_ID = 1286
+ZCL_MEDIA_INPUT_CLUSTER_ID = 1287
+ZCL_LOW_POWER_CLUSTER_ID = 1288
+ZCL_KEYPAD_INPUT_CLUSTER_ID = 1289
+ZCL_CONTENT_LAUNCH_CLUSTER_ID = 1290
+ZCL_AUDIO_OUTPUT_CLUSTER_ID = 1291
+ZCL_APPLICATION_LAUNCHER_CLUSTER_ID = 1292
+ZCL_APPLICATION_BASIC_CLUSTER_ID = 1293
+ZCL_ACCOUNT_LOGIN_CLUSTER_ID = 1294
+ZCL_TEST_CLUSTER_ID = 1295
+ZCL_MESSAGING_CLUSTER_ID = 1795
+ZCL_APPLIANCE_IDENTIFICATION_CLUSTER_ID = 2816
+ZCL_METER_IDENTIFICATION_CLUSTER_ID = 2817
+ZCL_APPLIANCE_EVENTS_AND_ALERT_CLUSTER_ID = 2818
+ZCL_APPLIANCE_STATISTICS_CLUSTER_ID = 2819
+ZCL_ELECTRICAL_MEASUREMENT_CLUSTER_ID = 2820
+ZCL_BINDING_CLUSTER_ID = 61440
+ZCL_GROUP_KEY_MANAGEMENT_CLUSTER_ID = 61444
+ZCL_SAMPLE_MFG_SPECIFIC_CLUSTER_ID = 64512
+
+
+
+_ATTRIBUTEMETADATA = _descriptor.Descriptor(
+  name='AttributeMetadata',
+  full_name='chip.rpc.AttributeMetadata',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='endpoint', full_name='chip.rpc.AttributeMetadata.endpoint', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='cluster', full_name='chip.rpc.AttributeMetadata.cluster', index=1,
+      number=2, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='attribute_id', full_name='chip.rpc.AttributeMetadata.attribute_id', index=2,
+      number=3, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='type', full_name='chip.rpc.AttributeMetadata.type', index=3,
+      number=4, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=53,
+  serialized_end=191,
+)
+
+
+_ATTRIBUTEDATA = _descriptor.Descriptor(
+  name='AttributeData',
+  full_name='chip.rpc.AttributeData',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='data_bool', full_name='chip.rpc.AttributeData.data_bool', index=0,
+      number=1, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='data_uint8', full_name='chip.rpc.AttributeData.data_uint8', index=1,
+      number=2, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='data_uint16', full_name='chip.rpc.AttributeData.data_uint16', index=2,
+      number=3, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='data_uint32', full_name='chip.rpc.AttributeData.data_uint32', index=3,
+      number=4, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='data_bytes', full_name='chip.rpc.AttributeData.data_bytes', index=4,
+      number=5, type=12, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"",
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='data_int8', full_name='chip.rpc.AttributeData.data_int8', index=5,
+      number=6, type=5, cpp_type=1, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='data_int16', full_name='chip.rpc.AttributeData.data_int16', index=6,
+      number=7, type=5, cpp_type=1, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='data_int32', full_name='chip.rpc.AttributeData.data_int32', index=7,
+      number=8, type=5, cpp_type=1, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+    _descriptor.OneofDescriptor(
+      name='data', full_name='chip.rpc.AttributeData.data',
+      index=0, containing_type=None,
+      create_key=_descriptor._internal_create_key,
+    fields=[]),
+  ],
+  serialized_start=194,
+  serialized_end=393,
+)
+
+
+_ATTRIBUTEWRITE = _descriptor.Descriptor(
+  name='AttributeWrite',
+  full_name='chip.rpc.AttributeWrite',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='metadata', full_name='chip.rpc.AttributeWrite.metadata', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='data', full_name='chip.rpc.AttributeWrite.data', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=395,
+  serialized_end=497,
+)
+
+_ATTRIBUTEMETADATA.fields_by_name['cluster'].enum_type = _CLUSTERTYPE
+_ATTRIBUTEMETADATA.fields_by_name['type'].enum_type = _ATTRIBUTETYPE
+_ATTRIBUTEDATA.oneofs_by_name['data'].fields.append(
+  _ATTRIBUTEDATA.fields_by_name['data_bool'])
+_ATTRIBUTEDATA.fields_by_name['data_bool'].containing_oneof = _ATTRIBUTEDATA.oneofs_by_name['data']
+_ATTRIBUTEDATA.oneofs_by_name['data'].fields.append(
+  _ATTRIBUTEDATA.fields_by_name['data_uint8'])
+_ATTRIBUTEDATA.fields_by_name['data_uint8'].containing_oneof = _ATTRIBUTEDATA.oneofs_by_name['data']
+_ATTRIBUTEDATA.oneofs_by_name['data'].fields.append(
+  _ATTRIBUTEDATA.fields_by_name['data_uint16'])
+_ATTRIBUTEDATA.fields_by_name['data_uint16'].containing_oneof = _ATTRIBUTEDATA.oneofs_by_name['data']
+_ATTRIBUTEDATA.oneofs_by_name['data'].fields.append(
+  _ATTRIBUTEDATA.fields_by_name['data_uint32'])
+_ATTRIBUTEDATA.fields_by_name['data_uint32'].containing_oneof = _ATTRIBUTEDATA.oneofs_by_name['data']
+_ATTRIBUTEDATA.oneofs_by_name['data'].fields.append(
+  _ATTRIBUTEDATA.fields_by_name['data_bytes'])
+_ATTRIBUTEDATA.fields_by_name['data_bytes'].containing_oneof = _ATTRIBUTEDATA.oneofs_by_name['data']
+_ATTRIBUTEDATA.oneofs_by_name['data'].fields.append(
+  _ATTRIBUTEDATA.fields_by_name['data_int8'])
+_ATTRIBUTEDATA.fields_by_name['data_int8'].containing_oneof = _ATTRIBUTEDATA.oneofs_by_name['data']
+_ATTRIBUTEDATA.oneofs_by_name['data'].fields.append(
+  _ATTRIBUTEDATA.fields_by_name['data_int16'])
+_ATTRIBUTEDATA.fields_by_name['data_int16'].containing_oneof = _ATTRIBUTEDATA.oneofs_by_name['data']
+_ATTRIBUTEDATA.oneofs_by_name['data'].fields.append(
+  _ATTRIBUTEDATA.fields_by_name['data_int32'])
+_ATTRIBUTEDATA.fields_by_name['data_int32'].containing_oneof = _ATTRIBUTEDATA.oneofs_by_name['data']
+_ATTRIBUTEWRITE.fields_by_name['metadata'].message_type = _ATTRIBUTEMETADATA
+_ATTRIBUTEWRITE.fields_by_name['data'].message_type = _ATTRIBUTEDATA
+DESCRIPTOR.message_types_by_name['AttributeMetadata'] = _ATTRIBUTEMETADATA
+DESCRIPTOR.message_types_by_name['AttributeData'] = _ATTRIBUTEDATA
+DESCRIPTOR.message_types_by_name['AttributeWrite'] = _ATTRIBUTEWRITE
+DESCRIPTOR.enum_types_by_name['AttributeType'] = _ATTRIBUTETYPE
+DESCRIPTOR.enum_types_by_name['ClusterType'] = _CLUSTERTYPE
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+AttributeMetadata = _reflection.GeneratedProtocolMessageType('AttributeMetadata', (_message.Message,), {
+  'DESCRIPTOR' : _ATTRIBUTEMETADATA,
+  '__module__' : 'attributes_service_pb2'
+  # @@protoc_insertion_point(class_scope:chip.rpc.AttributeMetadata)
+  })
+_sym_db.RegisterMessage(AttributeMetadata)
+
+AttributeData = _reflection.GeneratedProtocolMessageType('AttributeData', (_message.Message,), {
+  'DESCRIPTOR' : _ATTRIBUTEDATA,
+  '__module__' : 'attributes_service_pb2'
+  # @@protoc_insertion_point(class_scope:chip.rpc.AttributeData)
+  })
+_sym_db.RegisterMessage(AttributeData)
+
+AttributeWrite = _reflection.GeneratedProtocolMessageType('AttributeWrite', (_message.Message,), {
+  'DESCRIPTOR' : _ATTRIBUTEWRITE,
+  '__module__' : 'attributes_service_pb2'
+  # @@protoc_insertion_point(class_scope:chip.rpc.AttributeWrite)
+  })
+_sym_db.RegisterMessage(AttributeWrite)
+
+
+
+_ATTRIBUTES = _descriptor.ServiceDescriptor(
+  name='Attributes',
+  full_name='chip.rpc.Attributes',
+  file=DESCRIPTOR,
+  index=0,
+  serialized_options=None,
+  create_key=_descriptor._internal_create_key,
+  serialized_start=7274,
+  serialized_end=7407,
+  methods=[
+  _descriptor.MethodDescriptor(
+    name='Write',
+    full_name='chip.rpc.Attributes.Write',
+    index=0,
+    containing_service=None,
+    input_type=_ATTRIBUTEWRITE,
+    output_type=common__pb2._EMPTY,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+  _descriptor.MethodDescriptor(
+    name='Read',
+    full_name='chip.rpc.Attributes.Read',
+    index=1,
+    containing_service=None,
+    input_type=_ATTRIBUTEMETADATA,
+    output_type=_ATTRIBUTEDATA,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+])
+_sym_db.RegisterServiceDescriptor(_ATTRIBUTES)
+
+DESCRIPTOR.services_by_name['Attributes'] = _ATTRIBUTES
+
+# @@protoc_insertion_point(module_scope)
diff --git a/rpc_tool/verify_rpc/protos/common_pb2.py b/rpc_tool/verify_rpc/protos/common_pb2.py
new file mode 100644
index 0000000..37ef8a1
--- /dev/null
+++ b/rpc_tool/verify_rpc/protos/common_pb2.py
@@ -0,0 +1,64 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: common.proto
+# pylint: skip-file
+"""Generated protocol buffer code."""
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='common.proto',
+  package='pw.protobuf',
+  syntax='proto3',
+  serialized_options=None,
+  create_key=_descriptor._internal_create_key,
+  serialized_pb=b'\n\x0c\x63ommon.proto\x12\x0bpw.protobuf\"\x07\n\x05\x45mptyb\x06proto3'
+)
+
+
+
+
+_EMPTY = _descriptor.Descriptor(
+  name='Empty',
+  full_name='pw.protobuf.Empty',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=29,
+  serialized_end=36,
+)
+
+DESCRIPTOR.message_types_by_name['Empty'] = _EMPTY
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+Empty = _reflection.GeneratedProtocolMessageType('Empty', (_message.Message,), {
+  'DESCRIPTOR' : _EMPTY,
+  '__module__' : 'common_pb2'
+  # @@protoc_insertion_point(class_scope:pw.protobuf.Empty)
+  })
+_sym_db.RegisterMessage(Empty)
+
+
+# @@protoc_insertion_point(module_scope)
diff --git a/rpc_tool/verify_rpc/protos/descriptor_service_pb2.py b/rpc_tool/verify_rpc/protos/descriptor_service_pb2.py
new file mode 100644
index 0000000..c600e3e
--- /dev/null
+++ b/rpc_tool/verify_rpc/protos/descriptor_service_pb2.py
@@ -0,0 +1,206 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: descriptor_service.proto
+# pylint: skip-file
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='descriptor_service.proto',
+  package='chip.rpc',
+  syntax='proto3',
+  serialized_options=None,
+  create_key=_descriptor._internal_create_key,
+  serialized_pb=b'\n\x18\x64\x65scriptor_service.proto\x12\x08\x63hip.rpc\"!\n\nDeviceType\x12\x13\n\x0b\x64\x65vice_type\x18\x01 \x01(\r\"\x1d\n\x07\x43luster\x12\x12\n\ncluster_id\x18\x01 \x01(\r\"\x1c\n\x08\x45ndpoint\x12\x10\n\x08\x65ndpoint\x18\x01 \x01(\r2\xf7\x01\n\nDescriptor\x12>\n\x0e\x44\x65viceTypeList\x12\x12.chip.rpc.Endpoint\x1a\x14.chip.rpc.DeviceType\"\x00\x30\x01\x12\x37\n\nServerList\x12\x12.chip.rpc.Endpoint\x1a\x11.chip.rpc.Cluster\"\x00\x30\x01\x12\x37\n\nClientList\x12\x12.chip.rpc.Endpoint\x1a\x11.chip.rpc.Cluster\"\x00\x30\x01\x12\x37\n\tPartsList\x12\x12.chip.rpc.Endpoint\x1a\x12.chip.rpc.Endpoint\"\x00\x30\x01\x62\x06proto3'
+)
+
+
+
+
+_DEVICETYPE = _descriptor.Descriptor(
+  name='DeviceType',
+  full_name='chip.rpc.DeviceType',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='device_type', full_name='chip.rpc.DeviceType.device_type', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=38,
+  serialized_end=71,
+)
+
+
+_CLUSTER = _descriptor.Descriptor(
+  name='Cluster',
+  full_name='chip.rpc.Cluster',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='cluster_id', full_name='chip.rpc.Cluster.cluster_id', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=73,
+  serialized_end=102,
+)
+
+
+_ENDPOINT = _descriptor.Descriptor(
+  name='Endpoint',
+  full_name='chip.rpc.Endpoint',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='endpoint', full_name='chip.rpc.Endpoint.endpoint', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=104,
+  serialized_end=132,
+)
+
+DESCRIPTOR.message_types_by_name['DeviceType'] = _DEVICETYPE
+DESCRIPTOR.message_types_by_name['Cluster'] = _CLUSTER
+DESCRIPTOR.message_types_by_name['Endpoint'] = _ENDPOINT
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+DeviceType = _reflection.GeneratedProtocolMessageType('DeviceType', (_message.Message,), {
+  'DESCRIPTOR' : _DEVICETYPE,
+  '__module__' : 'descriptor_service_pb2'
+  # @@protoc_insertion_point(class_scope:chip.rpc.DeviceType)
+  })
+_sym_db.RegisterMessage(DeviceType)
+
+Cluster = _reflection.GeneratedProtocolMessageType('Cluster', (_message.Message,), {
+  'DESCRIPTOR' : _CLUSTER,
+  '__module__' : 'descriptor_service_pb2'
+  # @@protoc_insertion_point(class_scope:chip.rpc.Cluster)
+  })
+_sym_db.RegisterMessage(Cluster)
+
+Endpoint = _reflection.GeneratedProtocolMessageType('Endpoint', (_message.Message,), {
+  'DESCRIPTOR' : _ENDPOINT,
+  '__module__' : 'descriptor_service_pb2'
+  # @@protoc_insertion_point(class_scope:chip.rpc.Endpoint)
+  })
+_sym_db.RegisterMessage(Endpoint)
+
+
+
+_DESCRIPTOR = _descriptor.ServiceDescriptor(
+  name='Descriptor',
+  full_name='chip.rpc.Descriptor',
+  file=DESCRIPTOR,
+  index=0,
+  serialized_options=None,
+  create_key=_descriptor._internal_create_key,
+  serialized_start=135,
+  serialized_end=382,
+  methods=[
+  _descriptor.MethodDescriptor(
+    name='DeviceTypeList',
+    full_name='chip.rpc.Descriptor.DeviceTypeList',
+    index=0,
+    containing_service=None,
+    input_type=_ENDPOINT,
+    output_type=_DEVICETYPE,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+  _descriptor.MethodDescriptor(
+    name='ServerList',
+    full_name='chip.rpc.Descriptor.ServerList',
+    index=1,
+    containing_service=None,
+    input_type=_ENDPOINT,
+    output_type=_CLUSTER,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+  _descriptor.MethodDescriptor(
+    name='ClientList',
+    full_name='chip.rpc.Descriptor.ClientList',
+    index=2,
+    containing_service=None,
+    input_type=_ENDPOINT,
+    output_type=_CLUSTER,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+  _descriptor.MethodDescriptor(
+    name='PartsList',
+    full_name='chip.rpc.Descriptor.PartsList',
+    index=3,
+    containing_service=None,
+    input_type=_ENDPOINT,
+    output_type=_ENDPOINT,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+])
+_sym_db.RegisterServiceDescriptor(_DESCRIPTOR)
+
+DESCRIPTOR.services_by_name['Descriptor'] = _DESCRIPTOR
+
+# @@protoc_insertion_point(module_scope)
diff --git a/rpc_tool/verify_rpc/protos/device_service_pb2.py b/rpc_tool/verify_rpc/protos/device_service_pb2.py
new file mode 100644
index 0000000..a26603b
--- /dev/null
+++ b/rpc_tool/verify_rpc/protos/device_service_pb2.py
@@ -0,0 +1,394 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: device_service.proto
+# pylint: skip-file
+"""Generated protocol buffer code."""
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+from protos import common_pb2 as common__pb2
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='device_service.proto',
+  package='chip.rpc',
+  syntax='proto3',
+  serialized_options=None,
+  create_key=_descriptor._internal_create_key,
+  serialized_pb=b'\n\x14\x64\x65vice_service.proto\x12\x08\x63hip.rpc\x1a\x0c\x63ommon.proto\"X\n\x0bPairingInfo\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x15\n\rdiscriminator\x18\x02 \x01(\r\x12\x0f\n\x07qr_code\x18\x03 \x01(\t\x12\x13\n\x0bqr_code_url\x18\x04 \x01(\t\"\x91\x01\n\nDeviceInfo\x12\x11\n\tvendor_id\x18\x01 \x01(\r\x12\x12\n\nproduct_id\x18\x02 \x01(\r\x12\x18\n\x10software_version\x18\x03 \x01(\r\x12\x15\n\rserial_number\x18\x04 \x01(\t\x12+\n\x0cpairing_info\x18\x05 \x01(\x0b\x32\x15.chip.rpc.PairingInfo\"0\n\nFabricInfo\x12\x11\n\tfabric_id\x18\x01 \x01(\r\x12\x0f\n\x07node_id\x18\x02 \x01(\x04\"X\n\x0b\x44\x65viceState\x12\x1e\n\x16time_since_boot_millis\x18\x01 \x01(\x04\x12)\n\x0b\x66\x61\x62ric_info\x18\x02 \x03(\x0b\x32\x14.chip.rpc.FabricInfo\"\'\n\x0cPairingState\x12\x17\n\x0fpairing_enabled\x18\x01 \x01(\x08\x32\xeb\x03\n\x06\x44\x65vice\x12\x38\n\x0c\x46\x61\x63toryReset\x12\x12.pw.protobuf.Empty\x1a\x12.pw.protobuf.Empty\"\x00\x12\x32\n\x06Reboot\x12\x12.pw.protobuf.Empty\x1a\x12.pw.protobuf.Empty\"\x00\x12\x36\n\nTriggerOta\x12\x12.pw.protobuf.Empty\x1a\x12.pw.protobuf.Empty\"\x00\x12;\n\rGetDeviceInfo\x12\x12.pw.protobuf.Empty\x1a\x14.chip.rpc.DeviceInfo\"\x00\x12=\n\x0eGetDeviceState\x12\x12.pw.protobuf.Empty\x1a\x15.chip.rpc.DeviceState\"\x00\x12?\n\x0fSetPairingState\x12\x16.chip.rpc.PairingState\x1a\x12.pw.protobuf.Empty\"\x00\x12?\n\x0fGetPairingState\x12\x12.pw.protobuf.Empty\x1a\x16.chip.rpc.PairingState\"\x00\x12=\n\x0eSetPairingInfo\x12\x15.chip.rpc.PairingInfo\x1a\x12.pw.protobuf.Empty\"\x00\x62\x06proto3'
+  ,
+  dependencies=[common__pb2.DESCRIPTOR,])
+
+
+
+
+_PAIRINGINFO = _descriptor.Descriptor(
+  name='PairingInfo',
+  full_name='chip.rpc.PairingInfo',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='code', full_name='chip.rpc.PairingInfo.code', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='discriminator', full_name='chip.rpc.PairingInfo.discriminator', index=1,
+      number=2, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='qr_code', full_name='chip.rpc.PairingInfo.qr_code', index=2,
+      number=3, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='qr_code_url', full_name='chip.rpc.PairingInfo.qr_code_url', index=3,
+      number=4, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=48,
+  serialized_end=136,
+)
+
+
+_DEVICEINFO = _descriptor.Descriptor(
+  name='DeviceInfo',
+  full_name='chip.rpc.DeviceInfo',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='vendor_id', full_name='chip.rpc.DeviceInfo.vendor_id', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='product_id', full_name='chip.rpc.DeviceInfo.product_id', index=1,
+      number=2, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='software_version', full_name='chip.rpc.DeviceInfo.software_version', index=2,
+      number=3, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='serial_number', full_name='chip.rpc.DeviceInfo.serial_number', index=3,
+      number=4, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=b"".decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='pairing_info', full_name='chip.rpc.DeviceInfo.pairing_info', index=4,
+      number=5, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=139,
+  serialized_end=284,
+)
+
+
+_FABRICINFO = _descriptor.Descriptor(
+  name='FabricInfo',
+  full_name='chip.rpc.FabricInfo',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='fabric_id', full_name='chip.rpc.FabricInfo.fabric_id', index=0,
+      number=1, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='node_id', full_name='chip.rpc.FabricInfo.node_id', index=1,
+      number=2, type=4, cpp_type=4, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=286,
+  serialized_end=334,
+)
+
+
+_DEVICESTATE = _descriptor.Descriptor(
+  name='DeviceState',
+  full_name='chip.rpc.DeviceState',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='time_since_boot_millis', full_name='chip.rpc.DeviceState.time_since_boot_millis', index=0,
+      number=1, type=4, cpp_type=4, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    _descriptor.FieldDescriptor(
+      name='fabric_info', full_name='chip.rpc.DeviceState.fabric_info', index=1,
+      number=2, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=336,
+  serialized_end=424,
+)
+
+
+_PAIRINGSTATE = _descriptor.Descriptor(
+  name='PairingState',
+  full_name='chip.rpc.PairingState',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  create_key=_descriptor._internal_create_key,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='pairing_enabled', full_name='chip.rpc.PairingState.pairing_enabled', index=0,
+      number=1, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=426,
+  serialized_end=465,
+)
+
+_DEVICEINFO.fields_by_name['pairing_info'].message_type = _PAIRINGINFO
+_DEVICESTATE.fields_by_name['fabric_info'].message_type = _FABRICINFO
+DESCRIPTOR.message_types_by_name['PairingInfo'] = _PAIRINGINFO
+DESCRIPTOR.message_types_by_name['DeviceInfo'] = _DEVICEINFO
+DESCRIPTOR.message_types_by_name['FabricInfo'] = _FABRICINFO
+DESCRIPTOR.message_types_by_name['DeviceState'] = _DEVICESTATE
+DESCRIPTOR.message_types_by_name['PairingState'] = _PAIRINGSTATE
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+PairingInfo = _reflection.GeneratedProtocolMessageType('PairingInfo', (_message.Message,), {
+  'DESCRIPTOR' : _PAIRINGINFO,
+  '__module__' : 'device_service_pb2'
+  # @@protoc_insertion_point(class_scope:chip.rpc.PairingInfo)
+  })
+_sym_db.RegisterMessage(PairingInfo)
+
+DeviceInfo = _reflection.GeneratedProtocolMessageType('DeviceInfo', (_message.Message,), {
+  'DESCRIPTOR' : _DEVICEINFO,
+  '__module__' : 'device_service_pb2'
+  # @@protoc_insertion_point(class_scope:chip.rpc.DeviceInfo)
+  })
+_sym_db.RegisterMessage(DeviceInfo)
+
+FabricInfo = _reflection.GeneratedProtocolMessageType('FabricInfo', (_message.Message,), {
+  'DESCRIPTOR' : _FABRICINFO,
+  '__module__' : 'device_service_pb2'
+  # @@protoc_insertion_point(class_scope:chip.rpc.FabricInfo)
+  })
+_sym_db.RegisterMessage(FabricInfo)
+
+DeviceState = _reflection.GeneratedProtocolMessageType('DeviceState', (_message.Message,), {
+  'DESCRIPTOR' : _DEVICESTATE,
+  '__module__' : 'device_service_pb2'
+  # @@protoc_insertion_point(class_scope:chip.rpc.DeviceState)
+  })
+_sym_db.RegisterMessage(DeviceState)
+
+PairingState = _reflection.GeneratedProtocolMessageType('PairingState', (_message.Message,), {
+  'DESCRIPTOR' : _PAIRINGSTATE,
+  '__module__' : 'device_service_pb2'
+  # @@protoc_insertion_point(class_scope:chip.rpc.PairingState)
+  })
+_sym_db.RegisterMessage(PairingState)
+
+
+
+_DEVICE = _descriptor.ServiceDescriptor(
+  name='Device',
+  full_name='chip.rpc.Device',
+  file=DESCRIPTOR,
+  index=0,
+  serialized_options=None,
+  create_key=_descriptor._internal_create_key,
+  serialized_start=468,
+  serialized_end=959,
+  methods=[
+  _descriptor.MethodDescriptor(
+    name='FactoryReset',
+    full_name='chip.rpc.Device.FactoryReset',
+    index=0,
+    containing_service=None,
+    input_type=common__pb2._EMPTY,
+    output_type=common__pb2._EMPTY,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+  _descriptor.MethodDescriptor(
+    name='Reboot',
+    full_name='chip.rpc.Device.Reboot',
+    index=1,
+    containing_service=None,
+    input_type=common__pb2._EMPTY,
+    output_type=common__pb2._EMPTY,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+  _descriptor.MethodDescriptor(
+    name='TriggerOta',
+    full_name='chip.rpc.Device.TriggerOta',
+    index=2,
+    containing_service=None,
+    input_type=common__pb2._EMPTY,
+    output_type=common__pb2._EMPTY,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+  _descriptor.MethodDescriptor(
+    name='GetDeviceInfo',
+    full_name='chip.rpc.Device.GetDeviceInfo',
+    index=3,
+    containing_service=None,
+    input_type=common__pb2._EMPTY,
+    output_type=_DEVICEINFO,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+  _descriptor.MethodDescriptor(
+    name='GetDeviceState',
+    full_name='chip.rpc.Device.GetDeviceState',
+    index=4,
+    containing_service=None,
+    input_type=common__pb2._EMPTY,
+    output_type=_DEVICESTATE,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+  _descriptor.MethodDescriptor(
+    name='SetPairingState',
+    full_name='chip.rpc.Device.SetPairingState',
+    index=5,
+    containing_service=None,
+    input_type=_PAIRINGSTATE,
+    output_type=common__pb2._EMPTY,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+  _descriptor.MethodDescriptor(
+    name='GetPairingState',
+    full_name='chip.rpc.Device.GetPairingState',
+    index=6,
+    containing_service=None,
+    input_type=common__pb2._EMPTY,
+    output_type=_PAIRINGSTATE,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+  _descriptor.MethodDescriptor(
+    name='SetPairingInfo',
+    full_name='chip.rpc.Device.SetPairingInfo',
+    index=7,
+    containing_service=None,
+    input_type=_PAIRINGINFO,
+    output_type=common__pb2._EMPTY,
+    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
+  ),
+])
+_sym_db.RegisterServiceDescriptor(_DEVICE)
+
+DESCRIPTOR.services_by_name['Device'] = _DEVICE
+
+# @@protoc_insertion_point(module_scope)
diff --git a/rpc_tool/verify_rpc/requirements.txt b/rpc_tool/verify_rpc/requirements.txt
new file mode 100644
index 0000000..405134e
--- /dev/null
+++ b/rpc_tool/verify_rpc/requirements.txt
@@ -0,0 +1,6 @@
+freezegun==0.3.4
+immutabledict
+pigweed>=0.0.3
+pyserial>=3.5
+mobly
+simple_term_menu
\ No newline at end of file
diff --git a/rpc_tool/verify_rpc/rpc_tool.py b/rpc_tool/verify_rpc/rpc_tool.py
new file mode 100644
index 0000000..d053eb3
--- /dev/null
+++ b/rpc_tool/verify_rpc/rpc_tool.py
@@ -0,0 +1,329 @@
+# Copyright 2022 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Matter RPC verification tool."""
+import enum
+import datetime
+import immutabledict
+import logging
+import os
+import shutil
+import simple_term_menu
+import sys
+import time
+from typing import Optional
+
+from mobly import asserts
+from mobly import base_test
+from mobly import test_runner
+
+import pw_hdlc.rpc
+import pw_rpc
+
+import serial.tools.list_ports
+import serial
+
+from protos import attributes_service_pb2, descriptor_service_pb2, device_service_pb2
+
+# Menu selection option
+_EXIT_OPTION_TEXT = "exit"
+
+# Matter spec definition
+_ROOT_NODE_ID = 0
+_ON_OFF_CLUSTER_ID = 6
+_ON_OFF_ATTRIBUTE_ID = 0
+_PROTOS = (attributes_service_pb2, descriptor_service_pb2, device_service_pb2)
+
+# Test results and logs.
+_MOBLY_LOG_DIRECTORY = "/tmp/logs/mobly/RpcTest/latest"
+_TEST_RESULT_DIR_PREFIX = "rpc_test_result"
+_PW_HDLC_LOG = "pw_hdlc.log"
+
+# Serial connection.
+_READ_BYTE_SIZE = 4096
+_BAUDRATE = 115200
+_SERIAL_TIMEOUT = 0.01
+
+# Device bootup wait time.
+_BOOTUP_TIMEOUT = 30
+_POLLING_PERIOD = 1
+_CALLBACK_TIMEOUT = 3
+
+# Disable logger to avoid excessive logs.
+_LOGGER = logging.getLogger("pw_rpc.callback_client")
+_LOGGER.disabled = True
+
+
+class MatterAppType(enum.Enum):
+    """Matter application type."""
+    LIGHT = "light"
+    NONE = "none"
+
+
+class MatterDeviceType(enum.Enum):
+    """The supported Matter device types and their IDs in spec."""
+    # Matter device type spec:
+    # https://github.com/CHIP-Specifications/connectedhomeip-spec/tree/master/src/device_types
+    ColorTemperatureLight = 0x010C
+    DimmableLight = 0x0101
+    OnOffLight = 0x0100
+    NoneOfTheAbove = -1
+
+
+# Device type and app type mapping
+# TODO: Add more types mapping
+DeviceTypeToAppType = immutabledict.immutabledict({
+    MatterDeviceType.ColorTemperatureLight: MatterAppType.LIGHT,
+    MatterDeviceType.DimmableLight: MatterAppType.LIGHT,
+    MatterDeviceType.OnOffLight: MatterAppType.LIGHT,
+    MatterDeviceType.NoneOfTheAbove: MatterAppType.NONE
+})
+
+
+class MatterDevice:
+    """Matter device class wrapper."""
+
+    def __init__(self, address: str, device_type: MatterDeviceType):
+        """Device class constructor.
+
+        1. Open serial connection of the device.
+        2. Create HDLC RPC client instance of the device
+
+        Args:
+            address: Device serial address.
+            device_type: Device type of the Matter device.
+        """
+        self.serial_inst = serial.Serial(
+            address, _BAUDRATE, timeout=_SERIAL_TIMEOUT)
+
+        callback_client_impl = pw_rpc.callback_client.Impl(
+            default_unary_timeout_s=_CALLBACK_TIMEOUT,
+            default_stream_timeout_s=_CALLBACK_TIMEOUT)
+
+        self.client = pw_hdlc.rpc.HdlcRpcClient(
+            read=lambda: self.serial_inst.read(_READ_BYTE_SIZE),
+            paths_or_modules=_PROTOS,
+            channels=pw_hdlc.rpc.default_channels(self.serial_inst.write),
+            output=self.write_hdlc_log,
+            client_impl=callback_client_impl)
+
+        self._endpoint_id = self._get_endpoint_id_by_device_type(device_type)
+        self._app_type = DeviceTypeToAppType[device_type]
+
+    def _get_endpoint_id_by_device_type(
+        self, device_type: MatterDeviceType) -> int:
+        """Gets the endpoint ID corresponding to the device type."""
+        if device_type == MatterDeviceType.NoneOfTheAbove:
+            return -1
+        _, endpoints = self.descriptor_service.PartsList(endpoint=_ROOT_NODE_ID)
+        for endpoint in endpoints:
+            endpoint_id = endpoint.endpoint
+            _, type_inst = self.descriptor_service.DeviceTypeList(
+                endpoint=endpoint_id)
+            if type_inst[0].device_type == device_type.value:
+                return endpoint_id
+        raise RuntimeError(f"No endpoint corresponding to {device_type.name}.")
+
+    @property
+    def app_type(self) -> MatterAppType:
+        """App type of the device."""
+        return self._app_type
+
+    @property
+    def attribute_service(self) -> pw_rpc.client.ServiceClient:
+        """Returns the attribute RPC service."""
+        return self.client.rpcs().chip.rpc.Attributes
+
+    @property
+    def descriptor_service(self) -> pw_rpc.client.ServiceClient:
+        """Returns the descriptor RPC service."""
+        return self.client.rpcs().chip.rpc.Descriptor
+
+    @property
+    def device_service(self) -> pw_rpc.client.ServiceClient:
+        """Returns the device RPC service."""
+        return self.client.rpcs().chip.rpc.Device
+
+    def close(self) -> None:
+        """Close the serial connection."""
+        self.serial_inst.close()
+
+    @staticmethod
+    def write_hdlc_log(data: bytes) -> None:
+        """Stores HDLC RPC logs."""
+        with open(_PW_HDLC_LOG, "w") as output:
+            output.write(data.decode() + "\n")
+            output.flush()
+
+    def turn_light_on_or_off(self, on: bool) -> None:
+        """Turns on or off the light if applicable."""
+        if self.app_type != MatterAppType.LIGHT:
+            raise RuntimeError("Device is not a light.")
+
+        self.attribute_service.Write(
+            data=attributes_service_pb2.AttributeData(data_bool=on),
+            metadata=attributes_service_pb2.AttributeMetadata(
+                endpoint=self._endpoint_id,
+                cluster=_ON_OFF_CLUSTER_ID,
+                attribute_id=_ON_OFF_ATTRIBUTE_ID,
+                type=attributes_service_pb2.AttributeType.ZCL_BOOLEAN_ATTRIBUTE_TYPE))
+
+    def get_light_state(self) -> bool:
+        """Returns True if the light is currently on. False if off."""
+        if self.app_type != MatterAppType.LIGHT:
+            raise RuntimeError("Device is not a light.")
+
+        _, data = self.attribute_service.Read(
+            endpoint=self._endpoint_id,
+            cluster=_ON_OFF_CLUSTER_ID,
+            attribute_id=_ON_OFF_ATTRIBUTE_ID,
+            type=attributes_service_pb2.AttributeType.ZCL_BOOLEAN_ATTRIBUTE_TYPE)
+
+        return data.data_bool
+
+
+class MatterRpcTest(base_test.BaseTestClass):
+    """Matter RPC Mobly Test.
+
+    Tests include: reboot, factory reset, descriptor cluster service
+    and attribute service RPC tests.
+    """
+
+    def setup_class(self):
+        """Device selection and creation."""
+        self.dut = None
+        self.fw_version = None
+        selected_device = self._device_selection()
+        if selected_device is None:
+            sys.exit(0)
+        device_type = self._device_type_selection()
+        self.dut = MatterDevice(selected_device, device_type)
+
+    def teardown_class(self):
+        """Closes device and generates test result."""
+        if self.dut is not None:
+            self.dut.close()
+            self._generate_test_result()
+
+    def teardown_test(self):
+        """Polls device until it's online."""
+        # Some devices will crash without cooling down first
+        time.sleep(_POLLING_PERIOD)
+        bootup_time = time.time() + _BOOTUP_TIMEOUT
+        while time.time() < bootup_time:
+            try:
+                self.dut.device_service.GetDeviceInfo()
+                return
+            except pw_rpc.callback_client.errors.RpcTimeout:
+                time.sleep(_POLLING_PERIOD)
+        raise RuntimeError(f"Device fails to bootup in {_BOOTUP_TIMEOUT} secs.")
+
+    def test_rpc_firmware_version(self):
+        """Tests firmware_version."""
+        ack, device_info = self.dut.device_service.GetDeviceInfo()
+        asserts.assert_true(ack, "RPC ack value is not True.")
+        asserts.assert_is_not_none(device_info.software_version)
+        self.fw_version = device_info.software_version
+
+    def test_rpc_reboot(self):
+        """Tests reboot method."""
+        ack, _ = self.dut.device_service.Reboot()
+        asserts.assert_true(ack, "RPC ack value is not True.")
+
+    def test_rpc_factory_reset(self):
+        """Tests factory reset method."""
+        ack, _ = self.dut.device_service.FactoryReset()
+        asserts.assert_true(ack, "RPC ack value is not True.")
+
+    def test_rpc_descriptor_cluster(self):
+        """Tests descriptor cluster service"""
+        ack, endpoints = self.dut.descriptor_service.PartsList(endpoint=0)
+        asserts.assert_true(ack, "RPC ack value is not True.")
+        asserts.assert_true(bool(endpoints), "Endpoint list is empty.")
+        for endpoint in endpoints:
+            ack, device_type = self.dut.descriptor_service.DeviceTypeList(endpoint=endpoint.endpoint)
+            asserts.assert_true(ack, "RPC ack value is not True.")
+            asserts.assert_is_instance(device_type[0].device_type, int)
+
+    def test_rpc_attribute_service(self):
+        """Tests attribute service."""
+        # Every endpoint works, so pick the first one
+        _, endpoints = self.dut.descriptor_service.PartsList(endpoint=0)
+        endpoint_id = endpoints[0].endpoint
+
+        # Every cluster works, so pick the first one
+        ack, clusters = self.dut.descriptor_service.ServerList(endpoint=endpoint_id)
+        asserts.assert_true(ack, "RPC ack value is not True.")
+        asserts.assert_true(bool(clusters), "Cluster list is empty.")
+        cluster_id = clusters[0].cluster_id
+
+        # Read the attribute from the endpoint
+        ack, data = self.dut.attribute_service.Read(
+            endpoint=endpoint_id,
+            cluster=cluster_id,
+            attribute_id=0,
+            type=attributes_service_pb2.AttributeType.ZCL_BITMAP32_ATTRIBUTE_TYPE)
+        asserts.assert_true(ack, "RPC ack value is not True.")
+        asserts.assert_is_instance(data.data_uint32, int)
+
+    def test_light_app_type(self):
+        """Tests light on off if device is a light."""
+        if self.dut.app_type == MatterAppType.LIGHT:
+            # Turn on the light
+            self.dut.turn_light_on_or_off(on=True)
+            asserts.assert_true(self.dut.get_light_state(), "The light is not on")
+            # Turn off the light
+            self.dut.turn_light_on_or_off(on=False)
+            asserts.assert_false(self.dut.get_light_state(), "The light is not off")
+        else:
+            asserts.skip("Light test is skipped.")
+
+    @staticmethod
+    def _device_selection() -> Optional[str]:
+        """Selects device via terminal menu.
+
+        Returns:
+            The selected device address. None if "exit" is selected.
+        """
+        devices = serial.tools.list_ports.comports()
+        options = [device.description + f" (serial number {device.serial_number})"
+                   for device in devices] + [_EXIT_OPTION_TEXT]
+        menu = simple_term_menu.TerminalMenu(options)
+        selected_index = menu.show()
+        return None if selected_index >= len(devices) else devices[selected_index].device
+
+    @staticmethod
+    def _device_type_selection() -> MatterDeviceType:
+        """Selects the Matter device type of your device."""
+        all_types = list(MatterDeviceType)
+        options = [matter_type.name for matter_type in all_types]
+        menu = simple_term_menu.TerminalMenu(options, title="Select the device type:")
+        selected_index = menu.show()
+        return all_types[selected_index]
+
+    def _generate_test_result(self) -> None:
+        """Generates RPC test result."""
+        fw_version = self.fw_version if self.fw_version is not None else "unknown"
+        test_result_dir = (
+            f"{_TEST_RESULT_DIR_PREFIX}-{fw_version}-"
+            f"{str(datetime.datetime.now())}")
+        shutil.copytree(_MOBLY_LOG_DIRECTORY, test_result_dir)
+        if os.path.exists(_PW_HDLC_LOG):
+            shutil.move(_PW_HDLC_LOG, f"{test_result_dir}/{_PW_HDLC_LOG}")
+        shutil.make_archive(test_result_dir, "zip", test_result_dir)
+        shutil.rmtree(test_result_dir)
+
+
+if __name__ == "__main__":
+    test_runner.main()
diff --git a/rpc_tool/verify_rpc/rpc_tool_test.py b/rpc_tool/verify_rpc/rpc_tool_test.py
new file mode 100644
index 0000000..9a3ac6f
--- /dev/null
+++ b/rpc_tool/verify_rpc/rpc_tool_test.py
@@ -0,0 +1,336 @@
+# Copyright 2022 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Unit test for Matter RPC verification tool."""
+import os
+import shutil
+import sys
+import time
+import unittest
+from unittest import mock
+
+from freezegun import freeze_time
+
+from mobly import asserts
+from mobly import config_parser
+import pw_hdlc.rpc
+import pw_rpc
+import serial
+import serial.tools.list_ports
+import simple_term_menu
+
+import rpc_tool
+
+_FAKE_DEVICE_ADDRESS = "fake-device-address"
+_FAKE_DESCRIPTION = "fake-description"
+_FAKE_TIME_NOW = "2022-06-01"
+_FAKE_INDEX = 0
+_FAKE_MATTER_DATA = 1
+
+
+class MatterDeviceTest(unittest.TestCase):
+    """Unit tests for MatterDevice."""
+
+    def setUp(self):
+        super().setUp()
+        serial_patcher = mock.patch.object(serial, "Serial")
+        serial_patcher.start()
+        self.addCleanup(serial_patcher.stop)
+        impl_patcher = mock.patch.object(pw_rpc.callback_client, "Impl")
+        impl_patcher.start()
+        self.addCleanup(impl_patcher.stop)
+        client_patcher = mock.patch.object(pw_hdlc.rpc, "HdlcRpcClient")
+        fake_client_class = client_patcher.start()
+        self.fake_client = fake_client_class.return_value
+        self.addCleanup(client_patcher.stop)
+        self.uut = rpc_tool.MatterDevice(
+            address=_FAKE_DEVICE_ADDRESS,
+            device_type=rpc_tool.MatterDeviceType.NoneOfTheAbove)
+
+    def test_attribute_service(self):
+        """Verifies attribute_service on success."""
+        self.assertEqual(
+            self.fake_client.rpcs.return_value.chip.rpc.Attributes,
+            self.uut.attribute_service)
+
+    def test_descriptor_service(self):
+        """Verifies descriptor_service on success."""
+        self.assertEqual(
+            self.fake_client.rpcs.return_value.chip.rpc.Descriptor,
+            self.uut.descriptor_service)
+
+    def test_device_service(self):
+        """Verifies device_service on success."""
+        self.assertEqual(
+            self.fake_client.rpcs.return_value.chip.rpc.Device,
+            self.uut.device_service)
+
+    def test_close(self):
+        """Verifies close method on success."""
+        self.uut.close()
+
+        self.uut.serial_inst.close.assert_called_once()
+
+    @mock.patch.object(rpc_tool, "open")
+    def test_write_hdlc_log(self, mock_open):
+        """Verifies write_hdlc_log method on success."""
+        mock_output = mock.Mock()
+        mock_open.return_value.__enter__.return_value = mock_output
+
+        self.uut.write_hdlc_log(b"")
+
+        mock_output.write.assert_called_once_with("\n")
+        mock_output.flush.assert_called_once()
+
+    def test_get_endpoint_id_by_device_type_none_type(self):
+        """Verifies _get_endpoint_id_by_device_type with NoneOfTheAbove."""
+        self.assertEqual(-1,
+            self.uut._get_endpoint_id_by_device_type(
+                rpc_tool.MatterDeviceType.NoneOfTheAbove))
+
+    def test_get_endpoint_id_by_device_type_normal_type(self):
+        """Verifies _get_endpoint_id_by_device_type with normal type."""
+        fake_endpoints = [mock.Mock(endpoint=_FAKE_MATTER_DATA)]
+        fake_type_inst = [mock.Mock(device_type=_FAKE_MATTER_DATA)]
+        fake_descriptor_service = mock.Mock()
+        fake_descriptor_service.PartsList.return_value = (
+            True, fake_endpoints)
+        fake_descriptor_service.DeviceTypeList.return_value = (
+            True, fake_type_inst)
+        self.fake_client.rpcs.return_value.chip.rpc.Descriptor = (
+            fake_descriptor_service)
+
+        fake_type = mock.Mock(value=_FAKE_MATTER_DATA)
+        self.assertEqual(
+            _FAKE_MATTER_DATA,
+            self.uut._get_endpoint_id_by_device_type(fake_type))
+
+        fake_type_not_exist = mock.Mock(value=0)
+        with self.assertRaisesRegex(RuntimeError, "No endpoint corresponding"):
+            self.uut._get_endpoint_id_by_device_type(fake_type_not_exist)
+
+    def test_app_type(self):
+        """Verifies app_type property."""
+        self.assertEqual(rpc_tool.MatterAppType.NONE, self.uut.app_type)
+
+    def test_turn_light_on_or_off_on_failure(self):
+        """Verifies turn_light_on_or_off on failure."""
+        with self.assertRaisesRegex(RuntimeError, "not a light"):
+            self.uut.turn_light_on_or_off(True)
+
+    def test_turn_light_on_or_off_on_success(self):
+        """Verifies turn_light_on_or_off on success."""
+        self.uut._app_type = rpc_tool.MatterAppType.LIGHT
+        self.uut._endpoint_id = _FAKE_MATTER_DATA
+
+        self.uut.turn_light_on_or_off(True)
+
+        (self.fake_client.rpcs.return_value.chip.rpc.Attributes.
+            Write.assert_called_once())
+
+    def test_get_light_state_on_failure(self):
+        """Verifies get_light_state on failure."""
+        with self.assertRaisesRegex(RuntimeError, "not a light"):
+            self.uut.get_light_state()
+
+    def test_get_light_state_on_success(self):
+        """Verifies get_light_state on success."""
+        self.uut._app_type = rpc_tool.MatterAppType.LIGHT
+        self.uut._endpoint_id = _FAKE_MATTER_DATA
+        self.fake_client.rpcs.return_value.chip.rpc.Attributes.Read.return_value = (
+            True, mock.Mock(data_bool=True))
+
+        self.assertTrue(self.uut.get_light_state())
+
+
+class MatterRpcToolTest(unittest.TestCase):
+    """Unit tests for RPC tool module."""
+
+    def setUp(self):
+        super().setUp()
+        mock_configs = config_parser.TestRunConfig()
+        self.uut = rpc_tool.MatterRpcTest(mock_configs)
+        mock_matter_device = mock.MagicMock(spec=rpc_tool.MatterDevice)
+        matter_device_class_patcher = mock.patch.object(
+            rpc_tool,
+            "MatterDevice",
+            return_value=mock_matter_device)
+        matter_device_class_patcher.start()
+        self.addCleanup(matter_device_class_patcher.stop)
+        self.uut.dut = mock_matter_device
+
+    @mock.patch.object(
+        rpc_tool.MatterRpcTest,
+        "_device_type_selection",
+        return_value=rpc_tool.MatterDeviceType.NoneOfTheAbove)
+    @mock.patch.object(
+        rpc_tool.MatterRpcTest,
+        "_device_selection",
+        return_value=_FAKE_DEVICE_ADDRESS)
+    def test_setup_class_select_device(
+        self, mock_device_selection, mock_type_selection):
+        """Verifies setup class selects a valid device."""
+        self.uut.setup_class()
+
+        self.assertIsNotNone(self.uut.dut)
+
+    @mock.patch.object(
+        rpc_tool.MatterRpcTest,
+        "_device_type_selection",
+        return_value=rpc_tool.MatterDeviceType.NoneOfTheAbove)
+    @mock.patch.object(sys, "exit")
+    @mock.patch.object(
+        rpc_tool.MatterRpcTest, "_device_selection", return_value=None)
+    def test_setup_class_exit(
+        self, mock_device_selection, mock_exit, mock_type_selection):
+        """Verifies setup class exits without selecting device."""
+        self.uut.setup_class()
+
+        mock_exit.assert_called_once()
+
+    @mock.patch.object(rpc_tool.MatterRpcTest, "_generate_test_result")
+    def test_teardown_class(self, mock_generate_test_result):
+        """Verifies teardown_class on success."""
+        self.uut.teardown_class()
+
+        self.uut.dut.close.assert_called_once()
+        mock_generate_test_result.assert_called_once()
+
+    @mock.patch.object(time, "sleep")
+    def test_teardown_test_on_success(self, mock_sleep):
+        """Verifies teardown_test on success."""
+        self.uut.teardown_test()
+
+        mock_sleep.assert_called_once()
+        self.uut.dut.device_service.GetDeviceInfo.assert_called_once()
+
+    @mock.patch.object(time, "sleep")
+    @mock.patch.object(time, "time",
+        side_effect=[0, rpc_tool._BOOTUP_TIMEOUT-1, rpc_tool._BOOTUP_TIMEOUT+1])
+    def test_teardown_test_on_failure(self, mock_time, mock_sleep):
+        """Verifies teardown_test on failure."""
+        fake_rpc = mock.Mock(method='')
+        self.uut.dut.device_service.GetDeviceInfo.side_effect = (
+            pw_rpc.callback_client.errors.RpcTimeout(rpc=fake_rpc, timeout=0))
+
+        with self.assertRaisesRegex(RuntimeError, "fails to bootup"):
+            self.uut.teardown_test()
+
+    def test_rpc_firmware_version_test(self):
+        """Verifies firmware_version test on success."""
+        mock_device_info = mock.Mock(software_version=_FAKE_MATTER_DATA)
+        self.uut.dut.device_service.GetDeviceInfo.return_value = (
+            True, mock_device_info)
+
+        self.uut.test_rpc_firmware_version()
+
+    def test_rpc_reboot_test(self):
+        """Verifies rpc_reboot test on success."""
+        self.uut.dut.device_service.Reboot.return_value = True, None
+
+        self.uut.test_rpc_reboot()
+
+    def test_rpc_factory_reset_test(self):
+        """Verifies rpc_factory_reset test on success."""
+        self.uut.dut.device_service.FactoryReset.return_value = True, None
+
+        self.uut.test_rpc_factory_reset()
+
+    def test_rpc_descriptor_cluster_test(self):
+        """Verifies test_rpc_descriptor_cluster on success."""
+        mock_endpoints = [mock.Mock(endpoint=_FAKE_MATTER_DATA)]
+        mock_device_type = [mock.Mock(device_type=_FAKE_MATTER_DATA)]
+        self.uut.dut.descriptor_service.PartsList.return_value = (
+            True, mock_endpoints)
+        self.uut.dut.descriptor_service.DeviceTypeList.return_value = (
+            True, mock_device_type)
+
+        self.uut.test_rpc_descriptor_cluster()
+
+    def test_rpc_attribute_service_test(self):
+        """Verifies test_rpc_attribute_service on success."""
+        mock_endpoints = [mock.Mock(endpoint=_FAKE_MATTER_DATA)]
+        mock_clusters = [mock.Mock(cluster_id=_FAKE_MATTER_DATA)]
+        mock_data = mock.Mock(data_uint32=_FAKE_MATTER_DATA)
+        self.uut.dut.descriptor_service.PartsList.return_value = (
+            True, mock_endpoints)
+        self.uut.dut.descriptor_service.ServerList.return_value = (
+            True, mock_clusters)
+        self.uut.dut.attribute_service.Read.return_value = (
+            True, mock_data)
+
+        self.uut.test_rpc_attribute_service()
+
+    def test_light_app_type_test(self):
+        """Verifies test_light_app_type on success."""
+        self.uut.dut.app_type = rpc_tool.MatterAppType.LIGHT
+        self.uut.dut.get_light_state.side_effect = [True, False]
+
+        self.uut.test_light_app_type()
+
+    @mock.patch.object(asserts, "skip")
+    def test_light_app_type_test_skip(self, mock_skip):
+        """Verifies test_light_app_type skipping."""
+        self.uut.test_light_app_type()
+
+        mock_skip.assert_called_once()
+
+    @mock.patch.object(simple_term_menu.TerminalMenu, "show")
+    def test_device_type_selection(self, mock_menu_show):
+        """Verifies _device_type_selection on success."""
+        mock_menu_show.return_value = _FAKE_INDEX
+        expected_selected_type = list(rpc_tool.MatterDeviceType)[0]
+
+        self.assertEqual(
+            expected_selected_type,
+            self.uut._device_type_selection())
+
+    @mock.patch.object(simple_term_menu.TerminalMenu, "show")
+    @mock.patch.object(serial.tools.list_ports, "comports")
+    def test_device_selection(self, mock_comports, mock_menu_show):
+        """Verifies device_selection on success."""
+        fake_device = mock.Mock(
+            device=_FAKE_DEVICE_ADDRESS, description=_FAKE_DESCRIPTION)
+        mock_comports.return_value = [fake_device]
+        mock_menu_show.return_value = _FAKE_INDEX
+
+        self.assertEqual(_FAKE_DEVICE_ADDRESS, self.uut._device_selection())
+
+    @freeze_time(_FAKE_TIME_NOW)
+    @mock.patch.object(os.path, "exists", return_value=True)
+    @mock.patch.object(shutil, "rmtree")
+    @mock.patch.object(shutil, "move")
+    @mock.patch.object(shutil, "make_archive")
+    @mock.patch.object(shutil, "copytree")
+    def test_generate_test_result(
+        self, mock_copy, mock_make, mock_move, mock_rm, mock_exists):
+        """Verifies generate_test_result on success."""
+        self.uut.fw_version = None
+        fake_test_dir = (
+            f"{rpc_tool._TEST_RESULT_DIR_PREFIX}-unknown-{_FAKE_TIME_NOW}"
+            " 00:00:00")
+
+        self.uut._generate_test_result()
+
+        mock_copy.assert_called_once_with(
+            rpc_tool._MOBLY_LOG_DIRECTORY, fake_test_dir)
+        mock_make.assert_called_once_with(fake_test_dir, "zip", fake_test_dir)
+        mock_move.assert_called_once_with(
+            rpc_tool._PW_HDLC_LOG, f"{fake_test_dir}/{rpc_tool._PW_HDLC_LOG}")
+        mock_rm.assert_called_once_with(fake_test_dir)
+        mock_exists.assert_called_once_with(rpc_tool._PW_HDLC_LOG)
+
+
+if __name__ == "__main__":
+    unittest.main(failfast=True)
diff --git a/rpc_tool/verify_rpc/stress_test_suite.py b/rpc_tool/verify_rpc/stress_test_suite.py
new file mode 100644
index 0000000..5c95ba3
--- /dev/null
+++ b/rpc_tool/verify_rpc/stress_test_suite.py
@@ -0,0 +1,75 @@
+# Copyright 2022 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Matter RPC stress test suite."""
+from mobly import test_runner
+
+import rpc_tool
+
+_STRESS_ITERATION = 50
+
+
+class MatterRpcStressTest(rpc_tool.MatterRpcTest):
+    """Matter RPC Mobly Test.
+
+    Tests include: reboot, factory reset, descriptor cluster service
+    and attribute service RPC tests.
+    """
+
+    def setup_generated_tests(self):
+        """Creates stress test targets"""
+        self.generate_tests(
+            test_logic=self.reboot_sdk,
+            name_func=lambda i: "test_reboot_%s" % i,
+            arg_sets=[(i,) for i in range(_STRESS_ITERATION)])
+
+        self.generate_tests(
+            test_logic=self.factory_reset_sdk,
+            name_func=lambda i: "test_factory_reset_%s" % i,
+            arg_sets=[(i,) for i in range(_STRESS_ITERATION)])
+
+        self.generate_tests(
+            test_logic=self.check_descriptor_cluster,
+            name_func=lambda i: "test_descriptor_cluster_%s" % i,
+            arg_sets=[(i,) for i in range(_STRESS_ITERATION)])
+
+        self.generate_tests(
+            test_logic=self.check_attribute_service,
+            name_func=lambda i: "test_attribute_service_%s" % i,
+            arg_sets=[(i,) for i in range(_STRESS_ITERATION)])
+
+
+    def reboot_sdk(self, iteration):
+        """Reboot logic."""
+        del iteration  # Unused
+        self.test_rpc_reboot()
+
+    def factory_reset_sdk(self, iteration):
+        """Factory reset logic."""
+        del iteration  # Unused
+        self.test_rpc_factory_reset()
+
+    def check_descriptor_cluster(self, iteration):
+        """Descriptor cluster logic."""
+        del iteration  # Unused
+        self.test_rpc_descriptor_cluster()
+
+    def check_attribute_service(self, iteration):
+        """Attribute service logic."""
+        del iteration  # Unused
+        self.test_rpc_attribute_service()
+
+
+if __name__ == "__main__":
+    test_runner.main()
diff --git a/rpc_tool/verify_rpc/test_config.yml b/rpc_tool/verify_rpc/test_config.yml
new file mode 100644
index 0000000..e2066f3
--- /dev/null
+++ b/rpc_tool/verify_rpc/test_config.yml
@@ -0,0 +1,2 @@
+TestBeds:
+  - Name: RpcTest
