Skip to main content

February 7, 2025

USB Composite Device Redirection

USB redirection enables you to use locally attached USB devices in a virtual desktop. You can redirect multiple USB devices to a virtual desktop, but a device can be redirected to only one desktop session at a time. The following procedure describes the steps to enable USB redirection:

  1. Install the USB component when you install the agent.
  2. Enable UsbVirtualChannelEnabled and set UsbVirtualChannelEnabled in registry.
  3. Logoff from the desktop for the changes to take effect.

For the USB composite device redirection to work correctly, you must perform the following configurations on the agent GPO or the Google admin settings. You can either use the agent GPO or the Google admin, but the Google admin will overwrite the GPO if both the GPO and the Google admin exist.

Configure the Agent GPO as described in the following steps:

  1. Include a Vid or Pid device, enable the device, and add Vid or Pid as shown in the following example. Here, Vid or Pid are hex numbers.

    The following example shows a device with Vid or Pid 0554/1001, the configuration must be o:vid-0554_pid-1001.

  2. Split the Vid or Pid device, enable the device, and add the excluded interfaces as exintf. In the example, the excluded device is 0554:1001, excluded interface is 00, 01, 02, and the configuration must be o:vid-0554_pid-1001(exintf:00;exintf:01;exintf:02). To identify which interfaces to be excluded, see the Identifying the Interfaces to be Excluded section.

Configure the Google Admin Console as described in the following steps:

  1. The Chromebook device must be a managed device in the organization.

  2. Horizon Client Google policy - Add the following splitUSB key or value in the common setting of the Horizon client Google policy. The following is an example for PowerMic3, whose Vid or Pid is 0554:1001, audio interface is 00,01,02 which should not be redirected as USB HID interface.

    
    {
      "broker_list": {
        "Value": {
          "settings": {
            "server-list": [
              {
                "server": "viewserver0.mydomain.com",
                "default": true,
                "description": "View Server 0",
                "username": "User0",
                "domain": "TestDomain0"
                }
            ],
            "common-setting": {
             "allowDataSharing": true,
          "allowFileDownload": true,
          "allowFileUpload": true,
          "autoForwardUSB": true,
          "autoForwardUSBPolicy": [
            {
               "desktop": "HorizonAutoUsbAll",
               "autoConnectAllOnStart": true,
               "autoConnectAllOnInsert": true
                  }
                ],
                 "enableAdvancedTouch": true,
          "enableAnonymousLogin": false,
          "enableDisconnectionTriggeredQuit": true,
          "enableFileAssociation": false,
          "enableH264": true,
          "enableHighResolution": false,
          "enableLogoutTriggeredQuit": true,
          "enableMediaStream": false,
          "enableNetworkIndicator": true,
          "enableRTAVH264Codec": true,
          "enableScreenSharing": true,
          "enableWindowsKey": true,
          "display": "useAllMonitor",
          "forcePrivateMode": true,
          "hardwareAccelerationOption": "no-preference",
          "hideSecondaryServer": true,
          "ignoreCertErrors": false,
          "useAssetIdReplaceMachineName": false,
          "ws1WebviewMode": "secure-webview",
          "networkStateConfig": {
            "networkStateTcpRttMSLow": 2,
            "networkStateTcpRttMSHigh": 400,
            "networkStateQualityScoreTcpThresholdGood": 85,
            "networkStateQualityScoreTcpThresholdPoor": 40,
            "networkStateRttCheckPeriodMs": 15000
          },
          "splitUSB": {
            "allowList": [
              {
                "device": "0554:1001",
                "excludedInterface": [
                  "00",
                  "01",
                  "02"
                ]
              }
            ]
          },
          "urlFiltering": {
            "protocols": [
              {
                "brokerHostname": "10.117.24.28",
                "protocol": "http",
                "remoteItem": "win2022_RDSH",
                "agentRules": ".*example1.com"
              },
              {
                "brokerHostname": "10.117.161.109",
                "protocol": "https",
                "remoteItem": "win10_VDI",
                "agentRules": ".*example2.com"
              }
            ]
          },
          "editable": {
            "allowDataSharing": true,
            "autoForwardUSB": true,
            "enableAnonymousLogin": true,
            "enableHighResolution": true,
            "enableH264": true,
            "enableWebRTCRedirection": true,
            "enableScreenSharing": true,
            "display": true
          }
              }
            }
          }
        }
      }
    
    
  3. UsbDetachableAllowlist

    1. Navigate to Settings > Device > Device Org > Device settings search for USB Access.

    2. Add your device vid:pid.

      Note: Vid and pid must be hexadecimal numbers.

    3. Click Save on the Google admin. The following screenshot shows an example of Google admin console.

  4. WebUSBAllowDevicesForURL After the Google configuration, restart your Chromebook. The settings will be synced to your managed devices. You can verify if the USB configuration is synced from the Google admin:

    1. Navigate to Settings > Device > Device Org > User & Browser Settings and search for WebUSB API allowed devices.

    2. Add your applications extension ID.

    3. Add your device vid:pid, vid and pid should be in hex.

    4. Click Save on the Google admin. The following screenshot shows an example of Google admin console.

After the google configuration, restart your Chromebook to sync the settings to your managed devices. You can verify if the USB configuration is synced from the Google admin:

  1. Open a Chrome browser and enter chrome://policy.

  2. Search for USB in the browser.

Identifying the Interfaces to be Excluded

You must identify the interfaces that must be excluded, such as, interfaces with keyboard and audio types. For this release, Omnissa has tested the following USB composite devices, such as, Nuance Powermic 2, Powermic 3, and Yubikey. Other devices might be supported. The following procedure describes the steps to identify the interfaces that must be excluded:

  1. Plug your device on a Windows PC.

  2. Open the software vmwUsbview.exe.

  3. In the USB list, identify your device and the interfaces information. For example, as shown in the following screenshot, interfaces 0,1, 2 are interface with audio type, which must be excluded. So, you must configure the Agent GPO as o:vid-0554_pid-1001(exintf:00;exintf:01;exintf:02).

Using USB Redirection

  1. Click the USB panel on the top bar.

  2. Click Add device to connect your plugged-in USB device.

Was this page helpful?

Provide feedback for this topic

Was this topic helpful?

Please do not include any personal or confidential information.

Generating link…