强制 libvirt 在 USB 设备重新连接时始终向客户机传递相同的设备号

强制 libvirt 在 USB 设备重新连接时始终向客户机传递相同的设备号

我有一台 HP 绘图仪,通过 USB 电缆通过 USB 集线器连接到 Debian 服务器。服务器上有一个虚拟化的 Windows XP。每次我重新启动绘图仪时,udev 都会为绘图仪分配一个不同的设备编号,这会改变 Windows 为绘图仪分配的虚拟打印机端口。

似乎无法强制 udev 使用相同的设备号,所以我应该强制 libvirth 传递一个固定的总线地址。

我目前正在使用以下代码libvirt attach-device

<hostdev mode='subsystem' type='usb' managed='yes'>
   <source>
      <vendor id='0x0123'/>
      <product id='0x0456'/>
   </source>
</hostdev>

我可以为 udev 编写一条规则来创建具有固定名称的设备。如果以这种方式,从客户机上可以看到设备始终连接到同一个 USB 端口,那就太好了。你知道这是否可行吗?

编辑:

我正在尝试遵循 André 的建议。我不确定在设备 #8 的主机总线和主机端口参数上应该填什么。

# lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
        |__ Port 2: Dev 3, If 0, Class=HID, Driver=usbfs, 1.5M
        |__ Port 3: Dev 4, If 0, Class=hub, Driver=hub/4p, 480M
            |__ Port 1: Dev 8, If 0, Class=print, Driver=usbfs, 12M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M

这是我的第一次尝试:

<qemu:commandline>
 <qemu:arg value='-device'/>
 <qemu:arg value='ich9-usb-ehci1,id=passthroughehci'/>

 <qemu:arg value='-device'/>
 <qemu:arg value='usb-host,hostbus=002,hostport=001,bus=passthroughehci.0'/>
</qemu:commandline>

但它没有起作用。

相关内容