新しもの好きプログラマの耳より情報ブログ

仕事でもあるプログラミングについて役に立ちそうな情報を発信していこうというブログです。役に立たなそうな情報はfacebookで。

proxmox(VMWare)のWindowsでのUSBリダイレクトは、最新版のvert-viewerでは動かないので注意(2024/10/19時点)

概要

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上にWindowsVMを作成して、Windowsからリモート接続して使う場合に、リモート接続元のPCに接続したUSBデバイスVM上で使用できると便利です。(proxmox自体については他の情報を参照ください。知っている前提で書きます)

こうした機能をUSBリダイレクト、あるいはUSBパススルーなどと呼びます。SPICEという方式で接続する事でこれを実現できます。Web上にはWindows非サポートといった情報もありますが、現時点ではWindowsでも使えるようになっていました。

しかし、ドキュメントの通りに構築しても、virt-viewer(SPICE)が異常終了してしまい、接続できません。最新版のvirt-viewerで報告のある問題で、未修正。旧バージョンを使えば解決する。という話のようです。正常動作が確認できたバージョンの組み合わせとセットアップ手順をまとめます。proxmox Ver.8.2.7で動作確認しました。

リモート接続先(VM)側

VM側では、次の手順が必要です。順序はおそらく自由です。

  1. 管理画面のVM設定から、ハードウェア->ディスプレイのVGAをSPICEに変更
  2. spice-guest-toolsをインストール
  3. https://www.spice-space.org/download.htmlからusbredirect-x64-0.14.0.msiをDLしてインストール
  4. ハードウェア->追加で、USBデバイスの「spice」を追加

リモート接続元(物理PC)側

USBメモリを接続する物理PC側では、下記の手順が必要です。順序はおそらく自由です。こちらは2つの解決方法があります。用途に合わせてどちらかを選択すれば良いです。順に説明します。

解決方法1, 1つ古いバージョンのvirt-viewerを使う場合

  1. UsbDkをインストール https://www.spice-space.org/download.htmlからVer.1.0.22 UsbDk_1.0.22_x64.msiをDLして使う
  2. 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だけを差し替える場合

  1. UsbDkをインストール https://www.spice-space.org/download.htmlからVer.1.0.22 UsbDk_1.0.22_x64.msiをDLして使う
  2. 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して使う
  3. libusbのDLLだけを最新版へ差し替え
    1. VC++ランタイム(x64)が入っていない場合は、インストールする
    2. libusb 最新版Ver.1.0.27 https://github.com/libusb/libusb/releases/tag/v1.0.27のページを開く
    3. 7zファイル(libusb-1.0.27.7z)をDLして解凍し、VS2022-x64版のDLLを見つける(libusb-1.0.27\VS2022\MS64\dll\libusb-1.0.dll)
    4. virt-viewerのインストール先(%ProgramFiles%\VirtViewer v11.0-256\bin)を開き、そのファイルを上書きする ※バージョンによってフォルダ名が変わりそうなので注意

まとめ

ドキュメントには使えると書かれているのに、実際に最新版を入れると使えない、という罠がありました。思わず挫折してしまいそうになりますが、解決方法もありました。諦めずにproxmoxを使っていきましょう!