Linux 虚拟投递代理 2407

USB 设备重定向

USB 设备在 Citrix Workspace™ app 和 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 app 之间的所有 USB 数据传输都由 Citrix ICA USB 协议封装。

Citrix USB 会话模块:

Citrix USB 会话模块充当 USB/IP 内核模块与 Citrix Workspace app 之间的通信桥梁。

Citrix USB 服务模块:

Citrix USB 服务模块管理 USB 设备上的所有操作,例如,连接或分离 USB 设备。

USB 设备重定向的工作原理

通常,如果 USB 设备成功重定向到 Linux VDA,则会在系统 /dev 路径中创建一个或多个设备节点。但是,有时重定向的设备无法用于活动的 Linux VDA 会话。USB 设备依赖驱动程序才能正常运行,并且某些设备需要特殊驱动程序。如果未提供驱动程序,则重定向的 USB 设备将无法访问活动的 Linux VDA 会话。为确保 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、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 设备重定向

(仅限 RHEL 和 Rocky Linux)安装或编译 USB/IP 内核模块

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

编辑设置对话框中:

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

启用 USB 设备重定向

设置 USB 设备重定向规则

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

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

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

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

注意:

配置 USB 设备重定向时,请确保将客户端 USB 设备重定向选项设置为允许,并将客户端 USB 设备重定向规则配置为 Allow:#all ok。未能配置这两个设置可能导致在会话中单击时外部鼠标消失。

排查 USB 设备重定向问题

使用本节中的信息排查在使用 Linux VDA 时可能遇到的各种问题。

无法卸载重定向的 USB 磁盘

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

Unable to unmount a device

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

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

要解决此问题,请在停止 USB 重定向之前,在终端中使用 sync 命令将数据刷新到磁盘。

Citrix Workspace app 工具栏中没有设备

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

The devices tab in the workspace app toolbar

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

  • 策略配置为允许 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,请参阅本文中的安装或编译 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 app 工具栏中可见但被标记为“策略受限”时重定向失败

出现此问题时,请执行以下操作:

  • 配置 Linux VDA 策略以启用重定向。
  • 检查 Citrix Workspace app 的注册表中是否配置了任何其他策略限制。检查注册表路径中的 DeviceRules,以确保此设置未拒绝设备访问:

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Citrix\ICA Client\GenericUSB

USB 设备已成功重定向,但我无法在会话中使用它

通常,只有支持的 USB 设备才能重定向。其他设备也可能重定向到活动的 Linux VDA 会话。对于每个重定向的设备,都会在系统 /dev 路径中创建一个由用户拥有的节点。但是,驱动程序和配置决定了用户是否可以成功使用该设备。如果您发现设备已拥有(已插入)但无法访问,请将该设备添加到不受限制的策略中。

注意:

对于 USB 驱动器,Linux VDA 会配置并装载磁盘。用户(并且只有安装它的所有者)无需任何额外配置即可访问磁盘。对于不在支持设备列表中的设备,情况可能并非如此。