ESXi6.7 で Bluetooth をパススルーしてみた備忘録です.
結論から言うと,
いちおう出来るみたい
です.
検証環境
基本となる仮想環境は以下の通りです.
ESXi6.7 on Intel NUC7PJYH
見ての通り Intel の NUC です.詳細は,
あたりを見ていただければ良いと思いますが,NUC ですので,もちろん Wifi/Bluetooth が載っています.
調べてみると,Intel Wireless-AC 9462 + Bluetooth 5.0 となっていますので,M2 接続のカードです.と言うことは,PC とは PCI-Express 接続かと思ったんですが,これは Wifi の方だけで,Bluetooth の方は USB 接続されているようです(Bluetooth も PCI-Express 接続かと思ってたので,実はこの部分でしばらくハマってしまいました).
だから,ESXi 上のゲスト OS に Bluetooth をパススルーしたければ,ゲスト OS のハードウェアの「設定」画面で,
その他のデバイスの追加 → USB デバイス
の順に選べば良い.NUC に何もつないでなければ,「Intel product 0x0aaa」が対応するデバイスとして追加されるはずです.
なお,USB なので,追加はゲスト OS 起動したままでも可能ですし,もちろん取り外しもできます.
ゲスト OS が Windows 10 の場合
Windows 10 (いちおう最新版の1903)の場合,Bluetooth をパススルーしてやると,プラグアンドプレイで自動的にドライバが追加され,普通に,タスクバーに Bluetooth のアイコンが現れます.
実際に Bluetooth 接続の機器を使う場合は,通常通りタスクバーのアイコンから該当機器を接続してやれば良いだけで,以下の様な機器で試しましたが,どれも普通に使えました.
- キーボード: Logicool CRAFT
- マウス: Logicool MX Anywhere 2S
- マウス: Logicool Pepple M350
- スピーカー: Sony SRS-HG10
- ワイヤレスイヤフォン: SONY WF-1000XM3
スピーカー,ワイヤレスイヤフォン共に,音楽,音声用として認識されます.
実際に,Youtube などでも若干遅れ気味かなとは感じますが,普通に聴けますし,速やかに接続,切断も行えます.全く何の不具合もない.正直,期待していなかったので,驚きました.
ゲスト OS が Ubuntu の場合
Windows 10 で普通に使えることが分かりましたので,次に試したのは Ubuntu です.どちらかと言えば,こちらが今回の本命です.
試した ver. は,
- Ubuntu Desktop 18.04.3 LTS
- Ubuntu Desktop 19.10
の2種類です.
結論は以下の通り.
その後,いろいろやってみた結果,Ubuntu 18.04 も 19.10 も(あと,Fedora ver.31 も)リセットすると(必ずではないけど,ほぼ確実に)音声系含め使えるようになることが分かりました.多分起動時の初期化がうまくいってないんだろうと思います.
具体的には,以下のようにすることで USB をリセットできます.
$ sudo apt install usb_modeswitch $ sudo usb_modeswitch -v 0x8087 -p 0x0aaa --reset-usb
オプション -v の後にある 0x8087 はベンダー ID,-p はプロダクト ID で,これは lsusb コマンドで確かめることができます.
$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 004: ID 8087:0aaa Intel Corp. Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
なお,初期化がうまくいかない理由はよく分かりません.機器の性能不足なのかもしれません.
まず,どちらのバージョンも Windows のときと違い,かなり不安定です.Bluetooth の設定画面を表示させようとするとしばらく画面がフリーズします.そして 18.04.3 LTS の場合,
- キーボード: Logicool CRAFT, OK
- マウス: Logicool MX Anywhere 2S, OK
- マウス: Logicool Pepple M350, OK
- スピーカー: Sony SRS-HG10, ダメ
- ワイヤレスイヤフォン: SONY WF-1000XM3,ダメ
のような感じで,キーボードとかマウスの場合はペアリングできることが多いですが,音系統は全くペアリングしてくれません.これは,bluetoothctl コマンドでやっても同様です.
さらに,なぜか最新の 19.10 だと,USB デバイスの一覧を表示する lsusb コマンドで該当の Bluetooth デバイスが
Bus 002 Device 004: ID 8087:0aaa Intel Corp. VMware Virtual USB Mouse
のように表示されてしまいますし,また,ペアリングしようにも検知が全くできないことの方が多く,使い物になりません.
Linux の場合,Intel Wireless-AC 9462 は kernel 4.14+ でサポートとなっていて,上記2つのバージョンは両方とも /lib/firmware を見るときちんと対応するドライバ含んでいます.
と言うことで,Ubuntu 自体はサポートしているハズだし,実際入力系はキチンと使えるのですが,なぜだか音声系はダメと言うことで,これがそもそも Ubuntu と Intel Wireless-AC 9462 の相性が悪いのかそれとも ESXi のパススルーによって生じる不具合なのかは今の所全く分かりません.
全体的な感想
Windows10 では動き,Ubuntu では中後半端に動くと言う少し残念な結果だったのですが,個人的には Windows10 で何の不具合もなく使えてしまったという方が意外でした.
と言うのも,VMWare Fusion の場合,音声系の Bluetooth プロファイルはサポートされないという説明があったからです.
だから,Windows10 で Bluetooth の USB スピーカーをつないで音が出るのに気が付いて,もしかしたら……と期待したのですが,Ubuntu だと上の説明にある通り音声系は動かなかった訳です.と言うことで,動かないのは ESXi でパススルーしてるからという可能性の方が高いのではないかと思っているのですが,これを確かめるには NUC に直接 Ubuntu を入れなければなりません.
しかし,すでに NUC の上の ESXi でいろいろ個人的なサービスを動かしているので,これを簡単に試すわけにもいかない訳で,どうしようかなぁ……と現在少し悩み中です.
以上!