A smooth pen, pad of paper, a perfect scrawl of signature; what could be more satisfying? But anyone who has tried to sign a digital tablet with a VMware Horizon virtual desktop knows your signature doesn’t always translate. With Horizon, most HID (human interface devices) are shared with the physical desktop. But with some specialized devices, such as a drawing tablet or 3D mouse, it’s better to use USB forwarding so the device can communicate directly with the drivers in the virtual desktop.
The performance of redirected USB devices varies greatly based on network latency and reliability. A signature tablet may not even be usable over a high-latency network. These types of HID devices usually require guaranteed bandwidth and latency.
Take the Wacom CTH 480 and Wacom STU 520 signature pads, for example. When the network delay between the client and the virtual desktop is about 50 milliseconds, curves are completely distorted on the Wacom 480; with the Wacom 520, many lines are dropped, which makes the signature unrecognizable.
The well-known guide to all things USB—“USB Complete: The Developer’s Guide,” by Jan Axelson—specifies how USB devices should behave. The section on HID describes that all data should be exchanged in fixed-length reports in URBs (USB request blocks). Every interrupt transaction URB from the host to the device has the same structure for a device interface. Based on this, we can reuse the same interrupt transaction data created by the Horizon virtual desktop. The Horizon Client can poll for data from the HID device, cutting down on latency.
With the following optimizations, signature pad usability in Horizon becomes significantly better. This enhancement is available for supported devices on virtual desktops (VDI) and RDSH desktops and apps. This feature works with the Horizon Clients for Windows, Mac and Linux.
Improve HID Poll Rate
Without the optimization, the communication is between the signature pad and the virtual desktop. If the virtual desktop needs to send an interrupt transaction request to the device, the virtual desktop must wait for the response of the previous request before it can send the next request. The poll data requires a round-trip between the physical client and the virtual desktop.
With the new approach, the Horizon Client periodically polls data from the device locally, eliminating the network round-trip.
Reduce Bandwidth Usage
Previously, we relied on the virtual desktop to send URB requests to the physical client periodically. With the new approach, this process is removed, and the traffic is only from the physical client to the virtual desktop.
Optimization Results with Wacom 480
Optimization Results with Wacom 520
This optimization only works with signature pads, not with other USB devices. To use this optimization, you need to configure a GPO on the agent and specify the HID. Check out our documentation, look for the section “Include HID Optimization Vid/Pid Device.”
To verify the optimization took effect
Physical client-side logs:
- [vmware-remotemks] Feature HID optimization is enabled.
- <14748> [vmware-remotemks] Poll data thread for pipe handle:0x8100005e with poll data interval:1 – thread enter.
VM agent-side logs:
- [ws_vhub] HidOpt is enabled (hidOptFastQueue: 2, deviceOptAllowed: allowed, clientEanble: enabled)
- [ws_vhub] vhubHidDeviceOptimizer: [Vid-056a_Pid-0302] Create a queue for pipe 0x81000064.
Verified Device List
We verified the optimization with the following devices. Other HID may work as well.
- TOPAZ T-LBK460-HSB-R
- TOPAZ T-LBK462-HSB-R
- TOPAZ T-LBK462-BSB-R
- TOPAZ T-LBK462-HSX-R
- TOPAZ T-LBK755-BHSB Signature Pad
Wacom Tablet devices:
- Wacom STU-520A
- Wacom STU-530
- Wacom CTH-480
- Wacom Pro Pen 2
- 3DConnexion Space Mouse
- Script Touch Script Pad SC-ST1500B
- Ambir nSign SP200
For more information on VMware Horizon, visit https://www.vmware.com/products/horizon.html.