如何通过 Xbox One 控制器传递到 Ubuntu 上的 Windows VM?

如何通过 Xbox One 控制器传递到 Ubuntu 上的 Windows VM?

我将我的虚拟机作为 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

我遇到了同样的错误,但我找到了一个对我有用的解决方案,如果我禁止使用驱动程序xpadmodprobe.d那么使用 Qemu 重新初始化就可以了。

这就是我所做的(在我的 Fedora 系统上,你的系统可能有所不同),我将这一行添加到文件中/etc/modprobe.d/vfio.conf

blacklist xpad

您可以在这里阅读有关此技术的更多信息:https://wiki.archlinux.org/index.php/Kernel_module#Blacklisting

相关内容