bluetooth PAN NAP構築(Ubuntu 16.04)
ロボコンの競技規則で無線通信はBluetoothのみという事態がルール補足情報により発覚し、WiFiでROSトピック飛ばそうと思っていた構想が砕け散りました。
bluetoothの仮想シリアルポートでrosserialノードを使用する手が真っ先に浮かびましたが、bluetoothでネットワークを作れないかと試行錯誤してみました。ドライバ壊してOS何度もインスコし直しました。
サーバ側、クライアント側でいろいろと準備が必要です。
試した環境は、サーバ側はUbuntu 16.04のPC、クライアント側はlubuntu 16.04のRaspberry Pi 3です。
Ubuntu 16.04でbluetoothのPAN(Personal area network)を使うには、bluemanの最新版をソースからビルドする必要があります。
(パッケージ化されている2.0.4でもサポートされているみたいですが、IPアドレスの取得ができず接続失敗となります…)
ここからソースをダウンロードして適当な場所に解凍 or cloneします。
github.com
こんな流れ↓でビルドするんですが、autogenやconfigureであれが足りないこれが足りないと言われるので逐次インストールします。
ソースに入っているDependencies.mdに依存関係が載ってるので一通りインストールしたほうが近道ですね。
./autogen.sh ./configure make sudo make install
たとえばD-BUSがないと言われたらこれをインストールします。
sudo apt-get install libdbus-1-dev
Bluezがないと言われたら、libbluetooth-devをインストールします。bluezをインストールしただけではだめだったので、これがなかなか解決に時間かかりました。
sudo apt-get install libbluetooth-dev
ほかにもlibudev-devなどが必要だったと思います。
また、isc-dhcp-serverとudhcpdもインストールしておきます。
bluemanのインストールが終わったら、dashからbluetoothマネージャを起動します。
メニューのローカルサービスを開き、NAPを有効にします。DHCPサーバはudhcpdを選択します。
あとは、ペアリングをすればネットワークアクセスポイントとして接続できるようになります。
接続が確立したらifconfigで確認します。
サーバ側はpan1というブリッジにIPが振られ、クライアント側はbnep0デバイスにIPが振られているのでそれを確認し、pingでも飛ばしてみましょう。
なぜかssh接続しようと思ったらうまくいかなかった。LAN経由でもできなくなってた。
bluetoothドライバ壊してUbuntu入れなおしたりしたんですが、なぜかsshインストールしたらssh使えるようになりました。
今まで特に何もせず使えてたはずでしたが…。
ともかく、bluetoothでネットワークを構築し、ROSのトピックも飛んだのでなによりです!