Document Reference No.: FT_000447 Determining USB Peripheral Device Class Application Note AN_174 Version 1.0 Clearance No.: FTDI# 211 Future Technology Devices International Ltd. Application Note AN_174 Determining USB Peripheral Device Class Document Reference No.: FT_000447 Version 1.0 Issue Date: 2011-05-23 This document will demonstrate how a USB peripheral device class can be obtained. This information can be helpful in determining if the peripheral is supported by the current Vinculum host controller firmware. Use of FTDI devices in life support and/or safety applications is entirely at the user’s risk, and the user agrees to defend, indemnify and hold harmless FTDI from any and all damages, claims, suits or expense resulting from such use. Copyright © 2011 Future Technology Devices International Limited 1 Document Reference No.: FT_000447 Determining USB Peripheral Device Class Application Note AN_174 Version 1.0 Clearance No.: FTDI# 211 TABLE OF CONTENTS 1 Introduction .................................................................... 3 2 What are Device Classes?................................................ 4 3 Determining the Device Class .......................................... 5 3.1 Using PC Utilities ...................................................................... 5 3.2 Using the VNC2 firmware .......................................................... 6 4 Classes of devices currently supported by the Vinculum firmware .............................................................................. 7 5 Contact Information ........................................................ 8 Appendix A – References ................................................... 10 A.1 Websites ................................................................................... 10 A.2 Technical Documentation .......................................................... 10 A.3 Utilities ..................................................................................... 10 Appendix B– Revision History ............................................ 11 Copyright © 2011 Future Technology Devices International Limited 2 Document Reference No.: FT_000447 Determining USB Peripheral Device Class Application Note AN_174 Version 1.0 Clearance No.: FTDI# 211 1 Introduction Many users enquire if a certain device is supported by the Vinculum host controllers. Although the VNC2 generation supports all USB transfer types (Control, Bulk, Interrupt and Isochronous) the real answer to the question depends on the device class reported back by the device and whether a VOS driver currently exists for that device class or has still to be created. This document will demonstrate to users how a device class can be determined. Copyright © 2011 Future Technology Devices International Limited 3 Document Reference No.: FT_000447 Determining USB Peripheral Device Class Application Note AN_174 Version 1.0 Clearance No.: FTDI# 211 2 What are Device Classes? Not all USB peripherals are the same. Each device type is defined by a number referred to as the device class. The class definitions are defined and controlled by the USB Implementers Forum. For example a keyboard is a Human Interface Device (HID) class device and therefore has device class 0x03. A full list of device classes can be found at: http://www.usb.org/developers/defined_class The device class is reported back to the USB host controller during device enumeration as part of the device descriptors. Copyright © 2011 Future Technology Devices International Limited 4 Document Reference No.: FT_000447 Determining USB Peripheral Device Class Application Note AN_174 Version 1.0 Clearance No.: FTDI# 211 3 Determining the Device Class 3.1 Using PC Utilities The simplest method to read the device class is to plug the peripheral into a windows PC and use the free USBVIEW utility from the FTDI website: http://www.ftdichip.com/Support/Utilities/usbview.zip Set the utility to display “Config Descriptors” under the options tab and then select the required device from the device tree. Figure 1: USBVIEW Screenshot Copyright © 2011 Future Technology Devices International Limited 5 Document Reference No.: FT_000447 Determining USB Peripheral Device Class Application Note AN_174 Version 1.0 Clearance No.: FTDI# 211 The key information to look for first is: bDeviceClass bDeviceSubClass bDeviceProtocol This is highlighted at the top of the screenshot in figure 1. Many device classes can be determined from these fields. In the example shown the values are defied as 0x00. This indicates that the values are defined in the interface class section and as such the user must then check: bInterfaceClass bInterfaceSubClass binterfaceProtocol This is highlighted at the bottom of the screenshot in figure 1. 0x08 in the bInterfaceClass in the example defines the device as Mass Storage class. In this case the class is supported by both VNC1L and VNC2 firmware drivers. If the class is returned as 0xFF then this is vendor specific and as such the device normally uses a vendor supplied driver as opposed to a generic USB driver. Such devices, with the exception of FTDI devices, are unlikely to appear as part of the generic Vinculum library. To allow the Vinculum device to support such a class would require the user to obtain the device API and create their own driver. 3.2 Using the VNC2 firmware The Vinculum device, VNC2, is supplied with an IDE and sample projects. One of these projects is called “USBDescriptors.vproj”. If a VNC2 device is available then this project can be built and loaded onto the device to allow the descriptors of any device plugged into the USB ports of the VNC2 to be read out over the UART interface. Using a utility such as HyperTerminal the printout follows a similar format to USBVIEW. A getting started guide for VNC2 tools is available at: http://www.ftdichip.com/Support/Documents/AppNotes/AN_142_VinculumII_Tool_Chain_Getting_Started_Guide.pdf Copyright © 2011 Future Technology Devices International Limited 6 Document Reference No.: FT_000447 Determining USB Peripheral Device Class Application Note AN_174 Version 1.0 Clearance No.: FTDI# 211 4 Classes of devices currently supported by the Vinculum firmware Classes of devices supported by the Vinculum firmware at the time of writing (corresponds to toolchain release version 1.4.0) are: Class Bulk Only Mass Storage (BOMS) Human Interface Device (HID) Printer Hub Communication Device Class (CDC) FTDI peripherals Video Audio Wireless controller VNC1L YES YES YES YES YES YES No No No VNC2 YES YES YES YES YES YES Under Consideration Under Consideration Under Consideration Copyright © 2011 Future Technology Devices International Limited 7 Document Reference No.: FT_000447 Determining USB Peripheral Device Class Application Note AN_174 Version 1.0 Clearance No.: FTDI# 211 5 Contact Information Head Office – Glasgow, UK Future Technology Devices International Limited Unit 1, 2 Seaward Place, Centurion Business Park Glasgow G41 1HH United Kingdom Tel: +44 (0) 141 429 2777 Fax: +44 (0) 141 429 2758 E-mail (Sales) E-mail (Support) E-mail (General Enquiries) Web Site URL Web Shop URL [email protected] [email protected] [email protected] http://www.ftdichip.com http://www.ftdichip.com Branch Office – Taipei, Taiwan Future Technology Devices International Limited (Taiwan) 2F, No 516, Sec. 1 NeiHu Road Taipei 114 Taiwan, R.O.C. Tel: +886 (0) 2 8797 1330 Fax: +886 (0) 2 8751 9737 E-mail (Sales) E-mail (Support) E-mail (General Enquiries) Web Site URL [email protected] [email protected] [email protected] http://www.ftdichip.com Branch Office – Hillsboro, Oregon, USA Future Technology Devices International Limited (USA) 7235 NW Evergreen Parkway, Suite 600 Hillsboro, OR 97123-5803 USA Tel: +1 (503) 547 0988 Fax: +1 (503) 547 0987 E-Mail (Sales) E-mail (Support) E-mail (General Enquiries) Web Site URL [email protected] [email protected] [email protected] http://www.ftdichip.com Branch Office – Shanghai, China Future Technology Devices International Limited (China) Room 408, 317 Xianxia Road, ChangNing District, ShangHai, China Tel: +86 (21) 62351596 Fax: +86(21) 62351595 E-mail (Sales) E-mail (Support) E-mail (General Enquiries) Web Site URL [email protected] [email protected] [email protected] http://www.ftdichip.com Copyright © 2011 Future Technology Devices International Limited 8 Document Reference No.: FT_000447 Determining USB Peripheral Device Class Application Note AN_174 Version 1.0 Clearance No.: FTDI# 211 Distributor and Sales Representatives Please visit the Sales Network page of the FTDI Web site for the contact details of our distributor(s) and sales representative(s) in your country. Legal Disclaimer: System and equipment manufacturers and designers are responsible to ensure that their systems, and any Future Technology Devices International Ltd (FTDI) devices incorporated in their systems, meet all applicable safety, regulatory and system-level performance requirements. All application-related information in this document (including application descriptions, suggested FTDI devices and other materials) is provided for reference only. While FTDI has taken care to assure it is accurate, this information is subject to customer confirmation, and FTDI disclaims all liability for system designs and for any applications assistance provided by FTDI. Use of FTDI devices in life support and/or safety applications is entirely at the user’s risk, and the user agrees to defend, indemnify and hold harmless FTDI from any and all damages, claims, suits or expense resulting from such use. This document is subject to change without notice. No freedom to use patents or other intellectual property rights is implied by the publication of this document. Neither the whole nor any part of the information contained in, or the product described in this document, may be adapted or reproduced in any material or electronic form without the prior written consent of the copyright holder. Future Technology Devices International Ltd, Unit 1, 2 Seaward Place, Centurion Business Park, Glasgow G41 1HH, United Kingdom. Scotland Registered Company Number: SC136640 Copyright © 2011 Future Technology Devices International Limited 9 Document Reference No.: FT_000447 Determining USB Peripheral Device Class Application Note AN_174 Version 1.0 Clearance No.: FTDI# 211 Appendix A – References A.1 Websites FTDI home page http://www.ftdichip.com/index.html Vinculum II Home page http://www.ftdichip.com/Products/ICs/VNC2.htm USB Implementers Forum Device Class List http://www.usb.org/developers/defined_class A.2 Technical Documentation What is USB? – Technical Note http://www.ftdichip.com/Support/Documents/TechnicalNotes/TN_110%20What%20is%20USB.pdf VNC2 tools getting started guide http://www.ftdichip.com/Support/Documents/AppNotes/AN_142_VinculumII_Tool_Chain_Getting_Started_Guide.pdf A.3 Utilities USBVIEW http://www.ftdichip.com/Support/Utilities/usbview.zip Copyright © 2011 Future Technology Devices International Limited 10 Document Reference No.: FT_000447 Determining USB Peripheral Device Class Application Note AN_174 Version 1.0 Clearance No.: FTDI# 211 Appendix B– Revision History Version 1.0 First Release 2011-05-23 Copyright © 2011 Future Technology Devices International Limited 11