diff --git a/server/cros/servo/chrome_cr50.py b/server/cros/servo/chrome_cr50.py
index 3607ff7..bbb99c6 100644
--- a/server/cros/servo/chrome_cr50.py
+++ b/server/cros/servo/chrome_cr50.py
@@ -326,21 +326,21 @@
         # ccd info
         self._servo.set_nocheck('cr50_uart_timeout', self.CONSERVATIVE_CCD_WAIT)
         for i in range(self.GET_CAP_TRIES):
-          try:
-            # If some ccd output is dropped and the output doesn't match the
-            # expected ccd output format, send_command_get_output will wait the
-            # full CONSERVATIVE_CCD_WAIT even though ccd is done printing. Use
-            # re to search the command output instead of
-            # send_safe_command_get_output, so we don't have to wait the full
-            # timeout if output is dropped.
-            rv = self.send_command_retry_get_output('ccd', ['ccd.*>'],
-                    safe=True)[0]
-            matched_output = re.search(match_value, rv, re.DOTALL)
-            if matched_output:
-                break
-            logging.info('try %d: could not match ccd output %s', i, rv)
-          except Exception as e:
-            logging.info('try %d got error %s', i, str(e))
+            try:
+                # If some ccd output is dropped and the output doesn't match the
+                # expected ccd output format, send_command_get_output will wait the
+                # full CONSERVATIVE_CCD_WAIT even though ccd is done printing. Use
+                # re to search the command output instead of
+                # send_safe_command_get_output, so we don't have to wait the full
+                # timeout if output is dropped.
+                rv = self.send_command_retry_get_output('ccd', ['ccd.*>'],
+                                                        safe=True)[0]
+                matched_output = re.search(match_value, rv, re.DOTALL)
+                if matched_output:
+                    break
+                logging.info('try %d: could not match ccd output %s', i, rv)
+            except Exception as e:
+                logging.info('try %d got error %s', i, str(e))
 
         self._servo.set_nocheck('cr50_uart_timeout', original_timeout)
         if not matched_output:
