Redirección de dispositivos USB

Los dispositivos USB se comparten entre la aplicación Citrix Workspace™ y el escritorio de Linux VDA. Cuando un dispositivo USB se redirige al escritorio, puede usar el dispositivo USB como si estuviera conectado localmente.

Consejo:

Recomendamos usar la redirección de dispositivos USB cuando la latencia de red sea inferior a 100 milisegundos. No utilice la redirección de dispositivos USB cuando la latencia de red sea superior a 200 milisegundos.

La redirección de dispositivos USB incluye tres áreas principales de funcionalidad:

  • Proyecto USB/IP de código abierto
  • Módulo de sesión USB de Citrix
  • Módulo de servicio USB de Citrix

Proyecto USB/IP de código abierto:

El proyecto USB/IP consta de un controlador del kernel de Linux y algunas bibliotecas en modo de usuario que le permiten comunicarse con el controlador del kernel para obtener todos los datos USB.

El Linux VDA implementa la redirección de dispositivos USB basada en el proyecto USB/IP de código abierto y reutiliza el controlador del kernel y las bibliotecas en modo de usuario de USB/IP. Sin embargo, todas las transferencias de datos USB entre el Linux VDA y la aplicación Citrix Workspace están encapsuladas por el protocolo USB de Citrix ICA.

Módulo de sesión USB de Citrix:

El módulo de sesión USB de Citrix actúa como un puente de comunicación entre el módulo del kernel USB/IP y la aplicación Citrix Workspace.

Módulo de servicio USB de Citrix:

El módulo de servicio USB de Citrix gestiona todas las operaciones en dispositivos USB, por ejemplo, conectar o desconectar dispositivos USB.

Cómo funciona la redirección de dispositivos USB

Normalmente, si un dispositivo USB se redirige correctamente al VDA de Linux, se crea uno o varios nodos de dispositivo en la ruta /dev del sistema. Sin embargo, a veces el dispositivo redirigido no se puede usar en una sesión activa del VDA de Linux. Los dispositivos USB dependen de los controladores para funcionar correctamente y algunos dispositivos requieren controladores especiales. Si no se proporcionan los controladores, los dispositivos USB redirigidos son inaccesibles para la sesión activa del VDA de Linux. Para garantizar la conectividad de los dispositivos USB, instale los controladores y configure el sistema correctamente.

El VDA de Linux admite una lista de dispositivos USB que se redirigen correctamente desde el cliente.

Dispositivos USB admitidos

Sugerencia:

Hemos añadido compatibilidad con puertos USB 3.0. Puede insertar dispositivos USB 3.0 en puertos USB 3.0 de un dispositivo cliente.

Se ha comprobado que los siguientes dispositivos son compatibles con esta versión del VDA de Linux. Otros dispositivos se pueden usar libremente, con resultados inesperados:

Dispositivo de almacenamiento masivo USB VID:PID Sistema de archivos
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

Nota:

Para usar NTFS en RHEL, Rocky Linux y SUSE, habilite primero la compatibilidad con NTFS en estas distribuciones.

Ratón USB 3D VID:PID
3DConnexion SpaceMouse Pro 046d: c62b
Escáner USB VID:PID
Epson Perfection V330 photo 04B8: 0142
Yubico USB VID:PID
Yubico YubiKey OTP+FIDO+CCID -Keyboard, HID 1050:0407
Cámara web USB VID:PID
Logitech composite USB device – WebCam, Audio 0460:0825

Configurar la redirección de dispositivos USB

(Solo para RHEL y Rocky Linux) Instalar o compilar el módulo del kernel USB/IP

El VDA de Linux utiliza USB/IP como controlador de host virtual para la redirección de dispositivos USB. Dado que, en la mayoría de los casos, el módulo del kernel USB/IP se lanza con la versión 3.17 del kernel de Linux y posteriores, no es necesario compilar el módulo del kernel de forma predeterminada. Sin embargo, el módulo del kernel USB/IP no está disponible para RHEL y Rocky Linux. Para usar la redirección de dispositivos USB con estas distribuciones de Linux, debe instalar o compilar el módulo del kernel USB/IP. Descargue e instale USB/IP desde https://pkgs.org/download/kmod-usbip según su distribución de Linux.

Establecer directivas de redirección de dispositivos USB

Una directiva de Citrix controla si la redirección de dispositivos USB está habilitada o inhabilitada. El tipo de dispositivo también se puede especificar mediante una directiva de Delivery Controller™. Al configurar la redirección de dispositivos USB para el VDA de Linux, configure las siguientes directivas:

  • Directiva de redirección de dispositivos USB de cliente
  • Reglas de redirección de dispositivos USB de cliente

Habilitar la redirección de dispositivos USB

En Citrix Studio, habilite (o deshabilite) la redirección de dispositivos USB desde el cliente (solo para hosts de estación de trabajo).

En el cuadro de diálogo Editar configuración:

  1. Seleccione Permitido.
  2. Haga clic en Aceptar.

Habilitar redirección de dispositivos USB

Establecer reglas de redirección de dispositivos USB

Después de habilitar la política de redirección USB, establezca las reglas de redirección mediante Citrix Studio especificando qué dispositivos están permitidos (o denegados) en el VDA de Linux.

En el cuadro de diálogo Reglas de redirección de dispositivos USB del cliente:

  1. Haga clic en Nuevo para añadir una regla de redirección, o haga clic en Editar para revisar una regla existente.
  2. Después de crear (o editar) una regla, haga clic en Aceptar.

Configuración de la regla de redirección de dispositivos USB del cliente

Nota:

Al configurar la redirección de dispositivos USB, asegúrese de establecer la opción Redirección de dispositivos USB del cliente en Permitido y de configurar las Reglas de redirección de dispositivos USB del cliente como Allow:#all ok. Si no se configuran ambas opciones, el ratón externo puede desaparecer al hacer clic en una sesión.

Compatibilidad con la redirección USB para Ubuntu en Azure

De forma predeterminada, Ubuntu en Azure puede no incluir ciertos controladores de kernel USB. Puede habilitar la redirección USB para dispositivos genéricos y específicos siguiendo las instrucciones a continuación.

Habilitación de la redirección USB para dispositivos genéricos

Para dispositivos USB genéricos, como dispositivos de almacenamiento USB estándar, dispositivos USB HID YubiKey y adaptadores de red ASIX, puede ejecutar simplemente el siguiente script de configuración:

sudo /opt/Citrix/VDA/sbin/usbazure/ctxusbcfg.sh

Después de ejecutar el script, reinicie el servicio USB de Citrix para activar la compatibilidad:

sudo service ctxusbsd restart

Creación de módulos de controlador de kernel USB para dispositivos específicos

Para los dispositivos no compatibles de forma predeterminada, puede utilizar el siguiente flujo de trabajo genérico para crear e instalar los módulos de controlador de kernel necesarios. El siguiente ejemplo utiliza un Kingston DataTraveler 2.0 Stick (VID=0930, PID=6544) a modo de ilustración.

Requisito previo:

  • Una máquina VDA con el paquete Linux VDA instalado.

  • Una máquina física Linux que ejecute un kernel Linux genérico.

Identificar los controladores de kernel necesarios en la máquina física Linux

Paso 1 - Conectar el dispositivo

Conecte el dispositivo USB a una máquina física que ejecute un kernel Linux genérico.

Paso 2 - Preparar el script de identificación del controlador de kernel USB

Copie /opt/Citrix/VDA/sbin/usbazure/ctxusbkodriver.sh a la máquina física y hágalo ejecutable.

Paso 3 - Obtener VID y PID del dispositivo

Utilice lsusb para identificar el dispositivo USB conectado.

lsusb
Example output:
Bus 001 Device 040: ID 0930:6544 Toshiba Corp. TransMemory-Mini / Kingston DataTraveler 2.0 Stick
<!--NeedCopy-->

Paso 4 - Identificar los controladores de kernel necesarios

Ejecute el script auxiliar con el VID:PID del dispositivo:

./ctxusbkodriver.sh 0930:6544
Example output:
All USB Kernel drivers for 0930:6544:
usb-storage
<!--NeedCopy-->

Compilar e instalar los controladores de kernel en la máquina VDA

Paso 1 - Configurar el entorno de compilación

Ejecute el script de configuración para configurar el entorno de compilación y descargar el código fuente del kernel necesario en /root/.ctxusb:

sudo /opt/Citrix/VDA/sbin/usbazure/ctxusbcfg.sh

Paso 2 - Determinar la configuración de compilación del kernel

Utilice el script de configuración para recuperar las opciones de compilación del módulo de kernel adecuadas:

sudo /opt/Citrix/VDA/sbin/usbazure/ctxusbkoconfig.sh /root/.ctxusb/linux usb-storage
Example output:
Config option: CONFIG_USB_STORAGE
Folder: /root/.ctxusb/linux/drivers/usb/storage
<!--NeedCopy-->

Paso 3 - Inspeccionar y registrar las opciones de configuración del kernel

cd /root/.ctxusb/linux
make menuconfig
<!--NeedCopy-->
  • Utilice la función de búsqueda (pulse /) para localizar opciones (por ejemplo, CONFIG_USB_STORAGE).
  • Registre la configuración relevante (por ejemplo, CONFIG_USB_SUPPORT=y, CONFIG_USB_STORAGE=m).
  • Salir sin guardar los cambios.

Paso 4 - Compilar e instalar los controladores de kernel

Compile e instale el módulo del kernel:

sudo /opt/Citrix/VDA/sbin/usbazure/ctxusbkobuild.sh /root/.ctxusb/linux/drivers/usb/storage "CONFIG_USB_SUPPORT=y CONFIG_USB_STORAGE=m"

Paso 5: verificar los controladores del kernel

modinfo usb-storage

Una vez completado correctamente, el controlador del kernel para el dispositivo USB especificado se ha compilado e instalado.

Solucionar problemas de redirección de dispositivos USB

Utilice la información de esta sección para solucionar varios problemas que pueden surgir al usar Linux VDA.

No se puede desmontar el disco USB redirigido

El Linux VDA administra todos los discos USB redirigidos desde la aplicación Citrix Workspace con privilegios administrativos para asegurarse de que solo el propietario pueda acceder al dispositivo redirigido. Como resultado, solo puede desmontar el dispositivo con privilegios administrativos.

No se puede desmontar un dispositivo

Archivos perdidos al detener la redirección de un disco USB

Si deja de redirigir un disco USB inmediatamente mediante la barra de herramientas de la aplicación Citrix Workspace, los archivos que haya modificado o creado en el disco pueden perderse. Este problema ocurre porque, al escribir datos en un sistema de archivos, el sistema monta la caché de memoria en el sistema de archivos. Los datos no se escriben en el propio disco. Si deja de redirigir mediante la barra de herramientas de la aplicación Citrix Workspace, no queda tiempo para que los datos se vacíen en el disco, lo que provoca la pérdida de datos.

Para resolver este problema, utilice el comando sync en un terminal para vaciar los datos en el disco antes de detener la redirección USB.

No hay dispositivos en la barra de herramientas de la aplicación Citrix Workspace

A veces, es posible que no pueda ver los dispositivos enumerados en la barra de herramientas de la aplicación Citrix Workspace, lo que indica que no se está produciendo ninguna redirección USB.

La pestaña de dispositivos en la barra de herramientas de la aplicación Workspace

Si encuentra el problema, verificar lo siguiente:

  • La política está configurada para permitir la redirección de dispositivos USB.
  • El módulo de servicio USB de Citrix se está ejecutando.

Si la política no está configurada correctamente, corríjala consultando la sección Configurar políticas de redirección de dispositivos USB de este artículo.

Si el módulo de servicio USB de Citrix no se está ejecutando, complete los siguientes pasos:

  1. Compruebe si hay un módulo de kernel USB/IP disponible en su distribución de Linux utilizando el siguiente comando:

    modinfo usbip-core
    <!--NeedCopy-->
    
  2. Si la salida se muestra como se indica a continuación, instale o compile el módulo de kernel USB/IP según su distribución de Linux:

    modinfo: ERROR: Module usbip-core not found.
    <!--NeedCopy-->
    
    • Para RHEL y Rocky Linux, consulte la sección Instalar o compilar el módulo de kernel USB/IP de este artículo.
    • Para SUSE, descargue e instale el paquete USB/IP desde https://software.opensuse.org/package/usbip.
    • Para Ubuntu/Debian, complete los siguientes pasos para compilar e instalar el módulo de kernel USB/IP:

      1. Descargue el código fuente del módulo de kernel USB/IP.

        Vaya al repositorio del kernel de Linux en https://github.com/torvalds/linux/tree/master/drivers/usb/usbip, seleccione la etiqueta de la versión del kernel de Linux de destino (v4.15 o posterior) y obtenga el enlace como https://github.com/torvalds/linux/tree/v4.15/drivers/usb/usbip.

        Vaya a DownGit e introduzca el enlace anterior para crear un enlace de descarga para el código fuente de USB/IP.

      2. Descomprima el archivo fuente utilizando los siguientes comandos:

        unzip ${USBIP_SRC}.zip
        
        cd usbip
        <!--NeedCopy-->
        
      3. Modifique el archivo Makefile de la siguiente manera:

        # 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. Compile el código fuente:

        apt-get install linux-headers-`uname -r`
        
        make -C /lib/modules/`uname -r`/build M=$PWD
        <!--NeedCopy-->
        
      5. Instale el módulo del kernel USB/IP:

        cp usbip-core.ko vhci-hcd.ko /opt/Citrix/VDA/lib64/
        <!--NeedCopy-->
        
      6. Reinicie el servicio ctxusbsd para cargar el módulo del kernel USB/IP:

        systemctl restart ctxusbsd
        <!--NeedCopy-->
        

Error de redirección cuando los dispositivos USB son visibles en la barra de herramientas de la aplicación Citrix Workspace, pero están etiquetados como “restringidos por directiva”

Cuando se produzca el problema, haga lo siguiente:

  • Configure la directiva de Linux VDA para habilitar la redirección.
  • Compruebe si hay restricciones de directiva adicionales configuradas en el registro de la aplicación Citrix Workspace. Compruebe DeviceRules en la ruta del registro para asegurarse de que el dispositivo no tenga el acceso denegado por esta configuración:

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

Un dispositivo USB se redirige correctamente, pero no puedo usarlo en mi sesión

Normalmente, solo se pueden redirigir los dispositivos USB compatibles. Otros dispositivos también se pueden redirigir a una sesión activa de Linux VDA. Para cada dispositivo redirigido, se crea un nodo propiedad del usuario en la ruta /dev del sistema. Sin embargo, son los controladores y la configuración los que determinan si el usuario puede usar el dispositivo correctamente. Si encuentra un dispositivo que es de su propiedad (conectado) pero inaccesible, agregue el dispositivo a una directiva sin restricciones.

Nota:

Para las unidades USB, el Linux VDA configura y monta el disco. El usuario (y solo el propietario que lo instaló) puede acceder al disco sin ninguna configuración adicional. Puede que no sea el caso de los dispositivos que no están en la lista de dispositivos compatibles.