Linux Virtual Delivery Agent

USB-Geräteumleitung

USB-Geräte werden zwischen der Citrix Workspace™-App und dem Linux VDA-Desktop gemeinsam genutzt. Wenn ein USB-Gerät auf den Desktop umgeleitet wird, können Sie das USB-Gerät so verwenden, als wäre es lokal angeschlossen.

Tipp:

  • Wir empfehlen die Verwendung der USB-Geräteumleitung, wenn die Netzwerklatenz weniger als 100 Millisekunden beträgt. Verwenden Sie die USB-Geräteumleitung nicht, wenn die Netzwerklatenz mehr als 200 Millisekunden beträgt.

  • Die USB-Geräteumleitung umfasst drei Hauptfunktionsbereiche:

  • Open-Source USB/IP-Projekt
  • Citrix USB-Sitzungsmodul
  • Citrix USB-Dienstmodul

Open-Source USB/IP-Projekt:

Das USB/IP-Projekt besteht aus einem Linux-Kernel-Treiber und einigen Benutzermodus-Bibliotheken, die die Kommunikation mit dem Kernel-Treiber ermöglichen, um alle USB-Daten zu erhalten.

Der Linux VDA implementiert die USB-Geräteumleitung basierend auf dem Open-Source USB/IP-Projekt und verwendet den Kernel-Treiber sowie die Benutzermodus-Bibliotheken von USB/IP wieder. Alle USB-Datenübertragungen zwischen dem Linux VDA und der Citrix Workspace-App werden jedoch durch das Citrix ICA USB-Protokoll gekapselt.

Citrix USB-Sitzungsmodul:

Das Citrix USB-Sitzungsmodul fungiert als Kommunikationsbrücke zwischen dem USB/IP-Kernelmodul und der Citrix Workspace-App.

Citrix USB-Dienstmodul:

Das Citrix USB-Dienstmodul verwaltet alle Vorgänge an USB-Geräten, z. B. das Anschließen oder Trennen von USB-Geräten.

Funktionsweise der USB-Geräteumleitung

Typischerweise werden, wenn ein USB-Gerät erfolgreich an den Linux VDA umgeleitet wird, ein oder mehrere Geräteknoten im Systempfad /dev erstellt. Manchmal ist das umgeleitete Gerät jedoch für eine aktive Linux VDA-Sitzung nicht nutzbar. USB-Geräte sind auf Treiber angewiesen, um ordnungsgemäß zu funktionieren, und einige Geräte erfordern spezielle Treiber. Wenn keine Treiber bereitgestellt werden, sind die umgeleiteten USB-Geräte für die aktive Linux VDA-Sitzung nicht zugänglich. Um die Konnektivität von USB-Geräten sicherzustellen, installieren Sie die Treiber und konfigurieren Sie das System ordnungsgemäß.

Der Linux VDA unterstützt eine Liste von USB-Geräten, die erfolgreich vom Client umgeleitet werden.

Unterstützte USB-Geräte

Tipp:

Wir haben Unterstützung für USB 3.0-Anschlüsse hinzugefügt. Sie können USB 3.0-Geräte in USB 3.0-Anschlüsse eines Clientgeräts einstecken.

Die folgenden Geräte wurden für die Unterstützung dieser Version des Linux VDA verifiziert. Andere Geräte können frei verwendet werden, jedoch mit unerwarteten Ergebnissen:

USB-Massenspeichergerät VID:PID Dateisystem
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

Hinweis:

  • Um NTFS unter RHEL, Rocky Linux und SUSE zu verwenden, aktivieren Sie zuerst die NTFS-Unterstützung auf diesen Distributionen.

USB-3D-Maus VID:PID
3DConnexion SpaceMouse Pro 046d: c62b
USB-Scanner 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

USB-Geräteumleitung konfigurieren

(Nur für RHEL und Rocky Linux) USB/IP-Kernelmodul installieren oder kompilieren

Der Linux VDA verwendet USB/IP als virtuellen Host-Controller für die USB-Geräteumleitung. Da das USB/IP-Kernelmodul in den meisten Fällen mit Linux-Kernel-Version 3.17 und höher veröffentlicht wird, müssen Sie das Kernelmodul standardmäßig nicht selbst erstellen. Das USB/IP-Kernelmodul ist jedoch für RHEL und Rocky Linux nicht verfügbar. Um die USB-Geräteumleitung mit diesen Linux-Distributionen zu verwenden, müssen Sie das USB/IP-Kernelmodul installieren oder kompilieren. Laden Sie USB/IP von https://pkgs.org/download/kmod-usbip herunter und installieren Sie es entsprechend Ihrer Linux-Distribution.

Richtlinien für die USB-Geräteumleitung festlegen

Eine Citrix-Richtlinie steuert, ob die USB-Geräteumleitung aktiviert oder deaktiviert ist. Der Gerätetyp kann auch über eine Delivery Controller™-Richtlinie angegeben werden. Beim Konfigurieren der USB-Geräteumleitung für den Linux VDA konfigurieren Sie die folgenden Richtlinien:

  • Client-USB-Geräteumleitungsrichtlinie
  • Client-USB-Geräteumleitungsregeln

USB-Geräteumleitung aktivieren

Aktivieren (oder deaktivieren) Sie in Citrix Studio die USB-Geräteumleitung vom Client (nur für Workstation-Hosts).

Im Dialogfeld Einstellung bearbeiten:

  1. Wählen Sie Zulässig.
  2. Klicken Sie auf OK.

USB-Geräteumleitung aktivieren

Regeln für die USB-Geräteumleitung festlegen

Nachdem Sie die USB-Umleitungsrichtlinie aktiviert haben, legen Sie die Umleitungsregeln in Citrix Studio fest, indem Sie angeben, welche Geräte auf dem Linux VDA zugelassen (oder verweigert) werden.

Im Dialogfeld Client-USB-Geräteumleitungsregeln:

  1. Klicken Sie auf Neu, um eine Umleitungsregel hinzuzufügen, oder auf Bearbeiten, um eine vorhandene Regel zu überprüfen.
  2. Nachdem Sie eine Regel erstellt (oder bearbeitet) haben, klicken Sie auf OK.

Die Einstellung der Client-USB-Geräteumleitungsregel

Hinweis:

Stellen Sie beim Konfigurieren der USB-Geräteumleitung sicher, dass Sie die Option Client-USB-Geräteumleitung auf Zulässig setzen und die Client-USB-Geräteumleitungsregeln als Allow:#all ok konfigurieren. Wenn beide Einstellungen nicht konfiguriert werden, kann dies dazu führen, dass die externe Maus beim Klicken in einer Sitzung verschwindet.

Unterstützung der USB-Umleitung für Ubuntu unter Azure

Standardmäßig enthält Ubuntu unter Azure möglicherweise nicht bestimmte USB-Kernel-Treiber. Sie können die USB-Umleitung sowohl für generische als auch für spezifische Geräte aktivieren, indem Sie die folgenden Anweisungen befolgen.

Aktivieren der USB-Umleitung für generische Geräte

Für generische USB-Geräte, wie z. B. Standard-USB-Speichergeräte, YubiKey USB HID-Geräte und ASIX-Netzwerkadapter, können Sie einfach das folgende Konfigurationsskript ausführen:

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

Nach dem Ausführen des Skripts starten Sie den Citrix USB-Dienst neu, um die Unterstützung zu aktivieren:

  • sudo service ctxusbsd restart

Erstellen von USB-Kernel-Treiber-Modulen für spezifische Geräte

Für Geräte, die nicht sofort unterstützt werden, können Sie den folgenden generischen Workflow verwenden, um die erforderlichen Kernel-Treiber-Module zu erstellen und zu installieren. Das folgende Beispiel verwendet einen Kingston DataTraveler 2.0 Stick (VID=0930, PID=6544) zur Veranschaulichung.

Voraussetzung:

  • Eine VDA-Maschine mit installiertem Linux VDA-Paket.
  • Eine physische Linux-Maschine, auf der ein generischer Linux-Kernel ausgeführt wird.

Erforderliche Kernel-Treiber auf der physischen Linux-Maschine identifizieren

Schritt 1 - Gerät anschließen

Schließen Sie das USB-Gerät an eine physische Maschine an, auf der ein generischer Linux-Kernel ausgeführt wird.

Schritt 2 - Skript zur Identifizierung des USB-Kernel-Treibers vorbereiten

Kopieren Sie /opt/Citrix/VDA/sbin/usbazure/ctxusbkodriver.sh auf die physische Maschine und machen Sie es ausführbar.

-  #### Schritt 3 - VID und PID des Geräts ermitteln

Verwenden Sie lsusb, um das angeschlossene USB-Gerät zu identifizieren.

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

Schritt 4 – Erforderliche Kernel-Treiber identifizieren

-  Führen Sie das Hilfsskript mit der `VID:PID` des Geräts aus:
./ctxusbkodriver.sh 0930:6544
Example output:
All USB Kernel drivers for 0930:6544:
usb-storage
<!--NeedCopy-->

Kernel-Treiber auf der VDA-Maschine erstellen und installieren

Schritt 1 – Build-Umgebung konfigurieren

Führen Sie das Konfigurationsskript aus, um die Build-Umgebung einzurichten und den erforderlichen Kernel-Quellcode nach /root/.ctxusb herunterzuladen:

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

Schritt 2 – Kernel-Build-Konfiguration bestimmen

Verwenden Sie das Konfigurationsskript, um die entsprechenden Build-Optionen für das Kernelmodul abzurufen:

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

Schritt 3 – Kernel-Konfigurationsoptionen prüfen und aufzeichnen

cd /root/.ctxusb/linux
make menuconfig
<!--NeedCopy-->
-  Verwenden Sie die Suchfunktion (drücken Sie /), um Optionen zu finden (z. B. CONFIG_USB_STORAGE).
  • Zeichnen Sie relevante Einstellungen auf (z. B. CONFIG_USB_SUPPORT=y, CONFIG_USB_STORAGE=m).
  • Beenden Sie den Vorgang, ohne Änderungen zu speichern.

  • Schritt 4 – Kernel-Treiber erstellen und installieren

Kompilieren und installieren Sie das Kernelmodul:

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

Schritt 5 – Kernel-Treiber überprüfen

modinfo usb-storage

Nach erfolgreichem Abschluss wurde der Kernel-Treiber für Ihr angegebenes USB-Gerät erstellt und installiert.

Beheben von Problemen bei der USB-Geräteumleitung

Verwenden Sie die Informationen in diesem Abschnitt, um verschiedene Probleme zu beheben, die bei der Verwendung des Linux VDA auftreten können.

Umgeleitete USB-Festplatte kann nicht ausgeworfen werden

Der Linux VDA verwaltet alle von der Citrix Workspace-App umgeleiteten USB-Festplatten mit Administratorrechten, um sicherzustellen, dass nur der Eigentümer auf das umgeleitete Gerät zugreifen kann. Daher können Sie das Gerät nur mit Administratorrechten auswerfen.

Gerät kann nicht ausgeworfen werden

Datei geht verloren, wenn Sie die Umleitung einer USB-Festplatte beenden

Wenn Sie die Umleitung einer USB-Festplatte sofort über die Symbolleiste der Citrix Workspace-App beenden, können die von Ihnen geänderten oder erstellten Dateien auf der Festplatte verloren gehen. Dieses Problem tritt auf, weil das System beim Schreiben von Daten in ein Dateisystem den Speicher-Cache im Dateisystem einbindet. Die Daten werden nicht auf die Festplatte selbst geschrieben. Wenn Sie die Umleitung über die Symbolleiste der Citrix Workspace-App beenden, bleibt keine Zeit mehr, um die Daten auf die Festplatte zu schreiben, was zu Datenverlust führt.

Um dieses Problem zu beheben, verwenden Sie den Befehl sync in einem Terminal, um Daten auf die Festplatte zu schreiben, bevor Sie die USB-Umleitung beenden.

Keine Geräte in der Symbolleiste der Citrix Workspace-App

Manchmal werden in der Symbolleiste der Citrix Workspace-App keine Geräte angezeigt, was darauf hindeutet, dass keine USB-Umleitung stattfindet.

Die Registerkarte „Geräte“ in der Symbolleiste der Workspace-App

Wenn dieses Problem auftritt, überprüfen Sie Folgendes:

  • Die Richtlinie ist so konfiguriert, dass die USB-Geräteumleitung zugelassen wird.
  • Das Citrix USB-Dienstmodul wird ausgeführt.

Wenn die Richtlinie nicht korrekt festgelegt ist, korrigieren Sie sie, indem Sie den Abschnitt USB-Geräteumleitungsrichtlinien festlegen in diesem Artikel heranziehen.

Wenn das Citrix USB-Dienstmodul nicht ausgeführt wird, führen Sie die folgenden Schritte aus:

  1. Überprüfen Sie mit dem folgenden Befehl, ob ein USB/IP-Kernelmodul in Ihrer Linux-Distribution verfügbar ist:

    modinfo usbip-core
    <!--NeedCopy-->
    
  2. Wenn die Ausgabe wie folgt angezeigt wird, installieren oder kompilieren Sie das USB/IP-Kernelmodul basierend auf Ihrer Linux-Distribution:

    modinfo: ERROR: Module usbip-core not found.
    <!--NeedCopy-->
    
    • Informationen zu RHEL und Rocky Linux finden Sie im Abschnitt USB/IP-Kernelmodul installieren oder kompilieren in diesem Artikel.
    • Laden Sie für SUSE das USB/IP-Paket von https://software.opensuse.org/package/usbip herunter und installieren Sie es.
    • Führen Sie für Ubuntu/Debian die folgenden Schritte aus, um das USB/IP-Kernelmodul zu kompilieren und zu installieren:

      1. Laden Sie den Quellcode des USB/IP-Kernelmoduls herunter.

        Gehen Sie zum Linux-Kernel-Repository unter https://github.com/torvalds/linux/tree/master/drivers/usb/usbip, wählen Sie das Tag der Ziel-Linux-Kernelversion (v4.15 oder höher) aus und rufen Sie den Link ab, z. B. https://github.com/torvalds/linux/tree/v4.15/drivers/usb/usbip.

        Gehen Sie zu DownGit und geben Sie den vorhergehenden Link ein, um einen Download-Link zum Herunterladen des USB/IP-Quellcodes zu erstellen.

      2. Entpacken Sie die Quelldatei mit den folgenden Befehlen:

        unzip ${USBIP_SRC}.zip
        
        cd usbip
        <!--NeedCopy-->
        
      3. Ändern Sie die Datei Makefile wie folgt:

        # 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. Kompilieren Sie den Quellcode:

        apt-get install linux-headers-`uname -r`
        
        make -C /lib/modules/`uname -r`/build M=$PWD
        <!--NeedCopy-->
        
      5. Installieren Sie das USB/IP-Kernelmodul:

        cp usbip-core.ko vhci-hcd.ko /opt/Citrix/VDA/lib64/
        <!--NeedCopy-->
        
      6. Starten Sie den Dienst ctxusbsd neu, um das USB/IP-Kernelmodul zu laden:

        systemctl restart ctxusbsd
        <!--NeedCopy-->
        

Umleitungsfehler, wenn USB-Geräte in der Symbolleiste der Citrix Workspace-App sichtbar sind, aber als „durch Richtlinie eingeschränkt“ gekennzeichnet sind

Wenn das Problem auftritt, gehen Sie wie folgt vor:

  • Konfigurieren Sie die Linux VDA-Richtlinie, um die Umleitung zu aktivieren.
  • Überprüfen Sie, ob zusätzliche Richtlinieneinschränkungen in der Registrierung der Citrix Workspace-App konfiguriert sind. Überprüfen Sie DeviceRules im Registrierungspfad, um sicherzustellen, dass der Zugriff auf das Gerät durch diese Einstellung nicht verweigert wird:

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

Ein USB-Gerät wird erfolgreich umgeleitet, kann aber in meiner Sitzung nicht verwendet werden

In der Regel können nur unterstützte USB-Geräte umgeleitet werden. Andere Geräte können ebenfalls an eine aktive Linux VDA-Sitzung umgeleitet werden. Für jedes umgeleitete Gerät wird ein dem Benutzer gehörender Knoten im Systempfad /dev erstellt. Es sind jedoch die Treiber und die Konfiguration, die bestimmen, ob der Benutzer das Gerät erfolgreich verwenden kann. Wenn Sie ein Gerät finden, das zwar vorhanden (angeschlossen), aber unzugänglich ist, fügen Sie das Gerät einer uneingeschränkten Richtlinie hinzu.

Hinweis:

Bei USB-Laufwerken konfiguriert und bindet der Linux VDA die Festplatte ein. Der Benutzer (und nur der Eigentümer, der sie installiert hat) kann ohne zusätzliche Konfiguration auf die Festplatte zugreifen. Dies ist möglicherweise nicht der Fall bei Geräten, die nicht in der Liste der unterstützten Geräte aufgeführt sind.