VMware Horizon View USB forwarding

From NComputing Knowledge Base
Jump to: navigation, search

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.

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, and then select "LSUSB". Scroll down in the very very detailed USB list until you find the device (you should be able to read textual Manufacturer / Product Name fields). The "idVendor" field is the VID, the "idProduct" field is the PID. Strip the preceding 0x, so if the field shows 0x1234, the actual value would be 1234.

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
Vendor vendor
Unknown unknown
Other other
Audio In audio-in
Audio Out audio-out
Communication (modems, ...) comm
Human Interface Device hid
Bootable HID hid-bootable
Force Feedback Device physical
Imaging (scanners, ...) imaging
Printer printer
Mass Storage (USB sticks, flash drives, ...) storage
Smartcard Reader smart-card
Security security
Video video
Wireless Adapter wireless
Bluetooth bluetooth
PDA (Active sync, Palm, ...) pda
Wireless USB wusb

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.