19.3 USB Device Driver

USB device drivers use services provided by EFI_USB_IO_PROTOCOL to produce one or more protocols that provide I/O abstractions of a USB device. USB device drivers must follow the UEFI Driver Model. As mentioned above, the USB device drivers do not manage hub devices because those hub devices are managed by the USB bus driver. The EDK II provides a number of USB Device Drivers in the MdeModulePkg for devices that are typically used to provide UEFI consoles and UEFI boot devices. The EDK II MdePkg also provides a library called UefiUsbLib that provides functions to simplify the implementations of USB device drivers using the USB I/O Protocol. Some of the USB Device Driver implementations provided in the EDK II are as follows:

  • USB Keyboard: MdeModulePkg/Bus/Usb/UsbKbDxe
  • USB Mouse: MdeModulePkg/Bus/Usb/UsbMouseDxe
  • USB Mouse: MdeModulePkg/Bus/Usb/UsbMouseAbsolutePointerDxe
  • USB Mass Storage: MdeModulePkg/Bus/Usb/UsbMassStorageDxe