У меня есть плоттер HP, подключенный кабелем USB к серверу debian через концентратор USB. На сервере стоит виртуализированная 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-порту. Вы знаете, возможно ли это?
Редактировать:
Я пытаюсь последовать совету Андре. Я не уверен, что добавить в параметры hostbus и hostport для устройства №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>
Но это не сработало.