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 大容量存储设备 | 供应商 ID:产品 ID | 文件系统 |
|---|---|---|
朗科科技股份有限公司 |
0dd8:173c | FAT32, NTFS |
金士顿 Datatraveler 101 II |
0951:1625 | FAT32, NTFS |
金士顿 Datatraveler GT101 G2 |
1567:8902 | FAT32, NTFS |
闪迪 SDCZ80 闪存驱动器 |
0781:5580 | FAT32, NTFS |
西部数据硬盘 |
1058:10B8 | FAT32, NTFS |
东芝金士顿 DataTraveler 3.0 USB 设备 |
0930:6545 | FAT32, NTFS |
台湾 OEM – 已停产 VendorCo ProductCode Disk 2.0 |
FFFF:5678 | FAT32, NTFS |
TD-RDF5A 创见 USB 设备 |
8564:4000 | FAT32, NTFS |
注意:
要在 Amazon Linux 2、RHEL、Rocky Linux 和 SUSE 上使用 NTFS,请首先在这些发行版上启用 NTFS 支持。
| USB 3D 鼠标 | 供应商 ID:产品 ID |
|---|---|
3DConnexion SpaceMouse Pro |
046d: c62b |
| USB 扫描仪 | 供应商 ID:产品 ID |
爱普生 Perfection V330 照片扫描仪 |
04B8: 0142 |
| Yubico USB | 供应商 ID:产品 ID |
Yubico YubiKey OTP+FIDO+CCID - 键盘, HID |
1050:0407 |
| 网络摄像头 USB | 供应商 ID:产品 ID |
罗技复合 USB 设备 – 网络摄像头, 音频 |
0460:0825 |
配置 USB 设备重定向
(仅适用于 RHEL 和 Rocky Linux)安装或编译 USB/IP 内核模块
Linux VDA 使用 USB/IP 作为 USB 设备重定向的虚拟主机控制器。由于在大多数情况下,USB/IP 内核模块随 Linux 内核版本 3.17 及更高版本发布,因此默认情况下您无需构建内核模块。但是,USB/IP 内核模块不适用于 RHEL 和 Rocky Linux。要在这些 Linux 发行版上使用 USB 设备重定向,您必须安装或编译 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 设备重定向时,请确保将“客户端 USB 设备重定向”选项设置为“允许”,并将“客户端 USB 设备重定向规则”配置为“允许:#all ok”。如果未能同时配置这两个设置,可能会导致在会话中单击时外部鼠标消失。
解决 USB 设备重定向问题
使用本节中的信息可解决使用 Linux VDA 时可能遇到的各种问题。
无法卸载重定向的 USB 磁盘
Linux VDA 以管理员权限管理从 Citrix Workspace 应用程序重定向的所有 USB 磁盘,以确保只有所有者才能访问重定向的设备。因此,您只能以管理员权限卸载设备。

停止重定向 USB 磁盘时文件丢失
如果您使用 Citrix Workspace 应用程序的工具栏立即停止重定向 USB 磁盘,则您在该磁盘上修改或创建的文件可能会丢失。出现此问题的原因是,当您向文件系统写入数据时,系统会将内存缓存装载到文件系统中。数据不会写入磁盘本身。如果您使用 Citrix Workspace 应用程序的工具栏停止重定向,则没有剩余时间将数据刷新到磁盘,从而导致数据丢失。
要解决此问题,请在停止 USB 重定向之前,在终端中使用 sync 命令将数据刷新到磁盘。
Citrix Workspace 应用程序的工具栏中没有设备
有时,您可能无法在 Citrix Workspace 应用程序的工具栏中看到列出的设备,这表示没有进行 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-->- 对于 RHEL 和 Rocky Linux,请参阅本文中的仅适用于 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 内核模块:
systemctl restart ctxusbsd <!--NeedCopy-->
-
当 USB 设备在 Citrix Workspace 应用程序的工具栏中可见但被标记为“策略受限”时重定向失败
出现此问题时,请执行以下操作:
- 配置 Linux VDA 策略以启用重定向。
-
检查 Citrix Workspace 应用程序的注册表中是否配置了任何其他策略限制。检查注册表路径中的 DeviceRules,确保设备未被此设置拒绝访问:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\ICA Client\GenericUSB
USB 设备已成功重定向,但我无法在会话中使用它
通常,只有支持的 USB 设备才能重定向。其他设备也可能重定向到活动的 Linux VDA 会话。对于每个重定向的设备,都会在系统 /dev 路径中创建一个由用户拥有的节点。但是,驱动程序和配置决定了用户是否可以成功使用该设备。如果您发现设备已拥有(已插入)但无法访问,请将该设备添加到不受限制的策略中。
注意:
对于 USB 驱动器,Linux VDA 会配置并装载磁盘。用户(并且只有安装它的所有者)无需任何额外配置即可访问磁盘。对于不在支持设备列表中的设备,情况可能并非如此。