xperia arc 海外ICS ROMでテザリングをする

Screenshot_2013-05-01-12-45-02~01.png

image

前の日記で、テザリングができたようなことを言っていましたが、実はテザリングできていませんでした。

私がテザリングできていたと思っていたのは、どうもRoot取得用のROM(lt15i_4.1.B.0.431_ready to root.rar)だったからみたいです。

このROOT取得用のROM、なるものがどういう経緯でネット上にアップロードされたのか不明ですが、とりあえずこのROMはシステムに必須のアプリケーションパッケージが多数省略されているみたいで、常用はできませんでした。

常用できたのは海外版ROM(LT15i_4.1.B.0.431_Generic Global World.7z)という形で方々にアップロードされているもの。これはどうも、フランス版のXperia arcから抜き出したものらしい。

そして、テザリングすると自動的にフランスかどこかのプロバイダに自動的に接続先を切り替えるようになっているらしく、この動作を無効にしないとテザリングできないらしいです。

ということで、設定しましょう。参考にしたのは、以下のサイト。

2011xperia系、ICSアップデートによるテザリング問題 2012.12.04ちょっと追記

やることは大きく分けて2つ。

テザリング時の接続先を切り替える設定を書いたxmlファイルを修正

xmlファイルの情報を元に生成されたsqlite DBを修正

最初のxmlファイル修正からやりましょう。

/system/etc/customization/settings/com/android/settings/custom_settings.xml

<?xml version="1.0" encoding="utf-8"?>
<settings version="1003">
   <setting key="default-locale" runtime="false">en_US</setting>
   <setting key="locale-sortorder" runtime="false">top</setting>
   <setting key="tether_dun_required" runtime="false">1</setting>
   <setting key="tether_dun_apn" runtime="false">T-Mobile US,epc.tmobile.com,216.155.165.050,8080,,,,http://mms.msg.eng.t-mobile.com/mms/wapenc,216.155.165.050,8080,310,260,0,dun</setting>
   <setting key="auto_time" runtime="true">0</setting>
   <setting key="auto_time_zone" runtime="true">0</setting>
   <setting key="time_12_24" runtime="true">12</setting>
   <setting key="editable_tether_apn_required" runtime="false">true</setting>
</settings>

以上は前述のサイト様からコピペしたものですが、私の設定ファイルは若干違うものでした。違っていても、変更しなければならないところは「tether_dun_required」のキーを持つ要素(行)の値を0にする、というあたりだと思います。名前を見る限り。

<setting key="tether_dun_required" runtime="false">0</setting>

みたいな感じですね。というか、この設定ファイル自体、「default-locale」の行以外は不要な気がします。

で、これは初期設定を記したxmlファイルであって、現在の設定は別のsqlite DBに格納されているそうです。なので、初期化しない限りはこの設定が適用されることはなく、現在の設定を変更するにはそのDBを書き換えないといけないとのこと。

前述のサイトでは外部のPCからadb経由でシェルを起動してやっていました。端末上からSQL文を打つのがきついのでそれが一番ラクだと思います。

が、私は今帰省中でadb環境を揃えるのが面倒なので、sqliteを実行できるアプリを使いました。

使ったアプリはaSQLiteMangagerというアプリ。グラフィカルに内容を見ることができるので便利です。値のupdateは結局SQL文を打たないとダメでしたが…。

スクリーンショットはこんなかんじです。

image

変更するDBファイルは、
/data/data/com.android.providers.settings/databases/settings.db
です。

変更するのはsecureスキーマの中の、tether_dun_requiredというname列を持つレコードのvalue列を0にします。上のスクリーンショットの中にも該当するレコードが載ってますので確認してみてください。スクリーンショットは設定したあとなので、valueが0になっています。

まあ、とにかく以下のSQL文をaSQLiteManagerから実行するだけでOKです。

update secure set value = '0' where name = 'tether_dun_required';

ちなみに、aSQLiteManagerから直に先ほどのファイルを触ろうとすると、rootを取れとか言われてできませんでした。root化しているのですが。設定の中にもrootモード、みたいな項目も見当たりません。

ですので、rootが取れるファイラ(ESファイルエクスプローラなど)をつかって、一度ユーザーのホームディレクトリなどにコピーし、そのあと変更して、元あった場所に書き戻す、という方法で値を変更しました。

結果、これでばっちりです。テザリングで、ネットブックにインストールしたubuntu上から記事を書いてます。いやー、便利な時代になったもんだなあ。