This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TUSB9260 firmware: How to install an "MS OS feature descriptor" for a Microsoft compatible-ID for WinUSB driver

Other Parts Discussed in Thread: TUSB9260, TUSB9261

We have a specialized application where we need to use the WinUSB windows driver with the TUSB9260.  In order to simplify installation, we would like to install a Microsoft OS Feature Descriptor with a WinUSB "Compatible-ID".  It is described in these two links:

http://msdnrss.thecoderblogs.com/2012/09/how-to-install-winusb-sys-without-a-custom-inf/

http://technet.microsoft.com/en-us/library/hh450799(v=vs.85).aspx#required__microsoft_os_descriptors_in_firmware

The objective is for Windows 8 to automatically associate our device with the WinUSB driver instead of the standard MSC driver.  Yes, we're still going to interact with the device through MSC protocol, but there some special features of the WinUSB driver that our application demands.

 

So in general, how do we get at the "customizable application code"?

And in specific, has anyone ever implemented a Microsoft OS Feature Descriptor?

 

Regards,

John

 

  • By the way, I'm not asking how to do MS os feature descriptors; it's just a matter of putting the proper descriptor data in the proper places in memory, and provide for the configuration endpoint to retrieve it for the USB host when requested.  The posts describe how to do that and we're competent programmers.

    What we're asking is how one goes about inserting these new components into the TUSB9260 application firmware, and modifying whatever endpoint code may be necessary, since it's all supposed to be customizable.  Or if someone's already done it, even better.

    Regards,

     

    John

     

  • Hello John,

    The TUSB9261 is an application specific device which main purpose is to be a USB to SATA bridge, thus the firmware provided by TI is intended for serving that purpose only. Normally the source code of the firmware is not provided by TI.

    For which purpose are you using the TUSB9260 (application)? Could you explain with more detail about why your application requires WinUSB to interact with the TUSB9260? Perhaps we could provide a different approach/solution instead of using WinUSB.

    What is the business opportunity of this?

    Best Regards,

    Alexis Cortes.

  • Thanks for your response, Alexis.

    We're actually using the mass storage class protocol and the SATA interface; it's just that it's not for a generic drive in the OS.

    I work for SerialTek, a small company in San Jose, and we make bus analyzers for SATA, SAS, and other drive interfaces.  We've incorporated the TUSB9260 into our current flagship model and it's doing well in sales channels, but it's not a huge volume kind of product.

    We used the USB/SATA bridge chip because SATA is an interface we understand and already support in the instrument, it's high bandwidth to take advantage of USB 3.0 SS, and we have a lot of data to transfer.  It gave us a big leg up in development by satisfying our interface and bandwidth needs without requiring custom protocols on the instrument side or custom drivers on the PC side.  We've been accessing it as a physical block drive, but using a few proprietary commands to execute functions and prepare data transfers.  Though it's worked well, it's required the use of administrator mode and wasn't readily portable to Linux, which we support.

    So we've implemented a libusb interface to the MSC device, which we have running now on several platforms.  It required minimal code to execute MSC/SCSI style commands (instead of the open/close/read/write physical drive commands) and we had it up and running in no time because of the resources in the library and in the WinUSB low-level driver it uses.  The only issue is getting the USB device to attach to the standard WinUSB driver in various flavors of Windows.  We have been working with INF files but there are constant complications with Windows insisting on attaching the device to the MSC driver.  We'd like the installation procedure to be as transparent as possible for our customers.

    Then we discovered Microsoft Compatible-IDs and realized that if the USB descriptors responded as a WinUSB device, Windows 8 would automatically install the driver without an installation procedure, without an INF, without driver or INF signing, and would never complicate things with the MSC driver.  We just need the firmware to:

     

    1.  Respond to the standard string descriptor index 0xEE request for "OS string descriptor" with the string of our specification.

    2.  Respond to the "GET_MS_DESCRIPTOR" request with data from a new descriptor block which is the "Compatible-ID" descriptor. It's less than 100 bytes, most of it zeroed, a half-dozen or so simple fields, and three short string fields.  If space is constrained, at bare minimum it could be implemented in about 40 bytes.

    Since you've already implemented several descriptors in the firmware and in your customization-flash tool, We figure this wouldn't be too difficult to add.  It may help others in the future who want to do a similar thing with high-bandwidth SATA data transfers in a custom device, or just want a custom, proprietary access from their application to their storage device without the labor of writing a driver from scratch or the headaches of custom driver installations, especially where customers are concerned.

    Let me know if you need any other information.

     

    Regards,

    John

  • Hi again John,

    I see now.

    Well now that you brought this out, this is a functionality we are planning to implement in future releases of the Firmware/Flash Burner Tool. However, currently we don't have a deadline nor a specific date for a release including this change.

    Sorry if this was not the answer you were expecting. Please send me an email with your contact information to alexis.cortes@ti.com and I will gladly contact you once we have a firmware release that includes this change.

    Best Regards,

    Alexis Cortes.

  • Can anyone provide an updated answer to this question? I assume at this point there has been some sample code release to demonstrate how to expose the various MS OS Descriptors supported by Windows. Can anyone provide a link of such a sample?