diff --git a/apps/CtsVerifier/res/layout/uap_buttons_panel.xml b/apps/CtsVerifier/res/layout/uap_buttons_panel.xml
index 3da7247..4fdc757 100644
--- a/apps/CtsVerifier/res/layout/uap_buttons_panel.xml
+++ b/apps/CtsVerifier/res/layout/uap_buttons_panel.xml
@@ -82,24 +82,6 @@
          <Space
             android:layout_width="match_parent"
             android:layout_height="5dp"/>
-
-        <TextView
-            android:text="@string/uapButtonsBtnDLbl"
-            android:id="@+id/uap_buttonsBtnDLabelTx"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            />
-
-        <TextView
-            android:text="@string/uapButtonsNotRecognized"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:id="@+id/uap_buttonsBtnDStatusTx"
-            android:paddingLeft="16dp"/>
-
-         <Space
-            android:layout_width="match_parent"
-            android:layout_height="5dp"/>
         </LinearLayout>
 
     <TextView
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralButtonsActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralButtonsActivity.java
index 4718db0..98a7d18 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralButtonsActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/audio/USBAudioPeripheralButtonsActivity.java
@@ -34,18 +34,15 @@
     private boolean mHasBtnA;
     private boolean mHasBtnB;
     private boolean mHasBtnC;
-    private boolean mHasBtnD;
 
     // Widgets
     private TextView mBtnALabelTxt;
     private TextView mBtnBLabelTxt;
     private TextView mBtnCLabelTxt;
-    private TextView mBtnDLabelTxt;
 
     private TextView mBtnAStatusTxt;
     private TextView mBtnBStatusTxt;
     private TextView mBtnCStatusTxt;
-    private TextView mBtnDStatusTxt;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -57,12 +54,10 @@
         mBtnALabelTxt = (TextView)findViewById(R.id.uap_buttonsBtnALabelTx);
         mBtnBLabelTxt = (TextView)findViewById(R.id.uap_buttonsBtnBLabelTx);
         mBtnCLabelTxt = (TextView)findViewById(R.id.uap_buttonsBtnCLabelTx);
-        mBtnDLabelTxt = (TextView)findViewById(R.id.uap_buttonsBtnDLabelTx);
 
         mBtnAStatusTxt = (TextView)findViewById(R.id.uap_buttonsBtnAStatusTx);
         mBtnBStatusTxt = (TextView)findViewById(R.id.uap_buttonsBtnBStatusTx);
         mBtnCStatusTxt = (TextView)findViewById(R.id.uap_buttonsBtnCStatusTx);
-        mBtnDStatusTxt = (TextView)findViewById(R.id.uap_buttonsBtnDStatusTx);
 
         setPassFailButtonClickListeners();
         setInfoResources(R.string.usbaudio_buttons_test, R.string.usbaudio_buttons_info, -1);
@@ -93,13 +88,6 @@
                     mBtnCLabelTxt.setTextColor(Color.WHITE);
                     mBtnCStatusTxt.setTextColor(Color.WHITE);
                 }
-                if (!mButtonAttributes.mHasBtnD) {
-                    mBtnDLabelTxt.setTextColor(Color.GRAY);
-                    mBtnDStatusTxt.setTextColor(Color.GRAY);
-                } else {
-                    mBtnDLabelTxt.setTextColor(Color.WHITE);
-                    mBtnDStatusTxt.setTextColor(Color.WHITE);
-                }
             } else {
                 mBtnALabelTxt.setTextColor(Color.GRAY);
                 mBtnAStatusTxt.setTextColor(Color.GRAY);
@@ -107,8 +95,6 @@
                 mBtnBStatusTxt.setTextColor(Color.GRAY);
                 mBtnCLabelTxt.setTextColor(Color.GRAY);
                 mBtnCStatusTxt.setTextColor(Color.GRAY);
-                mBtnDLabelTxt.setTextColor(Color.GRAY);
-                mBtnDStatusTxt.setTextColor(Color.GRAY);
             }
         }
 
@@ -118,8 +104,6 @@
             mHasBtnB ? R.string.uapButtonsRecognized : R.string.uapButtonsNotRecognized));
         mBtnCStatusTxt.setText(getString(
             mHasBtnC ? R.string.uapButtonsRecognized : R.string.uapButtonsNotRecognized));
-        mBtnDStatusTxt.setText(getString(
-            mHasBtnD ? R.string.uapButtonsRecognized : R.string.uapButtonsNotRecognized));
     }
 
     private void calculateMatch() {
@@ -135,9 +119,6 @@
             if (match && mButtonAttributes.mHasBtnC != mHasBtnC) {
                 match = false;
             }
-            if (match && mButtonAttributes.mHasBtnD != mHasBtnD) {
-                match = false;
-            }
             Log.i(TAG, "match:" + match);
             getPassButton().setEnabled(match);
         } else {
@@ -163,11 +144,6 @@
         case KeyEvent.KEYCODE_VOLUME_DOWN:
             mHasBtnC = true;
             break;
-
-        // Function D control event
-        case KeyEvent.KEYCODE_VOICE_ASSIST:
-            mHasBtnD = true;
-            break;
         }
 
         showButtonsState();
@@ -180,7 +156,7 @@
     // USBAudioPeripheralActivity
     //
     public void updateConnectStatus() {
-        mHasBtnA = mHasBtnB = mHasBtnC = mHasBtnD = false;
+        mHasBtnA = mHasBtnB = mHasBtnC = false;
         showButtonsState();
         calculateMatch();
     }
