USB redirection
USB devices are shared between Citrix Workspace app and the Linux VDA desktop. When a USB device is redirected to the desktop, you can use the USB device as if it were locally connected.
Tip:
We recommend using USB redirection when the network latency is lower than 100 milliseconds. Do not use USB redirection when the network latency is higher than 200 milliseconds.
USB redirection includes three main areas of functionality:
- Open-source project implementation (VHCI)
- VHCI service
- USB service
Open-source VHCI:
This portion of the USB redirection feature develops a general USB device sharing system over an IP network. It consists of a Linux kernel driver and some user mode libraries that allow you to communicate with the kernel driver to get all the USB data. In the Linux VDA implementation, Citrix reuses the kernel driver of VHCI. However, all USB data transfers between the Linux VDA and Citrix Workspace app are encapsulated in the Citrix ICA protocol package.
VHCI service:
The VHCI service is an open-source service provided by Citrix to communicate with the VHCI kernel module. This service works as a gateway between VHCI and the Citrix USB service.
USB service:
The USB service acts as a Citrix module that manages all the virtualization and data transfers on the USB device.
How USB redirection works
Typically, if a USB device is redirected successfully to the Linux VDA, one or more device nodes are created in the system /dev path. Sometimes, however, the redirected device isn’t usable for an active Linux VDA session. USB devices rely on drivers to function properly and some devices require special drivers. If drivers aren’t provided, the redirected USB devices are inaccessible to the active Linux VDA session. To make sure of USB device connectivity, install the drivers and configure the system properly.
The Linux VDA supports a list of USB devices that are successfully redirected to and from the client.
Supported USB devices
The following devices have been verified to support this version of the Linux VDA. Other devices might be freely used, with unexpected results:
Note:
The Linux VDA supports only USB 2.0 protocols.
USB mass storage device | VID:PID | File system |
---|---|---|
Netac Technology Co., Ltd |
0dd8:173c | FAT32 |
Kingston Datatraveler 101 II |
0951:1625 | FAT32 |
Kingston Datatraveler GT101 G2 |
1567:8902 | FAT32 |
SanDisk SDCZ80 flash drive |
0781:5580 | FAT32 |
WD HDD |
1058:10B8 | FAT32 |
USB 3D mouse | VID:PID |
---|---|
3DConnexion SpaceMouse Pro |
046d: c62b |
USB scanner | VID:PID |
---|---|
Epson Perfection V330 photo |
04B8: 0142 |
Configure USB redirection
A Citrix policy controls whether USB device redirection is enabled or disabled. The type of device can also be specified using a Delivery Controller policy. When configuring USB redirection for the Linux VDA, configure the following policy and rules:
- Client USB device redirection policy
- Client USB device redirection rules
Enable USB redirection
In Citrix Studio, enable (or disable) USB device redirection to and from the client (for workstation hosts only).
In the Edit Setting dialog:
- Select Allowed.
- Click OK.
Set USB redirection rules
After enabling the USB redirection policy, set the redirection rules using Citrix Studio by specifying which devices are allowed (or denied) on the Linux VDA.
In the Client USB device redirection rules dialog:
- Click New to add a redirection rule, or click Edit to review an existing rule.
- After creating (or editing) a rule, click OK.
For more information about configuring generic USB redirection, see Citrix Generic USB Redirection Configuration Guide.
Build the VHCI kernel module
USB redirection depends on the VHCI kernel modules (usb-vhci-hcd.ko
and usb-vhci-iocif.ko
). These modules are part of the Linux VDA distribution (as part of the RPM package). They’re compiled based on the official Linux distribution kernels and are noted in the following table:
Supported Linux distribution | Kernel version |
---|---|
Amazon Linux 2 | 4.14.281-212 |
Debian 11.3 | 5.10.0-12 |
RHEL 8.x, Rocky Linux 8 | 4.18.0-372 |
RHEL 7.9, CentOS 7.9 | 3.10.0-1160 |
SUSE 15 | 5.3.18 |
Ubuntu 22.04 | 5.15.0-37 |
Ubuntu 20.04 | 5.4.0-117 |
Ubuntu 18.04 | 4.15.0-184 |
Important:
If the kernel of your machine isn’t compatible with the driver built for the Linux VDA, the USB service might fail to start. In this case, you can use the USB redirection feature only if you build your own VHCI kernel modules.
Verify whether your kernel is consistent with the modules built by Citrix
On the command line, run the following command to verify whether the kernel is consistent:
insmod /opt/Citrix/VDA/lib64/usb-vhci-hcd.ko
<!--NeedCopy-->
If the command runs successfully, the kernel module has loaded successfully and the version is consistent with the one installed by Citrix.
If the command runs with errors, the kernel is inconsistent with the Citrix module and must be rebuilt.
Rebuild the VHCI kernel module
If your kernel module is inconsistent with the Citrix version, do the following:
-
Download the LVDA source code from the Citrix download site. Select the file in the section “Linux Virtual Delivery Agent (sources).”
-
Extract the citrix-linux-vda-sources.zip file. Navigate to linux-vda-sources/vhci-hcd-1.15.zip and extract the VHCI source files by using the
unzip vhci-hcd-1.15.zip
command. -
Make sure that you have the Linux VDA package installed, and then run either of the following commands:
-
sudo bash ctxusbcfg.sh dkms
This command lets you use the Dynamic Kernel Module Support (DKMS) program to manage your VHCI kernel modules. DKMS isn’t available for SUSE.
Note:
The
sudo bash ctxusbcfg.sh dkms
command installs thekernel-devel
andDKMS
programs on your VDA. When installing the programs on RHEL and CentOS, the command installs and enables the Extra Packages for Enterprise Linux (EPEL) repository on your VDA.DKMS might fail to build the VHCI kernel modules (
usb-vhci-hcd.ko
andusb-vhci-iocif.ko
) when you conduct a major kernel upgrade, for example, from version 4.x.y to version 5.x.y. If DKMS fails, runsudo bash ctxusbcfg.sh dkms
again. -
sudo bash ctxusbcfg.sh build
This command builds and installs the VHCI kernel modules without the DKMS option.
-
Troubleshoot USB redirection issues
Use the information in this section to troubleshoot various issues that you might come across when using the Linux VDA.
Unable to unmount the redirected USB disk
The Linux VDA manages all USB disks redirected from Citrix Workspace app under the administrative privilege to make sure that only the owner can access the redirected device. As a result, you can unmount the device only with the administrative privilege.
File lost when you stop redirecting a USB disk
If you stop redirecting a USB disk immediately using the toolbar of Citrix Workspace app, the files you modified or created on the disk can be lost. This issue occurs because when you write data to a file system, the system mounts the memory cache in the file system. The data isn’t written to the disk itself. If you stop redirecting using the toolbar of Citrix Workspace app, there’s no time remaining for the data being flushed to the disk, which results in lost data. To resolve this issue, use the sync command in a terminal to flush data to the disk before stopping USB redirection.
No devices in the toolbar of Citrix Workspace app
Sometimes, you possibly can’t see devices listed in the toolbar of Citrix Workspace app, which indicates that no USB redirection is taking place. If you come across the issue, verify the following:
- The policy is configured to allow USB redirection
- The Kernel module is compatible with your kernel
Failed redirection when USB devices can be seen in the toolbar of Citrix Workspace app, but are labeled policy restricted
When the issue occurs, do the following:
- Configure the Linux VDA policy to enable redirection.
-
Check whether any additional policy restrictions are configured in the registry of Citrix Workspace app. Check DeviceRules in the registry path to make sure that the device isn’t denied access by this setting:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\ICA Client\GenericUSB
A USB device is redirected successfully, but I can’t use it in my session
Typically, only supported USB devices can be redirected. Other devices might be redirected to an active Linux VDA session too. For every redirected device, a node owned by the user is created in the system /dev path. However, it’s the drivers and the configuration that determine whether the user can use the device successfully. If you find a device owned (plugged in) but inaccessible, add the device to an unrestricted policy.
Note:
For USB drives, the Linux VDA configures and mounts the disk. The user (and only the owner who installed it) can access the disk without any additional configuration. This might not be the case for devices that aren’t in the supported device list.