USB 设备重定向
USB 设备在 Citrix Workspace™ 应用程序和 Linux VDA 桌面之间共享。当 USB 设备重定向到桌面时,您可以像本地连接一样使用该 USB 设备。
提示:
我们建议在网络延迟低于 100 毫秒时使用 USB 设备重定向。当网络延迟高于 200 毫秒时,请勿使用 USB 设备重定向。
-
USB 设备重定向包括三个主要功能领域:
- 开源 USB/IP 项目
- Citrix USB 会话模块
- Citrix USB 服务模块
开源 USB/IP 项目:
USB/IP 项目由一个 Linux 内核驱动程序和一些用户模式库组成,这些库允许您与内核驱动程序通信以获取所有 USB 数据。
Linux VDA 基于开源 USB/IP 项目实现 USB 设备重定向,并重用 USB/IP 的内核驱动程序和用户模式库。但是,Linux VDA 和 Citrix Workspace 应用程序之间的所有 USB 数据传输都由 Citrix ICA USB 协议封装。
Citrix USB 会话模块:
Citrix USB 会话模块充当 USB/IP 内核模块和 Citrix Workspace 应用程序之间的通信桥梁。
Citrix USB 服务模块:
Citrix USB 服务模块管理 USB 设备上的所有操作,例如连接或分离 USB 设备。
USB 设备重定向的工作原理
通常,如果 USB 设备成功重定向到 Linux VDA,则会在系统 /dev 路径中创建一个或多个设备节点。但是,有时重定向的设备无法用于活动的 Linux VDA 会话。USB 设备依赖驱动程序才能正常运行,并且某些设备需要特殊驱动程序。如果未提供驱动程序,则活动的 Linux VDA 会话将无法访问重定向的 USB 设备。为确保 USB 设备连接性,请安装驱动程序并正确配置系统。
Linux VDA 支持从客户端成功重定向的 USB 设备列表。
支持的 USB 设备
提示:
我们已添加对 USB 3.0 端口的支持。您可以将 USB 3.0 设备插入客户端设备上的 USB 3.0 端口。
以下设备已验证支持此版本的 Linux VDA。其他设备可能可以自由使用,但结果可能出乎意料:
| USB 大容量存储设备 | VID:PID | 文件系统 |
|---|---|---|
Netac Technology Co., Ltd |
0dd8:173c | FAT32, NTFS |
Kingston Datatraveler 101 II |
0951:1625 | FAT32, NTFS |
Kingston Datatraveler GT101 G2 |
1567:8902 | FAT32, NTFS |
SanDisk SDCZ80 flash drive |
0781:5580 | FAT32, NTFS |
WD HDD |
1058:10B8 | FAT32, NTFS |
Toshiba Kingston DataTraveler 3.0 USB device |
0930:6545 | FAT32, NTFS |
Taiwan OEM – OBSOLETE VendorCo ProductCode Disk 2.0 |
FFFF:5678 | FAT32, NTFS |
TD-RDF5A Transcend USB device |
8564:4000 | FAT32, NTFS |
注意:
要在 Amazon Linux 2、CentOS、RHEL、Rocky Linux 和 SUSE 上使用 NTFS,请首先在这些发行版上启用 NTFS 支持。
| USB 3D 鼠标 | VID:PID |
|---|---|
3DConnexion SpaceMouse Pro |
046d: c62b |
| USB 扫描仪 | VID:PID |
Epson Perfection V330 photo |
04B8: 0142 |
| Yubico USB | VID:PID |
Yubico YubiKey OTP+FIDO+CCID -Keyboard, HID |
1050:0407 |
| 网络摄像头 USB | VID:PID |
Logitech composite USB device – WebCam, Audio |
0460:0825 |
配置 USB 设备重定向
安装或编译 USB/IP 内核模块(仅适用于 CentOS、RHEL 和 Rocky Linux)
Linux VDA 使用 USB/IP 作为 USB 设备重定向的虚拟主机控制器。由于在大多数情况下,USB/IP 内核模块随 Linux 内核版本 3.17 及更高版本发布,因此您无需默认构建内核模块。但是,USB/IP 内核模块不适用于 CentOS、RHEL 和 Rocky Linux。要将 USB 设备重定向与这些 Linux 发行版一起使用,您必须安装或编译 USB/IP 内核模块。根据您的 Linux 发行版,从 https://pkgs.org/download/kmod-usbip 下载并安装 USB/IP。
设置 USB 设备重定向策略
Citrix 策略控制 USB 设备重定向是启用还是禁用。设备类型也可以使用 Delivery Controller™ 策略指定。为 Linux VDA 配置 USB 设备重定向时,请配置以下策略和规则:
- 客户端 USB 设备重定向策略
- 客户端 USB 设备重定向规则
启用 USB 设备重定向
在 Citrix Studio 中,从客户端启用(或禁用)USB 设备重定向(仅适用于工作站主机)。
在编辑设置对话框中:
- 选择允许。
-
单击确定。
设置 USB 设备重定向规则
启用 USB 重定向策略后,通过指定允许(或拒绝)在 Linux VDA 上使用哪些设备,使用 Citrix Studio 设置重定向规则。
在客户端 USB 设备重定向规则对话框中:
- 单击新建以添加重定向规则,或单击编辑以查看现有规则。
- 创建(或编辑)规则后,单击确定。

排查 USB 设备重定向问题
使用本部分中的信息排查使用 Linux VDA 时可能遇到的各种问题。
无法卸载重定向的 USB 磁盘
Linux VDA 以管理员权限管理从 Citrix Workspace app 重定向的所有 USB 磁盘,以确保只有所有者才能访问重定向的设备。因此,您只能以管理员权限卸载设备。

停止重定向 USB 磁盘时文件丢失
如果您使用 Citrix Workspace app 工具栏立即停止重定向 USB 磁盘,则您在磁盘上修改或创建的文件可能会丢失。出现此问题的原因是,当您将数据写入文件系统时,系统会在文件系统中装载内存缓存。数据不会写入磁盘本身。如果您使用 Citrix Workspace app 工具栏停止重定向,则没有剩余时间将数据刷新到磁盘,从而导致数据丢失。
要解决此问题,请在终端中使用 sync 命令将数据刷新到磁盘,然后再停止 USB 重定向。
Citrix Workspace app 工具栏中没有设备
有时,您可能无法在 Citrix Workspace app 工具栏中看到列出的设备,这表示未进行 USB 重定向。

如果遇到此问题,请验证以下各项:
- 策略已配置为允许 USB 设备重定向。
-
Citrix USB 服务模块正在运行。
- 如果策略设置不正确,请参阅本文中的设置 USB 设备重定向策略部分进行更正。
如果 Citrix USB 服务模块未运行,请完成以下步骤:
-
使用以下命令检查您的 Linux 发行版上是否有 USB/IP 内核模块:
modinfo usbip-core <!--NeedCopy--> -
如果输出如下所示,请根据您的 Linux 发行版安装或编译 USB/IP 内核模块:
modinfo: ERROR: Module usbip-core not found. <!--NeedCopy-->- 对于 Amazon Linux 2、CentOS、RHEL 和 Rocky Linux,请参阅本文中的安装或编译 USB/IP 内核模块部分。
- 对于 SUSE,请从 https://software.opensuse.org/package/usbip 下载并安装 USB/IP 软件包。
-
对于 Ubuntu/Debian,请完成以下步骤以编译和安装 USB/IP 内核模块:
-
下载 USB/IP 内核模块源代码。
转到 Linux 内核存储库 https://github.com/torvalds/linux/tree/master/drivers/usb/usbip,选择目标 Linux 内核版本(v4.15 或更高版本)标记,并获取类似 https://github.com/torvalds/linux/tree/v4.15/drivers/usb/usbip 的链接。
转到 DownGit 并输入上述链接以创建用于下载 USB/IP 源代码的下载链接。
-
使用以下命令解压缩源文件:
unzip ${USBIP_SRC}.zip cd usbip <!--NeedCopy--> -
按如下方式修改 Makefile 文件:
# SPDX-License-Identifier: GPL-2.0 ccflags-$(CONFIG_USBIP_DEBUG) := -DDEBUG obj-$(CONFIG_USBIP_CORE) += usbip-core.o usbip-core-y := usbip_common.o usbip_event.o obj-$(CONFIG_USBIP_VHCI_HCD) += vhci-hcd.o vhci-hcd-y := vhci_sysfs.o vhci_tx.o vhci_rx.o vhci_hcd.o #obj-$(CONFIG_USBIP_HOST) += usbip-host.o #usbip-host-y := stub_dev.o stub_main.o stub_rx.o stub_tx.o #obj-$(CONFIG_USBIP_VUDC) += usbip-vudc.o #usbip-vudc-y := vudc_dev.o vudc_sysfs.o vudc_tx.o vudc_rx.o vudc_transfer.o vudc_main.o <!--NeedCopy--> -
编译源代码:
apt-get install linux-headers-`uname -r` make -C /lib/modules/`uname -r`/build M=$PWD <!--NeedCopy--> -
安装 USB/IP 内核模块:
cp usbip-core.ko vhci-hcd.ko /opt/Citrix/VDA/lib64/ <!--NeedCopy--> -
重新启动 ctxusbsd 服务以加载 USB/IP 内核模块:
service ctxusbsd restart <!--NeedCopy-->
-
USB 设备可在 Citrix Workspace app 工具栏中看到,但标记为“策略受限”时重定向失败
出现此问题时,请执行以下操作:
- 配置 Linux VDA 策略以启用重定向。
-
检查 Citrix Workspace app 注册表中是否配置了任何其他策略限制。检查注册表路径中的 DeviceRules 以确保此设置未拒绝设备访问:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\ICA Client\GenericUSB
USB 设备已成功重定向,但我无法在会话中使用它
通常,只有支持的 USB 设备才能重定向。其他设备也可能重定向到活动的 Linux VDA 会话。对于每个重定向的设备,都会在系统 /dev 路径中创建一个由用户拥有的节点。但是,驱动程序和配置决定了用户是否可以成功使用该设备。如果您发现设备已拥有(已插入)但无法访问,请将该设备添加到不受限制的策略中。
注意:
对于 USB 驱动器,Linux VDA 会配置并装载磁盘。用户(并且只有安装它的所有者)无需任何额外配置即可访问磁盘。对于不在支持设备列表中的设备,情况可能并非如此。
