2021年7月17日土曜日

VirtualboxでUSBが接続できないとき

今年の1月の緊急事態宣言のとき、去年買ったPCのVirtalBox上にWindows10をインストールして仕事用の環境を構築した。

VirtualBox内のWindows10で、以前から使っているARM用JTAG"J-link"は動くが、最新のIARの"I-Jet"は動かなかった。
通常動作時に頻繁にマイコンの電源が切れる装置の開発をしているため、最終製品段階でJTAGはほぼ使えないので、JTAGを使った開発はサブルーチン単位の動作確認になる。この場合、JTAGに高速性はほぼ必要ないので"J-link"で充分だ(どうしてもI-Jetが必要と感じたことはない)。
そのため、"J-link"を使って開発していた(更に昔からOpenOCDで使っているブルガリアのやつでも速度的にはいいのだが、マイコン電源電圧が合わない)。
何故"I-Jet"は動かないんだろう?と思いながらも、困らないので放置していた。

Windowsで記録メディアを読みたいときもある。
USBカードリーダをVirtualBoxにつなごうとすると、エラーになってつながらなかった。
この場合も、\\vboxsrv\xxxxを使って誤魔化していたので、問題にならなかった。
「Windowsゲストでは、ダメなデバイスがあるんだな」みたいに考えて、調べもしなかった。

ところが Ubuntu Budgie 20.04 ゲストでもカードリーダが認識できなかった。
それどころかUSB BOM(Bulk Only Mass strage)デバイス、すなわちUSBメモリも認識できない。

これはなにかおかしい。調べはじめた。

色々見ていくと、USB1.1のデバイスはつながる。
しかし、USB2.0やUSB3.0デバイスはつながらない、という事がわかった。

考えてみれば、VirtualBoxのUSBコントローラはUSB1.1をエミュレーションしている。
USB2.0やUSB3.0を使うには「VirtualBox Extention Pack」をインストールする必要がある。

使用しているVirtualBoxのバージョンに合ったExtention Packが必要だ。
私は、OraclのVirtualBoxのダウンロードページから得た6.1系のVirtualboxを使っているので、そのExtention Packが必要になる。
ダウンロードページの先頭付近の少し下、VirtualBox 6.1.22 Oracle VM VirtualBox Extention Packと書かれたところにある"All supported platforms"と書かれたリンクをクリックする。
これをクリックすると、Virtualboxが立ち上がってきて、Extention Packのインストール確認のメッセージが表示される。
使用許諾その他の質問に適切に答えてインストールを行う。

Extention Packインストール後に、仮想マシンのUSB設定の画面を表示すると(仮想マシンは停止している状態)、USB2.0とUSB3.0が現れる。
USB3.0を選択して、仮想マシン(この場合はWindows10)を動かせば、つながらなかったUSBデバイスがつながるようになる。

解ってしまえば、簡単な事だ。

0 件のコメント:

コメントを投稿