2013/04/08

HTC JのSIMフリー化

HTC J


少し前にMNPでHTC Jを手に入れた。
この機種を選んだ理由は、ごにょごにょすることでSIMフリーになるらしいと聞いたため。
手元にはIIJmioのSIMが余っているので、これをさして使いたい。

SIMフリー化


HTC速報さんのカスタムROMを使用してSIMフリー化。
作業実施前に必要なbootloader unlock方法も、同じくHTC速報さんの記事を見つつ実施。

bootloader unlockさえやってしまえば、作業自体はXperiaやなんかでカスタムROM入れた時と同じような感じ。
ただしいくつかハマったポイントも。

  • 横着してカスタムROM導入→WCDMA Enablerを一気にやったら起動しなくなった。
    カスタムROM導入→起動して動作確認→WCDMA Enabler適用→起動して動作確認 と実施したところ正常に起動した。
  • IIJmioのSIMを認識しなかった。
    原因はよくわからず。カスタムROMの入れ直しや隠し設定をいじっているうちに認識するようになった。

アンテナピクト問題

データ専用のMVNO系SIMを使っていると、「信号なし」と表示されてしまう問題。
実用上はあんまり問題ないものの、意外と鬱陶しいのでhello.cさんの記事を見つつ作業。 

結果としては、失敗
odexファイルを差し替えると、起動画面で停止したまま起動しない。

とりあえず、adb logcatで正常時(odexを元に戻した場合)と異常時(odex差し替え後)の起動時のログを取得して比較してみた。
ざっと眺めた感じ、異常時にだけ出ているログはこのあたり。

E/dalvikvm(  212): /system/framework/framework2.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/android.policy.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/services.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/apache-xml.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/HTCDev.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/HTCCommonctrl.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/HTCExtension.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/filterfw.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/com.htc.android.bluetooth.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/wimax.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/usbnet.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/com.orange.authentication.simcard.jar odex has stale dependencies
W/dalvikvm( 212): Link of class 'Landroid/graphics/Bitmap;' failed
F/libc ( 212): Fatal signal 11 (SIGSEGV) at 0x0000002c (code=1)
I/DEBUG ( 209): handle_crashing_process(8)
...

ぐぐってみたものの解決策が見つからなかったので、とりあえずは保留。

ただ、以前別の機種でほぼ同じ手順でアンテナピクト問題を解消したことがあるので、手順の問題とも考え辛い。謎。


(2013/03/04 追記)
2013/05/29-31にやっていたワイヤレスジャパンで、IIJmioの人が「SMS対応を前向きに検討中」と言っていた。
実現すればodex差し替えが不要になるかも。

(2013/09/30 追記)
9/25にIIJからSMS対応SIMが発表された
SIM交換手数料2100円+月額147円払うか、我慢するか。

(2014/04/06 追記)
hello.cさんの記事が消えていたので手順を簡単に。
  1. smali / backsmali取得 (取得元)
  2. dexopt-wrapper取得 (取得元)
  3. 必要なファイルのコピー
    adb pull /system/framework/framework2.jar
    adb pull /system/framework/framework2.odex
    adb pull /system/framework framework
  4. 逆コンパイル
    java -Xmx1024m -jar ./baksmali-1.3.3.jar -c:core.jar:core-junit.jar:bouncycastle.jar:\
    ext.jar:framework.jar:framework2.jar:android.policy.jar:services.jar:apache-xml.jar:\
    HTCDev.jar:HTCExtension.jar:filterfw.jar:com.htc.android.bluetooth.jar:wimax.jar:\
    usbnet.jar:com.orange.authentication.simcard.jar:com.htc.fusion.fx.jar:\
    com.htc.lockscreen.fusion.jar -d framework -x framework2.odex -o framework2
  5. ファイル編集
    framework2\out\com\android\internal\telephony\gsm\GsmServiceStateTracker.smaliを下記のように変更。
    .line 2300
    :pswitch_data_44
    .packed-switch 0x0
    :pswitch_1c
    :pswitch_37
    :pswitch_1d
    :pswitch_29 -> :pswitch_37
    :pswitch_29
    :pswitch_39
    :pswitch_6
    :pswitch_6
    :pswitch_6
    :pswitch_6
    :pswitch_35
    :pswitch_6
    :pswitch_35
    :pswitch_35 -> :pswitch_37
    :pswitch_35
    :pswitch_3b
    .end packed-switch
  6. 再コンパイル
    java -Xmx1024m -jar ./smali-1.3.3.jar framework2 -o classes.dex
  7. framework2.jarの中にclasses.dex格納
    7za d -tzip framework2.jar classes.dex
    7za a -tzip framework2.jar classes.dex
  8. 端末へ転送
    adb push framework2.jar /data/local/tmp/.
    adb push dexopt-wrapper /data/local/tmp/.
  9. framework2.jarをodexに&署名
    adb shell
    $ cd /data/local/tmp
    $ chmod 755 ./dexopt-wrapper
    $ ./dexopt-wrapper framework2.jar framework2.odex
    $ busybox dd if=/system/framework/framework2.odex of=./framework2.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
    $ exit
  10. CWMで起動し、正規のファイルと入れ替え
    adb shell
    # mount /data
    # mount /system
    # cd /system/framework
    # cp framework2.jar framework2.jar.orig
    # cp framework2.odex framework2.odex.orig
    # rm framework2.odex
    # cp /data/local/tmp/framework2.odex .
    # chmod 644 framework2.odex
    # exit
  11. dalvikキャッシュ削除 ( advanced->Wipe dalvik cache )

0 件のコメント:

コメントを投稿

コメントを投稿