How to use the Bloomberg Keyboard via PCoIP Audio with Horizon View
Benefits over USB Redirection
Redirecting the Bloomberg Keyboard in View 4.6 to 5.0 had limitations and drawbacks. USB Redirection was the only option available and the audio was very bandwidth inefficient. Unfortunately it was required in order for the Message Key to function. The keyboard also had a maximum latency of 25ms between Client and VM, at which point the audio would start stuttering.
This configuration splits the Bloomberg Keyboard Audio device so that the audio is handled via PCoIP Audio Redirection while the Message Key functions via USB Redirection. This drastically reduces network bandwidth usage while audio is played. It also allows the keyboard to be fully functional up to 75ms latency between Client and VM, at which point the fingerprint reader becomes slow enough that it is difficult to get a fingerprint read before the Bloomberg App times out waiting for it.
This configuration should work with Bloomberg Keyboards and Horizon View 5.1 or higher, however I only tested this on the following:
- Horizon View Connection Manager 5.2
- Horizon View Client 5.3
- Horizon View Agent 5.2.1
- Bloomberg Keyboard FRE100
- Windows 7 SP1 VM
- Windows Embedded Standard Client
- Windows Embedded Standard 7 Client
How to Configure
- Install the Bloomberg Keyboard Driver on the client and confirm the keyboard is functional from the client side.
- Add the VMware View Client Configuration ADM Template to the client.
- In Administrative Templates for VMware View Client Configuration\View USB Configuration:
- Split Vid/Pid Device = Enabled
This splits the Bloomberg Keyboard Audio device. This composite device has 4 interfaces. 00=Audio, 01=Audio Out, 02 = Audio In, 03=HID Device (Message Key). We want to exclude all three audio interfaces so they are handled by PCoIP and redirect only interface 03 (the Message Key) via USB Redirection.
- Include Vid/Pid Device = Enabled
Both of these Vid/Pid devices (Biometric Fingerprint Reader and Bloomberg Keyboard Audio) contain HID devices which are excluded from redirection by default. We must specifically include them for redirection.
- Split Vid/Pid Device = Enabled
- Add Registry Key to Client:
HKLM\Software\Policies\VMware, Inc.\VMware VDM\Client\USB
AllowDevDescFailsafe [REG_SZ] = True
This allows devices to be redirected even if the View client fails to get the config/device descriptors. This happens with the Bloomberg Keyboard and this key must be set for it to be redirected.
- Insure that "Bloomberg Keyboard Audio" is the default audio device on the client.
Temporary workaround for VMware & Bloomberg bugs that causes the Message Key to be unresponsive
At the time of this writing this configuration is impacted by VMware & Bloomberg bugs which can cause the Message Key to fail. When the Bloomberg Keyboard Audio device is split and excluded from redirection, the excluded audio interfaces still appear in the VM’s Device Manager and they appear as HID devices instead of Audio Devices. This confuses the Bloomberg App and the Bloomberg App listens to the wrong HID interface for the Message Key causing the key to be unresponsive.
Bloomberg has a fix for this issue which they will incorporate into their monthly software update either in June or July 2013. Until then, applying the following GPO to the VM will block the keyboard’s audio interfaces from loading if they present themselves as HID devices when the device is split. This will cause the Bloomberg App to link to the correct interface the next time it is launched. This policy does not impede the Bloomberg Keyboard when it is locally connected or if it is redirected entirely via USB Redirection since the audio interfaces correctly present themselves as an Audio Device in these cases. I applied this policy to our entire enterprise.
Apply to the agent side (VM) via GPO or Local Policy:
In Computer Configuration\Administrative Templates\System\Device Installation\Device Installation Restrictions, find the following policy and add the Device IDs below.
“Prevent installation of devices that match any of these Device IDs” = Enabled