Linux Virtual Delivery Agent

Redirection des périphériques USB

Les périphériques USB sont partagés entre l’application Citrix Workspace™ et le bureau VDA Linux. 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 des périphériques USB lorsque la latence réseau est inférieure à 100 millisecondes. N’utilisez pas la redirection des périphériques USB lorsque la latence réseau est supérieure à 200 millisecondes.

  • La redirection des 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 bibliothèques en mode utilisateur qui vous permettent de communiquer avec le pilote de noyau pour obtenir toutes les données USB.

Le VDA Linux implémente la redirection des 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 VDA Linux 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 des périphériques USB

Généralement, si un périphérique USB est redirigé avec succès vers le VDA Linux, 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 VDA Linux active. Les périphériques USB dépendent de 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 VDA Linux active. Pour assurer la connectivité des périphériques USB, installez les pilotes et configurez correctement le système.

Le VDA Linux 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 VDA Linux. 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 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 des périphériques USB

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

Le VDA Linux utilise USB/IP comme contrôleur d’hôte virtuel pour la redirection des 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 besoin de compiler le module de noyau par défaut. Cependant, le module de noyau USB/IP n’est pas disponible pour RHEL et Rocky Linux. Pour utiliser la redirection des 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 des périphériques USB

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

  • Stratégie de redirection des périphériques USB clients
  • Règles de redirection des périphériques USB clients

Activer la redirection des périphériques USB

Dans Citrix Studio, activez (ou désactivez) la redirection des 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 des périphériques USB

Définir les règles de redirection des 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 VDA Linux.

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

  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 des périphériques USB clients

Remarque :

Lors de la configuration de la redirection des périphériques USB, assurez-vous de définir l’option Redirection des périphériques USB clients sur Autorisé et de configurer les Règles de redirection des périphériques USB clients sur Allow:#all ok. Le fait de ne pas configurer les deux paramètres peut entraîner la disparition de la souris externe lors d’un clic dans une session.

Prise en charge de la redirection USB pour Ubuntu sur Azure

Par défaut, Ubuntu sur Azure peut ne pas inclure certains pilotes de noyau USB. Vous pouvez activer la redirection USB pour les périphériques génériques et spécifiques en suivant les instructions ci-dessous.

Activation de la redirection USB pour les périphériques génériques

Pour les périphériques USB génériques, tels que les périphériques de stockage USB standard, les périphériques HID USB YubiKey et les adaptateurs réseau ASIX, vous pouvez simplement exécuter le script de configuration suivant :

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

Après avoir exécuté le script, redémarrez le service USB Citrix pour activer la prise en charge :

  • sudo service ctxusbsd restart

Création de modules de pilote de noyau USB pour des périphériques spécifiques

Pour les périphériques non pris en charge par défaut, vous pouvez utiliser le flux de travail générique suivant pour créer et installer les modules de pilote de noyau nécessaires. L’exemple ci-dessous utilise une clé USB Kingston DataTraveler 2.0 (VID=0930, PID=6544) à titre d’illustration.

Prérequis :

  • Une machine VDA avec le package VDA Linux installé.

  • Une machine physique Linux exécutant un noyau Linux générique.

Identification des pilotes de noyau requis sur la machine physique Linux

Étape 1 - Connecter le périphérique

Connectez le périphérique USB à une machine physique exécutant un noyau Linux générique.

Étape 2 - Préparer le script d’identification du pilote de noyau USB

-  Copiez `/opt/Citrix/VDA/sbin/usbazure/ctxusbkodriver.sh` sur la machine physique et rendez-le exécutable.

Étape 3 - Obtenir le VID et le PID du périphérique

Utilisez lsusb pour identifier le périphérique USB connecté.

lsusb
Example output:
Bus 001 Device 040: ID 0930:6544 Toshiba Corp. TransMemory-Mini / Kingston DataTraveler 2.0 Stick
<!--NeedCopy-->
-  #### Étape 4 – Identifier les pilotes de noyau requis

-  Exécutez le script d'assistance avec le `VID:PID` du périphérique :
./ctxusbkodriver.sh 0930:6544
Example output:
All USB Kernel drivers for 0930:6544:
usb-storage
<!--NeedCopy-->

Compiler et installer les pilotes de noyau sur la machine VDA

Étape 1 – Configurer l’environnement de compilation

Exécutez le script de configuration pour configurer l’environnement de compilation et télécharger le code source du noyau nécessaire vers /root/.ctxusb :

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

Étape 2 – Déterminer la configuration de compilation du noyau

Utilisez le script de configuration pour récupérer les options de compilation de module de noyau appropriées :

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-->

Étape 3 – Inspecter et enregistrer les options de configuration du noyau

cd /root/.ctxusb/linux
make menuconfig
<!--NeedCopy-->
  • Utilisez la fonction de recherche (appuyez sur /) pour localiser les options (par exemple, CONFIG_USB_STORAGE).
  • Enregistrez les paramètres pertinents (par exemple, CONFIG_USB_SUPPORT=y, CONFIG_USB_STORAGE=m).
  • Quittez sans enregistrer les modifications.

Étape 4 – Compiler et installer les pilotes de noyau

Compilez et installez le module de noyau :

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

Étape 5 – Vérifier les pilotes de noyau

modinfo usb-storage

Une fois l’opération terminée, le pilote de noyau pour votre périphérique USB spécifié a été compilé et installé.

Résoudre les problèmes de redirection de périphérique 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 avec les privilèges administratifs pour s’assurer 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 les privilèges administratifs.

Impossible de démonter un périphérique

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

Si vous arrêtez la redirection d’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 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’a lieu.

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é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 vous référant à 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, 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 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 « politique restreinte »

Lorsque ce 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 non restreinte.

Remarque :

Pour les disques 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.

Redirection des périphériques USB