Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
linux_faq:kvm_usb_hotplug [2019/02/11 09:13] – external edit 127.0.0.1linux_faq:kvm_usb_hotplug [2022/03/12 06:41] (current) – [Подключение всего USB-хоста к виртуалке] admin
Line 5: Line 5:
 Тут нас интересуют номер шины и номер устройства: **Bus 004 Device 024:** Тут нас интересуют номер шины и номер устройства: **Bus 004 Device 024:**
 На основании этих сведений создаем файлик *.xml: На основании этих сведений создаем файлик *.xml:
-    <hostdev mode='subsystem' type='usb' managed='yes'> +<code> 
-      <source> +<hostdev mode='subsystem' type='usb' managed='yes'> 
-        <address bus='4' device='24'/> +  <source> 
-      </source> +    <address bus='4' device='24'/> 
-    </hostdev>+  </source> 
 +</hostdev> 
 +</code> 
 +Также вместо положения на шине можно указывать **VendorID** и **DeviceID**: 
 +<code><hostdev mode='subsystem' type='usb'> 
 +  <source> 
 +    <vendor id='0x03f0'/> 
 +    <product id='0x4217'/> 
 +  </source> 
 +</hostdev></code> 
 Нули из номера шины и номера девайса нужно убрать. Нули из номера шины и номера девайса нужно убрать.
  
Line 23: Line 33:
   Device attached successfully   Device attached successfully
  
-Также вместо положения на шине можно указывать VendorID и DeviceID: +Ну и самое интересное - оформление правил **udev** для автоматического подключения устройств.
-<code><hostdev mode='subsystem' type='usb'> +
-  <source> +
-    <vendor id='0x03f0'/> +
-    <product id='0x4217'/> +
-  </source> +
-</hostdev></code> +
- +
-Ну и самое интересное - оформление правил udev для автоматического подключения устройств.+
 <code> <code>
 /etc/udev/rules.d/90-libvirt-usb.rules /etc/udev/rules.d/90-libvirt-usb.rules
Line 69: Line 71:
   sudo service apparmor restart   sudo service apparmor restart
   sudo service libvirtd restart   sudo service libvirtd restart
 +  
 +====== Подключение всего USB-хоста к виртуалке ======
 +Определяем на каком хосте работает USB-устройство:
 +  lsusb
 +  ...
 +  Bus 001 Device 002: ID 0e8d:20ff MediaTek Inc. Android
 +
 +Определяем номер устройства на шине PCI:
 +<code>
 +$ readlink /sys/bus/usb/devices/usb*
 +../../../devices/pci0000:00/0000:00:08.1/0000:03:00.3/usb1
 +../../../devices/pci0000:00/0000:00:08.1/0000:03:00.3/usb2
 +../../../devices/pci0000:00/0000:00:08.1/0000:03:00.4/usb3
 +../../../devices/pci0000:00/0000:00:08.1/0000:03:00.4/usb4
 +</code>
 +Кажется в моем случае это Bus 001 -> /devices/pci0000:00/0000:00:08.1/0000:03:00.3/usb1
 +
 +Смотрим какой модуль ядра рулит этим девайсом:
 +<code>
 +$ls /sys/bus/pci/drivers/*_hcd/
 +...
 +
 +/sys/bus/pci/drivers/xhci_hcd/:
 +0000:03:00.3  0000:03:00.4  bind  module  new_id  remove_id  uevent  unbind
 +</code>
 +Отключаем и подключаем к **vfio-pci** https://01.org/linuxgraphics/gfx-docs/drm/driver-api/vfio.html
 +
 +<code>
 +sudo su
 +modprobe vfio-pci
 +lspci -n -s 0000:03:00.3
 +...
 +03:00.3 0c03: 1022:1639
 +...
 +echo 0000:03:00.3 > /sys/bus/pci/devices/0000:03:00.3/driver/unbind
 +
 +lspci -n -s 0000:03:00.3
 +...
 +03:00.3 0c03: 1022:1639
 +...
 +
 +echo 1022 1639 > /sys/bus/pci/drivers/vfio-pci/new_id
 +echo -n "0000:03:00.3" > /sys/bus/pci/drivers/vfio-pci/bind
 +</code>
 +
 +  ls -l /sys/bus/pci/devices/0000:03:00.3/iommu_group/devices
  • linux_faq/kvm_usb_hotplug.txt
  • Last modified: 2022/03/12 06:41
  • by admin