2010年12月12日日曜日

SC-02B で インフラストラクチャモードでテザリング(1)

SC-02B (NTT docomo Galaxy S) で infrastructure mode (adhoc ではなくいわゆるアクセスポイントモード)で tethering できました。(root取得必須)

※ 重要
・無保証です。
・高額課金、文鎮化、root取得にともなうSC-02Bの保証の無効化などの各種トラブルはテザリングしたユーザの自己責任で対応お願いします。
spモードでは規約上テザリングは禁止されています。


大まかなインフラストラクチャモードのテザリングの開始方法(無保証)
(テザリングの終了方法はまだ検討中です)

・root取得
・busyboxをインストール後
・android SDKをインストールした環境などからadb shellから操作できる状態

が必須です。

1. android-wifi-tether インストール
ダウンロードページからwireless_tether_2_0_5-pre14.apk を インストール
(※2010/12/12 時点で最新版 の Wireless Tether for Root Users 2.0.5-RC1 のdnsmasqを用いた動作可否は未確認です。)

2. android-wifi-tether で アドホックモードでテザリングできることを確認する。
(インフラストラクチャモードでテザリングする際に無線LANクライアントにDHCPで配布するアドレスはこの段階で決めておく)

3. Mobile AP Shortcut インストール

4. Mobile AP Shortcut で Mobile APを表示させ、Mobile AP設定からSSID、セキュリティ設定など必要に応じて変更し保存する。

5. Mobile AP のチェックボックスをチェックし「Onにしています...」の表示を確認する。
※この状態ではインフラストラクチャモードのアクセスポイントとしては動作するが、
SC-02B側で以下の動作が行われていない状態です。

・無線LAN端末にDHCPでIP アドレス配布
・Galaxy S側の無線LANインタフェースのIPアドレスの割り当て
・パケットのルーティング

5. adb shell などで以下を実行します。
※adhoc-wifi-tether で無線LANクライアントにDHCPで192.168.2.0/24の範囲のIPアドレスを配布し、SC-02B のwl0.1 に 192.168.2.1 を割り当てた場合を前提にします。
使用するIPアドレスは必要に応じて変更します。

$ su
#

# netcfg
wl0.1 UP と なっていることを確認します。

# ifconfig wl0.1 192.168.2.1 netmask 255.255.255.0

wl0.1 に 192.168.2.1/24 を割り当てます。 eth0 ではありません。

# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE

/system/bin/iptables を用いてIP マスカレード を行います。
android-wifi-tether の iptablesでも動作可能かもしれませんが、未実施です。

# sysctl -w net.ipv4.ip_forward=1

net.ipv4.ip_forward = 1

と表示されることを確認します。
実行前はnet.ipv4.ip_forward = 0 となっていて、
無線LANインタフェースと3G間でのルーティングが行われません。

# /data/data/android.tether/bin/dnsmasq -i wl0.1 --resolv-file=/data/data/android.tether/conf/resolv.conf --conf-file=/data/data/android.tether/conf/dnsmasq.conf

wl0.1 でandroid-wifi-tether の dnsmasqを実行します。 DHCPで配布されるIPアドレスなどはandroid-wifi-tether で 設定された範囲が使用されます。

※ /data/data/android.tether/conf/resolv.conf
/data/data/android.tether/conf/dnsmasq.conf の設定内容はあらかじめ確認しましょう。
※ /system/bin/dnsmasq でもDHCP サーバをwl0.1で動作させることができたのですが、dns proxyの動作がうまくいっていません。

6. Mobile AP Shortcutの設定に応じて、無線LANクライアントを接続します。

この段階で無線LANクライアントはインフラストラクチャモードでテザリングできるはずです。

ToDo
・正しいテザリング終了方法を考える。
・/system/bin/dnsmasq を使用する方法を考える。
・shell scriptを用いて、テザリング開始、テザリング終了を可能にする。
・android アプリを用いて、テザリング開始、テザリング終了を可能にする。
・Mobile AP Shortcut やandroid-wifi-tether なしでテザリング可能にする。

参考
・SC-01C は Mobile AP Shortcut のみでテザリングできている模様です。

以上

0 件のコメント: