Develop drivers for USB-based devices.


Use the USBDriverKit framework to develop drivers for custom or non-class compliant USB devices for use with macOS. USBDriverKit provides C++ classes you can use to attach and configure your device, and create USB message and stream pipes to exchange data. USBDriverKit devices work with the core types defined in the DriverKit framework.

Develop your driver with DriverKit and USBDriverKit, and package it in an app that uses the SystemExtensions framework to install and upgrade the driver on the user’s Mac.



An array of dictionaries identifying the USB devices supported by the driver.

USB Interface


A DriverKit service that you use to communicate with a USB interface running on a connected device.


An object you use to communicate with USB endpoints.



A DriverKit service that you use to communicate directly with a USB device.

USB Specifications

USB Device Descriptors

Determine the capabilities and configuration of a device using descriptors from the USB specification.

Additional Specifications

Request information from a device and get hardware and timing information.

Registry Property Names

Search for specific keys in the device registry.


Manipulate bit structures and convert integers between device- and platform-native formats.