概要
proxmox(VMWare)では、2024/10/19現在、SPICEを使うことでWindowsVMでのUSBリダイレクトも可能となっています。しかし、実際に手順通りに最新版をダウンロードして動かすと上手く行きません。解決方法が分かったので、まとめます。
最初に結論まとめ
解決方法1
virt-viewer(SPICE)について、最新版のv11を使わず、1つ前のv10を使いましょう。それだけで解決します。
virt-manager download pageのVer.10.0-1.0 https://releases.pagure.org/virt-viewer/virt-viewer-x64-10.0-1.0.msiを使うことで、上手く行きました。
解決方法2
もし最新版のv11を使いたい場合は、libusbだけを最新版に差し替えても解決します。
vert-viewerインストール先のlibusbを、Ver.1.0.27へ差し替える事で、上手く行きました。
説明
proxmox上にWindowsのVMを作成して、Windowsからリモート接続して使う場合に、リモート接続元のPCに接続したUSBデバイスをVM上で使用できると便利です。(proxmox自体については他の情報を参照ください。知っている前提で書きます)
こうした機能をUSBリダイレクト、あるいはUSBパススルーなどと呼びます。SPICEという方式で接続する事でこれを実現できます。Web上にはWindows非サポートといった情報もありますが、現時点ではWindowsでも使えるようになっていました。
しかし、ドキュメントの通りに構築しても、virt-viewer(SPICE)が異常終了してしまい、接続できません。最新版のvirt-viewerで報告のある問題で、未修正。旧バージョンを使えば解決する。という話のようです。正常動作が確認できたバージョンの組み合わせとセットアップ手順をまとめます。proxmox Ver.8.2.7で動作確認しました。
リモート接続先(VM)側
VM側では、次の手順が必要です。順序はおそらく自由です。
- 管理画面のVM設定から、ハードウェア->ディスプレイのVGAをSPICEに変更
- spice-guest-toolsをインストール
- https://www.spice-space.org/download.htmlからusbredirect-x64-0.14.0.msiをDLしてインストール
- ハードウェア->追加で、USBデバイスの「spice」を追加
リモート接続元(物理PC)側
USBメモリを接続する物理PC側では、下記の手順が必要です。順序はおそらく自由です。こちらは2つの解決方法があります。用途に合わせてどちらかを選択すれば良いです。順に説明します。
解決方法1, 1つ古いバージョンのvirt-viewerを使う場合
- UsbDkをインストール https://www.spice-space.org/download.htmlからVer.1.0.22 UsbDk_1.0.22_x64.msiをDLして使う
- virt-viewerをインストール virt-manager download pageからVer.10.0-1.0 https://releases.pagure.org/virt-viewer/virt-viewer-x64-10.0-1.0.msiをDLして使う
- 2024/9/30現在、最新版ではないので、「Previous releases」からDLする必要があります
virt-viewer旧バージョンを使うことの影響
変更履歴を見ると、バグ修正とホットキー関連の変更がメインのようです。そのため影響は少なそうだと思いますが、この内容の影響が大きい場合は、少し手順が厄介になりますが、次のようにlibusbだけを差し替える手があります。
解決方法2, libusbだけを差し替える場合
- UsbDkをインストール https://www.spice-space.org/download.htmlからVer.1.0.22 UsbDk_1.0.22_x64.msiをDLして使う
- virt-viewerをインストール virt-manager download pageから最新版11.0-1.0 https://releases.pagure.org/virt-viewer/virt-viewer-x64-11.0-1.0.msiをDLして使う
- libusbのDLLだけを最新版へ差し替え
- VC++ランタイム(x64)が入っていない場合は、インストールする
- libusb 最新版Ver.1.0.27 https://github.com/libusb/libusb/releases/tag/v1.0.27のページを開く
- 7zファイル(libusb-1.0.27.7z)をDLして解凍し、VS2022-x64版のDLLを見つける(libusb-1.0.27\VS2022\MS64\dll\libusb-1.0.dll)
- virt-viewerのインストール先(%ProgramFiles%\VirtViewer v11.0-256\bin)を開き、そのファイルを上書きする ※バージョンによってフォルダ名が変わりそうなので注意
まとめ
ドキュメントには使えると書かれているのに、実際に最新版を入れると使えない、という罠がありました。思わず挫折してしまいそうになりますが、解決方法もありました。諦めずにproxmoxを使っていきましょう!