faft: Support servod in a different host on FAFT control files

The servo_host and servo_port arguments are now handled in SiteHost class, not
the original ServoTest class. So all FAFT control files should be changed.

This change is created by the following script:
grep -lrsI "use_faft=True" * | grep control | xargs \
sed -i -e "s/AUTHOR =/from autotest_lib.server import utils\n\n&/" \
-e "s/def run_.*:/args_dict = utils.args_to_dict(args)\n"\
"servo_host = args_dict.get('servo_host', 'localhost')\n"\
"servo_port = args_dict.get('servo_port', None)\n\n&/" \
-e "s/    host = hosts.create_host(machine)/"\
"    host = hosts.create_host(machine, servo_host=servo_host,\n"\
"                             servo_port=servo_port)/" \
-e "s/    client = hosts.create_host(machine)/"\
"    client = hosts.create_host(machine, servo_host=servo_host,\n"\
"                               servo_port=servo_port)/"

BUG=chromium-os:34787
TEST=manaul
Run servod in the same host:
$ run_remote_tests.sh --remote $DUT $CONTROL

Run servod in a different host, $SERVO_HOST
$ run_remote_tests.sh --remote $DUT --args "servo_host=$SERVO_HOST" $CONTROL
Some tests may fail since FAFT is not supported servod on a different host yet.

Change-Id: I879bb786999c585c81ef532a84dfa2df7fbf4854
Reviewed-on: https://gerrit.chromium.org/gerrit/34277
Reviewed-by: Mike Truty <truty@chromium.org>
Commit-Ready: Tom Wai-Hong Tam <waihong@chromium.org>
Tested-by: Tom Wai-Hong Tam <waihong@chromium.org>
diff --git a/server/site_tests/firmware_CgptState/control b/server/site_tests/firmware_CgptState/control
index 05f46eb..ca6ae8d 100644
--- a/server/site_tests/firmware_CgptState/control
+++ b/server/site_tests/firmware_CgptState/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CgptState"
 PURPOSE = "Servo based executing the CgptState test on client side."
@@ -22,8 +24,13 @@
 See /usr/local/sbin/firmware/saft/cgpt_state.py for more detail.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_cgptstate(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CgptState", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_CgptStress/control b/server/site_tests/firmware_CgptStress/control
index 87384ce..437ce1f 100644
--- a/server/site_tests/firmware_CgptStress/control
+++ b/server/site_tests/firmware_CgptStress/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CgptStress"
 PURPOSE = "Servo based cgpt stress test"
@@ -18,8 +20,13 @@
 switch to boot kernel B and then switch back to kernel A again.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_cgptstress(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CgptStress", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_CgptStress/control.dev b/server/site_tests/firmware_CgptStress/control.dev
index 1e79454..2a331cf 100644
--- a/server/site_tests/firmware_CgptStress/control.dev
+++ b/server/site_tests/firmware_CgptStress/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CgptStress"
 PURPOSE = "Servo based cgpt stress test"
@@ -18,8 +20,13 @@
 switch to boot kernel B and then switch back to kernel A again.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_cgptstress(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CgptStress", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_ConsecutiveBoot/control b/server/site_tests/firmware_ConsecutiveBoot/control
index f2633aa..7a4ca02 100644
--- a/server/site_tests/firmware_ConsecutiveBoot/control
+++ b/server/site_tests/firmware_ConsecutiveBoot/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ConsecutiveBoot"
 PURPOSE = "Servo based consecutive boot test"
@@ -20,8 +22,13 @@
 in run_remote_test.sh.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_consecutive_boot(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ConsecutiveBoot", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_ConsecutiveBoot/control.dev b/server/site_tests/firmware_ConsecutiveBoot/control.dev
index 6d5f6e2..4ed525b 100644
--- a/server/site_tests/firmware_ConsecutiveBoot/control.dev
+++ b/server/site_tests/firmware_ConsecutiveBoot/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ConsecutiveBoot"
 PURPOSE = "Servo based consecutive boot test"
@@ -20,8 +22,13 @@
 in run_remote_test.sh.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_consecutive_boot(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ConsecutiveBoot", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_CorruptBothFwBodyAB/control b/server/site_tests/firmware_CorruptBothFwBodyAB/control
index 3348661..cb15426 100644
--- a/server/site_tests/firmware_CorruptBothFwBodyAB/control
+++ b/server/site_tests/firmware_CorruptBothFwBodyAB/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptFwBodyAB"
 PURPOSE = "Servo based both firmware body A and B corruption test"
@@ -24,8 +26,13 @@
 Chrome OS test image (built by "build_image --test").
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptbothfwbodyab(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptBothFwBodyAB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_CorruptBothFwBodyAB/control.dev b/server/site_tests/firmware_CorruptBothFwBodyAB/control.dev
index 7ac363d..a698f03 100644
--- a/server/site_tests/firmware_CorruptBothFwBodyAB/control.dev
+++ b/server/site_tests/firmware_CorruptBothFwBodyAB/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptFwBodyAB"
 PURPOSE = "Servo based both firmware body A and B corruption test"
@@ -24,8 +26,13 @@
 Chrome OS test image (built by "build_image --test").
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptbothfwbodyab(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptBothFwBodyAB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_CorruptBothFwSigAB/control b/server/site_tests/firmware_CorruptBothFwSigAB/control
index 85e56cd..edfc5f4 100644
--- a/server/site_tests/firmware_CorruptBothFwSigAB/control
+++ b/server/site_tests/firmware_CorruptBothFwSigAB/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptFwSigAB"
 PURPOSE = "Servo based both firmware signature A and B corruption test"
@@ -20,8 +22,13 @@
 recovery boot.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptbothfwsigab(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptBothFwSigAB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_CorruptBothFwSigAB/control.dev b/server/site_tests/firmware_CorruptBothFwSigAB/control.dev
index 1526527..fd62be3 100644
--- a/server/site_tests/firmware_CorruptBothFwSigAB/control.dev
+++ b/server/site_tests/firmware_CorruptBothFwSigAB/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptFwSigAB"
 PURPOSE = "Servo based both firmware signature A and B corruption test"
@@ -20,8 +22,13 @@
 recovery boot.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptbothfwsigab(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptBothFwSigAB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_CorruptBothKernelAB/control b/server/site_tests/firmware_CorruptBothKernelAB/control
index d31ff07..f69fd43 100644
--- a/server/site_tests/firmware_CorruptBothKernelAB/control
+++ b/server/site_tests/firmware_CorruptBothKernelAB/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptKernelAB"
 PURPOSE = "Servo based both kernel A and B corruption test"
@@ -22,8 +24,13 @@
 recovery boot.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptbothkernelab(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptBothKernelAB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_CorruptBothKernelAB/control.dev b/server/site_tests/firmware_CorruptBothKernelAB/control.dev
index fa6720e..d72679b 100644
--- a/server/site_tests/firmware_CorruptBothKernelAB/control.dev
+++ b/server/site_tests/firmware_CorruptBothKernelAB/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptKernelAB"
 PURPOSE = "Servo based both kernel A and B corruption test"
@@ -22,8 +24,13 @@
 recovery boot.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptbothkernelab(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptBothKernelAB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_CorruptFwBodyA/control b/server/site_tests/firmware_CorruptFwBodyA/control
index c44415f..c1ff1b0 100644
--- a/server/site_tests/firmware_CorruptFwBodyA/control
+++ b/server/site_tests/firmware_CorruptFwBodyA/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptFwBodyA"
 PURPOSE = "Servo based firmware A body corruption test"
@@ -22,8 +24,13 @@
 the RW firwmare A corruption will result booting the firmware B.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptfwbodya(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptFwBodyA", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_CorruptFwBodyA/control.dev b/server/site_tests/firmware_CorruptFwBodyA/control.dev
index 9672c32..622c41c 100644
--- a/server/site_tests/firmware_CorruptFwBodyA/control.dev
+++ b/server/site_tests/firmware_CorruptFwBodyA/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptFwBodyA"
 PURPOSE = "Servo based firmware A body corruption test"
@@ -22,8 +24,13 @@
 the RW firwmare A corruption will result booting the firmware B.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptfwbodya(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptFwBodyA", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_CorruptFwBodyB/control b/server/site_tests/firmware_CorruptFwBodyB/control
index 7c2ef8f..7a0c2c9 100644
--- a/server/site_tests/firmware_CorruptFwBodyB/control
+++ b/server/site_tests/firmware_CorruptFwBodyB/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptFwBodyB"
 PURPOSE = "Servo based firmware B body corruption test"
@@ -22,8 +24,13 @@
 the RW firwmare B corruption will result booting the firmware A.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptfwbodyb(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptFwBodyB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_CorruptFwBodyB/control.dev b/server/site_tests/firmware_CorruptFwBodyB/control.dev
index 157e1a3..e8ec420 100644
--- a/server/site_tests/firmware_CorruptFwBodyB/control.dev
+++ b/server/site_tests/firmware_CorruptFwBodyB/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptFwBodyB"
 PURPOSE = "Servo based firmware B body corruption test"
@@ -22,8 +24,13 @@
 the RW firwmare B corruption will result booting the firmware A.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptfwbodyb(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptFwBodyB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_CorruptFwSigA/control b/server/site_tests/firmware_CorruptFwSigA/control
index 3986eef..dfcbcd5 100644
--- a/server/site_tests/firmware_CorruptFwSigA/control
+++ b/server/site_tests/firmware_CorruptFwSigA/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptFwSigA"
 PURPOSE = "Servo based firmware A signature corruption test"
@@ -16,8 +18,13 @@
 This test corrupts firmware signature A and checks the next boot results.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptfwsiga(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptFwSigA", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_CorruptFwSigA/control.dev b/server/site_tests/firmware_CorruptFwSigA/control.dev
index 2098bd9..35bff51 100644
--- a/server/site_tests/firmware_CorruptFwSigA/control.dev
+++ b/server/site_tests/firmware_CorruptFwSigA/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptFwSigA"
 PURPOSE = "Servo based firmware A signature corruption test"
@@ -16,8 +18,13 @@
 This test corrupts firmware signature A and checks the next boot results.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptfwsiga(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptFwSigA", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_CorruptFwSigB/control b/server/site_tests/firmware_CorruptFwSigB/control
index 28c8f6f..b123779 100644
--- a/server/site_tests/firmware_CorruptFwSigB/control
+++ b/server/site_tests/firmware_CorruptFwSigB/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptFwSigB"
 PURPOSE = "Servo based firmware signature B corruption test"
@@ -16,8 +18,13 @@
 This test corrupts firmware signature B and checks the next boot results.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptfwsigb(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptFwSigB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_CorruptFwSigB/control.dev b/server/site_tests/firmware_CorruptFwSigB/control.dev
index a71b6c0..ecb8e8c 100644
--- a/server/site_tests/firmware_CorruptFwSigB/control.dev
+++ b/server/site_tests/firmware_CorruptFwSigB/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptFwSigB"
 PURPOSE = "Servo based firmware signature B corruption test"
@@ -16,8 +18,13 @@
 This test corrupts firmware signature B and checks the next boot results.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptfwsigb(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptFwSigB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_CorruptKernelA/control b/server/site_tests/firmware_CorruptKernelA/control
index 0b9276c..c1bdc55 100644
--- a/server/site_tests/firmware_CorruptKernelA/control
+++ b/server/site_tests/firmware_CorruptKernelA/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptKernelA"
 PURPOSE = "Servo based kernel A corruption test"
@@ -17,8 +19,13 @@
 It will fail if kernel verification mis-behaved.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptkernela(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptKernelA", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_CorruptKernelA/control.dev b/server/site_tests/firmware_CorruptKernelA/control.dev
index bab81fb..95cb37a 100644
--- a/server/site_tests/firmware_CorruptKernelA/control.dev
+++ b/server/site_tests/firmware_CorruptKernelA/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptKernelA"
 PURPOSE = "Servo based kernel A corruption test"
@@ -17,8 +19,13 @@
 It will fail if kernel verification mis-behaved.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptkernela(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptKernelA", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_CorruptKernelB/control b/server/site_tests/firmware_CorruptKernelB/control
index 70cae63..816c240 100644
--- a/server/site_tests/firmware_CorruptKernelB/control
+++ b/server/site_tests/firmware_CorruptKernelB/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptKernelB"
 PURPOSE = "Servo based kernel B corruption test"
@@ -18,8 +20,13 @@
 fail if kernel verification mis-behaved.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptkernelb(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptKernelB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_CorruptKernelB/control.dev b/server/site_tests/firmware_CorruptKernelB/control.dev
index 70f3a40..a0dfff4 100644
--- a/server/site_tests/firmware_CorruptKernelB/control.dev
+++ b/server/site_tests/firmware_CorruptKernelB/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_CorruptKernelB"
 PURPOSE = "Servo based kernel B corruption test"
@@ -18,8 +20,13 @@
 fail if kernel verification mis-behaved.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_corruptkernelb(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_CorruptKernelB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_DevFwNormalBoot/control b/server/site_tests/firmware_DevFwNormalBoot/control
index aa35629..687ccea 100644
--- a/server/site_tests/firmware_DevFwNormalBoot/control
+++ b/server/site_tests/firmware_DevFwNormalBoot/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_DevFwNormalBoot"
 PURPOSE = "Servo based test forcing normal boot on dev firmware"
@@ -20,8 +22,13 @@
 firmware in B. It forces to do a normal boot. Going to recovery is expected.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_devfwnormalboot(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_DevFwNormalBoot", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_DevMode/control b/server/site_tests/firmware_DevMode/control
index 2c4cd1a..e51093e 100644
--- a/server/site_tests/firmware_DevMode/control
+++ b/server/site_tests/firmware_DevMode/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_DevMode"
 PURPOSE = "Servo based developer firmware boot test"
@@ -16,8 +18,13 @@
 This test changes dev switch and checks the developer firmware boot.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_devmode(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_DevMode", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_DevModeStress/control b/server/site_tests/firmware_DevModeStress/control
index 2ffbf9d..6bc45e2 100644
--- a/server/site_tests/firmware_DevModeStress/control
+++ b/server/site_tests/firmware_DevModeStress/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_DevModeStress"
 PURPOSE = "Servo based developer firmware boot test"
@@ -17,8 +19,13 @@
 system does not slip out of DevMode.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_devmodestress(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_DevModeStress", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True, dev_mode=True, tag="dev")
 
diff --git a/server/site_tests/firmware_DevScreenTimeout/control b/server/site_tests/firmware_DevScreenTimeout/control
index c28054b..3f44bde 100644
--- a/server/site_tests/firmware_DevScreenTimeout/control
+++ b/server/site_tests/firmware_DevScreenTimeout/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_DevScreenTimeout"
 PURPOSE = "Servo based developer firmware screen timeout test"
@@ -24,8 +26,13 @@
 is close to the developer screen timeout.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_devscreentimeout(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_DevScreenTimeout", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_DevTriggerRecovery/control b/server/site_tests/firmware_DevTriggerRecovery/control
index 7d13f54..12db63b 100644
--- a/server/site_tests/firmware_DevTriggerRecovery/control
+++ b/server/site_tests/firmware_DevTriggerRecovery/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_DevTriggerRecovery"
 PURPOSE = "Servo based recovery boot triggered by pressing a key at dev screen"
@@ -19,8 +21,13 @@
 trigger recovery boot and checks the success of it.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_devtriggerrecovery(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_DevTriggerRecovery", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_ECAdc/control b/server/site_tests/firmware_ECAdc/control
index bc43439..4a64ba8 100644
--- a/server/site_tests/firmware_ECAdc/control
+++ b/server/site_tests/firmware_ECAdc/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECAdc"
 PURPOSE = "Servo based EC ADC test"
@@ -17,8 +19,13 @@
 and check there should be no error.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ecadc(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECAdc", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_ECBattery/control b/server/site_tests/firmware_ECBattery/control
index d13c56d..613173e 100644
--- a/server/site_tests/firmware_ECBattery/control
+++ b/server/site_tests/firmware_ECBattery/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECBattery"
 PURPOSE = "Servo based EC battery status report test"
@@ -16,8 +18,13 @@
 This test check battery status read from EC console and kernel sysfs match.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ecbattery(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECBattery", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_ECBootTime/control b/server/site_tests/firmware_ECBootTime/control
index a17cc07..87c380e 100644
--- a/server/site_tests/firmware_ECBootTime/control
+++ b/server/site_tests/firmware_ECBootTime/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECBootTime"
 PURPOSE = "Servo based EC boot time test"
@@ -16,8 +18,13 @@
 This test measures EC boot time.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ecboottime(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECBootTime", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_ECCharging/control b/server/site_tests/firmware_ECCharging/control
index 834c602..9f5fe67 100644
--- a/server/site_tests/firmware_ECCharging/control
+++ b/server/site_tests/firmware_ECCharging/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECCharging"
 PURPOSE = "Servo based EC charging control test"
@@ -20,8 +22,13 @@
   - Charger actual current should be less than 105% of charger target current.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_eccharging(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECCharging", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_ECKeyboard/control b/server/site_tests/firmware_ECKeyboard/control
index 37ed5ec..1e54912 100644
--- a/server/site_tests/firmware_ECKeyboard/control
+++ b/server/site_tests/firmware_ECKeyboard/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECKeyboard"
 PURPOSE = "Servo based EC keyboard test"
@@ -16,8 +18,13 @@
 This test check if EC can correctly send keyboard event to host.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_eckeyboard(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECKeyboard", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_ECLidSwitch/control b/server/site_tests/firmware_ECLidSwitch/control
index 249e96f..d875650 100644
--- a/server/site_tests/firmware_ECLidSwitch/control
+++ b/server/site_tests/firmware_ECLidSwitch/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECLidSwitch"
 PURPOSE = "Servo based EC lid switch functional test"
@@ -21,8 +23,13 @@
     - Check keyboard backlight is switched on when lid open in S0
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_eclidswitch(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECLidSwitch", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_ECPeci/control b/server/site_tests/firmware_ECPeci/control
index 55a82ee..76f0768 100644
--- a/server/site_tests/firmware_ECPeci/control
+++ b/server/site_tests/firmware_ECPeci/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECPeci"
 PURPOSE = "Servo based EC PECI test"
@@ -17,8 +19,13 @@
 PECI and check there should be no error.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ecpeci(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECPeci", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_ECPowerButton/control b/server/site_tests/firmware_ECPowerButton/control
index 228581b..5c0151e 100644
--- a/server/site_tests/firmware_ECPowerButton/control
+++ b/server/site_tests/firmware_ECPowerButton/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECPowerButton"
 PURPOSE = "Servo based EC power button functional test"
@@ -22,8 +24,13 @@
     - Longer press (10s) to shut down system when kernel 'powerd' is disabled
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ecpowerbutton(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECPowerButton", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_ECPowerG3/control b/server/site_tests/firmware_ECPowerG3/control
index 882f02d..3fa0034 100644
--- a/server/site_tests/firmware_ECPowerG3/control
+++ b/server/site_tests/firmware_ECPowerG3/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECPowerG3"
 PURPOSE = "Servo based EC X86 power G3 drop test"
@@ -16,8 +18,13 @@
 This test check EC drop X86 into G3 after S5 for 10 seconds.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ecpowerg3(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECPowerG3", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_ECSharedMem/control b/server/site_tests/firmware_ECSharedMem/control
index c9ea6e4..f73c798 100644
--- a/server/site_tests/firmware_ECSharedMem/control
+++ b/server/site_tests/firmware_ECSharedMem/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECSharedMem"
 PURPOSE = "Servo based EC shared memory test"
@@ -19,8 +21,13 @@
   - Jumped between image
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ecsharedmem(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECSharedMem", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_ECThermal/control b/server/site_tests/firmware_ECThermal/control
index 8fee751..6097bc5 100644
--- a/server/site_tests/firmware_ECThermal/control
+++ b/server/site_tests/firmware_ECThermal/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECThermal"
 PURPOSE = "Servo based EC thermal engine test"
@@ -17,8 +19,13 @@
 reporting, temperature sensor functionality, and fan speed control are checked.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ecthermal(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECThermal", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_ECUsbPorts/control b/server/site_tests/firmware_ECUsbPorts/control
index aec2797..aa18fb9 100644
--- a/server/site_tests/firmware_ECUsbPorts/control
+++ b/server/site_tests/firmware_ECUsbPorts/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECUsbPorts"
 PURPOSE = "Servo based EC USB ports test"
@@ -16,8 +18,13 @@
 This test check if EC can correctly controls USB port mode.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ecusbports(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECUsbPorts", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_ECWakeSource/control b/server/site_tests/firmware_ECWakeSource/control
index 56febdd..9a4985d 100644
--- a/server/site_tests/firmware_ECWakeSource/control
+++ b/server/site_tests/firmware_ECWakeSource/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECWakeSource"
 PURPOSE = "Servo based EC wake source test"
@@ -17,8 +19,13 @@
 power button and lid switch.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ecwakesource(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECWakeSource", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_ECWatchdog/control b/server/site_tests/firmware_ECWatchdog/control
index dd1d773..c9140b7 100644
--- a/server/site_tests/firmware_ECWatchdog/control
+++ b/server/site_tests/firmware_ECWatchdog/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECWatchdog"
 PURPOSE = "Servo based EC watchdog test"
@@ -16,8 +18,13 @@
 This test check if EC watchdog is functioning correctly.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ecwatchdog(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECWatchdog", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_ECWriteProtect/control b/server/site_tests/firmware_ECWriteProtect/control
index ddf32b5..6383ee2 100644
--- a/server/site_tests/firmware_ECWriteProtect/control
+++ b/server/site_tests/firmware_ECWriteProtect/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECWriteProtect"
 PURPOSE = "Servo based EC write protect test"
@@ -28,8 +30,13 @@
 RO normal mode.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ecwriteprotect(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECWriteProtect", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_ECWriteProtect/control.dev b/server/site_tests/firmware_ECWriteProtect/control.dev
index 5273f55..cef41e7 100644
--- a/server/site_tests/firmware_ECWriteProtect/control.dev
+++ b/server/site_tests/firmware_ECWriteProtect/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ECWriteProtect"
 PURPOSE = "Servo based EC write protect test"
@@ -27,8 +29,13 @@
 RO normal mode.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ecwriteprotect(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ECWriteProtect", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_FAFTSetup/control b/server/site_tests/firmware_FAFTSetup/control
index 2111490..7bdaa38 100644
--- a/server/site_tests/firmware_FAFTSetup/control
+++ b/server/site_tests/firmware_FAFTSetup/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_FAFTSetup"
 PURPOSE = "Servo based diagnose of FAFT hardware setup"
@@ -21,8 +23,13 @@
   - Keyboard simulation
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_faftsetup(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_FAFTSetup", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_FwScreenCloseLid/control b/server/site_tests/firmware_FwScreenCloseLid/control
index 9499c84..1c0c42e 100644
--- a/server/site_tests/firmware_FwScreenCloseLid/control
+++ b/server/site_tests/firmware_FwScreenCloseLid/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_FwScreenCloseLid"
 PURPOSE = "Servo based lid close triggered shutdown during firmware screens."
@@ -19,8 +21,13 @@
 and then closes the lid in order to power the machine down.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_fwscreencloselid(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_FwScreenCloseLid", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_FwScreenPressPower/control b/server/site_tests/firmware_FwScreenPressPower/control
index 6a3e588..b05c9a5 100644
--- a/server/site_tests/firmware_FwScreenPressPower/control
+++ b/server/site_tests/firmware_FwScreenPressPower/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_FwScreenPressPower"
 PURPOSE = "Servo based power button triggered shutdown during firmware screens."
@@ -19,8 +21,13 @@
 and then presses the power button in order to power the machine down.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_fwscreenpresspower(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_FwScreenPressPower", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_InvalidUSB/control b/server/site_tests/firmware_InvalidUSB/control
index c3b0bec..9f98d3b 100644
--- a/server/site_tests/firmware_InvalidUSB/control
+++ b/server/site_tests/firmware_InvalidUSB/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_InvalidUSB"
 PURPOSE = "Servo based booting an invalid USB image test"
@@ -19,8 +21,13 @@
 restores the USB image and boots into it again.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_invalidusb(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_InvalidUSB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_RONormalBoot/control b/server/site_tests/firmware_RONormalBoot/control
index 0e55cd0..a0c7616 100644
--- a/server/site_tests/firmware_RONormalBoot/control
+++ b/server/site_tests/firmware_RONormalBoot/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_RONormalBoot"
 PURPOSE = "Servo based firmware RO normal boot test"
@@ -16,8 +18,13 @@
 This test disables the RO normal boot flag and checks the next boot result.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ronormalboot(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_RONormalBoot", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_RONormalBoot/control.dev b/server/site_tests/firmware_RONormalBoot/control.dev
index c9471b0..59fb65f 100644
--- a/server/site_tests/firmware_RONormalBoot/control.dev
+++ b/server/site_tests/firmware_RONormalBoot/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_RONormalBoot"
 PURPOSE = "Servo based firmware RO normal boot test"
@@ -16,8 +18,13 @@
 This test disables the RO normal boot flag and checks the next boot result.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_ronormalboot(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_RONormalBoot", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_RecoveryButton/control b/server/site_tests/firmware_RecoveryButton/control
index 74a0238..5d5aa21 100644
--- a/server/site_tests/firmware_RecoveryButton/control
+++ b/server/site_tests/firmware_RecoveryButton/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_RecoveryButton"
 PURPOSE = "Press recovery button and check for recovery boot"
@@ -19,8 +21,13 @@
 unplugging and plugging in the USB disk and checks success of it.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_recoverybutton(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_RecoveryButton", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_RecoveryButton/control.dev b/server/site_tests/firmware_RecoveryButton/control.dev
index 3d7f575..cbcd8f5 100644
--- a/server/site_tests/firmware_RecoveryButton/control.dev
+++ b/server/site_tests/firmware_RecoveryButton/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_RecoveryButton"
 PURPOSE = "Press recovery button and check for recovery boot"
@@ -19,8 +21,13 @@
 unplugging and plugging in the USB disk and checks success of it.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_recoverybutton(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_RecoveryButton", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_RollbackFirmware/control b/server/site_tests/firmware_RollbackFirmware/control
index 367dc85..409a2e9 100644
--- a/server/site_tests/firmware_RollbackFirmware/control
+++ b/server/site_tests/firmware_RollbackFirmware/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_RollbackFirmware"
 PURPOSE = "Servo based firmware rollback test."
@@ -19,8 +21,13 @@
 results recovery boot.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_rollbackfirmware(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_RollbackFirmware", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_RollbackFirmware/control.dev b/server/site_tests/firmware_RollbackFirmware/control.dev
index 56e201f..f606a85 100644
--- a/server/site_tests/firmware_RollbackFirmware/control.dev
+++ b/server/site_tests/firmware_RollbackFirmware/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_RollbackFirmware"
 PURPOSE = "Servo based firmware rollback test."
@@ -19,8 +21,13 @@
 results recovery boot.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_rollbackfirmware(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_RollbackFirmware", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_RollbackKernel/control b/server/site_tests/firmware_RollbackKernel/control
index 8d9a824..b8af287 100644
--- a/server/site_tests/firmware_RollbackKernel/control
+++ b/server/site_tests/firmware_RollbackKernel/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_RollbackKernel"
 PURPOSE = "Servo based kernel rollback test."
@@ -20,8 +22,13 @@
 rollback check so it remains unchanged.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_rollbackkernel(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_RollbackKernel", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_RollbackKernel/control.dev b/server/site_tests/firmware_RollbackKernel/control.dev
index 895e7d1..4bd9945 100644
--- a/server/site_tests/firmware_RollbackKernel/control.dev
+++ b/server/site_tests/firmware_RollbackKernel/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_RollbackKernel"
 PURPOSE = "Servo based kernel rollback test."
@@ -20,8 +22,13 @@
 rollback check so it remains unchanged.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_rollbackkernel(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_RollbackKernel", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_ShellBall/control b/server/site_tests/firmware_ShellBall/control
index dd0bf4b..a87052f 100644
--- a/server/site_tests/firmware_ShellBall/control
+++ b/server/site_tests/firmware_ShellBall/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_ShellBall"
 TIME = "LONG"
@@ -24,12 +26,17 @@
 # Convert autoserv args to something usable.
 opts = dict([[k, v] for (k, _, v) in [x.partition('=') for x in args]])
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_shellball(machine):
     # Verify bios path arg.
     if 'shellball_path' and 'shellball_name' not in opts:
         raise error.TestFail('Invalid shellball information.')
     # Setup the client machine.
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_ShellBall", host=host,
                  cmdline_args=args,
                  shellball_path=opts['shellball_path'],
diff --git a/server/site_tests/firmware_SoftwareSync/control b/server/site_tests/firmware_SoftwareSync/control
index e4ff31f..33039b6 100644
--- a/server/site_tests/firmware_SoftwareSync/control
+++ b/server/site_tests/firmware_SoftwareSync/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_SoftwareSync"
 PURPOSE = "Servo based EC software sync test"
@@ -16,8 +18,13 @@
 This test corrupts EC RW firmware body and checks software sync restores it.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_softwaresync(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_SoftwareSync", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_SoftwareSync/control.dev b/server/site_tests/firmware_SoftwareSync/control.dev
index 6b02331..517da0d 100644
--- a/server/site_tests/firmware_SoftwareSync/control.dev
+++ b/server/site_tests/firmware_SoftwareSync/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_SoftwareSync"
 PURPOSE = "Servo based EC software sync test"
@@ -15,8 +17,13 @@
 This test corrupts EC RW firmware body and checks software sync restores it.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_softwaresync(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_SoftwareSync", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_TryFwB/control b/server/site_tests/firmware_TryFwB/control
index 184b01b..420ff73 100644
--- a/server/site_tests/firmware_TryFwB/control
+++ b/server/site_tests/firmware_TryFwB/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_TryFwB"
 PURPOSE = "Servo based RW firmware B boot test"
@@ -16,8 +18,13 @@
 This test sets fwb_tries flag and boots firmware B.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_tryfwb(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_TryFwB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_TryFwB/control.dev b/server/site_tests/firmware_TryFwB/control.dev
index 26c4950..a70f9fb 100644
--- a/server/site_tests/firmware_TryFwB/control.dev
+++ b/server/site_tests/firmware_TryFwB/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_TryFwB"
 PURPOSE = "Servo based RW firmware B boot test"
@@ -16,8 +18,13 @@
 This test sets fwb_tries flag and boots firmware B.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_tryfwb(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_TryFwB", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_UpdateECBin/control b/server/site_tests/firmware_UpdateECBin/control
index 3209ecd..98f75f8 100644
--- a/server/site_tests/firmware_UpdateECBin/control
+++ b/server/site_tests/firmware_UpdateECBin/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_UpdateECBin"
 PURPOSE = "Servo based software sync EC update test"
@@ -47,8 +49,13 @@
 So RONORMAL->TWOSTOP, TWOSTOP->TWOSTOP, and TWOSTOP->RONORMAL are covered.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_updateec(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_UpdateECBin", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_UpdateECBin/control.dev b/server/site_tests/firmware_UpdateECBin/control.dev
index 387f0e5..610aa43 100644
--- a/server/site_tests/firmware_UpdateECBin/control.dev
+++ b/server/site_tests/firmware_UpdateECBin/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_UpdateECBin"
 PURPOSE = "Servo based software sync EC update test"
@@ -47,8 +49,13 @@
 So RONORMAL->TWOSTOP, TWOSTOP->TWOSTOP, and TWOSTOP->RONORMAL are covered.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_updateec(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_UpdateECBin", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_UpdateFirmwareDataKeyVersion/control b/server/site_tests/firmware_UpdateFirmwareDataKeyVersion/control
index 0d5d87d..d3cbe58 100644
--- a/server/site_tests/firmware_UpdateFirmwareDataKeyVersion/control
+++ b/server/site_tests/firmware_UpdateFirmwareDataKeyVersion/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_UpdateFirmwareDataKeyVersion"
 PURPOSE = """
@@ -28,8 +30,13 @@
 recover firmware A and B to original shellball.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_updatefirmwaredatakeyversion(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_UpdateFirmwareDataKeyVersion",
                  host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
diff --git a/server/site_tests/firmware_UpdateFirmwareVersion/control b/server/site_tests/firmware_UpdateFirmwareVersion/control
index 9299aea..4107ba4 100644
--- a/server/site_tests/firmware_UpdateFirmwareVersion/control
+++ b/server/site_tests/firmware_UpdateFirmwareVersion/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_UpdateFirmwareVersion"
 PURPOSE = "Servo based firmware update test which checks the firmware version."
@@ -28,8 +30,13 @@
 boot with firmware B, and then recover firmware A and B to original shellball.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_updatefirmwareversion(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_UpdateFirmwareVersion", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
 
diff --git a/server/site_tests/firmware_UpdateKernelDataKeyVersion/control b/server/site_tests/firmware_UpdateKernelDataKeyVersion/control
index 0022a65..9a804ba 100644
--- a/server/site_tests/firmware_UpdateKernelDataKeyVersion/control
+++ b/server/site_tests/firmware_UpdateKernelDataKeyVersion/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_UpdateKernelDataKeyVersion"
 PURPOSE = """
@@ -29,8 +31,13 @@
 recovery. If sccuess, reboot with kernel a.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_updatekerneldatakeyversion(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_UpdateKernelDataKeyVersion", host=host,
                  cmdline_args=args,use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_UpdateKernelSubkeyVersion/control b/server/site_tests/firmware_UpdateKernelSubkeyVersion/control
index cb2ab60..cb66cf4 100644
--- a/server/site_tests/firmware_UpdateKernelSubkeyVersion/control
+++ b/server/site_tests/firmware_UpdateKernelSubkeyVersion/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_UpdateKernelSubkeyVersion"
 PURPOSE = """
@@ -25,8 +27,13 @@
 recover firmware A and B to original shellball.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_updatekernelsubkeyversion(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_UpdateKernelSubkeyVersion",
                  host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True)
diff --git a/server/site_tests/firmware_UpdateKernelVersion/control b/server/site_tests/firmware_UpdateKernelVersion/control
index a76eade..c73c407 100644
--- a/server/site_tests/firmware_UpdateKernelVersion/control
+++ b/server/site_tests/firmware_UpdateKernelVersion/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_UpdateKernelVersion"
 PURPOSE = "Servo based kernel update test which checks the kernel version."
@@ -27,8 +29,13 @@
 reboot with kernel a.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_updatekernelversion(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_UpdateKernelVersion", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/firmware_UserRequestRecovery/control b/server/site_tests/firmware_UserRequestRecovery/control
index e666dd9..ba4cf66 100644
--- a/server/site_tests/firmware_UserRequestRecovery/control
+++ b/server/site_tests/firmware_UserRequestRecovery/control
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_UserRequestRecovery"
 PURPOSE = "Request recovery mode and check it next reboot."
@@ -20,8 +22,13 @@
 disk and checks success of it.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_userrequestrecovery(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_UserRequestRecovery", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=False, tag="normal")
diff --git a/server/site_tests/firmware_UserRequestRecovery/control.dev b/server/site_tests/firmware_UserRequestRecovery/control.dev
index 3c91d55..9aea24b 100644
--- a/server/site_tests/firmware_UserRequestRecovery/control.dev
+++ b/server/site_tests/firmware_UserRequestRecovery/control.dev
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "firmware_UserRequestRecovery"
 PURPOSE = "Request recovery mode and check it next reboot."
@@ -20,8 +22,13 @@
 disk and checks success of it.
 """
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_userrequestrecovery(machine):
-    host = hosts.create_host(machine)
+    host = hosts.create_host(machine, servo_host=servo_host,
+                             servo_port=servo_port)
     job.run_test("firmware_UserRequestRecovery", host=host, cmdline_args=args,
                  use_faft=True, disable_sysinfo=True,
                  dev_mode=True, tag="dev")
diff --git a/server/site_tests/suites/control.faft_bios b/server/site_tests/suites/control.faft_bios
index 54a2315..836c0ae 100644
--- a/server/site_tests/suites/control.faft_bios
+++ b/server/site_tests/suites/control.faft_bios
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "FAFT BIOS"
 TIME = "LONG"
@@ -49,8 +51,13 @@
 ]
 
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_server_test(machine):
-    client = hosts.create_host(machine)
+    client = hosts.create_host(machine, servo_host=servo_host,
+                               servo_port=servo_port)
     for test, argv in TESTS_ON_BOTH_MODES + TESTS_ON_NORMAL_MODE:
         job.run_test(test, host=client, cmdline_args=args,
                      use_faft=True, disable_sysinfo=True,
diff --git a/server/site_tests/suites/control.faft_lv1 b/server/site_tests/suites/control.faft_lv1
index 726749a..5503d31 100644
--- a/server/site_tests/suites/control.faft_lv1
+++ b/server/site_tests/suites/control.faft_lv1
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "FAFT LV1"
 TIME = "LONG"
@@ -35,8 +37,13 @@
 ]
 
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_server_test(machine):
-    client = hosts.create_host(machine)
+    client = hosts.create_host(machine, servo_host=servo_host,
+                               servo_port=servo_port)
     for test, argv in TESTS_ON_BOTH_MODES + TESTS_ON_NORMAL_MODE:
         job.run_test(test, host=client, cmdline_args=args,
                      use_faft=True, disable_sysinfo=True,
diff --git a/server/site_tests/suites/control.faft_lv2 b/server/site_tests/suites/control.faft_lv2
index 2fabf6a..516b12f 100644
--- a/server/site_tests/suites/control.faft_lv2
+++ b/server/site_tests/suites/control.faft_lv2
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "FAFT LV2"
 TIME = "LONG"
@@ -38,8 +40,13 @@
 ]
 
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_server_test(machine):
-    client = hosts.create_host(machine)
+    client = hosts.create_host(machine, servo_host=servo_host,
+                               servo_port=servo_port)
     for test, argv in TESTS_ON_BOTH_MODES + TESTS_ON_NORMAL_MODE:
         job.run_test(test, host=client, cmdline_args=args,
                      use_faft=True, disable_sysinfo=True,
diff --git a/server/site_tests/suites/control.faft_lv3 b/server/site_tests/suites/control.faft_lv3
index 1ee5f14..2b5aecd 100644
--- a/server/site_tests/suites/control.faft_lv3
+++ b/server/site_tests/suites/control.faft_lv3
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "FAFT LV3"
 TIME = "LONG"
@@ -46,8 +48,13 @@
 ]
 
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_server_test(machine):
-    client = hosts.create_host(machine)
+    client = hosts.create_host(machine, servo_host=servo_host,
+                               servo_port=servo_port)
     for test, argv in TESTS_ON_BOTH_MODES + TESTS_ON_NORMAL_MODE:
         job.run_test(test, host=client, cmdline_args=args,
                      use_faft=True, disable_sysinfo=True,
diff --git a/server/site_tests/suites/control.faft_lv4 b/server/site_tests/suites/control.faft_lv4
index 3266938..012543d 100644
--- a/server/site_tests/suites/control.faft_lv4
+++ b/server/site_tests/suites/control.faft_lv4
@@ -2,6 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+from autotest_lib.server import utils
+
 AUTHOR = "Chrome OS Team"
 NAME = "FAFT LV4"
 TIME = "LONG"
@@ -38,8 +40,13 @@
 ]
 
 
+args_dict = utils.args_to_dict(args)
+servo_host = args_dict.get('servo_host', 'localhost')
+servo_port = args_dict.get('servo_port', None)
+
 def run_server_test(machine):
-    client = hosts.create_host(machine)
+    client = hosts.create_host(machine, servo_host=servo_host,
+                               servo_port=servo_port)
     for test, argv in TESTS_ON_BOTH_MODES + TESTS_ON_NORMAL_MODE:
         job.run_test(test, host=client, cmdline_args=args,
                      use_faft=True, disable_sysinfo=True,