Most of the USB classes supported by LUFA are also supported natively in most operating systems, without extra drivers being required. However, in some cases, a driver file is required in order for the device to enumerate and function correctly.
The table below lists the supported LUFA USB classes, and their associated native support on modern operating systems.
USB Class | Android | Windows | Linux | OS X |
---|---|---|---|---|
Android Open Accessory | 2.3.4+ | N/A | N/A | N/A |
Audio 1.0 | N/A | XP+ | 2.6.?+ | 10.?+ |
CDC-ACM | N/A | XP+ | 2.6.?+ | 10.?+ |
HID | 3.?+ | XP+ | 2.6.?+ | 10.?+ |
MIDI | N/A | XP+ | 2.6.?+ | 10.?+ |
Mass Storage | N/A | XP+ | 2.6.?+ | 10.?+ |
Printer | N/A | XP+ | 2.6.?+ | 10.?+ |
RNDIS | N/A | XP+ | 2.6.?+ | N/A |
Still Image | N/A | XP+ | 2.6.?+ | 10.?+ |
Windows uses INF driver files to associate a USB device of a specific class, VID/PID ID pair, Windows Compatibility ID or other characteristic to a kernel driver. In most cases these files are build into the operating system, and no special user action or driver files are required for a device using a standard USB class to enumerate. However, for some classes, a specific INF driver must be created and given to the operating system for the device to enumerate.
Those USB classes requiring a custom INF driver file in Windows are listed below, along with a basic INF template for each class.
This template is required for all CDC-ACM devices on Windows XP or newer.
; Windows LUFA CDC ACM Setup File ; Copyright (c) 2000 Microsoft Corporation [DefaultInstall] CopyINF="LUFA CDC-ACM.inf" [Version] Signature="$Windows NT$" Class=Ports ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} Provider=%MFGNAME% DriverVer=7/1/2012,10.0.0.0 [Manufacturer] %MFGNAME%=DeviceList, NTx86, NTamd64, NTia64 [SourceDisksNames] [SourceDisksFiles] [DestinationDirs] DefaultDestDir=12 [DriverInstall] Include=mdmcpq.inf CopyFiles=FakeModemCopyFileSection AddReg=DriverInstall.AddReg [DriverInstall.Services] Include=mdmcpq.inf AddService=usbser, 0x00000002, LowerFilter_Service_Inst [DriverInstall.AddReg] HKR,,EnumPropPages32,,"msports.dll,SerialPortPropPageProvider" ;------------------------------------------------------------------------------ ; Vendor and Product ID Definitions ;------------------------------------------------------------------------------ ; When developing your USB device, the VID and PID used in the PC side ; application program and the firmware on the microcontroller must match. ; Modify the below line to use your VID and PID. Use the format as shown below. ; Note: One INF file can be used for multiple devices with different VID and PIDs. ; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line. ;------------------------------------------------------------------------------ [DeviceList] %DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044 [DeviceList.NTx86] %DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044 [DeviceList.NTamd64] %DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044 [DeviceList.NTia64] %DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_2044 ;------------------------------------------------------------------------------ ; String Definitions ;------------------------------------------------------------------------------ ;Modify these strings to customize your device ;------------------------------------------------------------------------------ [Strings] MFGNAME="http://www.lufa-lib.org" DESCRIPTION="LUFA CDC-ACM Virtual Serial Port"
This template is required for all RNDIS devices on Windows XP or newer.
; Windows LUFA RNDIS Setup File ; Copyright (c) 2000 Microsoft Corporation [DefaultInstall] CopyINF="LUFA RNDIS.inf" [Version] Signature="$Windows NT$" Class=Net ClassGuid={4d36e972-e325-11ce-bfc1-08002be10318} Provider=%MFGNAME% DriverVer=7/1/2012,10.0.0.0 [Manufacturer] %MFGNAME%=DeviceList, NTx86, NTamd64, NTia64 [ControlFlags] ExcludeFromSelect=* [DriverInstall] Characteristics=0x84 ; NCF_PHYSICAL + NCF_HAS_UI BusType=15 include=netrndis.inf needs=Usb_Rndis.ndi AddReg=Rndis_AddReg_Vista [DriverInstall.Services] include=netrndis.inf needs=Usb_Rndis.ndi.Services ;------------------------------------------------------------------------------ ; Vendor and Product ID Definitions ;------------------------------------------------------------------------------ ; When developing your USB device, the VID and PID used in the PC side ; application program and the firmware on the microcontroller must match. ; Modify the below line to use your VID and PID. Use the format as shown below. ; Note: One INF file can be used for multiple devices with different VID and PIDs. ; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line. ;------------------------------------------------------------------------------ [DeviceList] %DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204C [DeviceList.NTx86] %DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204C [DeviceList.NTamd64] %DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204C [DeviceList.NTia64] %DESCRIPTION%=DriverInstall, USB\VID_03EB&PID_204C ;------------------------------------------------------------------------------ ; String Definitions ;------------------------------------------------------------------------------ ;Modify these strings to customize your device ;------------------------------------------------------------------------------ [Strings] MFGNAME="http://www.lufa-lib.org" DESCRIPTION="LUFA RNDIS USB Ethernet Adapter"