diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0baa901..56f1179 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2276,10 +2276,12 @@
     <string name="usb_mtp_summary">Lets you transfer media files on Windows, or using Android File Transfer on Mac (see www.android.com/filetransfer)</string>
     <!-- Storage setting.  Title for PTP checkbox [CHAR LIMIT=30]-->
     <string name="usb_ptp_title">Camera (PTP)</string>
-    <!-- Storage setting.  Label for installer CD [CHAR LIMIT=30]-->
-    <string name="usb_ptp_summary">Lets you transfer photos using camera software, and transfer any files on computers that don\'t support MTP</string>
     <!-- Storage setting.  Summary for PTP checkbox [CHAR LIMIT=NONE]-->
-    <string name="usb_label_installer_cd">"Install file-transfer tools"</string>
+    <string name="usb_ptp_summary">Lets you transfer photos using camera software, and transfer any files on computers that don\'t support MTP</string>
+    <!-- Storage setting.  Title for MIDI checkbox [CHAR LIMIT=30]-->
+    <string name="usb_midi_title">MIDI</string>
+    <!-- Storage setting.  Summary for MIDI checkbox [CHAR LIMIT=NONE]-->
+    <string name="usb_midi_summary">Lets MIDI enabled applications work over USB with MIDI software on your computer.</string>
 
     <!-- Section header above list of other users storage [CHAR LIMIT=32] -->
     <string name="storage_other_users">Other users</string>
diff --git a/res/xml/usb_settings.xml b/res/xml/usb_settings.xml
index 4b0268b..611a1b4 100644
--- a/res/xml/usb_settings.xml
+++ b/res/xml/usb_settings.xml
@@ -32,4 +32,10 @@
         android:summary="@string/usb_ptp_summary"
         />
 
+    <CheckBoxPreference
+        android:key="usb_midi"
+        android:title="@string/usb_midi_title"
+        android:summary="@string/usb_midi_summary"
+        />
+
 </PreferenceScreen>
diff --git a/src/com/android/settings/deviceinfo/UsbSettings.java b/src/com/android/settings/deviceinfo/UsbSettings.java
index 42de2fd..c3b3f96 100644
--- a/src/com/android/settings/deviceinfo/UsbSettings.java
+++ b/src/com/android/settings/deviceinfo/UsbSettings.java
@@ -41,10 +41,12 @@
 
     private static final String KEY_MTP = "usb_mtp";
     private static final String KEY_PTP = "usb_ptp";
+    private static final String KEY_MIDI = "usb_midi";
 
     private UsbManager mUsbManager;
     private CheckBoxPreference mMtp;
     private CheckBoxPreference mPtp;
+    private CheckBoxPreference mMidi;
     private boolean mUsbAccessoryMode;
 
     private final BroadcastReceiver mStateReceiver = new BroadcastReceiver() {
@@ -68,6 +70,7 @@
 
         mMtp = (CheckBoxPreference)root.findPreference(KEY_MTP);
         mPtp = (CheckBoxPreference)root.findPreference(KEY_PTP);
+        mMidi = (CheckBoxPreference)root.findPreference(KEY_MIDI);
 
         UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
         if (um.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER)) {
@@ -107,27 +110,37 @@
         if (UsbManager.USB_FUNCTION_MTP.equals(function)) {
             mMtp.setChecked(true);
             mPtp.setChecked(false);
+            mMidi.setChecked(false);
         } else if (UsbManager.USB_FUNCTION_PTP.equals(function)) {
             mMtp.setChecked(false);
             mPtp.setChecked(true);
+            mMidi.setChecked(false);
+        } else if (UsbManager.USB_FUNCTION_MIDI.equals(function)) {
+            mMtp.setChecked(false);
+            mPtp.setChecked(false);
+            mMidi.setChecked(true);
         } else  {
             mMtp.setChecked(false);
             mPtp.setChecked(false);
+            mMidi.setChecked(false);
         }
         UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
         if (um.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER)) {
             Log.e(TAG, "USB is locked down");
             mMtp.setEnabled(false);
             mPtp.setEnabled(false);
+            mMidi.setEnabled(true);
         } else if (!mUsbAccessoryMode) {
             //Enable MTP and PTP switch while USB is not in Accessory Mode, otherwise disable it
             Log.e(TAG, "USB Normal Mode");
             mMtp.setEnabled(true);
             mPtp.setEnabled(true);
+            mMidi.setEnabled(true);
         } else {
             Log.e(TAG, "USB Accessory Mode");
             mMtp.setEnabled(false);
             mPtp.setEnabled(false);
+            mMidi.setEnabled(false);
         }
     }
 
@@ -151,6 +164,8 @@
             function = UsbManager.USB_FUNCTION_MTP;
         } else if (preference == mPtp && mPtp.isChecked()) {
             function = UsbManager.USB_FUNCTION_PTP;
+        } else if (preference == mMidi && mMidi.isChecked()) {
+            function = UsbManager.USB_FUNCTION_MIDI;
         }
 
         mUsbManager.setCurrentFunction(function, true);
