Introduction
PCI passthrough gives a virtual machine (VM) direct, exclusive access to a physical hardware device on the node. For USB devices, PCI passthrough is configured at the hardware model level by adding USB adapter entries that EVE-OS (Edge Virtualization Engine) enforces when the hardware model is assigned to a node. EVE-OS supports two modes of USB passthrough:- USB Controller passthrough passes through an entire USB host controller and all devices connected to it. All physical ports on that controller become exclusively available to the VM.
- USB Device passthrough (also called USB Device splitting) passes through individual USB ports independently, letting you assign different ports to different VMs.
Prerequisites
- You have a cluster or CSP administrator role. Creating custom hardware models is available to cluster and CSP administrators only. Enterprise users with SysAdmin or SysManager roles can import existing catalog models but cannot create or edit hardware models.
- The target node runs EVE-OS and is enrolled in Edge Infrastructure Services.
- You have SSH access to the node, or access to the EVE-OS console.
lspciandlsusbare available on the node.- The VM workload uses the QEMU hypervisor (the open-source machine emulator used by EVE-OS for VM-type edge containers). USB passthrough is only supported on QEMU-based VM edge containers.
Considerations
Review these points before configuring USB passthrough.- Controller passthrough includes all ports. If you configure a USB Controller for passthrough, every USB port on that controller is passed through together. No other VM or the host can use those ports while passthrough is active.
- USB Device splitting allows per-port assignment. To assign individual ports to different VMs, add separate USB Device I/O members for each port rather than using a USB Controller entry.
- WWAN modems might share a USB controller. If a WWAN modem is connected through the same USB controller you intend to pass through, that modem will also be passed through to the VM. If the WWAN modem is already in use, assigning the USB Controller simultaneously causes a PCI passthrough conflict error.
- IOMMU groups affect PCI passthrough. IOMMU groups are sets of devices the CPU and chipset group together for memory isolation. The CPU and chipset group PCIe devices into IOMMU groups. Devices in the same IOMMU group are passed through together when using PCI passthrough. Verify the IOMMU group membership of the USB controller before assigning it.
- Changes apply to all nodes that reference the hardware model. Updates to a hardware model are automatically reflected on every node in the enterprise that uses that hardware model. Test configuration changes in a lab environment before applying them to production nodes.
- USB hubs cannot be passed through. You cannot pass through a USB hub. Pass through individual downstream devices or use USB Device splitting by port.
- Thunderbolt and USB4 are not supported. Devices connected via Thunderbolt or USB4 ports cannot be passed through using this method.
- USB passthrough requires QEMU. This feature is not supported for container or unikernel workload types.
Identify the USB Controller
Uselspci to locate the USB host controller’s PCI address and IOMMU group on the node.
- Connect to the EVE-OS node via SSH or the console.
-
Run the following command to list PCI devices with driver and IOMMU group information:
-
Locate the USB controller entry in the output. It is typically labeled USB controller or xHCI Host Controller. For example:
-
Record the PCI address (for example,
00:14.0) and any IOMMU group information shown. If IOMMU group details are not shown bylspci, check/sys/kernel/iommu_groups/on the node. - Note any other devices that share the same IOMMU group as the USB controller, as they will be passed through together.
Identify USB Device Bus:Port Mappings
USB ports have separate mappings for USB 2.0 and USB 3.0 connections. Even a single physical port on the hardware may appear as two distinct bus:port addresses depending on which USB version the connected device uses. Identify both mappings for each physical port you want to pass through independently.List USB devices
-
Run the following command to list connected USB devices with their bus and device addresses:
For example, output may show:
-
Connect a device to each physical port you want to map, one at a time, and run
lsusbafter each connection to identify which bus and device address the port uses.
Find the port number for each device
-
Run the following command to display the USB device tree with port numbers:
-
Locate each device in the tree. The output shows the port number for each device under its parent hub. For example:
In this example, the device is on Bus 2, Port 3 at USB 3.0 speed (5000M).
- Repeat for USB 2.0 by connecting a USB 2.0 device or checking which bus the port also appears on. Each physical port typically has a USB 2.0 address on one bus and a USB 3.0 address on another.
-
Record the bus number and port number for each physical port at each USB version. For example, for a device with two physical USB 3.2 ports:
Create a Hardware Model with USB Passthrough
After identifying the USB controller and port mappings, create a custom hardware model from the Catalog view with the corresponding USB adapter entries. The Create Model button is available in the Catalog view only and only to cluster and CSP administrators.- In the sidebar, select Marketplace.
- Select Catalog.
- Select the Hardware filter tab.
- Select the Create Model floating action button.
-
Complete the fields:
-
To add the USB controller, select Add I/O and complete the fields:
-
To add individual USB Device entries for each physical port and USB version, select Add I/O for each entry and complete the fields:
Add one USB Device entry for the USB 2.0 mapping and one for the USB 3.0 mapping of each physical port.
- Select Create to save the hardware model.
What the GUI supports
The Create Model dialog identifies adapters by physical and logical labels. It does not have fields for PCI address, IOMMU group, orusbaddr values. EVE-OS uses the label values you enter to match adapters when the hardware model is assigned to a node. Use descriptive labels that capture the bus, port, and USB version so the entries remain identifiable.
For advanced configuration using PCI addresses or usbaddr fields, use the ZEDEDA API or ZCLI.
Verify the Configuration
After creating the hardware model, verify that the I/O adapter entries are correct.- In My Library, select the Hardware filter tab and open the hardware model.
- Select the Adapters tab on the hardware model detail page.
- Confirm that the adapter table shows:
- One USB Controller entry.
- One USB Device entry per physical port per USB version.
- Review the physical and logical labels to confirm they match the bus:port mappings you recorded.
Next Steps
Identify and Configure PCI Passthrough by Vendor ID
Target a specific USB device by its vendor and product ID.
Import Hardware Models
Import an existing model from the catalog or manage custom hardware models in My Library.
WWAN Modem PCI Passthrough
Considerations specific to WWAN modems that share a USB controller with the ports you are configuring.