我将我的虚拟机作为 GPU 直通启动,它几乎完美地工作,只是我在将 Xbox One 游戏手柄传递给它时遇到了麻烦。
我正在使用qemu-system-x86_64
,控制器的 lsusb 输出是
Bus 003 Device 022: ID 045e:02ea Microsoft Corp.
我的 USB 命令是
-usb -usb-host,vendorid=0x045e,productid=0x02ea
qemu窗口一直显示
libusb: error [udev_hotplug_event] ignoring udev action bind
qemu-system-x86_64: libusb_release_interface: -4 [NO_DEVICE]
qemu-system-x86_64: libusb_release_interface: -4 [NO_DEVICE]
qemu-system-x86_64: libusb_release_interface: -4 [NO_DEVICE]
libusb: error [_get_usbfs_fd] File doesn't exist, wait 10 ms and try again
libusb: error [_get_usbfs_fd] libusb couldn't open USB device
/dev/bus/usb/003/016: No such file or directory
在 Win10 VM 内部,我可以听到新 USB 设备连接时的通知,但随后我几乎立即听到设备断开时的通知。
有人知道如何解决这些错误吗?
更新:
我尝试指向总线 3、地址 22 的确切设备总线/地址,但这不起作用。我不确定为什么 libusb 的目标是一个不存在的设备文件,因为 lsusb 总线和设备编号都是以 10 为基数。
更新2:
有线 Xbox 360 控制器运行良好。仍然对 Xbox One 控制器感到困惑。 Xbox One 控制器是一款无线控制器,但它通过 USB 电缆连接到我的计算机。
答案1
我遇到了同样的错误,但我找到了一个对我有用的解决方案,如果我禁止使用驱动程序xpad
,modprobe.d
那么使用 Qemu 重新初始化就可以了。
这就是我所做的(在我的 Fedora 系统上,你的系统可能有所不同),我将这一行添加到文件中/etc/modprobe.d/vfio.conf
:
blacklist xpad
您可以在这里阅读有关此技术的更多信息:https://wiki.archlinux.org/index.php/Kernel_module#Blacklisting