On Wed, 2 Feb 2011, Maulik Mankad wrote: > It seems that composite.c does not manage well the interfaces that are > disabled. Note that the standard kernel has no way to disable interfaces. The disable mechanism was added in Android. Have you tried running the test with a standard kernel (i.e., one from kernel.org)? > We assign interface_id's to all the interfaces (enabled/disabled) but > while sending the configuration descriptor to the host, only the > enabled interfaces are announced. Thus host has no way to know of > other interfaces available on the device. Thus there is a mismatch > between the wIndex field (interface number) that the host sends and > what the device expects. Also it is strange that config->interface[id] > array also holds the disabled interface. > Seems a bug in the composite framework. No, it's a bug in Android. > Any idea of how to address this? No. I work on the standard kernel, not Android's adaptation. > I tried some obvious things, like assigning interface_id's in > usb_interface_id(), only if the function is enabled, but this does not > gel well with the framework and I see bind failures. You need to report this to the Android developers. Posting messages on linux-usb won't do much good. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html