2010/4/20 Roger Quadros <roger.quadros@xxxxxxxxx>: >> http://libmtp.cvs.sourceforge.net/viewvc/*checkout*/libmtp/libmtp/src/libusb-glue.c?revision=1.284 > > Do you know if these older Windows OSes request the OS descriptor when the > device uses a standard USB class code? I haven't tested, but I think Windows will attempt to always use the OS descriptor first and foremost. > AFAIK the MTP device device should use PTP Class, Subclass and protocol > codes (i.e. 6:1:1). In this case Windows XP treats it as a PTP device (even > if the device implements OS descriptors). > > I'm sure all MTP devices in the market that implement OS descriptors use > Vendor Specific class (i.e. 0xff:0:0) which is not the right thing to do > after MTP has been standardized by usb.if. Yes they should, but still very few devices, if any, use the PTP class code. The reason behind, and the reason to why they use the OS descriptor at all, if I understood correctly, was that Microsoft actually *wanted* to use the PTP class for MTP devices, but to do that the MTP extensions had to pass through the USB IF standardization process which took some three years or so. In the meantime USB IF forbade them to use the PTP class code for something that was not officially a PTP extension. So these devices all are class 0xff "vendor specific" or 0x00 "defined at interface level". (One device mistakedly use class code 111 decimal!) I haven't however looked at what they're using as bInterfaceClass really, perhaps there are MTP devices out there that define themselves as PTP, I've never heard of one, other than the experimental device that was used to implement the proper detection algorithm in libmtp. I think Windows only knows they are MTP devices by either probing the OS descriptor or having a built-in table of MTP-compliant vendor/device ID pairs. Probably both, because some of the very earliest "PMC" (Portable Media Center) models didn't even have OS descriptors. I guess Felipe may have first-hand experience with using the PTP class code only? Maybe this works in the latest Windowses, post-USB IF standardization? No idea. Maybe tagging a device with the PTP class and subclass 0x01 will make it always fall back to PTP mode only under Windows, MTP features disabled, this would not surprise me one bit. Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-embedded" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html