Linux Virtual Delivery Agent

Redirection de périphériques 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 est redirigé vers le bureau, vous pouvez l’utiliser comme s’il était connecté localement.

Conseil :

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

  • La redirection de périphériques USB comprend trois domaines de fonctionnalité principaux :

  • Projet USB/IP open source
  • Module de session USB Citrix
  • Module de service USB Citrix

Projet USB/IP open source :

Le projet USB/IP se compose d’un pilote de noyau Linux et de quelques bibliothèques en mode utilisateur qui vous permettent de communiquer avec le pilote de noyau pour obtenir toutes les données USB.

Le Linux VDA implémente la redirection de périphériques USB basée sur le projet USB/IP open source et réutilise le pilote de noyau et les bibliothèques en mode utilisateur d’USB/IP. Cependant, tous les transferts de données USB entre le Linux VDA et l’application Citrix Workspace sont encapsulés par 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 de 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, l’attachement ou le détachement de périphériques USB.

Fonctionnement de la redirection de périphériques USB

Généralement, si un périphérique USB est redirigé avec succès vers le Linux VDA, un ou plusieurs nœuds de périphérique sont créés dans le chemin /dev du système. Parfois, cependant, le périphérique redirigé n’est pas utilisable pour une session Linux VDA active. Les périphériques USB dépendent des 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é des périphériques USB, installez les pilotes et configurez correctement le système.

Le Linux VDA prend en charge une liste de périphériques USB qui sont redirigés avec succès depuis le client.

Périphériques USB pris en charge

Conseil :

Nous avons ajouté la prise en charge des ports USB 3.0. Vous pouvez insérer des périphériques USB 3.0 dans les ports USB 3.0 d’un périphérique client.

Les périphériques suivants ont été vérifiés pour prendre en charge cette version du Linux VDA. D’autres périphériques peuvent être utilisés librement, avec des résultats inattendus :

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 la prise en charge de 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ériques USB

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

Le Linux VDA utilise USB/IP comme contrôleur d’hôte virtuel pour la redirection de périphériques USB. Étant donné que dans la plupart des cas, le module de noyau USB/IP est publié avec la version 3.17 et ultérieure du noyau Linux, vous n’avez pas à compiler le module de noyau par défaut. Cependant, le module de noyau USB/IP n’est pas disponible pour CentOS, RHEL et Rocky Linux. Pour utiliser la redirection de périphériques USB avec ces distributions Linux, vous devez installer ou compiler le module de noyau USB/IP. Téléchargez et installez 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ériques USB

Une stratégie Citrix contrôle si la redirection de périphériques 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ériques USB pour le Linux VDA, configurez la stratégie et les règles suivantes :

-  Stratégie de redirection de périphériques USB client
-  Règles de redirection de périphériques USB client

Activer la redirection de périphériques USB

Dans Citrix Studio, activez (ou désactivez) la redirection de périphériques USB depuis le client (pour les 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ériques USB

Définir les règles de redirection de périphériques USB

Après avoir activé 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 autorisés (ou refusés) sur le Linux VDA.

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

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

Le paramètre de règle de redirection de périphériques USB client

Résoudre les problèmes de redirection de périphériques USB

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

Impossible de démonter le disque USB redirigé

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

Impossible de démonter un périphérique

Fichier perdu lorsque vous arrêtez la redirection d’un disque USB

Si vous arrêtez immédiatement la redirection d’un disque USB à 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 lorsque vous écrivez des 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, il ne reste plus de temps pour que les données soient vidées sur le disque, ce qui entraîne une perte de données.

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

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

Parfois, il est possible que vous ne voyiez pas les périphériques répertoriés dans la barre d’outils de l’application Citrix Workspace, ce qui indique qu’aucune redirection USB n’est en cours.

L’onglet Périphériques dans la barre d’outils de l’application Workspace

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

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

  • Si la stratégie n’est pas configurée correctement, corrigez-la en vous référant à la section Définir les stratégies de redirection de périphériques USB de cet article.

Si le module de service USB Citrix n’est pas en cours d’exécution, suivez les étapes suivantes :

  1. Vérifiez si un module de 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 de 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 de noyau USB/IP de cet article.
    • Pour SUSE, téléchargez et installez le package USB/IP depuis https://software.opensuse.org/package/usbip.
    • Pour Ubuntu/Debian, suivez les étapes suivantes pour compiler et installer le module de noyau USB/IP :

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

        Accédez au référentiel du noyau Linux à l’adresse https://github.com/torvalds/linux/tree/master/drivers/usb/usbip, sélectionnez la balise de version du noyau Linux cible (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 pour 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 de 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 de noyau USB/IP :

        systemctl restart ctxusbsd
        <!--NeedCopy-->
        

Échec de la redirection lorsque les périphériques USB sont visibles dans la barre d’outils de l’application Citrix Workspace, mais sont étiquetés « restreint par la stratégie »

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

  • Configurez la stratégie du VDA Linux 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 du registre pour vous assurer que l’accès au périphérique n’est pas refusé par ce paramètre :

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

Un périphérique USB est redirigé avec succès, 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. Pour chaque périphérique redirigé, un nœud appartenant à l’utilisateur est créé dans le chemin système /dev. Cependant, ce sont les pilotes et la configuration qui déterminent si l’utilisateur peut utiliser le périphérique avec succès. Si vous trouvez un périphérique possédé (branché) mais inaccessible, ajoutez le périphérique à une stratégie illimitée.

Remarque :

Pour les lecteurs USB, le VDA Linux configure et monte le disque. L’utilisateur (et seul le propriétaire qui l’a installé) peut accéder au disque sans aucune configuration supplémentaire. Ce n’est peut-être pas le cas pour les périphériques qui ne figurent pas dans la liste des périphériques pris en charge.