LINUX.ORG.RU
ФорумAdmin

Как пробросить USB порт в libvirt

 , , ,


0

2

Хочу пробросить порт полностью, т.к. телефон в разных режимах меняет свои VENDOR и PRODUCT (для прошивки под оффтопиком нужно).

Имеем:

# lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
    |__ Port 3: Dev 102, If 0, Class=Vendor Specific Class, Driver=, 480M
    |__ Port 3: Dev 102, If 1, Class=Mass Storage, Driver=usb-storage, 480M
    |__ Port 3: Dev 102, If 2, Class=Vendor Specific Class, Driver=usbfs, 480M
    |__ Port 8: Dev 14, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 9: Dev 16, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 9: Dev 16, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 11: Dev 4, If 0, Class=Wireless, Driver=, 12M
    |__ Port 11: Dev 4, If 1, Class=Wireless, Driver=, 12M
Bus 01, Port 1.3 (Dev 102) это то, что нам нужно пробросить. Пробрасываю вот так:
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
      </source>
      <address type='usb' bus='1' port='1.3'/>
    </hostdev>
    <hub type='usb'>
      <address type='usb' bus='1' port='1'/>
    </hub>

При попытке запустить такую машину выдает:

Ошибка запуска : внутренняя ошибка: Процесс завершился при подключении к монитору: 2015-09-30T12:49:52.629705Z qemu-system-x86_64: -device usb-hub,id=hub0,bus=usb1.0,port=1: Bus 'usb1.0' not found

Что самое интересное, если я заменю bus на bus='0', то все запустится без ошибок. Правда мне кажется пробрасывается какое то совсем не то устройство, которое я хочу.

Зачем libvirt добавляет .0 к номеру bus - непонятно.

Как исправить?

Проброс по pid/vid чем-то принципиально не устраивает? Что-то типа такого:

    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x04da'/>
        <product id='0x1680'/>
      </source>
    </hostdev>

BOOBLIK ★★ ()
Ответ на: комментарий от BOOBLIK

Хочу пробросить порт полностью, т.к. телефон в разных режимах меняет свои VENDOR и PRODUCT (для прошивки под оффтопиком нужно).

i_gnatenko_brain ★★★★ ()

libvrt — вечно проблемная, переусложненная дичь для десктопщиков и java-программистов.

Запускай напрямую:

     -device nec-usb-xhci,id=usb,bus=pci.0,addr=0x1.0x2 \
     -device usb-host,hostbus=1,hostport=1 \
     -device usb-host,hostbus=1,hostport=2 \

kep ()
Ответ на: комментарий от BOOBLIK

Проброс по pid/vid чем-то принципиально не устраивает?

Написал же в вопросе - тем что устройство (телефон) несколько раз меняет vendor и product в течении процесса который нужно выполнить.

rafaelrs ()
Ответ на: комментарий от Deleted

Vt-d или iommu процессор и мать умеет?

почему «или»? Для iommu требуется VT-d насколько я знаю.

VT-d в процессоре к сожалению нет (i7-4710MQ)

rafaelrs ()
Ответ на: комментарий от rafaelrs

Или потому что зависит intel или amd.

С поддержкой vt-d можно было бы прокинуть pci-express, на которой висит usb.

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.