ThGo2 v3.0への挑戦

ThGo2 v1.3が安定してたので、ずっとそれ使ってたんですけど、最新版をウォッチしてたらそろそろ欲しい機能が増えてきたので、バージョンアップを試みました。

結果を先に言うと、半分成功で半分失敗。
カーネル以外はアップデートできたのですが、カスタムされた最新カーネルは動きませんでした。

電圧とかの問題かもしれないので、もうちょっと頑張ってみますが、ひとまず分かったことをメモしておきます。


*

まず、xRecoveryで、Factory reset、Wipe Cache Partition、Advanced>Wipe Dalvik Cache、Advanced>Wipe Battery Statsの4つのWipeを実行しました。
Factory resetをしてしまうと、データが全て消えてしまうので、あらかじめTitanium Backupというアプリでバックアップ取ってあります。

次に、xRecoveryから、ThGo2_v3.0.zip、GPS_fix2_JP.zipをインストール。
そしたらrebootします。

ここで、本来ならまずSonyEricssonのロゴが現れ、次にXperiaのロゴ1が表示され、最後にロボットアームでドロイドくんを描くアニメーションが表示されてから、初期設定画面あるいはロック画面に入ります。
しかし、僕の端末ではXperiaロゴまでは表示されるのですが、そこで固まってしまい、1時間待ってもそのままでした。もともと5分くらいは待たされるらしいんですけどね。

そこでまずは、どのバージョンから起動できないのかを調べました。
v1.3、v1.5は大丈夫で、v2.0、v2.1、v3.0がダメでした。
v2.0で行われた大きな変更はカーネルに関するもの。特にOC・UVという設定の変更を行ったらしく、この設定は端末によって動いたり動かなかったり個体差が出るようです。

カーネルが悪いんだったらということで、今度は違うカーネルを入れてみることにしました。
なお、どれもThGo2 v3.0に上書きで入れています。

まず、CM7_Th_kernel_026.zip2を入れましたが、SonyEricssonのロゴの後、画面が真っ暗になってしまい、ダメでした。
次にゴローさんがTwitterで配布していたFreeKernel-mod405N.4-SE233.zip。超人柱版とのことですが、なんとか起動することができました。
しかし、操作途中やスリープ時に再起動が頻発する問題がありました。
安定版を入れれば安定して動いてくれるのかもしれませんが、見つけられなかったので、他の手段を試してみます。

突然再起動したりするのは、電圧が足りないからという意見をもらったので、今度は電圧周りをいじってみることにしました。

v3.0の /system/etc/init.d/91cpu に、CPUの最大周波数と最小周波数らしき設定があります。

echo "998400" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo "128000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

v1.5を見ると、/system/etc/init.d/02cpufreq_screenstate_scaling で同じ設定が行われているようです。

MAX_CPU_SPEED="1113600"
MAX_CPU_SPEED_OFF="576000"
MIN_CPU_SPEED="245760"

比較すると、v1.5の方が最小周波数が大きかったので、この値 "245760" をv3.0の方に書き込んでみました。
でも、ダメでした。

次に、XDAにThJapさんが作られたTh_min_voltage.zipというファイルがあり、電圧を設定するためのもののようだったので、これを入れてみました。
まずはそのまま入れてみてダメだったので、中身を開いてみると、/system/etc/init.d/13vdd_levels というファイルで電圧の設定をしているのが分かりました。

echo '128000 850' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1000
echo '384000 925' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1000
echo '576000 975' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1050
echo '768000 1075' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1150
echo '998400 1275' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1300
echo '1075200 1300' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1300
echo '1113600 1325' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1300

ここでは周波数ごとの電圧が設定してあり、電圧が低すぎると動かないことがあるよということでしたので、全て右にコメントしてあるデフォルト値に書き換えて、入れてみました。
でも、ダメでした。

電圧周りはまだよく解ってないので、試行錯誤の余地はありそうですが。
ひとまず諦め。

次に、v3.0にv1.5のカーネルを入れてみたらどうだろうと思いつきました。
v3.0のカーネルは、/system/kernel の中にあるのですが、v1.5以前にはこのフォルダはありません。
そこで、カーネルだけが入った2.3Th_kernel_026を調べてみると、/system/bin/chargemon というファイルがあり、この中でカーネルを /proc/ にコピーしていることが分かります。よく解らないけど、Linuxで /proc/ といえばカーネルですね。

# zdzihu: boot custom kernel
insmod /system/kernel/splboot.ko
sync
cat /system/kernel/miniloader > /proc/splboot/image
cat /system/kernel/boot.img > /proc/splboot/boot_img
echo > /proc/splboot/boot

で、v1.5の方の同ファイルを見てみると、次のようになっていて、カーネルのコピーは行っていません。その代わり何かをマウントしているようです。

# Continue booting
/system/bin/charger
sync
mount -o remount,rw,noatime /dev/block/mtdblock2 /system
sync
mount -o remount,noatime /dev/block/mtdblock3 /data
sync
mount -o remount,noatime /dev/block/mtdblock1 /cache
exit

なんとなく違いが分かったので、まずv3.0のchargemonから、cat~の行を2行コメントアウトしてみました。
そしたら、SonyEricssonのロゴから進まない!!
かなり焦りましたが、再起動してボリュームボタンを押したらxRecoveryは起動しました。よかった。

次に、v3.0の上で引用した部分の記述を、v1.5の同じく引用した部分の記述に書き換えてみました。
そしたらみごと、起動することができました。
特に再起動したりすることもなく、安定して動いています。

さて、ひとまずこれでv3.0の機能の大部分は使えるようにはなったのですが、カーネルに依存している部分の恩恵は受けられていません。
特にThGo2のChangeLogの今後の予定には

init.d script の一部をカーネルのini.rcに移動させたため消す

なんて書いてあるので、嫌な予感がします。

ただ、同じく今後の予定の所に

CPU 電圧をデフォルトに。弱い個体に合わせて。

とも書いてあるので、もしかしたら次のバージョンのカーネルは動いてくれるかもしれません。

水曜日頃更新というので、明日に期待ですね。

■ 追記

ThGo2 v3.0に、v1.5のchargemonを入れたバージョンで1日使ってみましたが、固まったり再起動することが何度かありました。操作してないときに固まってることが多かったかな。
これはOSとの相性なのか、端末がおかしいのかはわかりません。
それから、Wi-Fiがエラーになっていて使えません。これはカーネルが原因でしょうね。
link2sdでext3フォーマットが読み込めないのもカーネルが原因っぽそう。

したらばでの話では、UV(低クロックの電圧)不足では強制再起動し、OC(オーバークロック)失敗ではWLOD(白いLEDが光って画面が消えて固まる)現象が起こることが多いそうです。
それ以外のフリーズはなんなんでしょうね。

■ 追記 2

v4.0は同様に動きませんでしたが、v4.1で正常に起動してくれました。起動は意外と早いです。3
OCやUVを弱い端末用に合わせて頂けたのがよかったのかもしれません。
3G通信がうまく機能してくれなかったり、マーケットに接続すると再起動してしまうことなどありましたが、しばらく使ってみて様子を見たいと思います。

なお、電圧は以下のように998KHzより上のOC分も設定されていたので、その分の下4行をコメントアウトしています。
起動時にWLODするときは、こうするとちゃんと起動してくれたことが多かったので。4

echo '128000 1000' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1000
echo '245760 1000' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1000
echo '384000 1000' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1000
echo '576000 1050' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1050
echo '998400 1300' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1300
#echo '1075200 1300' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1300
#echo '1113600 1325' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1300
#echo '1152000 1350' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1350
#echo '1190400 1375' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1375

■ 追記 3

再起動が頻発していたので、電圧を少し上げました。今は安定しています。
デフォルト値なら必ず安心というわけでもないのですね。

echo '128000 1025' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1000
echo '245760 1025' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1000
echo '384000 1025' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1000
echo '576000 1075' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1050
echo '998400 1325' > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels	#default 1300

全体を+25していますが、上げるのは一部でも良かったかもしれません。

■ 追記 4

v4.1では、アプリで何かの記事を表示させて眺めているときに突然固まったり、スリープ中にそのまま固まっていたりすることが多々ありましたが、v5.1にアップデートしたらそれも無くなりました。
前は1日最低1回、多いと10回くらい固まったり再起動したりしていましたが、v5.1では2日使って未だに無いです。

もちろんv5.1も電圧を上げなければ動かないのですが。

  1. カーネルによって違うけど、ThGo2 v3.0の場合はぶたの絵
  2. これはThGo2と同じ作者がいじったものなのかな?
  3. FullWipeしました
  4. 勘に基づく結論です

ThGo2 v3.0への挑戦」への1件のフィードバック

  1. iphone 5

    That is a excellent suggestions specifically to people new to blogosphere, temporary and precise information… Many thanks for sharing this one particular. A need to go through write-up.

コメントを残す