AndroidをBluetooth PANクライアントにする

たとえば、HYBRID W-ZERO3のインターネット共有機能を使って、Androidからインターネット接続する方法です。
うちのMOTOROLA CHARMは一般的なAndroid同様Wi-Fiアドホック接続ができません。
IS01についてはwifi_supplicantを入れ替えるとかしてアドホック接続ができるようになりましたが、
MOTOROLA CHARMは少しマイナーな機種なのか、そのような情報を探しても見つからないのでした。
そこで、Bluetooth PANのクライアントになる手法はないかと探してみたところ、
次のようなページに出くわしました。
Androidでbluetooth PAN接続(クライアント側) - 新しいもの好きのブログ
ただこの記事中にあるpandについては、記事中記載のような、busyboxでなんとか、っていうことが当方のCHARMではできなかったので、他の方法を探っていたところ、何とかなったと。
で、その備忘録としてエントリーすることにしました。

準備

  • Android端末とBluetooth PANルーター(例:HYBRID W-ZERO3)で一度Bluetoothペアリングしておく(一度だけでいい。)
  • rootはとっておく
  • busyboxは入れておく
  • 端末エミュレータを入れておく(CHARMはキーボードがあるのでこれでダイレクトに操作できる)。もしくは、PCとadb接続しておく。
  • Wireless Tetherをアンドロイドマーケットからインストールしておく。このアプリそのものを使うわけではないが、このアプリに含まれている pand を利用する。

https://market.android.com/details?id=android.tether

/data/data/android.tether/bin/pand -s -r PANU -c xx:xx:xx:xx:xx:xx   #W-ZERO3のBluetoothアドレス
sleep 5
/system/bin/ifconfig bnep0 down 192.168.0.2 netmask 255.255.255.0 up #W-ZERO3の場合。
/system/bin/route add default gw 192.168.0.1 dev bnep0               #W-ZERO3の場合。
/system/bin/setprop net.bnep0.dns1 8.8.8.8                           #Google Public DNSサーバー。192.168.0.1のほうがいい?
/system/bin/setprop net.dns1 8.8.8.8                                 #Google Public DNSサーバー。192.168.0.1のほうがいい?
/system/bin/ifconfig rmnet0 down
echo done.
/system/bin/ifconfig bnep0 down
/data/data/android.tether/bin/pand -K
echo disconnected.
  • 次の通り実行権限を与える。
# chmod 755 /data/local/bin/panon.sh
# chmod 755 /data/local/bin/panoff.sh
  • 準備は以上。

いよいよ接続する

  • HYBRID W-ZERO3Android端末のBluetooth機能をオンにする。Wi-Fiはオフにしておくといいかな。他の接続も。
  • HYBRID W-ZERO3のインターネット共有機能をオンにする(インターネット共有機能を利用するためには、HYBRID W-ZERO3になにかSIM(W-SIMではない)が入っていて、W-CDMAをオンにしておく必要があります。またPHS回線でインターネット共有するためには、インターネット共有画面から "CLUB AIR-EDGE"を選択してください。W-CDMAのAPN設定を削除していくと間違いがなくていいかも。)
  • Android端末の端末エミュレータから次の通り打ち込む。
$ su
# panon.sh
  • しばらくするとつながる!

これでオーケー。

一部のアプリを除き、ネット接続できるはずです。
IPレベルでは接続できているのですが、ネット接続しているというフラグをアプリレベルでうまく拾っていないアプリはネット接続できないようです(GMail、en2chなど。anちゃんはオーケーでした。)
また、Android端末の電源ボタンを押し、サスペンドさせたのち、もう一度電源ボタンを押してオンにしても、うまくHYBRID W-ZERO3と再接続されるようです。(だめなら切断・接続してやると)。

切断する。

$ su
# panoff.sh
  • 即切断される。

というわけで

少し手間。そして日常使いするにはもう少し工夫が必要ですが、技術的にはPANクライアントにすることは出来そうです。
HYBRID W-ZERO3Android端末をお持ちの方は、面白いのでお試しいただくと、楽しいかもしれません。