Virtual Machine with support for hardware access: USB 3 (and PCI)

6

I am in the process of selecting a VM-software.

I have a requirement of accessing a custom USB3 device in a VM (Windows 8 64bit guest, host is Windows 7 64 bit). From what I read, VMware would be the best choice for USB3 support. Is it true? I also read that USB support is not 100%ly reliable - is that true as well and what do I have to expect?

Optionally, I also want to use a PCI card (actually, for video-grabbing from a camera). From what I read, giving a VM access to PCI hardware is a rather difficult task. There is (??) rudimentary support in ESXi and XEN (both not desktop-virtualization??), most VM-software does not support this at all.

Do you have any experience on those topics? USB2 and - mainly - USB3 is my main focus, the PCI access would just be nice to have.

Context:

I will be using those VMs for developing an application around a proprietary USB3 hardware.

(Advantage should be to quickly bring the system into completely different states, test installations on fresh Windows-installs, also, there will be many developers, but only little hardware (prototypes), so each having his own environment (at least sequentially) would be nice, etc.)

Andreas Reiff

Posted 2012-09-26T19:01:49.417

Reputation: 895

2if you could use the Windows 8 OS as the host OS, you could use its built in Hyper-V system, which is super sophisticated from a hardware point of view. It fully supports USB3. I'm not aware of any desktop virtualization software that lets you channel a PCI card over to a VM. Instead, typically the driver runs on the host OS, and the resulting resources are connected to the guest, at some higher level API. – Warren P – 2012-09-27T03:16:40.190

Thanks! That higher level API that you talk about.. it is restricted to devices specifically supported by the VM vendor? Like printers, sound and graphic cards? So it would be no good for new/not widespread devices? Also, I am going to check out Win 8 Hyper-V, did not know about it. – Andreas Reiff – 2012-09-27T05:10:27.873

There are two levels of restriction. First, a device has to actually work properly on the hosting OS. So, you were using Win8 as a VM host and your PCI device didn't have a Win8 driver, you'd be out of luck. Second, the hypervisor has to support a specialized "pass through the capabilities of device X" mode. That could be as simple as the standard "act as if the USB drive I just connected were plugged into the VM instead of the host", or more sophisticated, like "share my host's printer with the VM as well". – Zac B – 2013-02-20T21:36:59.080

Was able to get USB 3 redirect to successfully work with a Win7 VM on each and every connect but completely unsure how I did it. Trying to back track on what I've done but striking out every time. Host : ESXI 5.1 / IBM Blade E5420 || Guest VM: Win7Pro 64 || Unit running VM View 5.1 : Lenovo Edge E430 (3 USB 3.0 Ports) running Win7Pro64 || USB 3 Device used: PNY 32GB USB 3.0 Flash Drive || See link below for PrtSc snapshot http://flic.kr/p/dWY7jx I'm looking for advice on what to try folks... But regardless, Will update soon when I find the answer. Works on all my Win7 VM's btw.

– None – 2013-02-23T00:59:20.173

Answers

4

If you're interested in passing through devices with maximum predictability (i.e. you want to be sure that the software you're developing works over a passed-through USB3 connection exactly the same way it would over a real one, rather than relying on desktop hypervisor passthrough technologies, and host-OS driver problems), using a desktop virtualization solution might not be the best way to go. ESXi, Xen, and XenServer all offer much lower-level and more predictable hardware-passthrough capability than any desktop-based solution. This makes sense, since the desktop solutions tend to be concerned with minimizing end-user configuration and just getting some functions of a device working.

If run on compatible hardware, the thin hypervisor solutions support the ability to use "device passthrough", which can be used to forward a device to a VM via IOMMU/VT-D processing, also known as PCI passthrough. That device is then dedicated to that VM (until you detach it).

This means it functions exactly as if it were connected directly. There is no "what if" intermediary layer of requiring compatible drivers for the host, and a functional per-device-type resource sharing strategy for the hypervisor: the device is just passed through, raw, to the guest. All three major thin hypervisors also support the direct passthrough of arbitrary USB devices in a similar fashion (though that doesn't require IOMMU/VT-D capable hardware). Passed-through USB devices can also be hot plugged/unplugged, unlike passed-through PCI devices.

Using a thin hypervisor also affords you the benefit of being able to connect just a few instances of the device you're testing on to a single server, and then give each of your developers a VM on that server. When one developer wants to test with the hardware (s)he can request a device connection, an administrator can connect the USB device to that developer's VM via device passthrough, and then they can access their VM via remote desktop or similar.

There are a few caveats, however:

First: outside of a very narrow range of compatible hardware, passing through graphics cards does not work well (and it mostly only works reliably on XenServer--here's how, and here's the HCL). This does not, so far as I know, apply to video capture cards such as the one you discussed. Second, direct-connecting PCI devices often blocks the use of other advanced hypervisor technologies (such as snapshotting, migration, or other HA features). Third: with the exception of graphics card issues, ESXi has the most robust and user-configurable method of managing device passthrough. You can do it with Xen (and manually with XenServer), but not as easily as you can with ESXi. Fourth: specific versions of ESXi impose restrictions on what devices you can pass through. ESXi 5.0 will pass through more or less anything you give it (even at risk to system stability). 5.1 is much more picky, and will often disable passthrough for devices without giving you a good reason.

Zac B

Posted 2012-09-26T19:01:49.417

Reputation: 2 653

Thanks a lot! I will try this should it come up again. (Actually, for the project I originally had, we are using real machines now, since setup of VMs is.. rather involved. And time always is an issue (first, security was an issue as well..)) Is passthrough to a VM the same as having the device directly connected to a physical machine? (So that even modes like USB 3 isochronous are supported?) – Andreas Reiff – 2013-02-21T16:33:27.303

1Yes. If you're using PCI device passthrough (passing through the USB3 controller on the chipset, rather than just attaching a physical USB device through a virtual hub), it acts exactly as it would if that controller were physically connected to the VM. All controller functionality is supported. There are always a few exceptions (e.g. graphics cards), but I've never heard of any for USB controllers--even ones integrated into a motherboard's chipset. The restriction, of course, is that only one VM can have the controller passed through to it. – Zac B – 2013-02-26T22:30:07.300

2

VMware Workstation 9 has support for Windows 8, and USB 3.0. I have used my Microsoft StudioCam w/ USB successfully with VMs by simply toggling the option to connect to guest (disconnect from host). You may run into trouble with the PCI card so I would suggest finding a USB alternative solution to capture the feed.

j_bombay

Posted 2012-09-26T19:01:49.417

Reputation: 640

Actually, using latest VMware Player (same engine??), I cannot channel through my USB3 hardware. I read somewhere something about USB devices using isochronous mode being not supported.. difficult to get a definite answer on that one though. – Andreas Reiff – 2012-10-26T15:44:05.417

Check out page 75 on this VMware Player PDF, I'm not sure if there is additional configurations that need to take place? http://www.vmware.com/pdf/desktop/vmware_player50.pdf Also page 76 states isochronous is supported. (Under Add a USB Controller to a Virtual Machine in the table)

– j_bombay – 2012-10-26T21:10:40.030

This is exactly the sort of per-user inconsistency that makes using desktop virtualization for hardware device testing/development a poor choice; consider a thin hypervisor solution. – Zac B – 2013-02-20T22:04:15.337

-1

I have a dell laptop that was sold with usb3.0 ports only. I have much difficulty getting/keeping usb3 working on this machine while running vmware workstation 9.01.894247

If your machine uses an intel xchi drivers for usb you will also be affected.

others with the issue here

There are many types of fixes in the above thread. The one that works for me is downloading and running "Intel_Chipset_7-Series_USB3_FJ3FJ_A03_SETUP_ZPE.exe" from Intel's site and installing it. Every time I reboot windows 7 I must reinstall it. Sometimes when I reboot the virtual machine I must reinstall it. It's a real pain and I hope that vmware releases a new update soon.

TWood

Posted 2012-09-26T19:01:49.417

Reputation: 317

This isn't an answer; while your experiences in this area might be useful to the OP, this content is better suited to a comment. – Zac B – 2013-02-20T22:03:02.687