VMware Horizon View can forward USB devices to the server-side VDI desktops, so that they appear in Windows as if they were connected as a local device.
By default, USB forwarding is switched to on and USB devices will be forwarded to the server automatically. So called HIDs (human interface devices, such as keyboards, mice, but also mouse-emulating devices like digital dictation foot pedals) will not be forwarded, but rather handled locally and brought to the VDI desktop as keystrokes and mouse movements - you can change that if you need, please see below.
- 1 USB forwarding service
- 2 Edit USB forwarding rules
USB forwarding service
If you experience problems with USB forwarding, you can change the version of the USB forwarding component. As of NoTouch 2.35 and later, VMware allows to use the most recent USB forwarder component as well as version 1.5.0 which was based on a different technology. The parameter "USB forwarder version" allows to choose between those two. If you change this, please make sure the devices is rebooted for changes to take effect.
The VMware USB forwarder is a system service, thus it can be configured from the "Services" parameters, not the VMware View connection parameters. The startup behavior is controlled by the parameter named "VMware USB forwarder" parameter. It has these options:
- "with VMware View connection". This is the default. Start the VMware View USB forwarder only if there is a VMware View connection configured.
- "off". Do not start the VMware View USB forwarder.
- "on". Start the VMware View USB forwarder after system boot.
Edit USB forwarding rules
In some cases it may be necessary to directly edit USB forwarding rules. For example, you might want to prohibit a device from being forwarded. In other cases, you might want to forward a device that wouldn't be forwarded by default (this is the case with HID - human interface devices - class of devices, such as dictation devices, dictation foot pedal, some RFID readers, etc).
You can either allow/disallow specific devices or whole device families.
Allow or disallow specific devices
For this you need to know that on the USB bus devices are identified by a vendor ID and a product ID. In a nutshell, you have to find out both data (easy), and then put this data into the appropriate parameters, depending of if you want to allow or forbid this particular device.
All you have to do is to set the parameter "Allow devices" or "Deny devices" in the "Services" / "VMWare USB" section. The syntax is as follows:
Replace xxxx with your device's vid (vendor id) and yyyy with your devices's product id (pid). After setting this parameter, you need to reboot it (this is a background service, it needs the reboot to reread settings). Multiple such entries can be combined as a list separated by semicolons.
Now you'll ask, how do I find out VID and PID? It's easy - go to a client where the device is connected, either by walking there physically, using screen shadowing or just by pointing your browser to the IP address of the machine and logging in. Go to Diagnostics / Debug information / USB You will find a very detailed USB list. Find the device you are configuring, you will see ID 1234:5678 which are the VID:PID pair information you will need
If you prefer the shell prompt, the appropriate command would be "lsusb", or "lsusb -v" for a more detailed information.
Allow or disallow a family of devices
Device families can be specified by the parameters "Allow family" and "Deny family" parameters in the "Services" / "VMWare USB" section. Again, multiple entries can be separated by semicolons. The syntax here is much different from individual devices, as only specific reserved words are acceptable. These words are USB and/or VMware terminology:
|Device family||Family name/id|
|Communication (modems, ...)||comm|
|Human Interface Device||hid|
|Force Feedback Device||physical|
|Imaging (scanners, ...)||imaging|
|Mass Storage (USB sticks, flash drives, ...)||storage|
|PDA (Active sync, Palm, ...)||pda|
In other words, if you put "printer,smart-card" into e.g. the "Deny family", the system would not forward devices identifying themselves as members of one of these two families.
Make sure you do not mix up family names vs. device ids.