我有一个HP绘图仪通过USB集线器连接到一个debian服务器的USB电缆。 在服务器上有一个虚拟化的Windows XP。 每次我重新启动绘图仪时,udev会将不同的设备编号分配给绘图仪,以便更改由Windows分配给绘图仪的虚拟打印机端口。
看来不可能强迫udev使用相同的devnum ,所以我应该强制libvirth通过一个固定的总线地址。
我目前在libvirt attach-device使用下面的代码:
<hostdev mode='subsystem' type='usb' managed='yes'> <source> <vendor id='0x0123'/> <product id='0x0456'/> </source> </hostdev>
我可以为udev编写一个规则来创build一个固定名称的设备。 如果以这种方式将设备从客户端看到的话,应该很好,因为它总是连接到同一个USB端口。 你知道这有可能吗?
编辑:
我正在努力遵循André的build议。 我不确定要为设备#8添加hostbus和hostport参数。
# 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>
但它没有工作。