USBデバイスリダイレクト
Citrix Workspace™アプリとLinux VDAデスクトップの間でUSBデバイスが共有されます。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デバイスリダイレクトの仕組み
通常、USBデバイスがLinux VDAに正常にリダイレクトされると、システム/devパスに1つ以上のデバイスノードが作成されます。ただし、リダイレクトされたデバイスがアクティブな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 |
注:
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デバイスリダイレクトの構成
(RHELおよびRocky Linuxのみ)USB/IPカーネルモジュールのインストールまたはコンパイル
Linux VDAは、USBデバイスリダイレクトの仮想ホストコントローラーとしてUSB/IPを使用します。ほとんどの場合、USB/IPカーネルモジュールはLinuxカーネルバージョン3.17以降でリリースされているため、デフォルトでカーネルモジュールをビルドする必要はありません。ただし、USB/IPカーネルモジュールはRHELおよびRocky Linuxでは利用できません。これらのLinuxディストリビューションでUSBデバイスリダイレクトを使用するには、USB/IPカーネルモジュールをインストールまたはコンパイルする必要があります。お使いのLinuxディストリビューションに基づいて、https://pkgs.org/download/kmod-usbipからUSB/IPをダウンロードしてインストールしてください。
USBデバイスリダイレクトポリシーの設定
Citrixポリシーは、USBデバイスリダイレクトが有効か無効かを制御します。デバイスの種類は、Delivery Controller™ポリシーを使用して指定することもできます。Linux VDAのUSBデバイスリダイレクトを構成する際は、以下のポリシーを構成してください。
- クライアントUSBデバイスリダイレクトポリシー
- クライアントUSBデバイスリダイレクト規則
USBデバイスリダイレクトの有効化
Citrix Studioで、クライアントからのUSBデバイスリダイレクトを有効(または無効)にします(ワークステーションホストのみ)。
[設定の編集] ダイアログで:
- [許可] を選択します。
- [OK] をクリックします。

USBデバイスリダイレクト規則の設定
USBリダイレクトポリシーを有効にした後、Citrix Studioを使用して、Linux VDAで許可(または拒否)されるデバイスを指定することで、リダイレクト規則を設定します。
[クライアントUSBデバイスリダイレクト規則] ダイアログで:
- リダイレクト規則を追加するには [新規] をクリックし、既存の規則を確認するには [編集] をクリックします。
- 規則を作成(または編集)した後、[OK] をクリックします。

注:
USBデバイスリダイレクトを構成する際は、[クライアントUSBデバイスリダイレクト] オプションを [許可] に設定し、[クライアントUSBデバイスリダイレクト規則] を [Allow:#all ok] に構成してください。両方の設定を構成しないと、セッション内でクリックしたときに外部マウスが消える可能性があります。
Azure上のUbuntuでのUSBリダイレクトのサポート
デフォルトでは、Azure上のUbuntuには特定のUSBカーネルドライバーが含まれていない場合があります。以下の手順に従って、汎用デバイスと特定デバイスの両方でUSBリダイレクトを有効にできます。
汎用デバイスのUSBリダイレクトの有効化
標準のUSBストレージデバイス、YubiKey USB HIDデバイス、ASIXネットワークアダプターなどの汎用USBデバイスの場合、以下の構成スクリプトを実行するだけで済みます。
sudo /opt/Citrix/VDA/sbin/usbazure/ctxusbcfg.sh
スクリプトを実行した後、Citrix USBサービスを再起動してサポートを有効にします。
sudo service ctxusbsd restart
特定デバイス用のUSBカーネルドライバーモジュールのビルド
すぐにサポートされていないデバイスの場合、以下の一般的なワークフローを使用して、必要なカーネルドライバーモジュールをビルドおよびインストールできます。以下の例では、Kingston DataTraveler 2.0 Stick (VID=0930, PID=6544) を使用して説明します。
前提条件:
-
Linux VDAパッケージがインストールされたVDAマシン。
-
汎用Linuxカーネルを実行しているLinux物理マシン。
Linux物理マシンで必要なカーネルドライバーの特定
ステップ1 - デバイスの接続
USBデバイスを汎用Linuxカーネルを実行している物理マシンに接続します。
ステップ2 - USBカーネルドライバー識別スクリプトの準備
- `/opt/Citrix/VDA/sbin/usbazure/ctxusbkodriver.sh` を物理マシンにコピーし、実行可能にします。
ステップ3 - デバイスのVIDとPIDの取得
lsusb を使用して、接続されているUSBデバイスを特定します。
lsusb
Example output:
Bus 001 Device 040: ID 0930:6544 Toshiba Corp. TransMemory-Mini / Kingston DataTraveler 2.0 Stick
<!--NeedCopy-->
- #### ステップ 4 - 必要なカーネルドライバーの特定
- デバイスの `VID:PID` を指定してヘルパースクリプトを実行します。
./ctxusbkodriver.sh 0930:6544
Example output:
All USB Kernel drivers for 0930:6544:
usb-storage
<!--NeedCopy-->
VDAマシンでのカーネルドライバーのビルドとインストール
ステップ 1 - ビルド環境の構成
構成スクリプトを実行してビルド環境をセットアップし、必要なカーネルソースコードを /root/.ctxusb にダウンロードします。
sudo /opt/Citrix/VDA/sbin/usbazure/ctxusbcfg.sh
ステップ 2 - カーネルビルド構成の決定
構成スクリプトを使用して、適切なカーネルモジュールのビルドオプションを取得します。
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-->
ステップ 3 - カーネル構成オプションの検査と記録
cd /root/.ctxusb/linux
make menuconfig
<!--NeedCopy-->
- 検索機能(
/を押す)を使用してオプション(例:CONFIG_USB_STORAGE)を特定します - 関連する設定(例:
CONFIG_USB_SUPPORT=y、CONFIG_USB_STORAGE=m)を記録します - 変更を保存せずに終了します
ステップ 4 - カーネルドライバーのビルドとインストール
カーネルモジュールをコンパイルしてインストールします。
sudo /opt/Citrix/VDA/sbin/usbazure/ctxusbkobuild.sh /root/.ctxusb/linux/drivers/usb/storage "CONFIG_USB_SUPPORT=y CONFIG_USB_STORAGE=m"
ステップ 5 - カーネルドライバーの検証
modinfo usb-storage
正常に完了すると、指定したUSBデバイスのカーネルドライバーがビルドされ、インストールされます。
USBデバイスリダイレクトの問題のトラブルシューティング
このセクションの情報を使用して、Linux VDAの使用時に発生する可能性のあるさまざまな問題のトラブルシューティングを行います。
リダイレクトされたUSBディスクのマウント解除不可
Linux VDAは、Citrix WorkspaceアプリからリダイレクトされたすべてのUSBディスクを管理者権限で管理し、所有者のみがリダイレクトされたデバイスにアクセスできるようにします。そのため、デバイスのマウント解除は管理者権限でのみ可能です。

USBディスクのリダイレクト停止時のファイル消失
Citrix Workspaceアプリのツールバーを使用してUSBディスクのリダイレクトをすぐに停止すると、ディスク上で変更または作成したファイルが失われる可能性があります。この問題は、ファイルシステムにデータを書き込む際に、システムがファイルシステム内のメモリキャッシュをマウントするため発生します。データはディスク自体には書き込まれません。Citrix Workspaceアプリのツールバーを使用してリダイレクトを停止すると、データがディスクにフラッシュされる時間がなくなり、データが失われます。
この問題を解決するには、USBリダイレクトを停止する前に、ターミナルで **sync** コマンドを使用してデータをディスクにフラッシュします。
Citrix Workspaceアプリのツールバーにデバイスがない
Citrix Workspaceアプリのツールバーにデバイスが表示されない場合があります。これは、USBリダイレクトが行われていないことを示しています。

この問題が発生した場合は、以下を確認してください。
- USBデバイスリダイレクトを許可するようにポリシーが構成されていること
- Citrix USBサービスモジュールが実行されていること
ポリシーが正しく設定されていない場合は、この記事の「USBデバイスリダイレクトポリシーの設定」セクションを参照して修正してください。
Citrix USBサービスモジュールが実行されていない場合は、次の手順を実行します。
-
次のコマンドを使用して、お使いのLinuxディストリビューションでUSB/IPカーネルモジュールが利用可能かどうかを確認します。
modinfo usbip-core <!--NeedCopy--> -
出力が次のように表示される場合は、お使いのLinuxディストリビューションに基づいてUSB/IPカーネルモジュールをインストールまたはコンパイルします。
modinfo: ERROR: Module usbip-core not found. <!--NeedCopy-->- RHELおよびRocky Linuxの場合は、この記事の「RHELおよびRocky Linuxのみ - USB/IPカーネルモジュールのインストールまたはコンパイル」セクションを参照してください
- SUSEの場合は、https://software.opensuse.org/package/usbip からUSB/IPパッケージをダウンロードしてインストールします
-
Ubuntu/Debianの場合は、次の手順を実行してUSB/IPカーネルモジュールをコンパイルしてインストールします
-
USB/IPカーネルモジュールのソースコードをダウンロードします。
Linuxカーネルリポジトリ https://github.com/torvalds/linux/tree/master/drivers/usb/usbip にアクセスし、ターゲットのLinuxカーネルバージョン(v4.15以降)タグを選択して、https://github.com/torvalds/linux/tree/v4.15/drivers/usb/usbip のようなリンクを取得します。
DownGit にアクセスし、上記のリンクを入力してUSB/IPソースコードをダウンロードするためのダウンロードリンクを作成します。
-
次のコマンドを使用してソースファイルを解凍します。
unzip ${USBIP_SRC}.zip cd usbip <!--NeedCopy--> -
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--> -
ソースコードをコンパイルします。
apt-get install linux-headers-`uname -r` make -C /lib/modules/`uname -r`/build M=$PWD <!--NeedCopy--> -
USB/IPカーネルモジュールをインストールします。
cp usbip-core.ko vhci-hcd.ko /opt/Citrix/VDA/lib64/ <!--NeedCopy--> -
ctxusbsd サービスを再起動してUSB/IPカーネルモジュールをロードします。
systemctl restart ctxusbsd <!--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はディスクを構成してマウントします。ユーザー(およびそれをインストールした所有者のみ)は、追加の構成なしでディスクにアクセスできます。これは、サポートされているデバイスリストにないデバイスには当てはまらない場合があります。