Home
%3CLINGO-SUB%20id%3D%22lingo-sub-270876%22%20slang%3D%22en-US%22%3EDo%20I%20need%20to%20write%20a%20driver%20for%20my%20USB%20Type-C%20hardware%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-270876%22%20slang%3D%22en-US%22%3E%3CP%3E%3CSTRONG%3EFirst%20published%20on%20MSDN%20on%20Jun%2020%2C%202016%20%3C%2FSTRONG%3E%20%3CBR%20%2F%3E%20Authored%20by%20Michelle%20Bergeron%20%5BMSFT%5D%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%20Windows%2010%20introduced%20support%20for%20the%20USB%20Type-C%20connector.%20With%20many%20USB%20Type-C%20systems%20and%20devices%20hitting%20the%20market%2C%20the%20USB%20team%20is%20frequently%20asked%3A%20%22If%20I'm%20building%20a%20USB%20peripheral%20device%20or%20system%20with%20a%20Type-C%20connector%2C%20do%20I%20need%20to%20write%20a%20custom%20driver%20for%20it%20to%20work%20on%20Windows%3F%22%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%20The%20answer%20depends%20on%20the%20type%20of%20product%20you%20are%20building.%3C%2FP%3E%0A%3CH3%20id%3D%22toc-hId-1512030105%22%20id%3D%22toc-hId-1535840618%22%3EUSB%20Type-C%20peripherals%20without%20alternate%20modes%3C%2FH3%3E%0A%3CP%3E%3CBR%20%2F%3E%20USB%20Type-C%20supports%20alternate%20modes%2C%20which%20allow%20different%20protocols%20other%20than%20USB%20to%20be%20carried%20out%20over%20the%20Type-C%20connector.%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%20If%20you're%20building%20a%20Type-C%20peripheral%20device%20that%20does%20not%20use%20alternate%20modes%2C%20you%20do%20not%20need%20to%20write%20a%20new%20USB%20client%20driver%20as%20long%20as%20you%20can%20use%20one%20of%20the%20inbox%20USB%20device%20class%20drivers%20from%20Microsoft.%20From%20Windows'%20standpoint%2C%20your%20device%20looks%20no%20different%20from%20a%20legacy%20USB%20device%20without%20a%20USB%20Type-C%20connector.%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%20Microsoft%20provides%20inbox%20drivers%20for%20several%20classes%20of%20USB%20devices.%20If%20your%20product%20is%20one%20of%20these%20device%20classes%2C%20you%20will%20not%20need%20to%20write%20a%20USB%20client%20driver%20because%20Windows'%20existing%20USB%20device%20class%20driver%20will%20be%20able%20to%20automatically%20work%20with%20your%20Type-C%20peripheral.%20Review%20the%20%3CA%20href%3D%22https%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fwindows%2Fhardware%2Fff538820(v%3Dvs.85).aspx%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3E%20list%20of%20USB%20device%20class%20drivers%20included%20in%20Windows%20%3C%2FA%3E%20to%20check%20if%20you%20can%20take%20advantage%20of%20one%20of%20these%20drivers%20for%20your%20product.%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%20You%20will%20need%20to%20write%20a%20custom%20driver%20only%20if%20you%20are%20unable%20to%20use%20one%20of%20Windows'%20built-in%20device%20class%20drivers.%20If%20you%20have%20determined%20that%20you%20must%20write%20a%20new%20client%20driver%20for%20your%20USB%20device%2C%20start%20at%20%3CA%20href%3D%22https%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fwindows%2Fhardware%2Fhh406260(v%3Dvs.85).aspx%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3E%20Developing%20Windows%20client%20drivers%20for%20USB%20devices%20%3C%2FA%3E%20.%3C%2FP%3E%0A%3CH3%20id%3D%22toc-hId--1040126856%22%20id%3D%22toc-hId--1016316343%22%3EUSB%20Type-C%20peripherals%20with%20alternate%20modes%3C%2FH3%3E%0A%3CP%3E%3CBR%20%2F%3E%20If%20you%20are%20bringing%20up%20a%20peripheral%20which%20can%20operate%20in%20an%20alternate%20mode%2C%20you%20do%20not%20need%20to%20take%20any%20extra%20steps%20in%20your%20USB%20driver%20to%20make%20it%20work%20with%20a%20Windows%20system%20that%20supports%20the%20alternate%20mode.%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%20However%2C%20the%20peripheral's%20alternate%20mode%20will%20only%20work%20if%20the%20system%20to%20which%20it%20is%20attached%20has%20the%20hardware%20capabilities%20for%20the%20specific%20alternate%20mode.%20Since%20hardware%20capabilities%20vary%20widely%20between%20systems%2C%20do%20not%20take%20any%20dependencies%20on%20a%20system%20supporting%20your%20alternate%20mode.%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%20When%20your%20alternate%20mode%20device%20is%20connected%20to%20a%20system%20which%20does%20not%20support%20the%20alternate%20mode%2C%20you%20should%20provide%20a%20backup%20experience%20over%20USB.%26nbsp%3B%20For%20example%2C%20if%20you%20are%20building%20a%20Type-C%20flash%20drive%20that%20uses%20Thunderbolt%20alternate%20mode%2C%20you%20will%20need%20to%20use%20the%20%3CA%20href%3D%22https%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fwindows%2Fhardware%2Fdn653578(v%3Dvs.85).aspx%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3E%20USB%20mass%20storage%20device%20class%20%3C%2FA%3E%20for%20the%20case%20that%20Thunderbolt%20is%20not%20present%20on%20the%20connected%20PC.%20%3CBR%20%2F%3E%20%3CBR%20%2F%3E%20Also%2C%20you%20must%20correctly%20implement%20the%20Billboard%20specification%20in%20your%20device%20so%20it%20can%20notify%20the%20system%20if%20an%20alternate%20mode%20was%20not%20successfully%20entered.%20The%20%3CA%20href%3D%22http%3A%2F%2Fwww.usb.org%2Fdevelopers%2Fdocs%2Fdevclass_docs%2F%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%20Billboard%20Device%20Class%20specification%20%3C%2FA%3E%20is%20available%20from%20the%20USB-IF.%3C%2FP%3E%0A%3CH3%20id%3D%22toc-hId-702683479%22%20id%3D%22toc-hId-726493992%22%3EUSB%20Type-C%20systems%3C%2FH3%3E%0A%3CP%3E%3CBR%20%2F%3E%20If%20you%20are%20building%20a%20system%20that%20features%20a%20USB%20Type-C%20connector%2C%20there%20will%20likely%20be%20driver%20or%20firmware%20work%20required%20to%20bring%20up%20your%20system%20in%20Windows.%20Please%20refer%20to%20the%20MSDN%20documentation%20on%20this%20subject.%20Start%20at%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fwindows-hardware%2Fdrivers%2Fusbcon%2Foem-tasks-for-bringing-up-a-usb-typec%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3E%20Windows%20support%20for%20USB%20Type-C%20connectors%20%3C%2FA%3E%20to%20learn%20more%20about%20USB%20Type-C%20connectors%20on%20Windows%20and%20to%20determine%20the%20steps%20that%20you%20will%20need%20to%20take%20to%20bring%20up%20your%20USB%20Type-C%20system%20and%20develop%20a%20driver%20for%20it.%3C%2FP%3E%0A%3CH3%20id%3D%22toc-hId--1849473482%22%20id%3D%22toc-hId--1825662969%22%3EFurther%20reading%3C%2FH3%3E%0A%3CP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%0A%3CUL%3E%0A%3CUL%3E%0A%3CLI%3E%3CA%20href%3D%22http%3A%2F%2Fwww.usb.org%2Fdevelopers%2Fdocs%2F%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%20noopener%20noreferrer%22%3E%20USB%20Specifications%20%3C%2FA%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%3E%0A%3CUL%3E%0A%3CLI%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fwindows-hardware%2Fdrivers%2Fusbcon%2Fbuilding-usb-devices-for-windows%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3E%20Building%20USB%20devices%20for%20Windows%20%3C%2FA%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CUL%3E%0A%3CUL%3E%0A%3CLI%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fwindows-hardware%2Fdrivers%2Fusbcon%2Fusb-driver-testing-guide%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3E%20Testing%20USB%20hardware%2C%20drivers%2C%20and%20apps%20in%20Windows%20%3C%2FA%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3C%2FUL%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-270876%22%20slang%3D%22en-US%22%3E%3CP%3EFirst%20published%20on%20MSDN%20on%20Jun%2020%2C%202016%20Authored%20by%20Michelle%20Bergeron%20%5BMSFT%5DWindows%2010%20introduced%20support%20for%20the%20USB%20Type-C%20connector.%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-270876%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3Eusb%20type%20c%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3Ewindows%2010%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Microsoft

First published on MSDN on Jun 20, 2016
Authored by Michelle Bergeron [MSFT]

Windows 10 introduced support for the USB Type-C connector. With many USB Type-C systems and devices hitting the market, the USB team is frequently asked: "If I'm building a USB peripheral device or system with a Type-C connector, do I need to write a custom driver for it to work on Windows?"

The answer depends on the type of product you are building.

USB Type-C peripherals without alternate modes


USB Type-C supports alternate modes, which allow different protocols other than USB to be carried out over the Type-C connector.

If you're building a Type-C peripheral device that does not use alternate modes, you do not need to write a new USB client driver as long as you can use one of the inbox USB device class drivers from Microsoft. From Windows' standpoint, your device looks no different from a legacy USB device without a USB Type-C connector.

Microsoft provides inbox drivers for several classes of USB devices. If your product is one of these device classes, you will not need to write a USB client driver because Windows' existing USB device class driver will be able to automatically work with your Type-C peripheral. Review the list of USB device class drivers included in Windows to check if you can take advantage of one of these drivers for your product.

You will need to write a custom driver only if you are unable to use one of Windows' built-in device class drivers. If you have determined that you must write a new client driver for your USB device, start at Developing Windows client drivers for USB devices .

USB Type-C peripherals with alternate modes


If you are bringing up a peripheral which can operate in an alternate mode, you do not need to take any extra steps in your USB driver to make it work with a Windows system that supports the alternate mode.

However, the peripheral's alternate mode will only work if the system to which it is attached has the hardware capabilities for the specific alternate mode. Since hardware capabilities vary widely between systems, do not take any dependencies on a system supporting your alternate mode.

When your alternate mode device is connected to a system which does not support the alternate mode, you should provide a backup experience over USB.  For example, if you are building a Type-C flash drive that uses Thunderbolt alternate mode, you will need to use the USB mass storage device class for the case that Thunderbolt is not present on the connected PC.

Also, you must correctly implement the Billboard specification in your device so it can notify the system if an alternate mode was not successfully entered. The Billboard Device Class specification is available from the USB-IF.

USB Type-C systems


If you are building a system that features a USB Type-C connector, there will likely be driver or firmware work required to bring up your system in Windows. Please refer to the MSDN documentation on this subject. Start at Windows support for USB Type-C connectors to learn more about USB Type-C connectors on Windows and to determine the steps that you will need to take to bring up your USB Type-C system and develop a driver for it.

Further reading