Assign host's USB PCIe controller to vm - not separate usb controller card

Oct 25, 2020
35
3
13
42
I'm currently trying to assign a/the USB controller to a virtual machine.
I know the process of assigning a pci device to a machine, but in my case I would like to try to assign the usb controller of the host to the vm - will that cause any troubles? Currently I don't have any separate usb cards available and I would need the usb connection only once.
(passthrough of the device doesn't work - only passing on the whole card)

What will happen if I assign the host's usb controller to the vm (00:14.0 USB controller)?

Bash:
lspci -k
find /sys/kernel/iommu_groups/ -type l | sort -n -t "/" -k 5
pveversion -v
00:00.0 Host bridge: Intel Corporation Device 9b33 (rev 05)
        DeviceName: Onboard - Other
        Subsystem: ASUSTeK Computer Inc. Device 8694
        Kernel driver in use: skl_uncore
00:01.0 PCI bridge: Intel Corporation 6th-10th Gen Core Processor PCIe Controller (x16) (rev 05)
        Kernel driver in use: pcieport
00:01.2 PCI bridge: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x4) (rev 05)
        Kernel driver in use: pcieport
00:02.0 VGA compatible controller: Intel Corporation CometLake-S GT2 [UHD Graphics 630] (rev 05)
        DeviceName: Onboard - Video
        Subsystem: ASUSTeK Computer Inc. Device 8694
        Kernel driver in use: i915
        Kernel modules: i915
00:14.0 USB controller: Intel Corporation Device 43ed (rev 11)
        DeviceName: Onboard - Other
        Subsystem: ASUSTeK Computer Inc. Device 8694
        Kernel driver in use: xhci_hcd
        Kernel modules: xhci_pci
00:14.2 RAM memory: Intel Corporation Device 43ef (rev 11)
        DeviceName: Onboard - Other
        Subsystem: ASUSTeK Computer Inc. Device 8694
00:15.0 Serial bus controller [0c80]: Intel Corporation Device 43e8 (rev 11)
        DeviceName: Onboard - Other
        Subsystem: ASUSTeK Computer Inc. Device 8694
        Kernel driver in use: intel-lpss
        Kernel modules: intel_lpss_pci
00:15.1 Serial bus controller [0c80]: Intel Corporation Device 43e9 (rev 11)
        DeviceName: Onboard - Other
        Subsystem: ASUSTeK Computer Inc. Device 8694
        Kernel driver in use: intel-lpss
        Kernel modules: intel_lpss_pci
00:16.0 Communication controller: Intel Corporation Device 43e0 (rev 11)
        DeviceName: Onboard - Other
        Subsystem: ASUSTeK Computer Inc. Device 8694
        Kernel driver in use: mei_me
        Kernel modules: mei_me
00:17.0 SATA controller: Intel Corporation Device 43d2 (rev 11)
        DeviceName: Onboard - SATA
        Subsystem: ASUSTeK Computer Inc. Device 8694
        Kernel driver in use: ahci
        Kernel modules: ahci
00:1b.0 PCI bridge: Intel Corporation Device 43c0 (rev 11)
        Kernel driver in use: pcieport
00:1b.2 PCI bridge: Intel Corporation Device 43c2 (rev 11)
        Kernel driver in use: pcieport
00:1b.3 PCI bridge: Intel Corporation Device 43c3 (rev 11)
        Kernel driver in use: pcieport
00:1b.4 PCI bridge: Intel Corporation Device 43c4 (rev 11)
        Kernel driver in use: pcieport
00:1c.0 PCI bridge: Intel Corporation Device 43b8 (rev 11)
        Kernel driver in use: pcieport
00:1d.0 PCI bridge: Intel Corporation Device 43b0 (rev 11)
        Kernel driver in use: pcieport
00:1f.0 ISA bridge: Intel Corporation Device 4385 (rev 11)
        DeviceName: Onboard - Other
        Subsystem: ASUSTeK Computer Inc. Device 8694
00:1f.3 Audio device: Intel Corporation Device f0c8 (rev 11)
        DeviceName: Onboard - Sound
        Subsystem: ASUSTeK Computer Inc. Device 8694
        Kernel modules: snd_hda_intel
00:1f.4 SMBus: Intel Corporation Device 43a3 (rev 11)
        DeviceName: Onboard - Other
        Subsystem: ASUSTeK Computer Inc. Device 8694
        Kernel driver in use: i801_smbus
        Kernel modules: i2c_i801
00:1f.5 Serial bus controller [0c80]: Intel Corporation Device 43a4 (rev 11)
        DeviceName: Onboard - Other
        Subsystem: ASUSTeK Computer Inc. Device 8694
02:00.0 Non-Volatile memory controller: Kingston Technology Company, Inc. Device 500f (rev 03)
        Subsystem: Kingston Technology Company, Inc. Device 500f
        Kernel driver in use: nvme
        Kernel modules: nvme
04:00.0 Ethernet controller: Intel Corporation Ethernet Controller I225-V (rev 03)
        Subsystem: ASUSTeK Computer Inc. Ethernet Controller I225-V
        Kernel driver in use: igc
        Kernel modules: igc
06:00.0 Non-Volatile memory controller: Kingston Technology Company, Inc. Device 500f (rev 03)
        Subsystem: Kingston Technology Company, Inc. Device 500f
        Kernel driver in use: nvme
        Kernel modules: nvme
08:00.0 Non-Volatile memory controller: Kingston Technology Company, Inc. Device 500f (rev 03)
        Subsystem: Kingston Technology Company, Inc. Device 500f
        Kernel driver in use: nvme
        Kernel modules: nvme
/sys/kernel/iommu_groups/0/devices/0000:00:00.0
/sys/kernel/iommu_groups/1/devices/0000:00:01.0
/sys/kernel/iommu_groups/1/devices/0000:00:01.2
/sys/kernel/iommu_groups/1/devices/0000:02:00.0
/sys/kernel/iommu_groups/2/devices/0000:00:02.0
/sys/kernel/iommu_groups/3/devices/0000:00:14.0
/sys/kernel/iommu_groups/3/devices/0000:00:14.2
/sys/kernel/iommu_groups/4/devices/0000:00:15.0
/sys/kernel/iommu_groups/4/devices/0000:00:15.1
/sys/kernel/iommu_groups/5/devices/0000:00:16.0
/sys/kernel/iommu_groups/6/devices/0000:00:17.0
/sys/kernel/iommu_groups/7/devices/0000:00:1b.0
/sys/kernel/iommu_groups/8/devices/0000:00:1b.2
/sys/kernel/iommu_groups/9/devices/0000:00:1b.3
/sys/kernel/iommu_groups/10/devices/0000:00:1b.4
/sys/kernel/iommu_groups/11/devices/0000:00:1c.0
/sys/kernel/iommu_groups/12/devices/0000:00:1d.0
/sys/kernel/iommu_groups/13/devices/0000:00:1f.0
/sys/kernel/iommu_groups/13/devices/0000:00:1f.3
/sys/kernel/iommu_groups/13/devices/0000:00:1f.4
/sys/kernel/iommu_groups/13/devices/0000:00:1f.5
/sys/kernel/iommu_groups/14/devices/0000:04:00.0
/sys/kernel/iommu_groups/15/devices/0000:06:00.0
/sys/kernel/iommu_groups/16/devices/0000:08:00.0
proxmox-ve: 7.2-1 (running kernel: 5.15.64-1-pve)
pve-manager: 7.2-11 (running version: 7.2-11/b76d3178)
pve-kernel-5.15: 7.2-13
pve-kernel-helper: 7.2-13
pve-kernel-5.13: 7.1-9
pve-kernel-5.15.64-1-pve: 5.15.64-1
pve-kernel-5.15.60-2-pve: 5.15.60-2
pve-kernel-5.15.60-1-pve: 5.15.60-1
pve-kernel-5.15.53-1-pve: 5.15.53-1
pve-kernel-5.15.39-4-pve: 5.15.39-4
pve-kernel-5.15.39-3-pve: 5.15.39-3
pve-kernel-5.15.35-3-pve: 5.15.35-6
pve-kernel-5.15.35-1-pve: 5.15.35-3
pve-kernel-5.13.19-6-pve: 5.13.19-15
pve-kernel-5.13.19-4-pve: 5.13.19-9
pve-kernel-5.13.19-3-pve: 5.13.19-7
pve-kernel-5.13.19-2-pve: 5.13.19-4
pve-kernel-5.13.19-1-pve: 5.13.19-3
ceph-fuse: 15.2.15-pve1
corosync: 3.1.5-pve2
criu: 3.15-1+pve-1
glusterfs-client: 9.2-1
ifupdown2: 3.1.0-1+pmx3
ksm-control-daemon: 1.4-1
libjs-extjs: 7.0.0-1
libknet1: 1.24-pve1
libproxmox-acme-perl: 1.4.2
libproxmox-backup-qemu0: 1.3.1-1
libpve-access-control: 7.2-4
libpve-apiclient-perl: 3.2-1
libpve-common-perl: 7.2-3
libpve-guest-common-perl: 4.1-4
libpve-http-server-perl: 4.1-4
libpve-storage-perl: 7.2-10
libspice-server1: 0.14.3-2.1
lvm2: 2.03.11-2.1
lxc-pve: 5.0.0-3
lxcfs: 4.0.12-pve1
novnc-pve: 1.3.0-3
proxmox-backup-client: 2.2.7-1
proxmox-backup-file-restore: 2.2.7-1
proxmox-mini-journalreader: 1.3-1
proxmox-widget-toolkit: 3.5.1
pve-cluster: 7.2-2
pve-container: 4.2-3
pve-docs: 7.2-2
pve-edk2-firmware: 3.20220526-1
pve-firewall: 4.2-6
pve-firmware: 3.5-6
pve-ha-manager: 3.4.0
pve-i18n: 2.7-2
pve-qemu-kvm: 7.0.0-4
pve-xtermjs: 4.16.0-1
qemu-server: 7.2-4
smartmontools: 7.2-pve3
spiceterm: 3.2-2
swtpm: 0.7.1~bpo11+1
vncterm: 1.7-1
zfsutils-linux: 2.1.6-pve1
 
What will happen if I assign the host's usb controller to the vm (00:14.0 USB controller)?
/sys/kernel/iommu_groups/3/devices/0000:00:14.0 /sys/kernel/iommu_groups/3/devices/0000:00:14.2
The Proxmox host will also lose the other device(s) in the same IOMMU group (3) and I don't think it's a good idea to lose 00:14.2 RAM memory but you could try. It also possible that the USB controller does not reset properly and won't work with passthrough (PCI(e) passthrouygh is always trial and error).
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!