Linux Virtual Delivery Agent

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 设备重定向

(仅适用于 CentOS、RHEL 和 Rocky Linux)安装或编译 USB/IP 内核模块

Linux VDA 使用 USB/IP 作为 USB 设备重定向的虚拟主机控制器。因为在大多数情况下,USB/IP 内核模块是随 Linux 内核版本 3.17 及更高版本发布的,因此,默认情况下您不必构建内核模块。但是,USB/IP 内核模块不适用于 CentOS、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 设备重定向(仅限工作站主机)。

编辑设置对话框中:

  1. 选择允许
  2. 单击确定

启用 USB 设备重定向

设置 USB 设备重定向规则

启用 USB 重定向策略后,使用 Citrix Studio 设置重定向规则,方法是指定允许(或拒绝)在 Linux VDA 上使用哪些设备。

客户端 USB 设备重定向规则对话框中:

  1. 单击新建添加重定向规则,或单击编辑检查现有规则。
  2. 创建(或编辑)规则后,单击确定

客户端 USB 设备重定向规则设置

有关如何配置通用 USB 设备重定向的详细信息,请参阅 Citrix Generic USB Redirection Configuration Guide(《Citrix 通用 USB 重定向配置指南》)。

解决 USB 设备重定向问题

请根据本节中的信息解决您在使用 Linux VDA 时可能遇到的各种问题。

无法卸载重定向的 USB 磁盘

Linux VDA 使用管理权限管理从 Citrix Workspace 应用程序重定向的所有 USB 磁盘,以确保只有所有者能够访问重定向的设备。因此,您只能使用管理权限卸载设备。

无法卸载设备

停止重定向 USB 磁盘时文件丢失

如果使用 Citrix Workspace 应用程序的工具栏立即停止重定向 USB 磁盘,您在磁盘上修改或创建的文件可能会丢失。出现此问题是因为您将数据写入文件系统时,系统在文件系统中装载内存缓存。数据并未写入磁盘本身。如果使用 Citrix Workspace 应用程序的工具栏停止重定向,则没有时间将数据刷新至磁盘,从而导致数据丢失。

为了解决此问题,请先在终端使用 sync 命令将数据刷新至磁盘,然后再停止 USB 重定向。

Citrix Workspace 应用程序的工具栏中无设备

有时,您可能无法看到 Citrix Workspace 应用程序的工具栏中没有列出设备,这表示没有进行 USB 重定向。

Workspace 应用程序工具栏中的“设备”选项卡

如果遇到问题,请验证以下各项:

  • 策略已配置为允许 USB 设备重定向。
  • Citrix USB 服务模块正在运行。

如果策略未正确设置,请参考本文中的设置 USB 设备重定向策略部分进行更正。

如果 Citrix USB 服务模块未运行,请完成以下步骤:

  1. 请使用以下命令检查 USB/IP 内核模块在您的 Linux 发行版中是否可用:

    modinfo usbip-core
    <!--NeedCopy-->
    
  2. 如果输出如下所示,请根据您的 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 内核模块:

      1. 下载 USB/IP 内核模块源代码。

        转至位于 https://github.com/torvalds/linux/tree/master/drivers/usb/usbip 的 Linux 内核存储库,选择目标 Linux 内核版本(v4.15 或更高版本)标记,然后获取链接,例如 https://github.com/torvalds/linux/tree/v4.15/drivers/usb/usbip

        转至 DownGit 并输入之前的链接,创建用于下载 USB/IP 源代码的下载链接。

      2. 请使用以下命令解压源文件:

        unzip ${USBIP_SRC}.zip
        
        cd usbip
        <!--NeedCopy-->
        
      3. 按如下所示修改 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-->
        
      4. 编译源代码:

        apt-get install linux-headers-`uname -r`
        
        make -C /lib/modules/`uname -r`/build M=$PWD
        <!--NeedCopy-->
        
      5. 安装 USB/IP 内核模块:

        cp usbip-core.ko vhci-hcd.ko /opt/Citrix/VDA/lib64/
        <!--NeedCopy-->
        
      6. 重新启动 ctxusbsd 服务以加载 USB/IP 内核模块:

        service ctxusbsd restart
        <!--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 会配置和装载磁盘。用户(且仅限安装它的所有者)无需执行任何其他配置即可访问该磁盘。这可能不适用于未包含在受支持的设备列表中的设备。

USB 设备重定向