diff --git a/client/site_tests/factory_AudioQuality/factory_AudioQuality.py b/client/site_tests/factory_AudioQuality/factory_AudioQuality.py
index 6d899c0..4b854fc 100644
--- a/client/site_tests/factory_AudioQuality/factory_AudioQuality.py
+++ b/client/site_tests/factory_AudioQuality/factory_AudioQuality.py
@@ -79,6 +79,9 @@
 # Logs
 _LABEL_FAIL_LOGS = 'Test fail, find more detail in log.'
 
+# Setting
+_INIT_COUNTDOWN = 3
+
 class factory_AudioQuality(test.test):
     version = 2
     preserve_srcdir = True
@@ -367,16 +370,21 @@
 
     def init_audio_server(self, event):
         self._eth = net_utils.FindUsableEthDevice()
-        if not self._eth:
-            raise error.TestError('No Ethernet interface available')
-        factory.console.info('Got %s for connection' % self._eth)
+        if self._eth:
+            factory.console.info('Got %s for connection' % self._eth)
 
-        # Configure local network environment to accept command from test host.
-        utils.system('ifconfig %s %s netmask 255.255.255.0 up' %
-                (self._eth, _LOCAL_IP))
-        utils.system('iptables -A INPUT -p tcp --dport %s -j ACCEPT' % _PORT)
+            # Configure local network environment to accept command
+            # from test host.
+            utils.system('ifconfig %s %s netmask 255.255.255.0 up' %
+                    (self._eth, _LOCAL_IP))
+            utils.system('iptables -A INPUT -p tcp --dport %s -j ACCEPT' %
+                    _PORT)
 
-        self.start_server()
+            self.start_server()
+        else:
+            self.ui.CallJSFunction('start_countdown',
+                    'Auto detect ethernet, countdown | 自动侦测网路，倒数\n',
+                    self._countdown)
 
     def run_once(self, input_dev='hw:0,0', output_dev='hw:0,0', eth='eth0',
             dmic_switch_mixer_settings=_DMIC_SWITCH_MIXER_SETTINGS,
@@ -384,7 +392,8 @@
             unmute_speaker_mixer_settings=_UNMUTE_SPEAKER_MIXER_SETTINGS,
             mute_right_mixer_settings=_MUTE_RIGHT_MIXER_SETTINGS,
             mute_left_mixer_settings=_MUTE_LEFT_MIXER_SETTINGS,
-            use_sox_loop=False, use_multitone=False, loop_buffer_count=10):
+            use_sox_loop=False, use_multitone=False, loop_buffer_count=10,
+            countdown=_INIT_COUNTDOWN):
         factory.console.info('%s run_once' % self.__class__)
 
         self._ah = audio_helper.AudioHelper(self)
@@ -403,6 +412,7 @@
         self._sweep_job = None
         self._tone_job = None
         self._loop_process = None
+        self._countdown = countdown
 
         # Mixer settings for different configurations.
         self._init_mixer_settings = init_mixer_settings
diff --git a/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.html b/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.html
index 07a32d4..ce4b68f 100644
--- a/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.html
+++ b/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.html
@@ -1,9 +1,11 @@
-<h1 id="message" style="position: absolute; top:45%">
-  Plug in ethernet and hit S to start
-  | 插上网路线后按下S键开始测试
+<h1 id="default_message" style="position: absolute; top:45%">
+  Plug in ethernet | 插上网路线开始测试
+</h1>
+<h1 id="message" style="position: absolute; top:55%">
 </h1>
 <br>
-<div>FA utility:<br>
+<div onClick="toggleFAUtility()">Click to toggle FA utility:</div>
+<div id="fa-utility" style="display: none">
   <input type="radio" id="loop_0"
       onClick="testCommand('loop_0')">
     No audio looping
diff --git a/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.js b/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.js
index 7c35b10..89fad07 100644
--- a/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.js
+++ b/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.js
@@ -1,11 +1,18 @@
+/*
 window.onkeydown = function(event) {
   if (event.keyCode == 83) {
     test.sendTestEvent("init_audio_server",{});
-    window.onkeydown = null;
   }
 }
+*/
+
+window.onload = function(event) {
+  test.sendTestEvent("init_audio_server",{});
+}
 
 var active = 'loop_0';
+var display_fa_utility = false;
+var count = 3, count_timer = null, count_msg = '';
 
 function setMessage(msg) {
   document.getElementById("message").innerHTML = msg;
@@ -24,3 +31,28 @@
   testCommand('loop_0');
   document.getElementById('loop_0').checked = true;
 }
+
+function toggleFAUtility() {
+  if (display_fa_utility) {
+    document.getElementById('fa-utility').style.display = 'none';
+    display_fa_utility = false;
+  } else {
+    document.getElementById('fa-utility').style.display = 'block';
+    display_fa_utility = true;
+  }
+}
+
+function countdown() {
+  setMessage(count_msg + ' ' + count);
+  count = count - 1;
+  if (count <= 0) {
+     clearInterval(count_timer);
+     test.sendTestEvent("init_audio_server",{});
+  }
+}
+
+function start_countdown(msg, num) {
+  count = num;
+  count_msg = msg;
+  count_timer = setInterval(countdown, 1000);
+}
