How is a VirtualHere device different from a "real" USB device?

I have a USB-connected data logging device for some OLD hardware. It all works pretty well, except that the software needs to run on Windows XP. It's well protected and never touches the internet so I'm not worried.

I have an old windows XP VirtualHere client that has worked well enough, but occasionally XP crashes. It never did this when the data logger was connected physically.

I should mention that the XP machine is a virtual machine.

I'd *like* to use the updated virtualhere client on the VMWare host machine to connect my datalogger to the XP virtual machine and bypass the old XP virtualhere client, but VMWare doesn't "see" the virtualhere devices.

And now my question..

If I plug the datalogger into the VMWare host machine directly, VMWare sees it and can redirect it to the virtual machine without problem. I ran this way for years.

If I plug the datalogger into a virtualhere server, I can connect to it on the VMWare host machine, but VMWare doesn't see it as a USB device that I can "connect" to the virtual machine. It's not just the datalogger, either. A USB serial adapter connected via virtualhere is equally invisible.

Thoughts?

#2

The VM passes through the device by make it appear to be connected to the guest by triggering the appropriate virtual registers in the virtual USB hardware to say a usb device is available. VirtualHere is the same. However virtualhere has its own "VirtualHere USB Host Controller" that the remote device appears at, whereas the VM would pass the device through to the actual microsoft host controller inside the guest. The other main difference is that the VM Host->Guest passthrough adds almost no latency to the USB messages as its on the same machine, whereas via virtualhere there would be an additional network latency.

Its a bit complicated but basically some software is dumb and just tries to find the device by starting with the "Microsoft" USB Host controller and searching the leaf devices. Whereas better written software would request all Host Controller Interfaces in the system(https://docs.microsoft.com/en-us/windows-hardware/drivers/install/guid-…) and find usb device that way. Thats why some devices cant find the device attached to a "VirtualHere" usb host controller.

#3

Michael - thanks for the reply. I'm thinking there is a little more to it though, as I have the same issue using Linux or OSX hosts, and they wouldn't be looking for Microsoft host controllers. In my specific case I'm running the Windows XP guest on a Linux host, trying to patch the datalogger device through from the host to the VM.

When I run the VH client on the Linux host I don't see any VirtualHere host controllers when I do either "lsusb" or "lshw". I *do* see the devices being shared by the controller, though.

This is a low-level crisis for me as the Windows XP client is still compatible with the VH server, barring the occasional XP crash.

Of course, if in your spare time you wanted to bring the XP client up to the level of the Windows 7 or Linux clients ..... :)