diff --git a/res/values/strings.xml b/res/values/strings.xml
index f8d5c2c..bb86d6c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4767,6 +4767,11 @@
     <!-- UI debug setting: force use of NuPlayer summary [CHAR LIMIT=50] -->
     <string name="use_nuplayer_summary">Use NuPlayer instead of AwesomePlayer</string>
 
+    <!-- UI debug setting: disable USB audio routing title [CHAR LIMIT=25] -->
+    <string name="usb_audio_disable_routing">Disable USB audio routing</string>
+    <!-- UI debug setting: disable USB audio routing summary [CHAR LIMIT=50] -->
+    <string name="usb_audio_disable_routing_summary">Disable automatic routing to USB audio peripherals</string>
+
     <!-- UI debug setting: show layout bounds information [CHAR LIMIT=25] -->
     <string name="debug_layout">Show layout bounds</string>
     <!-- UI debug setting: show layout bounds information summary [CHAR LIMIT=50] -->
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index 854aa97..2a1a5bb 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -251,6 +251,11 @@
                 android:title="@string/use_nuplayer"
                 android:summary="@string/use_nuplayer_summary"/>
 
+        <CheckBoxPreference
+                android:key="usb_audio"
+                android:title="@string/usb_audio_disable_routing"
+                android:summary="@string/usb_audio_disable_routing_summary" />
+
     </PreferenceCategory>
 
     <PreferenceCategory android:key="debug_monitoring_category"
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index ba8e2f1..7b12e6f 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -117,6 +117,7 @@
     private static final String DISABLE_OVERLAYS_KEY = "disable_overlays";
     private static final String SIMULATE_COLOR_SPACE = "simulate_color_space";
     private static final String USE_NUPLAYER_KEY = "use_nuplayer";
+    private static final String USB_AUDIO_KEY = "usb_audio";
     private static final String USE_AWESOMEPLAYER_PROPERTY = "persist.sys.media.use-awesome";
     private static final String SHOW_CPU_USAGE_KEY = "show_cpu_usage";
     private static final String FORCE_HARDWARE_UI_KEY = "force_hw_ui";
@@ -222,6 +223,7 @@
     private ListPreference mSimulateColorSpace;
 
     private CheckBoxPreference mUseNuplayer;
+    private CheckBoxPreference mUSBAudio;
     private CheckBoxPreference mImmediatelyDestroyActivities;
 
     private ListPreference mAppProcessLimit;
@@ -343,6 +345,7 @@
         mOpenGLTraces = addListPreference(OPENGL_TRACES_KEY);
         mSimulateColorSpace = addListPreference(SIMULATE_COLOR_SPACE);
         mUseNuplayer = findAndInitCheckboxPref(USE_NUPLAYER_KEY);
+        mUSBAudio = findAndInitCheckboxPref(USB_AUDIO_KEY);
 
         mImmediatelyDestroyActivities = (CheckBoxPreference) findPreference(
                 IMMEDIATELY_DESTROY_ACTIVITIES_KEY);
@@ -549,6 +552,7 @@
         updateWifiAllowScansWithTrafficOptions();
         updateSimulateColorSpace();
         updateUseNuplayerOptions();
+        updateUSBAudioOptions();
     }
 
     private void resetDangerousOptions() {
@@ -1013,6 +1017,17 @@
         pokeSystemProperties();
     }
 
+    private void updateUSBAudioOptions() {
+        updateCheckBox(mUSBAudio, Settings.Secure.getInt(getContentResolver(),
+                Settings.Secure.USB_AUDIO_AUTOMATIC_ROUTING_DISABLED, 0) != 0);
+    }
+
+    private void writeUSBAudioOptions() {
+        Settings.Secure.putInt(getContentResolver(),
+                Settings.Secure.USB_AUDIO_AUTOMATIC_ROUTING_DISABLED,
+                    mUSBAudio.isChecked() ? 1 : 0);
+    }
+
     private void updateForceRtlOptions() {
         updateCheckBox(mForceRtlLayout, Settings.Global.getInt(getActivity().getContentResolver(),
                 Settings.Global.DEVELOPMENT_FORCE_RTL, 0) != 0);
@@ -1417,6 +1432,8 @@
             writeWifiAllowScansWithTrafficOptions();
         } else if (preference == mUseNuplayer) {
             writeUseNuplayerOptions();
+        } else if (preference == mUSBAudio) {
+            writeUSBAudioOptions();
         } else {
             return super.onPreferenceTreeClick(preferenceScreen, preference);
         }
