locked
Legacy USB 2.0 MIDI devices on Windows 10, GetDeviceDescriptor errors RRS feed

  • Question

  • I am posting here for advice on how I can get the OS to recognize and enumerate legacy USB 2.0 MIDI devices on Windows 10 that are not class-compliant. The device I'm working with is the M-Audio Keystation 49e(referenced later as device). There are drivers developed for this product up to Windows 7, which I have if needed. 

    Here's what happens:

    Upon connecting the device, I first encounter these messages

    (PHOTOS REMOVED) The last USB device you connected to this computer malfunctioned and Windows does not recognize it.

    I was able to locate one potential fix based on information in this blog:

    Windows 8.1: USB MIDI Device Works on USB 2.0 Port, Doesn’t Work on USB 3.0 Port https://blogs.msdn.microsoft.com/usbcoreblog/2014/01/21/windows-8-1-usb-midi-device-works-on-usb-2-0-port-doesnt-work-on-usb-3-0-port/

    The possible explanation I received on this blog is: "USB 3.0 hub driver will allow a request for a MS OS feature descriptor to be forwarded to a USB 1.1 device, whereas on Windows 8.0 it would not. A small subset of USB devices do not handle these requests correctly, and will end up getting confused after they receive such a request."

    This blog further recommends a registry override to correct the issue, by preventing the OS Feature Descriptor Request from being forwarded to the device. This was referenced as the "osvc" registry override, which to my knowledge requires capturing the hexadecimal values for idVendor, idProduct, and bcdDevice by capturing the USB data with Message Analyzer, by which the appropriate hex values are then concatenated. 

    Note: before I tried to complete this override, I attempted to install relevant drivers in compatibility mode on Win10 (no change in result) and I successfully tested this device on WinXP SP3 and it worked!! USB drivers are up-to-date and BIOS settings are correct.

    The problem I ran into with this registry override is the hexadecimal values concatenation. The values found here are 0s. Without these values, I cannot find the usbflag key needed to complete this override. 

    I initially posted this question Microsoft Community and I was directed here, I assume because this may require a higher level of technical knowledge or development skill to implement a fix. 

    Here are my main questions:

    Why can't I see the device ID values for this MIDI controller, if I can find them with USBView, could I create a key in the registry and then perform the override?

    Can I update the existing drivers to be compatible on Windows 10? How would I begin that process?

    Which tools should I use for debugging this issue? I have Message Analyzer and USBView. What else should I have for this process?

    Here is some system information:

    Operating System
    Windows 10 Education 64-bit
    CPU
    AMD FX-6300 19 °C
    Vishera 32nm Technology
    RAM
    8.00GB Single-Channel DDR3 @ 802MHz (11-11-11-28)
    Motherboard
    ASUSTeK COMPUTER INC. M5A97 LE R2.0 (Socket 942) 26 °C
    Graphics
    L30M103 (1280x720@59Hz)
    4096MB ATI AMD Radeon R7 240 Series (XFX Pine Group) 29 °C
    Storage
    465GB Samsung SSD 850 EVO 500GB (SSD) 35 °C
    149GB Seagate ST3160023AS (SATA) 33 °C
    298GB Seagate ST3320620AS (SATA) 34 °C
    Optical Drives
    HL-DT-ST BD-RE WH16NS40
    Audio
    Realtek High Definition Audio

    USBView data:

     =========================== USB Port5 ===========================

    Connection Status        : 0x0A (Device reset)
    Port Chain               : 2-5
    Properties               : 0x01
     IsUserConnectable       : yes
     PortIsDebugCapable      : no
     PortHasMultiCompanions  : no
     PortConnectorIsTypeC    : no

          ======================== USB Device ========================

            +++++++++++++++++ Device Information ++++++++++++++++++
    Device Description       : USB Composite Device
    Device Path              : \\.\usb#vid_0000&pid_0002#5&3afd18bd&0&5#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
    Device ID                : USB\VID_0000&PID_0002\5&3AFD18BD&0&5
    Hardware IDs             : USB\DEVICE_DESCRIPTOR_FAILURE
    Driver KeyName           : {36fc9e60-c465-11cf-8056-444553540000}\0024 (GUID_DEVCLASS_USB)
    Driver                   : \SystemRoot\System32\drivers\usbccgp.sys (Version: 10.0.16299.15  Date: 2017-09-29)
    Driver Inf               : C:\WINDOWS\inf\usb.inf
    Legacy BusType           : PNPBus
    Class                    : USB
    Class GUID               : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB)
    Interface GUID           : {a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
    Service                  : usbccgp
    Enumerator               : USB
    Location Info            : Port_#0005.Hub_#0001
    Manufacturer Info        : (Standard USB Host Controller)
    Capabilities             : 0x44 (Removable, RawDeviceOK)
    Status                   : 0x01806400 (DN_HAS_PROBLEM, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
    Problem Code             : 10 (CM_PROB_FAILED_START)
    Address                  : 5
    Power State              : D3 (supported: D0, D2, D3, wake from D0, wake from D2)

            ---------------- Connection Information ---------------
    Connection Index         : 0x05 (5)
    Connection Status        : 0x0A (DeviceReset)
    Current Config Value     : 0x00
    Device Address           : 0x00 (0)
    Is Hub                   : 0x00 (no)
    Number Of Open Pipes     : 0x00 (0)
    Device Bus Speed         : 0x00 (Low-Speed)

            --------------- Connection Information V2 -------------
    Connection Index         : 0x05 (5)
    Length                   : 0x10 (16 bytes)
    SupportedUsbProtocols    : 0x01
     Usb110                  : 1 (yes)
     Usb200                  : 0 (no)
     Usb300                  : 0 (no)
     ReservedMBZ             : 0x00
    Flags                    : 0x00
     DevIsOpAtSsOrHigher     : 0 (Is not operating at SuperSpeed or higher)
     DevIsSsCapOrHigher      : 0 (Is not SuperSpeed capable or higher)
     DevIsOpAtSsPlusOrHigher : 0 (Is not operating at SuperSpeedPlus or higher)
     DevIsSsPlusCapOrHigher  : 0 (Is not SuperSpeedPlus capable or higher)
     ReservedMBZ             : 0x00

        ---------------------- Device Descriptor ----------------------
    bLength                  : 0x00 (0 bytes)

          -------------------- String Descriptors -------------------
    String descriptors are not available  (because the device has problem code CM_PROB_FAILED_START)

    If more info is needed, I will gladly provide it here. This is the first time I've been unable to Google a fix for an issue, so I really hope anyone can help.

    Thanks a million,

    Alex

    Friday, October 20, 2017 11:43 AM

All replies

  • Hi Alex,

    Did you ever get a resolution to this?  I have a similar issue - the osvc trick worked for me on Windows 8.1 I think, some time back, but on Windows 10 doesn't seem to help.

    Cheers,

    Justin


    Tuesday, September 25, 2018 6:42 PM