[SC-04D] セルスタンバイと緊急通報のみの問題対応

<追記>
4.2の場合は以下に追記しました。
[SC-04D] Android 4.2 セルスタンバイ対策(1w1.org)
</追記> 
 
 
b-mobileとかのデータ専用SIM(DocomoのMVNOのやつ)で、セルスタンバイ状態で電池の減りが早い、ステータスバーのアンテナ立たない、緊急通報のみになってしまうなど、MVNOだからか、データ通信専用だからか不便なことがあるので対応してみた。
個人的には電池の減りはあまり気にならないのですが、アンテナ立たないのがムカつくので対応してみた(笑)

<参考URL>
Android + データ専用 SIM での動作修正パッチ (ブローヴちゃん)
Android + データ専用 SIM で「緊急通報のみ」を消す (ブローヴちゃん)
データ通信のみの MVNO 回線での Android セルスタンバイ問題 (更新: 2012/03/17)(新電波)
 
基本的には、上記、ブローヴちゃん様のサイトのままで、バッチまで作っておられるのでこれを使わせていただければ、うまくいけばワンクリックで作業完了です。
個人的には、一応自分の手でやってみたかったので以下、自分用メモです。

 
◆用意するもの

baksmali
smali
7za.exe
adb.exe

ブローヴちゃん様のバッチのファイルの中身を使わせていただければ必要なものがはいっています。

 
◆対象
SC-04D Galaxy Nexus (AOKP M5 + Flanco M3) ←Kernelはあんまり関係ない。

#(余談ですが)AOKP M5も4.0.4ベースなのですが、Stock(4.0.4)のframework.jarは(たぶん)odexなので以下URLが参考になるのですが、どうやってもうまくいかず挫折中
非Deodex環境 [SO-02C] でセルスタンバイ問題を解決する(nunnun’s weblog)

◆内容
framework.jarにそのあたりの値がはいっているのでちょっと値を変更してダマしてしまいましょうという感じ

 
◆手順
1.framework.jarをもってくる
2.classes.dexとりだし
3.逆コンパイル
4.ファイル修正
5.コンパイル
6.framework.jarのclasses.dexを差し替える
7.framework.jarを差し替える

◆作業
1.framework.jarをもってきて、一応バックアップもとっておく(framework.jar.org)

adb pull /system/framework/framework.jar
copy framework.jar framework.jar.org

 
2.classes.dexとりだし(classes.dex.tmp)

7za.exe e -so framework.jar classes.dex > classes.dex.tmp

 
3.逆コンパイル(tempフォルダに作成)

mkdir temp
"c:\Program Files (x86)\Java\jdk1.6.0_31\bin\java.exe" -jar baksmali-1.3.2.jar --api-level 15 -o temp classes.dex.tmp

 
4.ファイル修正
temp\com\android\internal\telephony\gsm\GsmServiceStateTracker.smali

セルスタンバイ、アンテナなど対応

    :pswitch_data_22
    .packed-switch 0x0
        :pswitch_1c
        :pswitch_1d
        :pswitch_1c
        :pswitch_1d   ← 1c から 1d へ変更
        :pswitch_1c
        :pswitch_1f
        :pswitch_5
        :pswitch_5
        :pswitch_5
        :pswitch_5
        :pswitch_1c
        :pswitch_5
        :pswitch_1c
        :pswitch_1d  ← 1c から 1d へ変更
        :pswitch_1c
    .end packed-switch

緊急通報のみの対応
「GsmServiceStateTracker;->regCodeToServiceState(I)I」で検索

    invoke-direct {v0, v9}, Lcom/android/internal/telephony/gsm/GsmServiceStateTracker;->regCodeToServiceState(I)I

    move-result v14

    invoke-virtual {v13, v14}, Landroid/telephony/ServiceState;->setState(I)V

    .line 590
    const/16 v13, 0xa

    if-eq v9, v13, :cond_144

    const/16 v13, 0xc

    if-eq v9, v13, :cond_144

    const/16 v13, 0xd

    if-eq v9, v13, :cond_144

    const/16 v13, 0xe

    if-ne v9, v13, :cond_18e

    .line 591
    :cond_144
    const/4 v13, 0x0    ← 0x1 から 0x0 へ変更

 
5.コンパイル(classes.dexができる)

"c:\Program Files (x86)\Java\jdk1.6.0_31\bin\java.exe" -jar smali-1.3.2.jar --api-level 15 -o classes.dex temp

 
6.framework.jarのclasses.dexを差し替える

7za.exe u -tzip framework.jar classes.dex

 
7.framework.jarを差し替える
本当はリカバリモードとかでやるほうがいいですが、無理やり差し替えちゃう(笑)

adb push framework.jar /system/framework/framework.jar
adb shell chmod 644 /system/framework/framework.jar
adb reboot

 
失敗したらバックアップしておいたframework.jarを送りこむか、差し替えるときにバックアップしておいてそれに戻すなど。
(というかそれが簡単にできない人はやらないほうがいいです)

 
◆SIMはB-MobileのU300ですが、アンテナの強度がでているのとNTTDocomoの表記になっています(AOKP M5)
Galaxy Nexus

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA