Windows 8 and later versions have introduced built-in "WinUSB device" class driver.
WinUSB Device
https://msdn.microsoft.com/en-us/library/windows/hardware/hh450799(v=vs.85).aspx
The purpose of a WinUSB device is to enable Windows to load Winusb.sys as the device's function driver without a custom INF file. For a WinUSB device, you are not required to distribute INF files for your device, making the driver installation process simple for end users.
Here is "WinUSB Device" implementation on TivaWare usb_dev_bulk example.
- TivaWare_C_Series-2.1.2.111 with Keil v5.17
- Tested on EK-TM4C123GXL, EK-TM4C1294XL, DK-TM4C123G, DK-TM4C129X
- on Windows 8, 8.1, 10 (x86 and x64)
- also on Windows 7 (x86 and x64) with winusbcompat.inf/.cat (**1)
[revison2]
- The implementation of MS OS descs are moved into separated file, to make maintenance easy
To run this modification on your side,
- copy usb_dev_bulk example folder of your board at the same place (click, CTRL-C, CTRL-V) and rename the folder.
- move the files in the zip to the copied usb_dev_bulk folder
- integrate these files into the IDE project
usbdbulk_mod2.c
usbdenum_mod2.c
usbdMSdesc.c
To make the device "new" one for your PC, modify VID/PID of the device
usb_bulk_structs.c tUSBDBulkDevice g_sBulkDevice = { USB_VID_TI_1CBE, // <--- ex, 0xFF00 USB_PID_BULK, // <--- ex, 0x1234
- build and download to the board
- plug the board into Windows PC (8, 8.1 or 10)
A device installation gauge appears on the bottom bar of PC screen.
It takes 20-30 seconds to finish installation.
- On Device Manager, the board appears as Generic Bulk Device under Universal Serial Bus Device
- Optionally, you may run usb_bulk_example PC application (in \TivaWare_C_Series-2.1.2.111\tools folder) to make sure the board works.
Even on the new VID/PID, this PC app can catch the board, because the modified firmware returns right interface GUID to PC.
The outline of "WinUSB Device" implementation was discussed on this topic,
https://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/p/480438/1732536#1732536
I hope TI would integrate this feature into the next Tivaware version.
(**1) Actually, this mechanism has already existed since WinXP SP2, but in disabled state. Installing MS-genuine winusbcompat.inf/.cat to these Windows versions, it revives. Written in this post,
MS-official "WinUSB class" driver for XP, Vista and 7
http://www.microchip.com/forums/m790429.aspx
Tsuneo