Linux Virtual Delivery Agent

Redirection de périphérique USB

Les périphériques USB sont partagés entre l’application Citrix Workspace et le bureau Linux VDA. Lorsqu’un périphérique USB a été redirigé sur le bureau, vous pouvez utiliser le périphérique USB comme s’il était connecté localement.

Conseil :

Nous vous recommandons d’utiliser la redirection de périphérique USB lorsque la latence réseau est inférieure à 100 millisecondes. N’utilisez pas la redirection de périphérique USB lorsque la latence réseau est supérieure à 200 millisecondes.

La redirection de périphérique USB contient trois domaines de fonctionnalité :

  • Projet USB/IP Open Source
  • Module de session USB Citrix
  • Module de service USB Citrix

Projet USB/IP Open Source :

Le projet USB/IP comprend un pilote noyau Linux et des bibliothèques en mode utilisateur, ce qui vous permet de communiquer avec le pilote noyau pour obtenir toutes les données USB.

Le Linux VDA implémente la redirection de périphérique USB sur la base du projet USB/IP Open Source et réutilise le pilote noyau et les bibliothèques en mode utilisateur de l’USB/IP. Toutefois, tous les transferts de données USB entre le Linux VDA et l’application Citrix Workspace sont encapsulés dans le protocole USB ICA de Citrix.

Module de session USB Citrix :

Le module de session USB Citrix agit comme un pont de communication entre le module noyau USB/IP et l’application Citrix Workspace.

Module de service USB Citrix :

Le module de service USB Citrix gère toutes les opérations sur les périphériques USB, par exemple, connecter ou détacher des périphériques USB.

Fonctionnement de la redirection de périphérique USB

En général, si un périphérique USB n’est pas redirigé correctement vers Linux VDA, un ou plusieurs nœuds de périphérique sont créés dans le chemin d’accès system/dev. Parfois, cependant, le périphérique redirigé ne peut pas être utilisé par une session Linux VDA active. Les périphériques USB s’appuient sur les pilotes pour fonctionner correctement et certains périphériques nécessitent des pilotes spéciaux. Si les pilotes ne sont pas fournis, les périphériques USB redirigés sont inaccessibles à la session Linux VDA active. Pour assurer la connectivité du périphérique USB, installez les pilotes et configurez le système correctement.

Le Linux VDA prend en charge une liste de périphériques USB qui peuvent être redirigés depuis le client.

Périphériques USB pris en charge

Conseil :

La prise en charge des ports USB 3.0 a été ajoutée. Vous pouvez insérer des périphériques USB 3.0 dans les ports USB 3.0 d’un appareil client.

Les périphériques suivants ont été testés pour prendre en charge cette version de Linux VDA. D’autres périphériques peuvent être utilisés, avec des résultats imprévisibles :

Périphérique de stockage de masse USB VID:PID Système de fichiers
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

Remarque :

Pour utiliser NTFS sur Amazon Linux 2, CentOS, RHEL, Rocky Linux et SUSE, activez d’abord le support NTFS sur ces distributions.

Souris 3D USB VID:PID
3DConnexion SpaceMouse Pro 046d: c62b
Scanner USB VID:PID
Epson Perfection V330 photo 04B8: 0142
Yubico USB VID:PID
Yubico YubiKey OTP+FIDO+CCID -Keyboard, HID 1050:0407
Webcam USB VID:PID
Logitech composite USB device – WebCam, Audio 0460:0825

Configurer la redirection de périphérique USB

(pour CentOS, RHEL et Rocky Linux uniquement) Installer ou compiler le module noyau USB/IP

Le Linux VDA utilise USB/IP comme contrôleur hôte virtuel pour la redirection de périphérique USB. Le module noyau USB/IP étant publié dans la plupart des cas avec la version 3.17 et ultérieure du noyau Linux, vous n’avez pas besoin de créer le module noyau par défaut. Toutefois, le module noyau USB/IP n’est pas disponible pour CentOS, RHEL et Rocky Linux. Pour utiliser la redirection de périphérique USB avec ces distributions Linux, vous devez installer ou compiler le module noyau USB/IP. Téléchargez et installez le module noyau USB/IP depuis https://pkgs.org/download/kmod-usbip en fonction de votre distribution Linux.

Définir les stratégies de redirection de périphérique USB

Une stratégie Citrix détermine si la redirection de périphérique USB est activée ou désactivée. Le type de périphérique peut également être spécifié à l’aide d’une stratégie Delivery Controller. Lors de la configuration de la redirection de périphérique USB pour les Linux VDA, configurez les stratégies et règles suivantes :

  • Stratégie de redirection de périphérique USB client
  • Règles de redirection de périphérique USB client

Activer la redirection de périphérique USB

Dans Citrix Studio, activez (ou désactivez) la redirection de périphérique USB depuis le client (hôtes de station de travail uniquement).

Dans la boîte de dialogue Modifier le paramètre :

  1. Sélectionnez Autorisé.
  2. Cliquez sur OK.

Activer la redirection de périphérique USB

Définir des règles de redirection de périphérique USB

Après activation de la stratégie de redirection USB, définissez les règles de redirection à l’aide de Citrix Studio en spécifiant les périphériques qui sont autorisés (ou interdits) sur le Linux VDA.

Dans la boîte de dialogue Règles de redirection de périphérique USB client :

  1. Cliquez sur Nouveau pour ajouter une règle de redirection, ou cliquez sur Modifier pour vérifier une règle existante.
  2. Après avoir créé (ou modifié) une règle, cliquez sur OK.

Paramètre de règle de redirection de périphérique USB client

Pour de plus amples informations sur la configuration de la redirection de périphérique USB générique, reportez-vous au Guide de configuration de la redirection USB générique Citrix.

Résolution des problèmes de redirection de périphérique USB

Utilisez les informations de cette section pour résoudre les problèmes que vous pourriez rencontrer lors de l’utilisation du Linux VDA.

Impossible de démonter le disque USB redirigé

Le Linux VDA gère tous les disques USB redirigés à partir de l’application Citrix Workspace sous privilèges d’administrateur afin de garantir que seul le propriétaire peut accéder au périphérique redirigé. Par conséquent, vous ne pouvez pas démonter le périphérique sans privilèges d’administrateur.

Impossible de démonter le périphérique

Le fichier est perdu lorsque vous arrêtez la redirection d’un disque USB

Si vous arrêtez de rediriger un disque USB immédiatement à l’aide de la barre d’outils de l’application Citrix Workspace, les fichiers que vous avez modifiés ou créés sur le disque peuvent être perdus. Ce problème se produit car, lors de l’écriture de données dans un système de fichiers, le système monte le cache mémoire dans le système de fichiers. Les données ne sont pas écrites sur le disque lui-même. Si vous arrêtez la redirection à l’aide de la barre d’outils de l’application Citrix Workspace, les données n’ont pas le temps d’être purgées vers le disque, ce qui entraîne une perte de données.

Pour résoudre ce problème, utilisez la commande syncdans un terminal pour purger les données vers le disque avant d’arrêter la redirection USB.

Aucun périphérique dans la barre d’outils de l’application Citrix Workspace

Dans certains cas, vous ne pouvez pas voir les périphériques figurant sur la barre d’outils de l’application Citrix Workspace, ce qui indique qu’aucune redirection USB n’est en cours.

Onglet Périphériques dans la barre d'outils de l'application Citrix Workspace

Si vous rencontrez ce problème, vérifiez les points suivants :

  • La stratégie est configurée pour permettre la redirection de périphérique USB.
  • Le module de service USB Citrix est en cours d’exécution.

Si la stratégie n’est pas définie correctement, corrigez-la en consultant la section Définir les stratégies de redirection de périphérique USB de cet article.

Si le module de service USB Citrix n’est pas en cours d’exécution, procédez comme suit :

  1. Vérifiez si un module noyau USB/IP est disponible sur votre distribution Linux à l’aide de la commande suivante :

    modinfo usbip-core
    <!--NeedCopy-->
    
  2. Si la sortie s’affiche comme suit, installez ou compilez le module noyau USB/IP en fonction de votre distribution Linux :

    modinfo: ERROR: Module usbip-core not found.
    <!--NeedCopy-->
    
    • Pour Amazon Linux 2, CentOS, RHEL et Rocky Linux, consultez la section Installer ou compiler le module noyau USB/IP de cet article.
    • Pour SUSE, téléchargez et installez le package USB/IP à partir de https://software.opensuse.org/package/usbip.
    • Pour Ubuntu/Debian, procédez comme suit pour compiler et installer le module noyau USB/IP :

      1. Téléchargez le code source du module noyau USB/IP.

        Accédez au référentiel du noyau Linux accessible sur https://github.com/torvalds/linux/tree/master/drivers/usb/usbip, sélectionnez la balise de version cible du noyau Linux (v4.15 ou ultérieure) et obtenez le lien tel que https://github.com/torvalds/linux/tree/v4.15/drivers/usb/usbip.

        Accédez à DownGit et entrez le lien précédent pour créer un lien de téléchargement permettant de télécharger le code source USB/IP.

      2. Décompressez le fichier source à l’aide des commandes suivantes :

        unzip ${USBIP_SRC}.zip
        
        cd usbip
        <!--NeedCopy-->
        
      3. Modifiez le fichier Makefile comme suit :

        # 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. Compilez le code source :

        apt-get install linux-headers-`uname -r`
        
        make -C /lib/modules/`uname -r`/build M=$PWD
        <!--NeedCopy-->
        
      5. Installez le module noyau USB/IP :

        cp usbip-core.ko vhci-hcd.ko /opt/Citrix/VDA/lib64/
        <!--NeedCopy-->
        
      6. Redémarrez le service ctxusbsd pour charger le module du noyau USB/IP :

        systemctl restart ctxusbsd
        <!--NeedCopy-->
        

Échec de redirection lorsque des périphériques USB sont visibles dans la barre d’outils de l’application Citrix Workspace, mais avec la mention « Limité par une stratégie »

Lorsque le problème se produit, procédez comme suit :

  • Configurez la stratégie du Linux VDA pour activer la redirection.
  • Vérifiez si des restrictions de stratégie supplémentaires sont configurées dans le registre de l’application Citrix Workspace. Vérifiez DeviceRules dans le chemin d’accès du registre pour vous assurer que ce paramètre n’interdit pas l’accès au périphérique :

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

Un périphérique USB est redirigé correctement, mais je ne peux pas l’utiliser dans ma session

Généralement, seuls les périphériques USB pris en charge peuvent être redirigés. D’autres périphériques peuvent également être redirigés vers une session VDA Linux active. Un nœud appartenant à l’utilisateur est créé dans le chemin d’accès /dev système. Toutefois, ce sont les pilotes et la configuration qui déterminent si l’utilisateur peut utiliser le périphérique. Si un périphérique vous appartenant (branché) n’est pas accessible, ajoutez-le à une stratégie sans restriction.

Remarque :

Pour les lecteurs USB, le Linux VDA configure et monte le disque. L’utilisateur (et seul l’utilisateur qui l’a installé) peut accéder au disque sans aucune configuration supplémentaire. Cela peut ne pas être possible avec les périphériques qui ne se trouvent pas dans la liste des périphériques pris en charge.