Назад | Перейти на главную страницу

Заставить libvirt всегда передавать один и тот же номер устройства гостю при повторном подключении USB-устройства

У меня есть плоттер 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>

Но это не сработало.