---
name: "xhci"
section: "4"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd", "openbsd"]
url: "https://new.carta.tech/xhci"
---

# xhci(4)

USB eXtensible Host Controller driver

## NAME

**xhci** – USB eXtensible Host Controller driver

## SYNOPSIS

**options USB\_DEBUG** **device xhci**

## DESCRIPTION

The **xhci** driver provides support for the USB eXtensible Host Controller Interface, which allows use of USB 1.0, 2.0 and 3.0 devices on the same USB port.

The XHCI controller supports USB connection speeds from 5.0Gbps and above when using USB 3.x compliant devices.

## HARDWARE

The **xhci** driver supports XHCI compatible controllers having PCI class 12 (serial bus), subclass 3 (USB) and programming interface 48 (XHCI).

## SYSCTL VARIABLES

The following variables are available as both [sysctl(8)](/sysctl/8.md) variables and [loader(8)](/loader/8.md) tunables:

- *hw.usb.xhci.debug*

  Set debug output level, where 0 is debugging disabled and larger values increase debug message verbosity. The default value is 0.

- *hw.usb.xhci.dcepquirk*

  Set to enable quirk for deconfiguration of endpoints. The default value is 0.

- *hw.usb.xhci.ctlquirk*

  Set to submit full USB control request as one job, up to 64kBytes. Else the USB control request will be split into multiple smaller requests. The default value is 1.

- *hw.usb.xhci.streams*

  Set to enable USB streams support. The default value is 0.

- *hw.usb.xhci.route*

  Set bitmap for switching EHCI ports to the XHCI controller. The default value is 0.

- *hw.usb.xhci.polling*

  Set to use a timer to poll the interrupt handler. The default value is 0.

- *hw.usb.xhci.dma32*

  Set to only use 32-bit DMA for the XHCI controller. The default value is 0.

- *hw.usb.xhci.ctlstep*

  Set to enable control endpoint status state stepping. The default value is 0.

## SEE ALSO

[ehci(4)](/ehci/4.md), [ohci(4)](/ohci/4.md), [uhci(4)](/uhci/4.md) and [usb(4)](/usb/4.md)

## HISTORY

The **xhci** device driver first appeared in FreeBSD 8.2.
