ドコモMVNOデータSIMの不具合対策パッチ当て その3

Galaxy S II GT-I9100に続き、手持ちの他の端末にもドコモMVNOデータSIMの不具合対策パッチ当てをしてみました。
それについてのまとめです。


その1:Galaxy Tab(元SC-01C、現GT-P1000)

OSバージョン:Android 2.3.3(CF-rootでroot化、CWM導入済)
ファームバージョン:XXJQ1(GT-P1000ストックROM、odexed):SC-01Cではありません!!


私のGalaxy Tabは文鎮化した後海外版(GT-P1000)になってしまったため(その辺りの経緯はこちら)、ドコモMVNOデータSIMの利用で不具合が出てしまいます。
というわけでパッチ当て。
ハード、ソフト的に変更する項目がないので、Galaxy S IIと同じバッチファイルを使ってゴニョゴニョ済framework.odexを作成し、オリジナルのframework.odexと入れ替えることに。
しかしCWMで起動した状態でadb shellからrootアクセスができず、ファイルの入れ替えができない。
そこでリスクが高く非推奨の方法ではあるものの、これしかない、ということで通常起動している状態でadb shellを使いframework.odexを入れ替え。
文鎮化しないか心配でしたが無事起動し、パッチ当てもうまくいきました。

b-mobile fairのSIMを挿すと、このようにパケット接続アイコンが点灯するように。
ドコモSIMを挿した状態でのパケット接続アイコンの表示は常時「H」となり、ドコモ版(SC-01C)だった時と同様。

Cell Standbyのバッテリー使用率も5%と非常に低い値となっています。


Galaxy Tabのパッチ当てがうまくいったところで次はMilestoneにパッチ当てしてみます。


その2:Motorola Milestone

OSバージョン:Android 2.3.7(rooted、OpenRecoveryMod導入済)
ファームバージョン:CyanogenMod 7.1.5 for Milestone(odexed)


Milestoneは公式にはAndroid 2.2.1までしか提供されておらず、それをカスタムROMでGingerbread化してあることもありシステムROM領域の空き容量が極端に少ない上にアンインストールできるシステムアプリが少ないため、framework.odexを入れ替えるために必要な空き容量を確保するのに少々苦労しましたが、何とか12MB程の空き容量を確保し、パッチ当て作業ができるようにしました。
まずはモトローラ端末向けの設定にバッチファイルを書き換えて試してみます。
Galaxy S II/Tabで使ったバッチファイルをテキストエディタで開いて「書き換え」の項目にあるバッチモードを指定している部分をモトローラ端末向けの設定である「2」に書き換えます。

cscript //Nologo data-only-sim-smali-fixer.wsf temp 10 2 1

そしてバッチを実行。
framework.odexの入れ替えはあらかじめゴニョゴニョ済framework.odexをES File Explorerを使って/system/frameworkに「framework.odex.mod」という名前でコピーしておき、それからOpenRecoveryModで起動してMilestone上でコンソールを起動して行ないました(=PCにはつながない)。
Milestoneのコンソール上で

mv /system/framework/framework.odex /system/framework/framework.odex.org
mv /system/framework/framework.odex.mod /system/framework/framework.odex
sync
exit

を実行した後OpenRecoveryMod上で「Wipe cache partition」と「Wipe Dalvik Cache」を実行してからMilestoneを再起動。
するとキャリア名表示はされるものの、電波強度表示に「×」マークが出るようになってしまいました。

しかしこの状態でも実際にはドコモの電波を受信していて、パケット通信も可能。
これはバッチファイルの設定がおかしい、ということでframework.odex作成をやり直すことに。


バッチモードをGalaxy S II/Galaxy Tabで使った設定である「0」にしてバッチを実行し作成したframework.odexに置き換えるとMilestoneが起動しなくなってしまいました。
OpenRecoveryModで起動し、バックアップしておいたframework.odexへ戻して標準状態で起動するようにしてから改めてやり直すことに。
今度はバッチモードを「99」にして試します。
バッチファイルの書き換えは

cscript //Nologo data-only-sim-smali-fixer.wsf temp 10 99 1

となります。
すると今度はうまくいきました。

キャリア名表示、パケット接続アイコン共にちゃんと出るようになり、パッチ当て成功。
ドコモSIMを挿した状態でのパケット接続アイコンはドコモ端末同様常時「H」となります。

このように、b-mobile fair SIMを挿した状態です。
ちなみにCell Standbyのバッテリー使用率は20%程とパッチ当てした他の端末に比べ高めでした。


Milestoneのパッチ当てはこれでOKなのですが、前にバッチモードを「0」にしてframework.odexを作成した際に/data/local/tmpに「framework,odex」というファイルができていたのが気になったので、もしかするとコマンド操作で何か失敗していたのかも、ということでもう一度バッチモード「0」でやり直してみることに。
するとこれでもパッチ当てはうまくいき、バッチモード「0」「99」いずれでもOK、ということのようです。


結局のところGalaxy S II(GT-I9100)、Galaxy Tab(GT-P1000になったSC-01C)、Milestoneいずれの端末も同じバッチ設定(=バッチモード「0」)でOK、という結果になりました。
つまりこれから言えることは


ソニエリ/ソニーモバイル端末はバッチモード「1」、これでうまくいかなければ「99」
モトローラ端末はバッチモード「2」、これでうまくいかなければ「0」または「99」
それ以外のメーカーの端末(サムスン、HTCなど)はバッチモード「0」、これでうまくいかなければ「99」


にしてframework.odex作成をするとうまくいく、ということのようです。
とは言えこれは私が試してみた範囲内で導き出した結論ですから、全ての端末にこれが当てはまるわけではありません。
事前にパッチ当てする端末毎の情報を調べた上で各種設定をするようにしてください。
もちろん端末のバックアップなどを行なって不慮の事態に備えた上で自己責任で作業してください。