USB Passthrough 不适用于 virt-manager (Qemu) 上的触摸屏设备

时间:2021-07-10 17:30:43

标签: usb virtual-machine qemu

我在带有 VM 的 TD2421 触摸显示器上使用触摸屏 USB 设备时遇到了困难。主机操作系统为 CentOS7。我有适用于显卡和 USB 键盘的 pcie passthrough。但是,出于某种原因,用于触摸屏的 USB 设备没有传递到客户操作系统。来宾操作系统也是 CentOS7。

我尝试了很多东西。该设备甚至没有出现在来宾操作系统的 lsusb 中。我知道它配置正确,因为如果触摸屏没有打开,我会收到一个错误,该设备在主机操作系统上不可用,并且我能够通过 USB 闪存驱动器,例如,使用相同的方法并且它可以工作正确。

我什至尝试过将 Windows 7 作为来宾操作系统;一切正常,所以我不相信这可能是主机操作系统没有通过设备的问题,我相信这与来宾操作系统不接受或接收它有关。我能在 /var/log/messages 中找到的似乎有点相关的唯一信息是关于“不是 MTP 设备”的消息,但我不知道这是否与我的问题有关。

有人知道我接下来可以尝试什么吗?我知道触摸屏在屏幕进入睡眠状态时断开 USB 总线的常见行为;我确保屏幕通过视频信号保持唤醒状态,因此这不是问题所在。 Windows 作为客户操作系统看到设备这一事实让我觉得我在 Linux 客户操作系统配置中遗漏了一些东西(也许很简单?),但我无法想象是什么。

有人知道吗?也许有一些我不知道的诊断日志文件或实用程序会告诉我出了什么问题以及为什么来宾操作系统看不到 USB 设备?我已经从 virt-manager GUI 和 XML 文件中对其进行了配置(使用 virsh edit,因为我知道直接编辑 XML 文件是不正确的并且没有效果),但没有运气。

更多信息: /var/log/libvirt/qemu 中的一般日志文件指出: libusb:错误 [_open_sysfs_attr] 打开 /sys/bus/usb/devices/5-1.3/bConfigurationValue 失败 ret=-1 errno=2

我发现了一个可能相关的错误报告 - Redhat 错误 #980415 (https://bugzilla.redhat.com/show_bug.cgi?id=980415)

似乎与USB3设备有关,但是,我测试并可以成功通过的USB闪存驱动器是USB3.0闪存驱动器,因此不确定这是否不符合我的情况的潜在适用性.我正在使用所有 USB2 电缆,并且此设备在传递到 Windows 7 来宾操作系统 VM 时也能正常工作。

经过更多研究后,我开始相信这是 USB 重置循环导致的。我确实注意到在启动 VM 时,我看到触摸屏设备从 lsusb 列表中消失并重新出现了几次。这支持以下描述的情况:

https://patchwork.kernel.org/project/qemu-devel/patch/1545122819-29687-1-git-send-email-agk@godking.net/

是什么导致了我的问题。显然,我可以在名为“no_guest_reset”的 XML VM 配置文件中添加一个开关,以防止发生此循环。我找不到任何示例或文档来说明在 XML 文件中的何处添加此内容,如果有人知道或有其他想法或想法,请告诉我。


另一个更新;我能够通过使用以下内容创建单独的 XML 文件来附加设备:

<hostdev mode='subsystem' type='usb' managed='yes'>
  <source startupPolicy='optional'>
    <vendor id='0x0fb8'/>
    <product id='0x1109'/>
  </source>
</hostdev>

然后在虚拟机启动后从主机系统运行命令“virsh attach-device centos7 --file ./tscreen.xml”。执行此操作后,现在可以按预期在 lsusb 中看到该设备。

所以这似乎证明问题一定是某种错误,不确定它是否存在于 kvm、qemu、libusb 或其他东西中。如果有人知道更优雅的解决方法或解决方案,请告诉我。我无法应用上面提到的 no_guest_reset 参数,我相信我的 qemu-kvm 版本不包含对此的支持,因为我在运行 CentOS7 后在 qemu-kvm v2.12-44 中排名第一。< /p>

0 个答案:

没有答案
相关问题