動かざることバグの如し

近づきたいよ 君の理想に

ProxmoxでUSBパススルーを実現する

USBパススルー

ここでいうUSBパススルーは物理鯖であるホストに繋いだUSBを仮想マシン側が認識できる技術

要は仮想マシンでも手元にあるUSB機器使いたいよね、って話

環境

やり方

最初はまだUSB機器を接続しないこと!

ここでのSSH作業はすべて親であるProxmox側でやる。

まずは接続先のVMIDを調べておく

qm monitor <VM_ID>

次のコマンドでホスト側のUSB一覧が表示される

info usbhost

当然何も接続されていなければ何も表示されない

ここでUSBを接続してもう一度実行 認識すればこのように表示されるはず

qm> info usbhost
  Bus 2, Addr 7, Port 1.6, Speed 480 Mb/s
    Class 00: USB device 1307:0165, series

必要なのは Bus番号Port番号であり、Busが2、Portが1.6といえる

最後に/etc/pve/qemu-server/<VM_ID>.confにUSB情報を記述する

構文はusb0: host=<Bus_num>-<Port_num>となり、上の例だとusb0: host=2-1.6と記述する。

他の例

  • Bus 2, Port 1 => 2-1
  • Bus 1, Port 1, Port 3 => 1-1.3

記述先は必ず[to2]より上に書くこと!

boot: dcn
bootdisk: virtio0
<略>
virtio0: local2:115/vm-115-disk-1.qcow2,format=qcow2,size=58G
usb0: host=2-1.6 ←コレ!

[to2]
boot: dcn
bootdisk: virtio0
cores: 2
<略>

そして最後にStop→Start OSによる再起動では認識できないので注意

確認

さっきのqmコマンドで今度はクライアント側を確認

qm monitor <VM_ID>
qm> info usb
  Device 0.2, Port 1, Speed 12 Mb/s, Product QEMU USB Tablet
  Device 1.2, Port 1, Speed 480 Mb/s, Product series

仮想マシン側からでも

user@ubuntu:~$ lsusb 
Bus 001 Device 002: ID 1307:0165 Transcend Information, Inc. 2GB/4GB Flash DriveBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0627:0001 Adomax Technology Co., Ltd 
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub