Raspberry Piを使って6LoWPANを試していたけど、ぶっちゃけRPiを持ち運ぶも面倒だし、Linux Kernel 3.18.3 とかで普通に6LoWPANは使えるから、OS上の仮想Linuxで使いたくなるのは自然の道理。
という事で、Virtual Box上のUbuntu Linuxから6LoWPANで物理デバイス(nRF51)と6LoWPAN(IPv6 over Bluetooth)で疎通を行うことにした。けどVirtualBoxのHost Controllerとの相性がダメなのか、仮想OSへBluetoothのつなぎが出来ない。色々と試してみたけど、どうやっても出来なかったから、VMwareを使うことに。
これでRPiを使う必要もなくなるし、VM上でサクサク6LoWPAN、IPv6の実験が出来る便利な環境になる。ルーティング・カーネルのテスト、6LoWPANもめちゃ簡単にテストできるようになるから、VM上のLinuxを使うのはお勧め。方法は簡単でカーネル取ってきてビルドするだけ。ぶっちゃけRaspberry Pi/Edison…etc とかarm向けのビルドも全部一緒のノリで出来ると思われ(全部検証したわけじゃないけど、だいたい一緒)。
カーネルの設定はこちらに載せている通りにすればOK。一応、Ubuntu Server 14.04にdpkg -i で打ち込んでバッチリ動いている。自分がビルドしたKernelパッケージはこちら。
3.18.3 Linux kernel for Ubuntu
build config
ダウンロードしてきたらインストール&再起動で最新カーネルに変えたら終了。めちゃ簡単。こんな感じ。
MacのUSBポートにはnRF51、BroadcomのBluetoothドングル(市販の普通のもの)を挿して、nRF51 <-> BluetoothドングルがMac上のVM Linuxを介してIPv6 over Bluetoothとして疎通している。
何を思っているかというと、WiFiが使えなくてルータがない、シリアルも無くても、VMのUbuntu上でIPv6 over Bluetoothで疎通をしてネットワークを作ってテスト・開発・検証できる(Macは対応している訳じゃないからね)。VM上のLinuxを6LoWPANルータみたいな感じで使えるし、便利な環境も作れるようになる。
このイメージを配ったら、誰でもRPiとか無くてもすぐ6LoWPANを使った開発が進められるよーになると思っている。もちろん、Bluetoothの方は必要になるけどね。
ちなみに、VMのMacはYosemiteの環境で、VirtualBox上のUbuntu LinuxからBluetoothを利用・終了するときは、次のコマンドをMacOS上で行う必要がある。ただ、Host Controllerが突然dieするのは乗り越えられなかった…VMwareでは以下は不要。
# Load
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.blued.plist
sudo kextunload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
sudo kextunload -b com.apple.iokit.IOBluetoothHostControllerUSBTransport
# Unload
sudo kextload -b com.apple.iokit.IOBluetoothHostControllerUSBTransport
sudo kextload -b com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport
sudo launchctl load /System/Library/LaunchDaemons/com.apple.blued.plist
「How to use 6LoWPAN on VMware Ubuntu Linux in MacOS」への1件のフィードバック