中華スマホ MTK6577 ZOPO ZP300+ でmvno simを使う

pandawill(http://www.pandawill.com/) からデュアルコアの中華スマホ ZOPO ZP300+ を買ったので格安データ通信であるMVNOのSIMが使えるようにします。
まず結論から、下記のSIMが使えることが確認できました。

  • ServersMan SIM 3G 100
  • iijmio mio高速モバイル/D

まずServersMan SIM 3G 100ですが、SMSオプション付きの契約だったのでzp300+にSIMを差し、APNの設定をするだけでOKでした。
ただし、APNの設定に罠があります。
認証タイプ(Authentication Type)を「PAP or CHAP」にするとNGで「CHAP」のみとするとOKでした。
海外のスマホの制限なのか、対応している3G帯域の相性なのかよくわかりませんが、CHAPのみとしなければデータ通信が開始されません。

SIMと一緒に同梱されてくる説明書には認証タイプ「PAP or CHAP」を設定するようにと書いてありますが、ServersMan SIM 3G 100のウェブサイトのオンラインマニュアルは認証タイプ「CHAP」となっています。ここではウェブサイトの方に合わせることになります。

APN ynmbl.net
ユーザ名 user@3gd.ynmbl.net
パスワード 3gd
認証タイプ CHAP

ServersMan SIM 3G 100(SMSオプション付き)で注意すべきは上記だけです。

最後にROOTを取りたい場合は Root_with_Restore_by_Bin4ry_v18 (http://forum.xda-developers.com/showthread.php?t=1886460) を実行してrootを取得します。
{ドライバは http://www.zopomobileshop.com/en/content/9-download-zopo-mobile-latest-rom のZOPO MTK6577 DRIVERからダウンロードしてインストールしておく必要があります)

次にiijmio(ServersMan SIM 3G 100 SMSオプション無し版も多分同様)ですが、そのままSIMを入れてもアンテナが立たないためframework.jarにパッチを当てる必要があります。いわゆるアンテナピクト問題とかセルスタンバイ問題などと言われているものと同様です。

私はこちらのサイトを参考にさせて頂きました。
http://creamsnexus.blogspot.jp/2012/09/iphone-4s-ultimate-edition.html

zp300+用のドライバを http://www.zopomobileshop.com/en/content/9-download-zopo-mobile-latest-rom のZOPO MTK6577 DRIVERからダウンロードしインストールしておきます。

framework.jarにパッチを当てるためのスクリプトを公開されている方がいらっしゃいますので、ありがたく下記サイトからダウンロードします。
ブローヴちゃん http://bl.oov.ch/2012/01/android-sim.html

smaliの最新版である baksmali-1.4.1.jar とsmali-1.4.1.jar を下記からダウンロードし、パッチの展開したフォルダに入れます。
http://code.google.com/p/smali/downloads/list
※バージョンUPなどによりファイル名が変わっている場合は以降のコマンドで指定しているファイル名を適宜修正してください。

Root_with_Restore_by_Bin4ry_v18 (http://forum.xda-developers.com/showthread.php?t=1886460) をダウンロードして展開し、RunMe.batを実行、1を選択して、エンターを押していくとスマホ上でリカバリするか聞かれるのでリカバリを選択(右下のボタン)を押してrootを取得します。

あとは、パッチを展開したフォルダでコマンドプロンプトを開き、下記のコマンドを実行していきます。
事前にJavaのインストールとパスは通しておいてください。
(Javaインストールは http://www.searchman.info/java_eclipse/1010.html などを参考に)

mkdir temp
adb pull /system/framework/framework.jar temp\framework.jar
adb pull /system/framework/framework.odex temp\framework.odex
adb pull /system/framework temp\framework
java -Xmx512m -jar baksmali-1.4.1.jar --api-level 15 -c:core.jar:bouncycastle.jar:ext.jar:framework.jar:android.policy.jar:services.jar:core-junit.jar -d temp\framework -o temp\lv15 -x temp\framework.odex
cscript //Nologo data-only-sim-smali-fixer.wsf temp 15 0 0
cd temp
copy data-only-sim-fix.smali .\lv15\com\android\internal\telephony\gsm\GsmServiceStateTracker.smali
cd ..

\lv15\com\android\internal\telephony\gsm\GsmServiceStateTracker.smali ファイルをテキストエディタで開き、6427行あたりから始まるコードが下記のようになっていることを確認してなっていなければ手動で設定します。

    :pswitch_data_22
    .packed-switch 0x0
        :pswitch_1d      ←ここに上書き
        :pswitch_1d      ←これをコピーして
        :pswitch_1d      ←ここに上書き
        :pswitch_1d      ←ここに上書き
        :pswitch_1c
        :pswitch_1d      ←ここに上書き
        :pswitch_5
        :pswitch_5
        :pswitch_5
        :pswitch_5
        :pswitch_1d      ←ここに上書き
        :pswitch_5
        :pswitch_1d      ←ここに上書き
        :pswitch_1d      ←ここに上書き
        :pswitch_1c
    .end packed-switch
.end method

続けて下記コマンドを実行していきます。

java -Xmx512m -jar smali-1.4.1.jar --api-level 15 -o temp\classes.dex temp\lv15
cd temp
..\7za u -tzip framework.jar classes.dex
..\adb push framework.jar /data/local/tmp
cd ..
adb push busybox /data/local/tmp/
adb shell chmod 755 /data/local/tmp/busybox
adb shell
su
mount -o remount,rw /system
cd /system/framework
cp framework.jar framework.jar.orig
cp framework.odex framework.odex.orig
busybox cp /data/local/tmp/framework.jar ./
rm framework.odex
sync
reboot

ここでスマホが再起動されます。
起動中のロゴ画面でループして起動しなくなりますが、気にせず起動ロゴが表示されて少しした後、下記コマンドを実行していきます。

adb shell
su
mount -o remount,rw /system
busybox cp /data/dalvik-cache/system@framework@framework.jar@classes.dex /system/framework/framework.odex
cd /system/framework
busybox dd if=./framework.odex.orig of=./framework.odex bs=1 count=20 skip=52 seek=52 conv=notrunc

ここまでコマンドを打てば正常起動してくるはずです。
もしして来なければ reboot を実行してください。

最後にiijmioのSIMをさして、APN設定を行います。
APN設定はServersMan SIM 3G 100の場合と同じく認証タイプを「PAP or CHAP」ではなく「CHAP」にする必要があります。

APN iijmio.jp
ユーザ名 mio@iij
パスワード iij
認証タイプ CHAP