VirtualBox上で稼働するUbuntuに、ホストのUSBデバイスを認識させる方法について解説します。
VirtualBoxへのUSBデバイスの接続
ホスト(VirtualBoxを起動するマシン)に接続されたUSBデバイスをVirtualBoxの仮想環境上で利用するためには、接続作業が必要になります。
VirtualBox最下段のインジケータ、左から3番目にUSBデバイスのアイコンが位置していますが、クリックするとホストに接続されているUSBデバイスの一覧が表示されます(MacBook ProにFTDI社のUM232Hを接続した状態での実行例)。
目的のデバイスをマウスで選択しクリックすると、
UM232HがVirtualBoxに接続され、チェックマークが入ります。
Ubuntuでの認識
Ubuntuには、デフォルトでFTDIシリアルポートドライバがインストールされているため、UM232Hが接続されると、仮想シリアルポートへアクセスするためのデバイスファイルが出現します。
crw-rw---- 1 root dialout 188, 0 12月 21 11:11 /dev/ttyUSB0
/dev/ttyUSB0はキャラクタ型デバイスファイルであり、グループオーナーはdialout(発信)となっています。
Ubuntuでは、デバイスファイル以外に/dev/serialディレクトリも新たに登録されます。
$ tree /dev/serial /dev/serial ├── by-id │ └── usb-FTDI_UM232H_FTUG3YAF-if00-port0 -> ../../ttyUSB0 └── by-path └── pci-0000:00:06.0-usb-0:2:1.0-port0 -> ../../ttyUSB0
ホスト環境からの切断
UM232HがUbuntu上で認識されると同時に、ホスト環境では切断されます。
ls: /dev/*serial*: No such file or directory
MacBookPro:~ $ kextstat |grep FTDI
MacBookPro:~ $
/devディレクトリのデバイスファイルエントリは消失し、FTDIシリアルポート対応拡張モジュールもアンロードされています。この時点で、ホスト上のD2XXライブラリを使用したプログラムはFTDIデバイスを認識できなくなりますので、注意してください。
VirtualBoxステータスラインのUSBアイコン上で切断を行うと、再びホスト環境に拡張モジュールがロードされ、デバイスファイルも復帰します(Ubuntu上のデバイスファイルは消失)。