diff --git a/services/usb/java/com/android/server/usb/UsbUniversalMidiDevice.java b/services/usb/java/com/android/server/usb/UsbUniversalMidiDevice.java index db0c80f189d3e..13d404caf6a2e 100644 --- a/services/usb/java/com/android/server/usb/UsbUniversalMidiDevice.java +++ b/services/usb/java/com/android/server/usb/UsbUniversalMidiDevice.java @@ -218,14 +218,13 @@ public final class UsbUniversalMidiDevice implements Closeable { if (doesInterfaceContainInput && doesInterfaceContainOutput) { UsbDeviceConnection connection = manager.openDevice(mUsbDevice); - if (!connection.claimInterface(interfaceDescriptor.toAndroid(mParser), true)) { - Log.d(TAG, "Can't claim control interface"); - continue; - } - int defaultMidiProtocol = mMidiBlockParser.calculateMidiType(connection, - interfaceDescriptor.getInterfaceNumber(), - interfaceDescriptor.getAlternateSetting()); + // The ALSA does not handle switching to the MIDI 2.0 interface correctly + // and stops exposing /dev/snd/midiC1D0 after calling connection.setInterface(). + // Thus, simply use the control interface (interface zero). + int defaultMidiProtocol = mMidiBlockParser.calculateMidiType(connection, + 0, + interfaceDescriptor.getAlternateSetting()); connection.close(); return defaultMidiProtocol; }