diff --git a/res/layout/wifi_dialog.xml b/res/layout/wifi_dialog.xml
index c995c3e..a3ad4207 100644
--- a/res/layout/wifi_dialog.xml
+++ b/res/layout/wifi_dialog.xml
@@ -341,25 +341,6 @@
                         style="@style/wifi_item_content"
                         android:text="@string/wifi_show_password" />
             </LinearLayout>
-
-            <LinearLayout android:id="@+id/sae_password_id_layout"
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    style="@style/wifi_item"
-                    android:visibility="gone">
-                <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        style="@style/wifi_item_label"
-                        android:text="@string/wifi_sae_password_id" />
-
-                <EditText android:id="@+id/sae_password_id"
-                          android:layout_width="match_parent"
-                          android:layout_height="wrap_content"
-                          style="@style/wifi_item_edit_content"
-                          android:singleLine="true"
-                          android:inputType="textNoSuggestions" />
-            </LinearLayout>
         </LinearLayout>
 
         <LinearLayout android:id="@+id/wifi_advanced_toggle"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d15bb93..d3648cf 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2003,8 +2003,6 @@
     <string name="wifi_eap_anonymous">Anonymous identity</string>
     <!-- Label for the password of the secured network -->
     <string name="wifi_password">Password</string>
-    <!-- Label for the sae password id of the secured network [CHAR LIMIT=32] -->
-    <string name="wifi_sae_password_id">SAE password identifier</string>
     <!-- Label for the check box to show password -->
     <string name="wifi_show_password">Show password</string>
     <!-- Label for the RadioGroup to choose wifi ap band -->
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index e228a14..a8b3250 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -142,7 +142,6 @@
     @VisibleForTesting
     int mAccessPointSecurity;
     private TextView mPasswordView;
-    private TextView mSaePasswordIdView;
     private ImageButton mSsidScanButton;
 
     private String mUnspecifiedCertString;
@@ -811,11 +810,6 @@
                     String password = mPasswordView.getText().toString();
                     config.preSharedKey = '"' + password + '"';
                 }
-                if (mSaePasswordIdView.length() != 0) {
-                    config.saePasswordId = mSaePasswordIdView.getText().toString();
-                } else {
-                    config.saePasswordId = null;
-                }
                 break;
 
             case AccessPoint.SECURITY_OWE:
@@ -1002,23 +996,6 @@
             }
         }
 
-        if (mSaePasswordIdView == null) {
-            mSaePasswordIdView = (TextView) mView.findViewById(R.id.sae_password_id);
-            mSaePasswordIdView.setOnEditorActionListener(this);
-            mSaePasswordIdView.setOnKeyListener(this);
-        }
-
-        if (mAccessPointSecurity == AccessPoint.SECURITY_SAE) {
-            mView.findViewById(R.id.sae_password_id_layout).setVisibility(View.VISIBLE);
-            if (mAccessPoint != null && mAccessPoint.isSaved()) {
-                if (!TextUtils.isEmpty(mAccessPoint.getConfig().saePasswordId)) {
-                    mSaePasswordIdView.setText(mAccessPoint.getConfig().saePasswordId);
-                }
-            }
-        } else {
-            setSaePasswordIdInvisible();
-        }
-
         if (mAccessPointSecurity != AccessPoint.SECURITY_EAP &&
                 mAccessPointSecurity != AccessPoint.SECURITY_EAP_SUITE_B) {
             mView.findViewById(R.id.eap).setVisibility(View.GONE);
@@ -1326,11 +1303,6 @@
         mView.findViewById(R.id.show_password_layout).setVisibility(View.GONE);
     }
 
-    private void setSaePasswordIdInvisible() {
-        mSaePasswordIdView.setText("");
-        mView.findViewById(R.id.sae_password_id_layout).setVisibility(View.GONE);
-    }
-
     private void setEapMethodInvisible() {
         mView.findViewById(R.id.eap).setVisibility(View.GONE);
     }
diff --git a/src/com/android/settings/wifi/WifiConfigController2.java b/src/com/android/settings/wifi/WifiConfigController2.java
index 90f1397..ecf20fd 100644
--- a/src/com/android/settings/wifi/WifiConfigController2.java
+++ b/src/com/android/settings/wifi/WifiConfigController2.java
@@ -142,7 +142,6 @@
     @VisibleForTesting
     int mWifiEntrySecurity;
     private TextView mPasswordView;
-    private TextView mSaePasswordIdView;
     private ImageButton mSsidScanButton;
 
     private String mUnspecifiedCertString;
@@ -805,11 +804,6 @@
                     String password = mPasswordView.getText().toString();
                     config.preSharedKey = '"' + password + '"';
                 }
-                if (mSaePasswordIdView.length() != 0) {
-                    config.saePasswordId = mSaePasswordIdView.getText().toString();
-                } else {
-                    config.saePasswordId = null;
-                }
                 break;
 
             case WifiEntry.SECURITY_OWE:
@@ -996,23 +990,6 @@
             }
         }
 
-        if (mSaePasswordIdView == null) {
-            mSaePasswordIdView = (TextView) mView.findViewById(R.id.sae_password_id);
-            mSaePasswordIdView.setOnEditorActionListener(this);
-            mSaePasswordIdView.setOnKeyListener(this);
-        }
-
-        if (mWifiEntrySecurity == WifiEntry.SECURITY_SAE) {
-            mView.findViewById(R.id.sae_password_id_layout).setVisibility(View.VISIBLE);
-            if (mWifiEntry != null && mWifiEntry.isSaved()) {
-                if (!TextUtils.isEmpty(mWifiEntry.getWifiConfiguration().saePasswordId)) {
-                    mSaePasswordIdView.setText(mWifiEntry.getWifiConfiguration().saePasswordId);
-                }
-            }
-        } else {
-            setSaePasswordIdInvisible();
-        }
-
         if (mWifiEntrySecurity != WifiEntry.SECURITY_EAP
                 && mWifiEntrySecurity != WifiEntry.SECURITY_EAP_SUITE_B) {
             mView.findViewById(R.id.eap).setVisibility(View.GONE);
@@ -1322,11 +1299,6 @@
         mView.findViewById(R.id.show_password_layout).setVisibility(View.GONE);
     }
 
-    private void setSaePasswordIdInvisible() {
-        mSaePasswordIdView.setText("");
-        mView.findViewById(R.id.sae_password_id_layout).setVisibility(View.GONE);
-    }
-
     private void setEapMethodInvisible() {
         mView.findViewById(R.id.eap).setVisibility(View.GONE);
     }
