Configurer la redirection 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, l’utilisateur peut l’utiliser comme s’il était connecté localement.
| >**Conseil :** | | | |
Nous vous recommandons d’utiliser la redirection USB lorsque la latence du réseau est inférieure à 100 millisecondes. N’utilisez pas la redirection USB lorsque la latence du réseau est supérieure à 200 millisecondes.
-
La redirection USB comprend trois domaines de fonctionnalité principaux :
- Implémentation du projet open source (VHCI)
- Service VHCI
- Service USB
VHCI open source :
Cette partie de la fonctionnalité de redirection USB développe un système général de partage de périphériques USB sur un réseau IP. Elle se compose d’un pilote de noyau Linux et de certaines bibliothèques en mode utilisateur qui vous permettent de communiquer avec le pilote de noyau pour obtenir toutes les données USB. Dans l’implémentation Linux VDA, Citrix réutilise le pilote de noyau de VHCI. Cependant, tous les transferts de données USB entre le Linux VDA et l’application Citrix Workspace sont encapsulés dans le paquet de protocole Citrix ICA®.
Service VHCI :
Le service VHCI est un service open source fourni par Citrix pour communiquer avec le module de noyau VHCI. Ce service fonctionne comme une passerelle entre VHCI et le service USB de Citrix.
Service USB :
Le service USB représente un module Citrix qui gère toutes les virtualisations et les transferts de données sur le périphérique USB.
Fonctionnement de la redirection 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. Cependant, il arrive parfois que le périphérique redirigé ne soit pas utilisable pour une session Linux VDA 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 Linux VDA active. Pour garantir 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 vers et depuis le client. De plus, le périphérique est correctement monté, en particulier le disque USB, ce qui permet à l’utilisateur d’accéder au disque sans configuration supplémentaire.
Périphériques USB pris en charge
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 :
| >**Remarque :** | | | | |
| | | |
Le Linux VDA prend en charge uniquement les protocoles USB 2.0.
| Périphérique de stockage de masse USB | VID:PID | Système de fichiers |
|---|---|---|
| Netac Technology Co., Ltd | 0dd8:173c | FAT32 |
| Kingston Datatraveler 101 II | 0951:1625 | FAT32 |
| Kingston Datatraveler GT101 G2 | 1567:8902 | FAT32 |
| Clé USB SanDisk SDCZ80 | 0781:5580 | FAT32 |
| Disque dur WD | 1058:10B8 | FAT32 |
| Souris 3D USB | VID:PID | |
| 3DConnexion SpaceMouse Pro | 046d: c62b | |
| Scanner USB | VID:PID | |
| Epson Perfection V330 photo | 04B8: 0142 |
Configurer la redirection USB
Une stratégie Citrix contrôle si la redirection de périphériques USB est activée ou désactivée. De plus, 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 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 stratégie de redirection USB
Dans Citrix Studio, activez (ou désactivez) la redirection de périphériques USB vers et depuis le client (pour les hôtes de station de travail uniquement).
Dans la boîte de dialogue Modifier le paramètre :
- Sélectionnez Autorisé.
- Cliquez sur OK.

Définir les règles de redirection 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 des règles de redirection de périphériques USB client :
- Cliquez sur Nouveau pour ajouter une règle de redirection, ou cliquez sur Modifier pour examiner une règle existante.
- Après avoir créé (ou modifié) une règle, cliquez sur OK.

Compiler le module de noyau VHCI
La redirection USB dépend des modules de noyau VHCI (usb-vhci-hcd.ko et usb-vhci-iocif.ko). Ces modules font partie de la distribution Linux VDA (dans le cadre du paquet RPM). Ils sont compilés sur la base des noyaux de distribution Linux officiels et sont répertoriés dans le tableau suivant :
| Distribution Linux prise en charge | Version du noyau |
|---|---|
| RHEL 8.3 | 4.18.0-240 |
| RHEL 8.2 | 4.18.0-240 |
| RHEL 8.1 | 4.18.0-240 |
| RHEL 7.9 | 3.10.0-1160 |
| RHEL 7.8 | 3.10.0-1160 |
| SUSE 12.5 | 4.12.14 |
| Ubuntu 20.04 | 5.4.0-70 |
| Ubuntu 18.04 | 4.15.0-140 |
| Ubuntu 16.04 | 4.4.0-206 |
| Debian 10 | 4.19.0-16 |
Important :
Si le noyau de votre machine n’est pas compatible avec le pilote conçu pour le Linux VDA, le service USB pourrait ne pas démarrer. Dans ce cas, vous ne pouvez utiliser la fonctionnalité de redirection USB que si vous compilez vos propres modules de noyau VHCI.
Vérifier si votre noyau est compatible avec les modules compilés par Citrix
Sur la ligne de commande, exécutez la commande suivante pour vérifier si le noyau est compatible :
insmod /opt/Citrix/VDA/lib64/usb-vhci-hcd.ko
<!--NeedCopy-->
Si la commande s’exécute avec succès, le module de noyau a été chargé avec succès et la version est compatible avec celle installée par Citrix.
Si la commande s’exécute avec des erreurs, le noyau est incompatible avec le module Citrix et doit être recompilé.
Recompiler le module de noyau VHCI
Si votre module de noyau est incompatible avec la version Citrix, procédez comme suit :
-
Téléchargez le code source LVDA depuis le site de téléchargement de Citrix. Sélectionnez le fichier contenu dans la section « Linux Virtual Delivery Agent (sources) ».
-
Décompressez le fichier citrix-linux-vda-sources.zip. Accédez à linux-vda-souces/vhci-hcd-1.15.tar.bz2 et décompressez les fichiers source VHCI à l’aide de tar xvf vhci-hcd-1.15.tar.bz2.
-
Compilez le module de noyau en fonction des fichiers d’en-tête et du fichier Module.symvers. Suivez les étapes ci-dessous pour installer les fichiers d’en-tête du noyau et créer Module.symvers en fonction de la distribution Linux appropriée :
RHEL/CentOS :
yum install kernel-devel <!--NeedCopy-->SUSE 12 :
- zypper install kernel-devel zypper install kernel-source <!--NeedCopy-->Ubuntu :
- apt-get install linux-headers <!--NeedCopy-->Conseil :
Si l’installation est réussie, il existe un dossier de noyau ressemblant à :
/usr/src/kernels/3.10.0-327.10.1.el7.x86_64
-
Dans le dossier /usr/src/kernels/3.10.0-327.10.1.el7.x86_64, vérifiez que le fichier Module.symvers est présent. Si ce fichier n’est pas dans le dossier, compilez le noyau (en exécutant les commandes suivantes dans l’ordre :
make oldconfig;make prepare;make modules;make) pour obtenir ce fichier ou copiez-le depuis /usr/src/kernels/3.10.0-327.10.1.el7.x86_64-obj/x86_64/defaults/module.* -
Exécutez les commandes suivantes pour installer les outils de développement.
RHEL 8, CentOS 8 :
- yum groupinstall 'Development Tools' yum install elfutils-libelf-devel <!--NeedCopy-->RHEL 7, CentOS 7 :
yum groupinstall 'Development Tools' <!--NeedCopy-->Ubuntu 20.04, Ubuntu 18.04, Debian 10 :
apt install build-essential flex bison libelf-dev <!--NeedCopy-->Ubuntu 16.04 :
apt install build-essential flex bison <!--NeedCopy--> -
Dans le fichier
vhci-hcd-1.15/Makefile, modifiez le Makefile de VCHI et définissez KDIR sur le répertoire du noyau :#KDIR = $(BUILD_PREFIX)/lib/modules/$(KVERSION)/build KDIR = /usr/src/kernels/3.10.0-327.10.1.el7.x86_64 <!--NeedCopy--> -
Dans le dossier
vhci-hcd-1.15/, exécutezmakepour compiler le noyau VHCI.Remarque :
Si la compilation a réussi,
usb-vhci-hcd.koetusb-vhci-iocifc.kosont créés dans le dossiervhci-hcd-1.15/. -
Remplacez le module du noyau par celui qui vient d’être compilé : cp -f usb-vhci-*.ko /opt/Citrix/VDA/lib64/
-
Redémarrez le service USB :
service ctxusbsd restart <!--NeedCopy--> -
Déconnectez-vous, puis reconnectez-vous à la session. Vérifiez si la redirection USB fonctionne.
Résoudre les problèmes de compilation du noyau
Les erreurs suivantes peuvent se produire lorsque vous compilez le module VHCI avec des noyaux spécifiques :
-
L’erreur
implicit declaration of function 'copy\_to\_user'peut se produire, voir la capture d’écran suivante :
L’erreur se produit en raison de modifications de fichiers d’en-tête dans les noyaux. Pour contourner le problème, ajoutez la ligne #include <linux/uaccess.h> au fichier
vhci-hcd-1.15/usb-vhci-iocifc.c.
-
L’erreur
'driver\_attr\_debug_output' undeclaredpeut se produire, voir la capture d’écran suivante :
L’erreur se produit lorsque des symboles sont manquants sur le noyau. Pour contourner le problème, désactivez la définition de macro pour DEBUG dans les fichiers
vhci-hcd-1.15/usb-vhci-iocifc.cetvhci-hcd-1.15/usb-vhci-hcd.c.
-
L’erreur
'make[3]: *** No rule to make target 'arch/x86/tools/relocs_32.c', needed by 'arch/x86/tools/relocs_32.o'. Stop.peut se produire, voir la capture d’écran suivante :
Pour contourner le problème, remplacez
SUBDIRS=$(PWD)parM=$(shell pwd)à l’aide des commandes suivantes sous le cheminvhci-hcd-1.15/:sed -i 's/SUBDIRS=$(PWD)/M=$(shell pwd)/g' Makefile sed -i 's/SUBDIRS=$(PWD)/M=$(shell pwd)/g' test/Makefile <!--NeedCopy--> -
L’erreur
./include/uapi/linux/stat.h:30:17: error: expected ')' before numeric constant#define S_IRUSR 00400peut se produire, voir la capture d’écran suivante :
Exécutez les commandes suivantes pour contourner le problème :
sed -i 's/show_debug_output/debug_output_show/g' usb-vhci-iocifc.c usb-vhci-hcd.c sed -i 's/store_debug_output/debug_output_store/g' usb-vhci-iocifc.c usb-vhci-hcd.c sed -i 's/static DRIVER_ATTR(debug_output, S_IRUSR | S_IWUSR, debug_output_show, debug_output_store);/static DRIVER_ATTR_RW(debug_output);/g' usb-vhci-iocifc.c usb-vhci-hcd.c <!--NeedCopy--> -
L’erreur
./arch/x86/include/asm/uaccess.h:433:29: error: invalid initializer__typeof__(ptr) __pu_ptr = (ptr); \peut se produire, voir la capture d’écran suivante :
Pour contourner le problème, modifiez la ligne 219 du fichier
usb-vhci-iocifc.cde__put_user('\0', arg->bus_id);à__put_user('\0', arg->bus_id + 0);. -
L’erreur
error: 'access_ok' undeclared (first use in this function)if(unlikely((_IOC_DIR(cmd) & _IOC_READ) && !access_ok(VERIFY_WRITE, arg, _IOC_SIZE(cmd))))peut se produire, voir la capture d’écran suivante :
Exécutez les commandes suivantes pour contourner le problème :
sed -i 's/VERIFY_READ, //g' usb-vhci-iocifc.c sed -i 's/VERIFY_WRITE, //g' usb-vhci-iocifc.c <!--NeedCopy-->
Résoudre les problèmes de redirection 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é
Pour le contrôle d’accès de tous les disques USB redirigés depuis l’application Citrix Workspace, le VDA Linux gère tous ces périphériques avec des privilèges d’administrateur afin de garantir que seul le propriétaire peut accéder au périphérique redirigé. Par conséquent, l’utilisateur ne peut pas démonter le périphérique sans les privilèges d’administrateur.

Fichier perdu lorsque vous arrêtez la redirection d’un disque USB
Si vous redirigez un disque USB vers une session et tentez de le modifier (par exemple, créer des fichiers sur le disque), puis arrêtez immédiatement sa redirection à l’aide de la barre d’outils de l’application Citrix Workspace, le fichier que vous avez modifié ou créé peut être perdu. 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. Si vous rencontrez ce problème, vérifiez les points suivants :
- La stratégie est configurée pour autoriser la redirection USB
- Le module du noyau est compatible avec votre noyau

Remarque :
L’onglet Périphériques n’est pas disponible dans l’application Citrix Workspace pour Linux.
É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 stratégie restreinte
Lorsque le problème se produit, procédez comme suit :
- Configurez la stratégie 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 /dev du système. 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 détenu (branché) mais inaccessible, ajoutez le périphérique à une stratégie non restreinte.
Remarque :
Dans le cas des 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.