diff --git a/src/com/android/bluetooth/hfp/HeadsetStateMachine.java b/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
index ab98f0d..cdefde7 100755
--- a/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
+++ b/src/com/android/bluetooth/hfp/HeadsetStateMachine.java
@@ -260,9 +260,6 @@
                     mCurrentDevice = device;
                     transitionTo(mConnected);
                 }
-                if (isInCall()) {
-                    deferMessage(obtainMessage(CONNECT_AUDIO, mCurrentDevice));
-                }
                 break;
             case HeadsetHalConstants.CONNECTION_STATE_DISCONNECTING:
                 Log.w(TAG, "Ignore HF DISCONNECTING event, device: " + device);
@@ -287,7 +284,6 @@
             boolean retValue = HANDLED;
             switch(message.what) {
                 case CONNECT:
-                case CONNECT_AUDIO:
                     deferMessage(message);
                     break;
                 case CONNECT_TIMEOUT:
@@ -426,10 +422,6 @@
                         mIncomingDevice = null;
                         transitionTo(mConnected);
                     }
-                    // All the above conditions go from disconnect/connecting to connected
-                    if (isInCall()) {
-                        deferMessage(obtainMessage(CONNECT_AUDIO, mCurrentDevice));
-                    }
                 }
                 break;
             case HeadsetHalConstants.CONNECTION_STATE_CONNECTING:
@@ -478,6 +470,9 @@
         @Override
         public void enter() {
             log("Enter Connected: " + getCurrentMessage().what);
+            if (isInCall()) {
+                sendMessage(CONNECT_AUDIO);
+            }
         }
 
         @Override
@@ -676,7 +671,7 @@
 
         @Override
         public void enter() {
-            log("Enter AudioOn: " + getCurrentMessage().what);
+            log("Enter Audio: " + getCurrentMessage().what);
             mAudioManager.setParameters(HEADSET_NAME + "=" + getCurrentDeviceName() + ";" +
                                         HEADSET_NREC + "=on");
         }
@@ -693,19 +688,13 @@
 
             boolean retValue = HANDLED;
             switch(message.what) {
-                case DISCONNECT:
-                    deferMessage(obtainMessage(DISCONNECT, message.obj));
-                    // fall through
                 case DISCONNECT_AUDIO:
-                    {
-                        BluetoothDevice device = (BluetoothDevice) message.obj;
-                        if (device != null && !mCurrentDevice.equals(device)) {
-                            break;
-                        }
-                        disconnectAudioNative(getByteAddress(mCurrentDevice));
-                    }
+                    // TODO(BT) when failure broadcast a audio disconnecting to connected intent
+                    //          check if device matches mCurrentDevice
+                    disconnectAudioNative(getByteAddress(mCurrentDevice));
                     break;
                 case VOICE_RECOGNITION_START:
+                    // TODO(BT) should we check if device matches mCurrentDevice?
                     startVoiceRecognitionNative();
                     break;
                 case VOICE_RECOGNITION_STOP:
