Timeout errors when trying to passthrough a USB keyboard
Date: Tue, 01 Jun 2021 10:28:04 UTC
Hello, We are working on the USB passthrough functionality for bhyve. We are currently focusing on the passthrough of a USB keyboard, as we ran into some issues with the USB stick. The first part of the enumeration process seems to work properly, as we can see the information about the USB keyboard inside the virtual machine through the 'usbconfig' command: (guest) $ usbconfig (guest) ugen0.2: <Chicony HP Elite USB Keyboard> at usbus0, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON (100mA) However, when pressing any key, we do not see any log in the guest or in the host. The keyboard seems to be turned off (any LED from the keyboard is turned off during the booting of the guest). We use libusb_detach_kernel_driver function from libusb library to detach the device from the host [1]. Here [2] it is a snippet from /var/log/messages file from the guest virtual machine. We noticed a timeout in the communication (lines 46, 47 in the log file [2]): xhci_timeout: xfer=0xfffff800052a4148 usbd_transfer_done: err=USB_ERR_TIMEOUT Could you help us understand where these timeout errors are coming from? Do you think it is necessary to implement first the Boot Protocol for the USB HID [3]? In this case, can you provide us some documentation that could help us? Thank you! [1] https://github.com/FreeBSD-UPB/freebsd-src/blob/a861e57e10512c0e3406762ffba2249bbd786492/usr.sbin/bhyve/usb_pmapper.c#L601 [2] https://gist.github.com/nainapatrascu/6903e421d64190f616c7becfe6c84991 [3] https://wiki.osdev.org/USB_Human_Interface_Devices