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 大容量存储设备 供应商 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 设备重定向(仅适用于工作站主机)。

在“编辑设置”对话框中:

  1. 选择“允许”。
  2. 单击“确定”。

启用 USB 设备重定向

设置 USB 设备重定向规则

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

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

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

客户端 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 重定向。

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

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

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

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

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

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

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

      1. 下载 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 源代码的下载链接。

      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 内核模块:

        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 会配置并装载磁盘。用户(并且只有安装它的所有者)无需任何额外配置即可访问磁盘。对于不在支持设备列表中的设备,情况可能并非如此。