2012年1月14日土曜日

Nexus One でセルスタンバイ問題が解決した!

framework.jarを改造すると日本通信のSIMで使用しているNexus Oneのセルスタンバイによる電池消費が改善するというはなしを2chで見て、早速やってみました。使用ROMはOxygeN1mod-2011.12.10です。

情報源は、http://bl.oov.ch/2012/01/b-mobile-sim.html、実際の手順は次のとおりにしました。

1)アンドロイドのシステムを書き込み可能にして、/system/framework/framework.jarをPCにコピー

2)framework.jarはZIPファイルなのでframework.zipとしてから解凍

3)解凍した中にあるclasses.dexに対し、次のコマンドを発行。java.exeはなぜか既にPCのC:\Windows\System32に入っていた。baksmali-1.3.0.jarは情報源からダウンロード。

java -jar baksmali-1.3.0.jar -a 14 classes.dex

4)classes.dexのあるディレクトリに出来る 
\out\com\android\internal\telephony\gsm\GsmServiceStateTracker.smali
の3631行目以降を次のように編集。

    :pswitch_data_22
    .packed-switch 0x0
        :pswitch_1f
        :pswitch_1e
        :pswitch_1f
        :pswitch_1e <----2行目と同じに変更
        :pswitch_1f
        :pswitch_1e
        :pswitch_5
        :pswitch_5
        :pswitch_5
        :pswitch_5
        :pswitch_1f
        :pswitch_5
        :pswitch_1f
        :pswitch_1e  <----2行目と同じに変更
        :pswitch_1f
    .end packed-switch

5) classes.dexのあるディレクトリで次のコマンドを発行。smali-1.3.0.jar は情報源からダウンロード。

java -jar smali-1.3.0.jar -a 14 -o classes.dex out


6) classes.dexが書き換えられたので、framework.jarを構成していた次のファイルやディレクトリと一緒に再度ZIPファイルとしてまとめframework.jarにする。
・ classes.dex
・ preloaded-classes
・ META-INF

7) 再度 framework.jar を /system/framework/に入れる。パーミッションは特にいじらなくてOK。

8) アンドロイドを再起動。次の写真のとおり圏外時間が100%ではなくなり、電力消費の順位も1位から4位に減り、セルスタンバイによる消費電力は%の数字から判断するに約10分の1になりました。
また、Gの上に↑↓があるアイコンが出現するようになりました。これは、L-04Cの表示と比較すると本来はHに↑↓のアイコンになるべきと思いますが、今回のframework.jarの修正では「モバイルネットワークの種類」が「不明」のままですので、HSDPAと判別できず3Gの意味で「G」となっているものと思います(確認していません)。別な箇所を修正すればこれも正しくなるのでしょう。




0 件のコメント:

コメントを投稿