新しいもの好きのブログ

タイトルに反して結局熟成したものを買う小心者です。

Androidでbluetooth PAN接続(クライアント側)

2010-12-26 18:46:26 | モバイル
iPhoneにデータ定額SIMを挿し、テザリングしてHT-03A(アンドロイド側)をクライアントにしてAndroidもネットに繋がるようにする方法を考えました。

<なぜそんな事が必要なのか?>
1.iPhoneには脱獄せずに無線LANでテザリングする手段が無い事。
2.HT-03Aを無線ルーター化するとバッテリーの消費が激しい事。
3.iPhoneをwifi接続で使う場合、スリープ状態時のメールのプッシュ通知が15分間隔になってしまうため、リアルタイム性が悪くなる。
4.会社で無線LANを使うのは良くない。
  IDのバッティングも心配だし出来れば無線LAN以外の手段が良い。

そんなわけでiPhoneのBluetoothテザリングに目を付けました。
このテザリングはPANで接続する機能なのでクライアント側でPANのセットアップを出来ればいいわけです。
しかしこんなニッチな要求がないため、なかなか情報が見つからない。
逆にAndroidをPANサーバにしてiPhone/iPod Touch/iPadをクライアントにする方法はありましたが。(要JB)
海外サイトを調べるとヒントになる情報が見つかった。
どうやらrootを取ったAndroidでコマンドラインで操作したらいけると分かった。
なかなか上手くいかなかったけど、なんとか手順が確立できたので記録として記載しておきます。

<前提条件>
1.SIMフリーiPhone(JBしてるならそもそもこんなことをしなくても使えるので)
2.SIMフリーiPhoneで使えるSIM
3.root化したBluetooth内臓のAndroid端末(私はHT-03A Android2.2)
4.pand(多分wireless tether for root usersに入っているはず。)

<設定手順>
1.gscript liteをインストールする。
  シェルスクリプトをAndroid上で実行するためのアプリ。
  /SDCARD/gscript 以下に置いたファイルを実行できる。

2./sdcard/gscriptに以下のスクリプトを配置する。

pan-on.sh
------------------------------------------------------
pand -s -r PANU -c xx:xx:xx:xx:xx:xx ←iPhoneのbluetoothIDを指定する。
sleep 5 ←念のため
/system/bin/ifconfig bnep0 down 172.20.10.2 up
/system/bin/route add default gw 172.20.10.1 dev bnep0
/system/bin/setprop net.bnep0.dns1 220.159.212.200 ←dnsサーバ名を指定する。
/system/bin/setprop net.dns1 220.159.212.200
/system/bin/ifconfig rmnet0 down
------------------------------------------------------
※バージョンによって割り当てられるIPアドレスが違います。要注意。
172.10.20.*(iOS 4.1の場合)
172.20.10.* (iOS 4.2の場合)
DNSサーバはどこでもいけると思いますが私はmoperaのを使っています。


pan-off.sh
------------------------------------------------------
/system/bin/ifconfig bnep0 down
pand -K
/system/bin/ifconfig rmnet0 up
------------------------------------------------------

3.gscriptに上記2つのスクリプトを登録する。

4.iPhoneとHT-03Aのbluetoothベアリングを登録する。
  お互いの端末でbluetoothを有効にしたら出来ると思います。

これで準備完了。

<使い方>
接続する場合は、gscriptからpan-on.shを実行する。
これでiPhone側にテザリングと出れば成功です。
切断する場合は、gscriptからpan-off.shを実行する。


なお、HT-03Aからブラウザやgoogleマップは繋がりましたがアプリによっては
繋がらない場合がありました。
コロプラアプリはネットワークが見つからないとエラーに出てアクセス出来ませんでした。
不思議なことに一旦Wifiで繋いだ後は、Wifiを切断しても繋がりました。
最初の起動時のみネットワークの存在をチェックしているようです。
とりあえずこれで運用してみようと思います。


<2010/12/28 追記>
コロプラアプリがエラーになる件で追加設定をしました。
原因はおそらくネットワークが繋がっているかどうかをコマンドで見ているためです。
起動時および地点登録を行うタイミングでチェックしているようです。

ようは3GまたはWIFIで繋がっているように誤魔化せたらいいのですがそういったツールは
Androidには無いようです。
iPhoneには「3g unrestrictor」と言うツールがあるらしいですが。
3Gで実際に通信が出来なくても繋がっていたらOKなのではないかと思い考えました。
案の定、いけましたのでその方法を追記します。

今回の方法はドコモのSIM(音声、データ専用どちらでも可)+moperaU契約専用の手順となります。

1.まずはmopera Uが使えるようにライトプランUを契約する。
  iモード契約していたらISPセット割で特に追加費用は不要なはずです。

2.接続先APNを「0120.mopera.ne.jp」にして接続する。
  いわゆる設定用無料APNです。(多分・・・明日MyDocomoで確認予定。)
  ※12/31 何故か二日で51パケット4円かかっていました。もう少し調査します。
  ※1/5 それ以降は無料でした。有料APNの設定が残っていたのでそっちに繋がっていたのかも。

  接続さえ出来ればいいのでこれで十分です。

3.前述のiPhone Bluetooth PANと接続しておく。(pan-on.shを実行する。)


4.3Gネットワークインターフェイスを停止する。
  ここがポイントです。
  3G接続は有効ですが通信は不可にしておきます。

  # ifconfig rmnet0 down


以上。
これで3G接続をしているとシステムは認識するが、ルーティングはBluetoothPANになっているため、
パケットはiPhone側に流れます。
こんなことが出来るのは無料APNのあるドコモくらいかもしれません。
B-Mobileも登録用の無料APがあったような気がしますので出来るかもしれません。
4のコマンドは3のpan-on.shの最後に追記したらいいと思います。

これで電話とコロプラはAndroidで、ネットやメールはiPhoneで出来る環境が整いました。
iPhoneの方が操作性が圧倒的に良いのでほぼ理想的な構成になりました。
AndroidはAndroidで持ち運べるLinuxって感じで楽しいです。

最新の画像もっと見る

6 コメント

コメント日が  古い順  |   新しい順
助かります (某コロプラユーザ)
2011-09-26 19:38:25
 はじめまして。
 androidをPANクライアントにする方法を探して辿り着きました。(xdaフォーラムにも同じ様なエントリがありますがさっぱりでした。)
 私の場合は親がiPhoneではなくてWillcom WS027SHなのですが、もしかしたら出来るのかもしれないと考えはじめられました。でもLinuxをちゃんと勉強しないと無理そうですね。
Unknown (tiida9596)
2011-10-16 11:49:58
BT-PANクライアント機能を公式にサポートしてくれると良いんですけど何故かやってくれませんね。
androidをPCから操作するところでつまづくと思います。
繋がれば、後はややこしい操作は必要ないので、これを機に挑戦するのも良いかも。
成功をお祈りします。
なんとか出来ました (某コロプラユーザ)
2011-10-24 12:48:32
 こんにちは。
 Android端末のBT-PANクライアント化、Linuxについての知識など皆無でも、なんとか出来ました。繋がった瞬間は結構感動しました。
 でもコロプラはやはりダメですね。こちらはWillcomのPHS接続でせこく運用してまして、ですので3Gの登録用の無料APなど無いです。ユーザサポートに問い合わせてみましたが、逆に頓珍漢な質問をしてくる始末なのでもう諦めました。

 いろいろとありがとうございました。
Unknown (tiida9596)
2011-10-25 19:38:21
出来たようですが残念ですね。
私も無料AP利用以外の方法を探ってますがまだ見つかっていません。
コロプラ社的には位置登録の不正対策のため、仕様は変えてくれないと思われます。
私も今後プラン変更で無料APが使えなくなるのでコロプラ用にイオンSIMを契約しました。
iPhone4S購入して正式にWifiテザリングが出来るまでの繋ぎになると思います。
bluetoothID?? (JF1QQU)
2012-10-08 21:27:23
iPhone3GSとSIMなしのAndroidを使っていて、記事のように、Bluetoothにてテザリングを行いたいのですが、iPhoneのbluetoothIDの調べ方がわかりません。

ご教授お願い致します。
Unknown (tiida9596)
2012-10-20 18:46:15
>JF1QQUさま

Bluetooth IDは、iPhoneの設定->一般->情報でBluetoothの項目に表示されます。
これをメモして使って見てください。

コメントを投稿