Xcp-ng usb passthrough

Anyone had luck passing through a usb device to a vm? My xcp-ng host sees the usb, but after configuring passthrough to a vm, the vm doesn’t see it. I’m specifically trying to pass through an aeotec zstick for homeassistant. After changing the DENY class=02 to ALLOW and rebooting the host, it’s now seen when running a pusb-list. It seems like the host is passing it through, but the vm isn’t seeing it. I’m thinking of trying ser2net but would like to avoid that aggravation if possible. Any suggestions would be appreciated.

When you run dmesg on the host, does it show the device?

I have made this work, but it was something of a struggle. Below are some notes that I made for my project to pass a USB plotter connection to a VM. Note that your GUIDs will not match what I got (shown below). You do have to get a command line session on the xcp-ng host to execute the xe commands.

How to configure USB Passthrough with XenServer using xe CLI
============================================================

https://support.citrix.com/article/CTX235042

1. Plug the USB devices to the XenServer host

2. Enable passthrough

xe pusb-list
	uuid ( RO)            : 83088b6f-0aae-88b2-8829-0945c437e346
				path ( RO): 5-1
		   vendor-id ( RO): 0fe6
		 vendor-desc ( RO): ICS Advent
		  product-id ( RO): 811e
		product-desc ( RO): Parallel Adapter
			  serial ( RO):
			 version ( RO): 1.10
		 description ( RO): ICS Advent_Parallel Adapter
		 
xe pusb-param-set uuid=83088b6f-0aae-88b2-8829-0945c437e346 passthrough-enabled=true

3. Shut down the target guest VM that you want to pass the USB device through since hot plug is not supported.

4. Attach the USB device to the VM, run the following command:

xe usb-group-list PUSB-uuids=83088b6f-0aae-88b2-8829-0945c437e346
	uuid ( RO)                : 38b38107-d2a2-db30-decd-a2aa76c4a445
			  name-label ( RW): Group of 0fe6 811e USBs
		name-description ( RW):

xe vusb-create usb-group-uuid=38b38107-d2a2-db30-decd-a2aa76c4a445 vm-uuid=0490a094-7a64-5e90-b0e0-bf5d7ec5d3c3
	ebd0f361-3c93-e989-24cb-f3f26a6baa7b
	
5. Start the target guest VM.

xe vm-start uuid=0490a094-7a64-5e90-b0e0-bf5d7ec5d3c3


To detatch:

xe vusb-unplug uuid=<vusb_uuid>		(Unplugs USB from VM)
xe vusb-destroy uuid=<vusb_uuid> 	(Removes the VUSB list from VM)

Thanks greeners for the steps…I’ve done those. The host sees the device, but guest does not. Dmesg does not show the device on the guest.

For anyone wondering, I was able to fix my issue by installing a usb pci card and passing it through. After blacklisting it from dom0 and rebooting, I’m now working perfectly.

1 Like