Qemu/LibVirt 中具有相同供应商 ID 和设备 ID 的多个设备

Qemu/LibVirt 中具有相同供应商 ID 和设备 ID 的多个设备

我有 3 个调制解调器,它们具有相同的Vendor IDProduct ID(12d1:1001)。我需要设置一个 USB 设备转发到客户系统 (Ubuntu)。

这是我虚拟机配置中的内容:

<hostdev mode='subsystem' type='usb' managed='no'>
    <source>
        <vendor id='0x12d1'/>
        <product id='0x1001'/>
        <address bus='1' device='13'/>
    </source>
</hostdev>
<hostdev mode='subsystem' type='usb' managed='no'>
   <source>
       <vendor id='0x12d1'/>
       <product id='0x1001'/>
       <address bus='1' device='14'/>
   </source>
</hostdev>
<hostdev mode='subsystem' type='usb' managed='no'>
   <source>
      <vendor id='0x12d1'/>
      <product id='0x1001'/>
      <address bus='1' device='15'/>
   </source>
</hostdev>

它可以正常工作,直到系统因设备 ID(即Device 013part)更改而重新启动。我的问题是如何将这些设备绑定到不使用Device IDpart 的虚拟机?这是我的lsusb

root@host:~# lsusb
Bus 001 Device 006: ID 046b:ff10 American Megatrends, Inc. Virtual Keyboard and Mouse
Bus 001 Device 004: ID 046b:ff01 American Megatrends, Inc. 
Bus 001 Device 014: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem
Bus 001 Device 015: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem
Bus 001 Device 013: ID 12d1:1001 Huawei Technologies Co., Ltd. E169/E620/E800 HSDPA Modem
Bus 001 Device 012: ID 050d:0237 Belkin Components F5U237 USB 2.0 7-Port Hub
Bus 001 Device 011: ID 050d:0237 Belkin Components F5U237 USB 2.0 7-Port Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 04d9:1400 Holtek Semiconductor, Inc. PS/2 keyboard + mouse controller
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

非常感谢您的回答!

答案1

Qemu 本身支持通过物理端口直通设备。您可以找出前面板上的第二个端口具有哪个地址,并告诉 qemu 转发每个设备,而无需将驱动程序接触到虚拟机。但到目前为止,libvirt 还不支持此功能。它也不支持作为 virsh 的 qemu-consol 命令。

另一种可能性是将 PCI 卡传递到设备所连接的虚拟机。因此,将两张 PCI 卡传输到机器上会有所不同。大多数情况下,不可能转移主板上安装的 USB 设备的控制权。它们与主机系统的其他必需设备一起位于一个 PCI 组中。只有同一组的设备才能一起传输。

相关内容