goo blog サービス終了のお知らせ 

攻撃は最大の防御なり

50代おやじの適当なブログです。

S-OFF,rootedなHTC SensationにICSのOTAを当てる3

2012-04-18 10:22:03 | HTC Sensation
今日はリソース誤りでOTAが当てられない人用の、個別リカバリの方法です。
対象のリソースは前記方法でOTAを当てながら見つけてください。

まずはここから自分のリージョンのRUUを拾ってきます。
バージョンは今入っている物と同じか、無ければちょっと古くてもOKです。
RUUを実行してこの画面まで進めます。



ここでエクスプローラーのURLに「%temp%」と入力してenter。
日付でソートして最新のディレクトリに中身からrom.zipを適当な場所にコピーします。
完了したらRUUは終了させてOK。

rom.zipを解凍します。
この中身のsystem.imgから目的の物を頂こうという寸法です。
昔の記事ではunyaffsを使ってって書いていましたが
Sensationのsystem.imgはyaffsでなくext4なのでこの方法じゃ本当は無理です。
なのでここではDiskInternals Linux Readerってのを使います。
ここから落としてインストしてください。

Linux Readerを起動したら、「hard Disk Drives」の適当な場所を右クリックして「Mount Image」を選びます。
「Row Disk Images」にチェックが入っているのを確認してNext。
ファイル選択で先程解凍したrom.zipの中のsystem.imgを選択します。
そしたら「hard Disk Drives」の「Linux Ext Volume 1」からsystem.imgの中身が見えるので、目当てのリソースを探します。
見つかったらファイルを選択状態にして上部メニューのSaveをクリック。
適当なディレクトリを選んで実行するとそこに払い出されます。
ちなみにこの方法を使ってradio.imgの中身も覗けたりします。余り意味ないですがw
ファイルの抽出が一通り終わったら「hard Disk Drives」の「Linux Ext Volume 1」を右クリックして
「Unmount Image」しておきましょう。

これでリソースが揃えば良いのですが
次は今のバージョンのRUUが手に入らなかった場合です。
この場合はRUUの他にそのバーションに至るOTAが必要となります。
こういう場合もあるので俺は全てのOTAを捨てずに保存してあります。

それでは1.50.401.1の「/system/lib/modules/bcm4329.ko」が欲しかったけど
RUUは1.45.401.2しか手に入らなかった場合の例を書いていきますね。
先ずは1.45.401.3-1.45.401.2と1.50.401.1-1.45.401.3の中の
META-INF/com/google/androidからupdater-scriptを取得します。
この中のapply_patchが実際にパッチを当てている所です。
1.50.401.1-1.45.401.3ではbcm4329.koに変更が加わっていますが
1.45.401.3-1.45.401.2は無いですね。
と言う事は1.50.401.1-1.45.401.3だけ当ててやれば良いという事になりますので
patch/system/lib/modulesからbcm4329.ko.pを取得します。
ここでapply_patchの構文を紹介しておきますね。

apply_patch("/system/lib/modules/bcm4329.ko", "-",
      8c50584878ed3189056b57ec2ca1c36c8d403f1b, 280481,
      db6c9e5caa73efe572b14cb5d8b8f47b9bf042ca, package_extract_file("patch/system/lib/modules/bcm4329.ko.p"));

apply_patch(パッチ対象ファイル名,パッチ後ファイル名,
      パッチ後sha1sum,パッチ後ファイルサイズ,
      パッチ前sha1sum,パッチファイル名);

パッチはbspatchを使ってwindows側で当てます。ここからダウンロードして下さい。パスワードは「sensation」
bspatchの構文は
bspatch パッチ対象ファイル名 パッチ後ファイル名 パッチファイル名

です。
ファイル名を変更する要件はありませんので
bspatch bcm4329.ko bcm4329.ko bcm4329.ko.p

でOKです。
一応sha1sumも確認してみましょうか。
cygwinを使うかAndroid側(要busybox)で

sha1sum /system/lib/modules/bcm4329.ko


これが最終目的であるOTAのupdater-script内のsha1sumと一致していれば大丈夫です。

S-OFF,rootedなHTC SensationにICSのOTAを当てる2

2012-04-05 08:37:21 | HTC Sensation
今日はOTAを当てますが途中で失敗する人も居ると思います。
いろんな記事で書いていますが、HTCのOTAにはbspatchという
バイナリ差分パッチが使われていて
system下のリソースが正しいものじゃないと当てられません。

個別のリソース戻しのやり方も後日書きますが
いちいち面倒だと思う人はRUUを当てて戻しちゃうのが一番早いです。
S-OFF,UNLOCKの状態にしたいのであれば
Revolutionary→RUU→公式bootloader unlock→OTA
の手順かな。

じゃあOTA当てますが、ここで一発バックアップを取っておきましょう。
後で元に戻すというよりは、何らかの理由でOTAが途中でこけた時の救済用です。
まずはRecoveryを公式のやつに戻します。好きな方法で戻してもらえば良いですが
今回はPG58IMG.zipを使いましょう。ここからダウンロードしてください。
一応、使い方を説明するとPG58IMG.zipをsdcardのルートディレクトリに入れます。
こいつはファイル名に意味があるのでリネームはしないで下さいね。
「adb reboot bootloader」を実行するか、ボリューム下を押しっぱなし再起動でbootloaderのメニューに入ります。
ここでPG58IMG.zipを当てるかい?と聞かれるのでそのまま進めばOKです。
当てた後もPG58IMG.zipは残っているのでリネームするか削除しておきましょう。

普通OTAをあてるときは
アップデート通知→ダウンロード→アップデートする?→OK
ですが、もし中身が違っているとこんな感じで異常終了してしまうはずです。



これじゃあ何も進まないので別の当て方をしましょう。
ちなみにアップデート通知が来ていないけどOTAは持っているとい
う場合も下記の方法で当てられます。

最初にOTAをsdcardのルートディレクトリに入れます。
アップデート通知からダウンロードした人は/sdcard/downloadにあるはずなので移動させてください。
そしたらリカバリーに再起動します。
「adb reboot recovery」、bootloaderメニューからRECOVERY、ROM Managerでリカバリーに再起動などですね。
次にボリューム上を押しながら電源キーを押します。



この画面になりましたか?
Apply update from sdcardからOTAを選んで実行します。
ここでもしリソースがおかしいと対象のファイル名を表示して止まりますので入れ換えて再実行です。

問題なく進めば再起動しろと表示されるので
Reboot system nowを実行。


このあと数回再起動しますが、ここではfermware.zipの中身を当てています。
booloaderの書き換えもこのシーケンスで行われるので
多少フリーズ臭く感じても絶対に電池抜きしちゃダメですよ。

これでめでたくICSになりましたが、この話はClockworkMod Recoveryを導入してroot取りまで行きます。
その前にエラーになってOTAが当てられなかった人用に個別ファイルの戻し手順。
「ファイルが違うって言われてもバックアップなんか取ってねぇよ」と思っても大丈夫
多少面倒臭い手順になりますが、これ知っていると色々応用が効きます。

S-OFF,rootedなHTC SensationにICSのOTAを当てる

2012-04-03 09:19:58 | HTC Sensation
さて、身の回りに多少余裕が出て来たのでHTC SensationのICS,OTAの当て方いきます。
以前書いたOTAの当て方では分かりにくい所があると思うので
より詳しく書いていきます。
主目的はS-OFF,rootedなSensationにOTAを当てることですが
ノーマル端末の人でも知っていて損はないかな。
多分、数回にわかれる予定。

・bootloaderの状態を確認する

bootloaderには下記の状態があると思います。

 公式bootloaderでLOCKED,S-ON
 公式bootloaderでLOCKED,S-OFF
 公式bootloaderでUNLOCK,S-ON
 公式bootloaderでUNLOCK,S-OFF
 RevolutionaryのbootloaderでS-OFF

一般的にS-OFFと呼ばれているものはbootloaderのUNLOCKとS-OFFを行った状態です。
こいつらを行っていないと以下の弊害がでます。

UNLOCKしていない(LOCKED)

 fastbootを使ったROMイメージ書き換えができない。
 ROM ManagerからClockworkMod Recoveryの書き換えが出来ない。
 PG58IMG.zipでの書き換えはできる。

S-OFFしていない(S-ON)

 通常起動時にはsystemパーティションにセキュリティロックがかかっていて書き換えが出来ない。
 ClockworkMod Recovery経由では可能。

Revolutionaryを当てた状態で使っている人が多いかと思いますが
こいつは見かけ上UNLOCKにするだけで実はUNLOCKされていません。
(なのでRUUをあててbootloaderが入れ替わるとLOCKED,S-OFFになる)
また、公式bootloader unlockはunlockするだけで、S-OFFにはならないようです。

ICSにするとbootloaderが1.27になり、今のところ Revolutionaryが当てられなくなります。
無計画に上げてしまうとbootloader書き換えとか荒っぽい事をしないといけなくなるので注意してください。

俺の場合は公式bootloader,UNLOCK,S-OFFで当てたので特に何もしていません。
公式UNLOCKは非常に良いのですが一度でも行ってしまうと
ロックしてもRELOCKEDになりLOCKEDには戻れないようです。
端末を売る予定の人は注意してください。

HTC Sensationに公式ICSのOTAを当てた

2012-03-15 09:12:45 | HTC Sensation
HTC Sensationに公式ICSのOTAが来ていたので当ててみました。(PUSH配信はまだ行われていません)
bootloaderが1.27になっていたので最初はパッチとboot.img,radio.imgだけ当てましたが見事に起動せず
公式リカバリーに戻して全当てしました。
その後、clockwork recoveryとsuを入れて現在に至ります。
まだfontを直していないので気持ち悪いですねw





動作は大体正常ですがちょっと困ったのはDHDから移植したiWnnが使えなくなったこと。
openWnnを入れましたがやっぱり使いにくい。又、どこかのデバイスから移植しよう。
SBの公式MMSはちょっと挙動が変ですが使えています。

前にも書きましたがHTCのOTAを当てるときはリソースのチェックが入り、入れ替わっている場合は弾かれます。
これはリソース入れ換えにbspatchというバイナリ差分パッチを使用しているためで、パッチ前リソースが一意である必要性があるからです。
逆に入れ換えの対象外だったり、無かったファイルを突っ込んだ場合はチェックに引っ掛かりません。
ですので、厳密に素の公式ROM状態じゃなくても大丈夫です。
俺の場合は公式リカバリーをadbが通るように改造していますので、OTA実行して引っ掛かったらリソース入れ換えて又実行を繰り返しています。

wifiに接続出来なくなる件について

2011-09-13 09:56:17 | HTC Sensation
Asia WWE版2.6.35.10カーネル入れ換えによるwifi切断の件ですが
実は今弄っているCyanogenModでも出ていた事象なんですよ。

ルーターが見つかってネゴりに行くんだけど、IP取得が出来なくて堂々巡りになる。
事象から見るにdhcpcd回りの不具合かなぁと思って見ていたんですが
昨夜の感じだとinitの入れ換えかinit.rc記載で何とかなる気がしてきました。

オーバークロックカーネル適用の不具合についてですが
このパッケージの中では端末のboot.imgを引っこ抜き、カーネルとramdiskに分割して
新カーネルとramdiskを結合しbootパーティションに書き込む処理をしています。
ここのboot.img分割が何故か上手く行かずに失敗していました。
恐らくboot.img内に含まれる2バイトコードが悪さをしてバウンダリを誤認識しているんだと思います。

このunpackbootimgはCyanogenModのgitから取得してきた物で、
xdaで配布されているカーネルパッケージでも同じ処理を行っている物が結構あります。
と言うことはそちらでも同様の不具合が起こると言うことですねw
昨夜のアジア版パッケージはg3422292のramdiskを同梱した形になっているので根本の解決にはなっていません
正しく分割出来るようにunpackbootimgを修正しようと思っています。

[HTC Sensation] オーバクロックカーネル出来た

2011-09-10 14:12:21 | HTC Sensation
先日公開されたMRカーネルのソースを元にしてオーバクロックカーネルを作りました。
個人的には標準SenceROMに入れて常用できる物でCyanogenModに入れていこうかと思っている物です。



ノーマルの状態で1512MHzまで回ります。
1.5GHzはmsm8260の定格ですので得に問題なく使えるかなぁと言うことで、普通はこの状態で使おうかと。
ベンチマーク的にはこんなもんですね。



さらにSetCPUを使えば1782MHzまで回せます。



ベンチマーク的はこんなもんですね。



この状態はCPUのVcore電圧を上げて喝を入れているのでデバイスにそれなりの負荷がかかります。
この上も色々試しましたが、うちのSensationは耐性が低いのかフリーズ多発したので一応ここまで。


ここに置いておきますので使いたい人はどうぞ。passはsensation。
Clockworkmod Recoberyからインスト出来ます。一応どんなどんなROMでも使えるんじゃないかな?
/system/lib/modules/以下を上書きますのでバックアップを取るなりして下さい。

*追記*

Asia-WWE版のROMの場合boot.imgのunpackが失敗し正常に書き込みが行われない様です。
こちらのパッケージを使用してください。

上記のリンクの物が使用できます。

HTC Sensationの2.6.35.13カーネルについて

2011-08-29 09:18:05 | HTC Sensation
懲りずにHTC Sensation用のカーネル弄りを続けています。

以前、ビルドしたカーネルを突っ込むと画面が表示されなくなると書きましたが
2.3.4ROMに以前の2.6.35.10カーネルを突っ込んでも同様の現象が起こる事を確認しました。
要するに今の2.6.35.13カーネルは単なるマイナーバージョンアップではなく、何らかの変更が加えられていると言うことです。
実際に/procの情報を比較してみるとかなり変わっていますね。

現在xda等で配布されているカスタムカーネルはHTCから公開されている2.6.35.10のソースをベースにしているため
2.3.4ROMでは動かないよとか、動くとしても描画回りのシステムライブラリを2.3.3版に戻す対処が取られています。
これは一応動く様になると言うだけで描画がカクカクして使い物になりません。
カスタムカーネルはもっと出て来てもおかしくないのに、何故か少ないのはこのためです。

次に着目したのは2.3.35.13と2.3.3の組み合わせだと正常に動作する事です。
下位互換が保たれているということは、カーネルの根本に関わる構造上要因ではないと言うことになります。
今はドライバー回りを疑っていて最新版に入れ換える作業を行っています。
うちの機体はAUOのLCDが乗った機体なので、SHARPの機体は動かないとかいう落ちになるかも知れませんがね。

今回、ビルド用PCのCPUをパワーアップしました。
カーネルフルビルドで3分かからないので快適です。

オーバークロックカーネルを作っています

2011-08-24 10:00:33 | HTC Sensation
昨日からHTC Sensation用のオーバークロックカーネルを作っています。

昨夜はCyanogenMod用の2.6.37.6をベースにしていたんですが、どうも時間掛かりそう。
なので先ずは2.6.35.13を使って作ろうかな。

実はMSM8260ってCPUは定格でも1.5GHzまで回せるようになっています。
リテールカーネルも回せるような実装がなされているけどロックをかけてる。
そこを外してやったのがまず一つ。
後は1.8GHzまで回せるようにしたやつ。
上記の事を考えるとそんなにリスクは無さそうですね。

レスポンスと発熱を見てどちらを常用にするか決めよう。

CyanogenModの修正はダルい

2011-08-22 09:15:54 | HTC Sensation
Sensation用のCyanogenModの開発を続けています。

基本的にはSnap Dragon系AndroidオープンプロジェクトAuloraのmsm8660コードをCyanogenMod側にマージして行く作業です。
こんなもんで動くかな?と言うところでビルドして動かすと大体ライブラリ欠損やメソッドシンボル欠如で落ちるので
そこを補完してやるべき手段を考えて次の手を打つ感じですね。
本当は周辺のコードを読んで辻褄を合わせて行くべきなんでしょうけど、あんな大量のコードを読んでいられないので動かした放が早い。

今のPCだとccacheを使ったフルリビルドでも20分位かかるのでかなり効率が悪いです。
出来れば6コアCPUでメモリ16Gは欲しい。
そうこうしているうちに誰かが本家にpushしてくれるだろうとちょっと思っています。