<!--
{
  "availability" : [
    "macCatalyst: 14.0 -",
    "macOS: 10.15 -"
  ],
  "documentType" : "symbol",
  "framework" : "IOUSBHost",
  "identifier" : "/documentation/IOUSBHost",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "IOUSBHost"
    ],
    "preciseIdentifier" : "IOUSBHost"
  },
  "title" : "IOUSBHost"
}
-->

# IOUSBHost

Create host-mode user space drivers for USB devices.

## Overview

With the [`IOUSBHost`](/documentation/IOUSBHost) framework, you can access custom and non–class-compliant USB devices from within your apps. Use this framework to connect to cameras, audio devices, scanners, printers, keyboards, mouse devices, MIDI keyboards, and USB hubs.

This framework refers to the USB Implementers Forum (USB-IF) *Universal Serial Bus 3.2 Specification*, Revision 1.0, September 22, 2017. You can view this specification at <http://www.usb.org/>.

## Topics

### Function Drivers

[`IOUSBHostInterface`](/documentation/IOUSBHost/IOUSBHostInterface)

The class for accessing USB-related services.

[`IOUSBHostPipe`](/documentation/IOUSBHost/IOUSBHostPipe)

The class that sends control, bulk, interrupt, and isochronous input/output requests for function drivers, and manages stream capabilities.

[`IOUSBHostStream`](/documentation/IOUSBHost/IOUSBHostStream)

The class responsible for sending stream data for function drivers.

### Device Drivers

[`IOUSBHostDevice`](/documentation/IOUSBHost/IOUSBHostDevice)

The class that claims and configures devices, retrieves descriptors, and sends device requests.

### Base Classes

[`IOUSBHostObject`](/documentation/IOUSBHost/IOUSBHostObject)

This class provides basic functionality for sending device requests and retrieving descriptors.

[`IOUSBHostIOSource`](/documentation/IOUSBHost/IOUSBHostIOSource)

This class provides basic functionality for deriving pipe and stream classes.

### IOServicePlane Properties

Properties on the device and interface classes in the service plane.

[`IOUSBHostInterfacePropertyKey`](/documentation/IOUSBHost/IOUSBHostInterfacePropertyKey)

Properties of a USB interface that describe its state.

[`IOUSBHostDevicePropertyKey`](/documentation/IOUSBHost/IOUSBHostDevicePropertyKey)

Properties of a USB device that describe its state.

[`IOUSBHostMatchingPropertyKey`](/documentation/IOUSBHost/IOUSBHostMatchingPropertyKey)

Properties for implementing the matching service.

[`IOUSBHostPropertyKey`](/documentation/IOUSBHost/IOUSBHostPropertyKey)

Properties that the USB host device and interface classes share.

### Version Number

[`IOUSBHostVersionNumber`](/documentation/IOUSBHost/IOUSBHostVersionNumber)

The version number of the framework.

[`IOUSBHostVersionString`](/documentation/IOUSBHost/IOUSBHostVersionString)

A string representation of the framework’s version number.

### Error Domain

[`IOUSBHostErrorDomain`](/documentation/IOUSBHost/IOUSBHostErrorDomain)

The error domain for the framework.

### Classes

[`IOUSBHostCIControllerStateMachine`](/documentation/IOUSBHost/IOUSBHostCIControllerStateMachine)

[`IOUSBHostCIDeviceStateMachine`](/documentation/IOUSBHost/IOUSBHostCIDeviceStateMachine)

[`IOUSBHostCIEndpointStateMachine`](/documentation/IOUSBHost/IOUSBHostCIEndpointStateMachine)

[`IOUSBHostCIPortStateMachine`](/documentation/IOUSBHost/IOUSBHostCIPortStateMachine)

[`IOUSBHostControllerInterface`](/documentation/IOUSBHost/IOUSBHostControllerInterface)

### Reference

[IOUSBHost Structures](/documentation/IOUSBHost/iousbhost-structures)

[IOUSBHost Enumerations](/documentation/IOUSBHost/iousbhost-enumerations)

[IOUSBHost Constants](/documentation/IOUSBHost/iousbhost-constants)

[IOUSBHost Functions](/documentation/IOUSBHost/iousbhost-functions)

[IOUSBHost Data Types](/documentation/IOUSBHost/iousbhost-data-types)



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)