Linux Virtual Delivery Agent

USBデバイスリダイレクト

USBデバイスは、Citrix WorkspaceアプリとLinux VDAデスクトップ間で共有されます。USBデバイスがデスクトップにリダイレクトされると、USBデバイスをローカルに接続されているかのように使用することができます。

ヒント:

ネットワーク遅延が100ミリ秒未満の場合は、USBデバイスリダイレクトを使用することをお勧めします。ネットワーク遅延が200ミリ秒を超える場合は、USBデバイスリダイレクトを使用しないでください。

USBデバイスリダイレクトの主な機能として、次の3つが挙げられます:

  • オープンソースUSB/IPプロジェクト
  • Citrix USBセッションモジュール
  • Citrix USBサービスモジュール

オープンソースUSB/IPプロジェクト:

USB/IPプロジェクトはLinuxカーネルドライバーおよびユーザーモードのライブラリで構成されており、ユーザーはカーネルドライバーと通信してすべてのUSBデータを取得することができます。

Linux VDAは、オープンソースUSB/IPプロジェクトに基づいてUSBデバイスリダイレクトを実装し、USB/IPのカーネルドライバーとユーザーモードライブラリを再利用します。ただし、Linux VDAとCitrix Workspaceアプリ間のUSBデータ転送はすべて、Citrix ICA USBプロトコルに格納されます。

Citrix USBセッションモジュール:

Citrix USBセッションモジュールは、USB/IPカーネルモジュールとCitrix Workspaceアプリ間の通信の橋渡しとして機能します。

Citrix USBサービスモジュール:

Citrix USBサービスモジュールは、USBデバイスの接続や取り外しなど、USBデバイスのすべての操作を管理します。

USBデバイスリダイレクトのしくみ

通常、Linux VDAへのUSBデバイスのリダイレクトが正常に行われると、デバイスノードがシステムの/devパスに作成されます。ただし、リダイレクトされたデバイスがアクティブなLinux VDAセッションで使用できない場合があります。USBデバイスが正常に機能するかどうかはドライバーによって決まり、一部のデバイスは特別なドライバーを必要とします。ドライバーが提供されていない場合、リダイレクトされたUSBデバイスはアクティブなLinux VDAセッションにアクセスできません。USBデバイスの接続を確認するには、ドライバーをインストールしてシステムを正しく構成してください。

Linux VDAは、クライアントからリダイレクトが正常に行われたUSBデバイスの一覧をサポートしています。

サポートされているUSBデバイス

ヒント:

USB 3.0ポートのサポートを追加しました。USB 3.0デバイスをクライアントデバイスのUSB 3.0ポートに挿入できます。

次のデバイスは、Linux VDAのこのバージョンをサポートしていることが確認されています。ほかのデバイスを使用すると、予期せぬ結果が生じる場合があります。

USB大容量記憶装置デバイス VID:PID ファイルシステム
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

注:

Amazon Linux 2、CentOS、RHEL、Rocky Linux、SUSEでNTFSを使用するには、最初にこれらのディストリビューションでNTFSサポートを有効にしておきます。

USB 3Dマウス VID:PID
3DConnexion SpaceMouse Pro 046d: c62b
USBスキャナー VID:PID
Epson Perfection V330 photo 04B8: 0142
Yubico USB VID:PID
Yubico YubiKey OTP+FIDO+CCID -Keyboard, HID 1050:0407
WebカメラUSB VID:PID
Logitech composite USB device – WebCam, Audio 0460:0825

USBデバイスリダイレクトの構成

USB/IPカーネルモジュールのインストールまたはコンパイル(CentOS、RHEL、Rocky Linuxのみ)

Linux VDAは、USBデバイスリダイレクトの仮想ホストコントローラーとして、USB/IPを使用します。ほとんどの場合、USB/IPカーネルモジュールはLinuxカーネルバージョン3.17以降でリリースされているため、デフォルトではカーネルモジュールをビルドする必要はありません。ただし、USB/IPカーネルモジュールは、CentOS、RHEL、Rocky Linuxでは使用できません。これらのLinuxディストリビューションでUSBデバイスリダイレクトを使用するには、USB/IPカーネルモジュールをインストールするかコンパイルする必要があります。お使いのLinuxディストリビューションに基づいてhttps://pkgs.org/download/kmod-usbipからUSB/IPをダウンロードしてインストールします。

USBデバイスリダイレクトポリシーの設定

USBデバイスのリダイレクトの有効化および無効化は、Citrixポリシーにより制御されます。Delivery Controllerポリシーを使用してデバイスの種類を指定することもできます。USBデバイスリダイレクトをLinux VDAに設定するには、次のポリシーと規則を設定します:

  • クライアントUSBデバイスリダイレクトポリシー
  • クライアントUSBデバイスリダイレクト規則

USBデバイスリダイレクトの有効化

Citrix Studioで、クライアントからのUSBデバイスリダイレクトを有効(または無効)にします(ワークステーションのホストの場合のみ)。

[設定の編集] ダイアログボックスで、以下の設定を行います:

  1. [許可] を選択します。
  2. [OK] をクリックします。

USBデバイスリダイレクトの有効化

USBデバイスリダイレクト規則の設定

USBリダイレクトポリシーを有効にしたら、Citrix Studioを使用して、Linux VDAでの使用を許可または禁止するデバイスを指定して、リダイレクト規則を設定します。

[クライアントUSBデバイスリダイレクト規則] ダイアログボックスで、次の操作を行います:

  1. [新規] をクリックしてリダイレクト規則を追加するか、[編集] をクリックして既存の規則を確認します。
  2. 規則の作成または編集後、[OK] をクリックします。

クライアントUSBデバイスリダイレクト規則設定

汎用USBデバイスリダイレクトの設定について詳しくは、「Citrixの汎用USBリダイレクトの設定ガイド」を参照してください。

USBデバイスリダイレクト問題のトラブルシューティング

このセクションでは、Linux VDAの使用におけるさまざまな問題のトラブルシューティングについて説明します。

リダイレクトされたUSBディスクをマウント解除できない

Linux VDAでは、Citrix WorkspaceアプリからリダイレクトされたすべてのUSBディスクを管理者権限で管理し、所有者のみがリダイレクトされたデバイスにアクセスできるようにしています。そのため、管理者権限を持つユーザーだけがデバイスをマウント解除できます。

デバイスをマウント解除できない

USBディスクのリダイレクトを停止するとファイルが失われる

Citrix Workspaceアプリのツールバーを使用してUSBディスクのリダイレクトを直ちに停止すると、ディスク上で変更または作成したファイルが失われる可能性があります。この問題は、ファイルシステムにデータを書き込むとメモリキャッシュがファイルシステムにマウントされることが原因で発生します。データはディスクそのものには書き込まれません。Citrix Workspaceアプリのツールバーを使用してリダイレクトを停止した場合、データがディスクにフラッシュされる時間が残っていないため、データが失われます。

この問題を解決するには、ターミナルのsyncコマンドを使用してデータをディスクにフラッシュしてからUSBリダイレクトを停止します。

Citrix Workspaceアプリのツールバーにデバイスが見つからない場合

Citrix Workspaceアプリのツールバーにデバイスが表示されなくなることがありますが、これはUSBリダイレクトが行われていないことを示します。

Workspaceアプリツールバーのデバイスタブ

問題が発生した場合は、次の点を確認してください:

  • ポリシーが、USBデバイスリダイレクトを許可する設定になっている。
  • Citrix USBサービスモジュールが実行されている。

ポリシーが正しく設定されていない場合は、この記事の「USBデバイスリダイレクトポリシーの設定」セクションを参照して修正してください。

Citrix USBサービスモジュールが実行されていない場合は、次の手順を実行します:

  1. 次のコマンドを使用して、LinuxディストリビューションでUSB/IPカーネルモジュールが利用可能かどうかを確認します:

    modinfo usbip-core
    <!--NeedCopy-->
    
  2. 出力が次のように表示される場合は、Linuxディストリビューションに基づいてUSB/IPカーネルモジュールをインストールまたはコンパイルします:

    modinfo: ERROR: Module usbip-core not found.
    <!--NeedCopy-->
    
    • Amazon Linux 2、CentOS、RHEL、Rocky Linuxの場合は、この記事の「USB/IPカーネルモジュールのインストールまたはコンパイル」セクションを参照してください。
    • SUSEの場合は、https://software.opensuse.org/package/usbipからUSB/IPパッケージをダウンロードしてインストールします。
    • Ubuntu/Debianの場合は、次の手順を実行してUSB/IPカーネルモジュールをコンパイルおよびインストールします:

      1. USB/IPカーネルモジュールのソースコードをダウンロードします。

        https://github.com/torvalds/linux/tree/master/drivers/usb/usbipでLinuxカーネルリポジトリに移動し、ターゲットのLinuxカーネルバージョン(v4.15以降)タグを選択し、https://github.com/torvalds/linux/tree/v4.15/drivers/usb/usbipなどのリンクを取得します。

        DownGitに移動し、前述のリンクを入力して、USB/IPソースコードをダウンロードする用のダウンロードリンクを作成します。

      2. 次のコマンドを使用してソースファイルを解凍します:

        unzip ${USBIP_SRC}.zip
        
        cd usbip
        <!--NeedCopy-->
        
      3. Makefileファイルを次のように変更します:

        # 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. ソースコードをコンパイルします:

        apt-get install linux-headers-`uname -r`
        
        make -C /lib/modules/`uname -r`/build M=$PWD
        <!--NeedCopy-->
        
      5. USB/IPカーネルモジュールをインストールします:

        cp usbip-core.ko vhci-hcd.ko /opt/Citrix/VDA/lib64/
        <!--NeedCopy-->
        
      6. ctxusbsdサービスを再起動して、USB/IPカーネルモジュールを読み込みます:

        service ctxusbsd restart
        <!--NeedCopy-->
        

Citrix WorkspaceアプリのツールバーにUSBデバイスが表示されるが [ポリシーの制限] と表記されリダイレクトが失敗する

問題が発生した場合は、次の手順を実行してください:

  • Linux VDAポリシーを、リダイレクトを有効にする設定にします。
  • Citrix Workspaceアプリのレジストリで追加のポリシー制限が構成されているかを確認します。レジストリパスでDeviceRulesを確認し、この設定がデバイスのアクセスを拒否しないようにします:

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

USBデバイスのリダイレクトは正常に行われるが、セッションでデバイスを使用できない

通常、リダイレクトできるのはサポートされているUSBデバイスのみとなります。他のデバイスがLinux VDAのアクティブなセッションにリダイレクトできる場合もあります。リダイレクトしたデバイスごとに、ユーザーの所有するノードがシステムの /dev パスに作成されます。ただし、ユーザーがデバイスを正常に使用できるかどうかはドライバーと構成によって決定されます。所有(プラグイン)しているもののアクセスできないデバイスを見つけた場合は、そのデバイスを制限されていないポリシーに追加します。

注:

USBドライバーの場合は、Linux VDAがディスクの設定とマウントを行います。ユーザー(およびデバイスをインストールした所有者のみ)は追加の設定なしでディスクにアクセスできます。「サポートされているデバイス一覧」に掲載されていないデバイスについては、これが適用されないことがあります。

USBデバイスリダイレクト