diff --git a/local_agent/local_agent.py b/local_agent/local_agent.py
index 25398d1..9ca947f 100644
--- a/local_agent/local_agent.py
+++ b/local_agent/local_agent.py
@@ -95,9 +95,9 @@
     requests.
     """
 
-    _REPORT_INFO_INTERVAL_SECONDS = 30
+    _REPORT_INFO_INTERVAL_SECONDS = 30000
     _REPORT_INFO_THREAD_TERMINATION_WAIT_SECONDS = 10
-    _POLL_RPC_COOL_DOWN_SECONDS = 1
+    _POLL_RPC_COOL_DOWN_SECONDS = 10000
     _POLL_RPC_THREAD_TERMINATION_WAIT_SECONDS = 10
     _MAIN_THREAD_KEEP_ALIVE_COOLDOWN_SECONDS = 1
 
@@ -612,3 +612,5 @@
                                   scheme=ams_scheme)
     proc = LocalAgentProcess(client=client, artifacts_dir=artifacts_dir)
     proc.run()
+
+main()
diff --git a/local_agent/translation_layer/gdm_manager.py b/local_agent/translation_layer/gdm_manager.py
index 91048b2..4e33b4f 100644
--- a/local_agent/translation_layer/gdm_manager.py
+++ b/local_agent/translation_layer/gdm_manager.py
@@ -56,47 +56,68 @@
         with self._mgr_lock:
             self._mgr.detect(force_overwrite=self._first_detection,
                              log_directory=_DEVICE_DETECTION_LOG_DIR)
+            
+            device_id = 'chip_tool-0000'
+            device_type = 'chip_tool'
+            serial_number = '00000000'
+
             connected_devices = self._mgr.get_devices('all')
-            for device_id, info in connected_devices.items():
 
-                # The device has been removed.
-                if not self._mgr.is_device_connected(device_id):
-                    continue
+            if not device_id in connected_devices:
+                return
 
-                # The first time this device is detected.
-                if device_id not in self._connected_devices:
-                    serial_number = info['persistent']['serial_number']
-                    device_type = info['persistent']['device_type']
+            if not self._mgr.is_device_connected(device_id):
+                return
 
-                    # Retrieve the Matter endpoints and clusters in the first detection.
-                    with self._mgr.create_and_close_device(device_id) as device:
-                        # If the device is not Matter device
-                        if not device.has_capabilities(["matter_endpoints"]):
-                            matter_endpoints = []
-                            cluster_capabilities = []
-                        else:
-                            matter_endpoints = device.matter_endpoints.get_supported_endpoints()
-                            endpoint_clusters_mapping = device.matter_endpoints.get_supported_endpoints_and_clusters()
-                            cluster_capabilities = list(set().union(*endpoint_clusters_mapping.values()))
+            with self._mgr.create_and_close_device(device_id) as device:
+                device.set_property("matter_node_id", 6666)
+				# devices has to be commissioned to chip tool first
+                matter_endpoints = device.matter_endpoints.get_supported_endpoints()
+                endpoint_clusters_mapping = device.matter_endpoints.get_supported_endpoints_and_clusters()
+                cluster_capabilities = list(set().union(*endpoint_clusters_mapping.values()))
 
-                        # Additional non-Matter capabilities.
-                        if device.has_capabilities([common.PWRPC_COMMON_CAPABILITY]):
-                            matter_endpoints.append(common.PWRPC_COMMON_CAPABILITY)
-                            cluster_capabilities.append(common.PWRPC_COMMON_CAPABILITY)
+            # connected_devices = self._mgr.get_devices('all')
+            # for device_id, info in connected_devices.items():
 
-                    # Therefore, we only need to update the command handlers once.
-                    self._update_handlers_cls_map(device_type, matter_endpoints)
+            #     # The device has been removed.
+            #     if not self._mgr.is_device_connected(device_id):
+            #         continue
 
-                    # Store the device information in cache.
-                    device_info = {
-                        'deviceId': device_id,
-                        'serialNumber': serial_number,
-                        'deviceType': device_type,
-                        'capabilities': cluster_capabilities,
-                    }
-                    self._connected_devices[device_id] = device_info
+            #     # The first time this device is detected.
+            #     if device_id not in self._connected_devices:
+            #         serial_number = info['persistent']['serial_number']
+            #         device_type = info['persistent']['device_type']
 
-                devices.append(self._connected_devices[device_id])
+            #         # Retrieve the Matter endpoints and clusters in the first detection.
+            #         with self._mgr.create_and_close_device(device_id) as device:
+            #             # If the device is not Matter device
+            #             if not device.has_capabilities(["matter_endpoints"]):
+            #                 matter_endpoints = []
+            #                 cluster_capabilities = []
+            #             else:
+            #                 # devices has to be commissioned to chip tool first
+            #                 matter_endpoints = device.matter_endpoints.get_supported_endpoints()
+            #                 endpoint_clusters_mapping = device.matter_endpoints.get_supported_endpoints_and_clusters()
+            #                 cluster_capabilities = list(set(capabilities).union(*endpoint_clusters_mapping.values()))
+
+            #             # (deprecate) Additional non-Matter capabilities.
+            #             if device.has_capabilities([common.PWRPC_COMMON_CAPABILITY]):
+            #                 matter_endpoints.append(common.PWRPC_COMMON_CAPABILITY)
+            #                 cluster_capabilities.append(common.PWRPC_COMMON_CAPABILITY)
+
+				# Therefore, we only need to update the command handlers once.
+                self._update_handlers_cls_map(device_type, matter_endpoints)
+
+				# Store the device information in cache.
+                device_info = {
+					'deviceId': device_id,
+					'serialNumber': serial_number,
+					'deviceType': device_type,
+					'capabilities': cluster_capabilities,
+				}
+                self._connected_devices[device_id] = device_info
+
+            devices.append(self._connected_devices[device_id])
                 
         self._first_detection = False
 
@@ -167,3 +188,11 @@
         """Closes all open devices in GDM."""
         with self._mgr_lock:
             self._mgr.close_open_devices()
+
+
+
+def update_handlers_cls_map(
+    device_type: str, capabilities: List[str]) -> None:
+  return
+mgr = GdmManager(update_handlers_cls_map)
+mgr.detect_devices()
diff --git a/setup.py b/setup.py
index c813edf..5b92dc6 100644
--- a/setup.py
+++ b/setup.py
@@ -36,8 +36,7 @@
 VERSION = get_version()
 LICENSE = 'Copyright 2022 Google LLC'
 
-REQUIRED_MODULES = [
-    'gazoo-device >= 1.67.0', 'inflection', 'requests >= 2.25.0', 'wheel']
+REQUIRED_MODULES = ['inflection', 'requests >= 2.25.0', 'wheel']
 TEST_REQUIRED_MODULES = {
     'test': ['coverage', 'immutabledict', 'parameterized']}
 
