2010年12月29日水曜日

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

komugi.net さんにここに記載された方法とは違う方法でインフラストラクチャモードでテザリングする方法が記載されている。
SC-02B インフラストラクチャテザリング

komugi.net さんの方法も今後試してみたいです。

2010年12月18日土曜日

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

現在の方法でのテザリングの問題点
・スピードが出ない(数百kbps)
・バッテリーの消費が激しい(USBの充電が間に合わない)

なお、下記URLを参考にさせていただき、テザリングのアプリが作れないか考える。
[独習android]検索キー長押しでテザリング設定画面を開く
[独習android]シェルコマンド(シェルスクリプトなど)をアプリから実行する

2010年12月14日火曜日

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

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

テザリング開始、テザリング終了のシェルスクリプトを作ってみました。

テザリング開始 (/sdcard/tether/bin/tether_start)
#!/system/bin/sh
ifconfig eth0 0.0.0.0
ifconfig wl0.1 192.168.2.1 netmask 255.255.255.0
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE
sysctl -w net.ipv4.ip_forward=1
killall dnsmasq
dnsmasq -i wl0.1 --resolv-file=/sdcard/tether/conf/resolv.conf --conf-file=/sdcard/tether/conf/dnsmasq.conf

テザリング終了 (/sdcard/tether/bin/tether_stop)
#!/system/bin/sh
killall dnsmasq
sysctl -w net.ipv4.ip_forward=0
iptables -t nat -F POSTROUTING
ifconfig wl0.1 0.0.0.0

あらかじめdnsmasq.confとresolv.confを用意しておきます。
また /sdcard/tether/var というディレクトリも用意します。

dnsmasq.conf (/sdcard/tether/conf/dnsmasq.conf)
dhcp-authoritative
dhcp-range=192.168.2.100,192.168.2.105,12h
dhcp-leasefile=/sdcard/tether/var/dnsmasq.leases
pid-file=/sdcard/tether/var/dnsmasq.pid
user=root
no-negcache

resolv.conf (/sdcard/tether/conf/resolv.conf)
nameserver 220.159.212.200
nameserver 220.159.212.201

テザリング開始、テザリング終了は以下の方法で行っています。

テザリング開始
1. Mobile AP のチェックボックスをチェックし「Onにしています...」の表示を確認する
2. root で sh /sdcard/tether/bin/tether_start を実行

テザリング終了
1. root で sh /sdcard/tether/bin/tether_stop を実行
2. Mobile AP のチェックボックスをチェック外す

tetehr_start tether_stop 実行には ScriptMe などの
root指定実行可能なshellscript 実行アプリを使用するのもいいかも知れません

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

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

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

・/system/bin/dnsmasq を用いてもdnsで名前をひけました。よってdnsmasq.conf, resolv.confを用意すれば、android-wifi-tether は不要です。

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 のみでテザリングできている模様です。

以上