<!--
{
  "availability" : [
    "macCatalyst: 14.0.0 -",
    "macOS: 10.15.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "IOUSBHost",
  "identifier" : "/documentation/IOUSBHost/IOUSBHostDevice",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "IOUSBHost"
    ],
    "preciseIdentifier" : "c:objc(cs)IOUSBHostDevice"
  },
  "title" : "IOUSBHostDevice"
}
-->

# IOUSBHostDevice

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

```
class IOUSBHostDevice
```

## Overview

This class enables management of the device state, including sending control requests to the default endpoint 0, configuring the device, and resetting the device. The interest handler also allows monitoring of the device state. The client creates the class and initializes it with [`initWithIOService:options:queue:error:interestHandler:`](/documentation/IOUSBHost/IOUSBHostObject/initWithIOService:options:queue:error:interestHandler:).

> Note:
> To prevent other drivers from changing the state of your device, maintain an <doc://com.apple.documentation/documentation/kernel/iousbhostdevice> object until you no longer need control over the device.

## Topics

### Finding Devices

[`createMatchingDictionaryWithVendorID:productID:bcdDevice:deviceClass:deviceSubclass:deviceProtocol:speed:productIDArray:`](/documentation/IOUSBHost/IOUSBHostDevice/createMatchingDictionaryWithVendorID:productID:bcdDevice:deviceClass:deviceSubclass:deviceProtocol:speed:productIDArray:)

Creates a matching dictionary to find a USB device.

### Retrieving Device Descriptors

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

The currently selected configuration descriptor.

### Configuring the Device

[`configureWithValue:matchInterfaces:error:`](/documentation/IOUSBHost/IOUSBHostDevice/configureWithValue:matchInterfaces:error:)

Selects a new configuration for the device.

[`configureWithValue:error:`](/documentation/IOUSBHost/IOUSBHostDevice/configureWithValue:error:)

Selects a new configuration for the device and registers the interfaces for matching.

### Resetting the Device

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

Terminates the device and attempts to re-enumerate it.



---

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)