USBDriverKit
Develop drivers for USB-based devices.
Overview
Use the USBDriverKit framework to develop drivers for custom or non-class-compliant USB devices for use with macOS. The objects in this framework serve as providers for your driver. Use them as is to access the device configurations, interfaces, and endpoints of the USB device. Each object provides methods for fetching any needed descriptors from the USB device, and for initiating requests to perform your driver’s custom behaviors.
Develop your driver by subclassing IOService in the DriverKit framework. On macOS, use the System Extensions framework to install and upgrade your driver. On iPadOS, the system automatically discovers and upgrades drivers along with their host apps.
Topics
Essentials
Samples
Providers
Endpoint Communication
USB Specifications
References
Macros
IOUSBHOST_PROPERTY_DEPRECATEDkUSBHostBillboardDevicePropertyAltModeFailedkUSBHostBillboardDevicePropertyAltModePowerFailedkUSBHostBillboardDevicePropertyCurrentModekUSBHostBillboardDevicePropertyModeValueDisplayPortkUSBHostBillboardDevicePropertyModeValueThunderboltkUSBHostBillboardDevicePropertyModeValueUSB4kUSBHostBillboardDevicePropertyPreferredModekUSBHostBillboardDevicePropertySupportedModeskUSBHostBillboardDevicePropertyVersionkUSBHostControllerPropertyProtocolRevisionkUSBHostDevicePropertyFunctionkUSBHostDevicePropertyIdlePolicykUSBHostDevicePropertyPowerSinkAllocationkUSBHostDevicePropertyUSB3PreferredkUSBHostDevicePropertyUSB3RequiredkUSBHostPortPropertyIOPortServicePathkUSBHostPortPropertyProtocolCompanionRevision1kUSBHostPortPropertyProtocolCompanionRevision2kUSBHostPortPropertyProtocolCompanionRevision3kUSBHostPortPropertyProtocolRevision1kUSBHostPortPropertyProtocolRevision2kUSBHostPortPropertyProtocolRevision3kUSBHostPortPropertyProtocolRevision4kUSBHostPortPropertyTransportStatekUSBHostPortPropertyUSB2ExternalRemoteWakekUSBHostPortPropertyUSB2RepeaterkUSBHostPropertyLinkSpeed
Enumeration Cases
kIOUSBLinkSpeed10GbpskIOUSBLinkSpeed20GbpskIOUSBLinkSpeed40GbpskIOUSBLinkSpeed5GbpskIOUSBLinkSpeed80GbpskIOUSBLinkSpeedFullkIOUSBLinkSpeedHighkIOUSBLinkSpeedLow