Eu tenho uma plotadora HP conectada com um cabo USB a um servidor Debian através de um hub USB. No servidor, há um Windows XP virtualizado. Toda vez que eu reinicializo o plotter, um número de dispositivo diferente é atribuído pelo udev ao plotter, o que tem o efeito de alterar a porta da impressora virtual atribuída ao plotter pelo Windows.
Parece que não é possível forçar o udev a usar o mesmo devnum , então eu deveria forçar o libvirth a passar um endereço de barramento fixo.
Atualmente, estou usando o seguinte código com libvirt attach-device
:
<hostdev mode='subsystem' type='usb' managed='yes'>
<source>
<vendor id='0x0123'/>
<product id='0x0456'/>
</source>
</hostdev>
Eu posso escrever uma regra para o udev criar um dispositivo com um nome fixo. Deve ser ótimo se, desse modo, o dispositivo puder ser visto do convidado, como sempre conectado à mesma porta USB. Você sabe se é possível?
Editar:
Estou tentando seguir a sugestão de André. Não tenho certeza do que colocar nos parâmetros hostbus e hostport para o dispositivo # 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
Esta foi minha primeira tentativa:
<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>
Mas não funcionou.