example

Example of the component espp/usb_host v1.3.2
# USB Host Example

This example uses `espp::UsbHost` to drive the ESP32-S3 USB-OTG peripheral as a
**USB host**. It enumerates attached USB **HID** devices (mice, keyboards,
gamepads, or vendor HID devices such as an espp `WdiUsbPeripheral`), logs each
connected device's identity and report-descriptor length, and hex-dumps every
Input report the device sends.

## How it works

- Constructs an `espp::UsbHost` with `on_device_connected` /
  `on_device_disconnected` callbacks.
- On connect, reads the device `info()` (VID/PID + strings) and `params()`
  (interface / protocol), fetches the HID `report_descriptor()`, and installs a
  per-device input callback that logs each report.
- `initialize()` installs the USB Host library + HID class driver and starts the
  event tasks; the device callbacks then fire as devices are plugged / unplugged.

## Hardware / build notes

- USB-OTG **host** mode requires an **ESP32-S2 / -S3 / -P4**, and the board must
  be able to source **VBUS** to the attached device (a board with a USB-A host
  port / VBUS switch, or a self-powered hub).
- The native USB-OTG port is used for the host role, so the console runs on
  **UART0** (USB-Serial-JTAG shares the PHY on the ESP32-S3). Monitor over a UART
  adapter.
- The USB Host library (`usb`) and `usb_host_hid` come from the ESP Component
  Registry, so build this example with the **component manager enabled** (the
  default `idf.py build`), not the manager-off flow used by the device-side USB
  examples.

## Use it with the WDI USB device

Flash the `wdi` component's `usb_example` onto a second ESP32-S3 (it enumerates
as a WDI HID device) and connect it to the host running this example — you will
see the WDI Control / keepalive Input reports arrive in the log. This is the
basis for the forthcoming WDI **host** (wheelchair) role.

## Build and flash

```
idf.py set-target esp32s3
idf.py build
idf.py -p PORT flash monitor
```

To create a project from this example, run:

idf.py create-project-from-example "espp/usb_host=1.3.2:example"

or download archive (~3.51 KB)