インフラストラクチャーでテザリング anchor.png

HT-03Aでも使っていたwifi tetherを使えば,アドホックモードでテザリング出来る。これでもノートPC2台を同時に接続してもテザリングは出来た。

任天堂DSとか,インフラストラクチャー接続にしか対応してない機器では,このままではSC-02Bに接続できない。

Page Top

とりあえず頑張る anchor.png

アップデート前のGingerbread 2.3.3の時は,Androidマーケットから「Mobile AP Shortcut」をインストールしたら,インフラストラクチャーでの接続が問題無くできたんだけど,KF2にアップデートされた2.3.3だとPCからうまく接続出来ない。

# netcfg

として調べてみると,以下の理由でPCと接続出来ていなかった。

  • SC-02Bの無線LANのIPアドレスがちゃんと割り当てられていない
  • dhcpdが動いていなくて,PCにIPアドレスを渡せない
  • ルーティングされていないのと,NATが動作していない

手動でこれらを動くようにしたら,無事インフラストラクチャーでもテザリングできるようになった。

Page Top

ファイルの準備 anchor.png

テザリング開始用のスクリプト (/sd-ext/etc/tether/tether_start)を作成

#!/system/bin/sh
ifconfig eth0 0.0.0.0
ifconfig wl0.1 192.168.1.1 netmask 255.255.255.0
iptables -t nat -A POSTROUTING -o pdp0 -j MASQUERADE
iptables -A FORWARD -i wl0.1 -j ACCEPT 
sysctl -w net.ipv4.ip_forward=1
dnsmasq -i wl0.1 --resolv-file=/sd-ext/etc/tether/conf/resolv.conf --conf-file=/sd-ext/etc/tether/conf/dnsmasq.conf

テザリング終了用スクリプト(/sd-ext/etc/tether/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

/sd-ext/etc/tether/conf/dnsmasq.confを作成

server=220.159.212.200
server=220.159.212.201
dhcp-authoritative
dhcp-range=192.168.1.100,192.168.1.105,12h
dhcp-leasefile=/sd-ext/etc/tether/var/dnsmasq.leases
pid-file=/sd-ext/etc/tether/var/dnsmasq.pid
user=root
no-negcache

/sd-ext/etc/tether/conf/resolv.conf作成。(moperaのdnsにした)

nameserver 220.159.212.200
nameserver 220.159.212.201

これらのファイルを用意した。

Page Top

Mobile AP Sortcutの実行 anchor.png

AndroidマーケットからインストールしたMobile AP Sortcutを実行して,テザリングを実行してみる。
これだけだと,PCから接続出来ない。

  • テザリングのスタート
    ターミナルから,
    # /sd-ext/etc/tether/tether_start
    としてスクリプトを動かす。この後,PCとの接続がうまくできた。
  • テザリングの終了
    # /sd-ext/etc/tether/tether_stop
    して,Mobile AP Shortcutを終了して,テザリング終了

しかし,これじゃめんどくさいなぁ。自動で実行出来ないと・・・

Page Top

テザリング対応Kernelと設定からtethering起動出来るように変更 anchor.png

テザリング出来るようにKernelを変更したんで,通常の設定画面からテザリング起動出来るようにしてみる。
fileframework-res.apkfileSettings.apkを変更すれば,設定から変更できるように出来た。

framework-res.apkをapktoolで分解して,res/values/arrays.xmlファイルの,

    <string-array name="config_tether_wifi_regexs">
        <item>wl0.1</item>
    </string-array>

のように,config_tether_wifi_regexsを内容を変更する。 同様に,Settings.apkをapktoolで分解して,res/xml/wireless_settings.xmlファイルに,

    <PreferenceScreen android:title="@string/mobileap" android:key="mobileap_settings" android:summary="@string/mobileap_settings_summary">
        <intent android:targetPackage="com.android.settings" android:action="android.intent.action.MAIN" android:targetClass="com.android.settings.wifi.WifiApSettings" />
    </PreferenceScreen>
    <PreferenceScreen android:title="@string/mobileap" android:key="mobileap_settings2" android:summary="@string/mobileap_settings_summary">
        <intent android:targetPackage="com.android.settings" android:action="android.intent.action.MAIN" android:targetClass="com.android.settings.wifi.WifiApSettings" />
    </PreferenceScreen>

の内容を,追加・変更する。

変更したらapktoolで再構成してapkを作りなおして,SC-02Bのものと入れ替える。 tether対応したkernel*1で,Mobile AP Sortcut無しで,設定>無線とネットワークのMobile AP設定で,tetheringの起動ができるようになった :)


*1 Tethering shortcutをインストール後,USB接続でのtetheringも出来た。

新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

トップ   凍結 差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 698, today: 1, yesterday: 0
最終更新: 2020-12-26 (土) 16:07:43 (JST) (1210d) by yuji