2017年7月30日日曜日

完全文鎮と化したFireタブレットのリカバリ その1


こんにちは。



もう2年も前の話になりますが、Wi-Fiルーターを契約した時に、AmazonのFire HD7タブレットが無料で手に入りました。無料でくれるわけですからハイスペックなはずもなく、RAM1GB、1.5+1.2Ghzクアッドコアというローエンドタブレットで、初期状態ではplayストアさえ使えないというポンコツっぷり。


まだAndroidに詳しくなかった頃ですので、3日3晩悪戦苦闘してPlayストアを導入しました。adbって何、recoveryって何…そんなレベルでしたね。今では考えられないことですが、root取りも悪名高いkingrootを使用しました。良い子はマネしないでね。


そんなこんなで紆余曲折の末、Playストアとroot権限のおかげでこのタブレットもかなり便利になったのですが、1年ほど使ってみるとやはりOSがfireOSでは限界があることに気づきます。Androidにも詳しくなったし素のAndroidに近いカスタムROMを焼きたい、そう思っていろいろチャレンジしてみました。



出来上がったのは文鎮でした。



rootは取ってあるのでTWRPを導入するのは簡単だったのですが、stockなOSをwipeしていざカスタムROMを焼こうとするとエラー。後になってわかりましたが、どうやら私が焼こうとしていたのは第5世代Fire用のカスタムROMで、まあそりゃエラー吐くわなといった感じです。



しかしTWRPのバージョンが古いせいだと思った私は、何を思ったかOSの復元もバックアップイメージの作成もせずに直接リカバリを焼き直します。そしてここでも似たようなミスをやらかすワケです。私が焼いたのは第3世代Fire HD7用のリカバリイメージ(私の機種は第4世代)で、当然機種が異なるわけですからリカバリなんて起動するはずもありません。




つまり私はOSとリカバリを同時に吹っ飛ばしてしまったというわけです。



電源を入れてもAmazonロゴでブートループ。人生初の文鎮が出来上がりました。



さて、話が逸れますが、Fireタブレットの文鎮化はふつうソフト・ブリック、半文鎮というもので、アプリケーションの競合やOSの不具合によって生じるものです。この場合は、リカバリからファクトリーリセットをかけるか、adb sideloadでROMを焼き直せば復活します。これは他の記事でもよく書かれている内容でしょう。



しかし私のFireはOSどころかリカバリも存在しないワケですから、本体だけではどうしようもありません。これは困った。本体操作が出来ないのならばPCに繋げば何とかなるだろうと高をくくっていたら、PCに繋いでも認識と切断を永遠に繰り返しています。認識すべきOSが存在しないのですから当然と言えば当然ですが、そのためadbコマンドはおろかfastbootコマンドすら使えません。



ハード・ブリック、完全文鎮の完成です。



しかし諦めてはいけない。「Amazonロゴでブートループ」ということは、Amazonロゴを表示させるだけの能力はまだ生きているということです。そしてPCに繋ぐと一瞬だけ認識されるということは、OSやリカバリが無くてもとりあえず認識される何かが存在するということです。



そこで、Fireを接続したときの挙動をデバイスマネージャで監視してみると、一瞬だけ認識されるのは「mt65xx preloader」というモノでした。名前から察するに、おそらくブートローダーよりも前に起動して準備をする領域なのでしょう。



いろいろ調べてみたところ、このpreloaderはMediaTek製のSoCを積んだタブレットにのみ実装されている領域のようです。そして専用のドライバを導入したPCとpreloader状態の端末を接続すると、Download Modeという特別なモードになる、とのこと。



さあ希望が見えてきました。このDownload Modeは端末のパーティション(領域)を指定するとイメージファイルを直接焼くことが出来るモードで、これを使って正しいリカバリイメージを焼き直せば復旧が可能です。
次の記事ではその手順を紹介します。




あとで知ったことですが、FireOS5.3.1から5.1.2に、5.1.2から5.0.xにダウングレードした時に出来る文鎮もこれで修復が可能です。この文鎮はブートローダーの不整合によって生じるものですが、このDownload Modeはブートローダーが起動する前の段階で起動するモードです。つまりこのpreloaderを破壊するようなマネをしない限り、ブートローダーを吹っ飛ばそうがリカバリを吹っ飛ばそうが、Fireは文鎮修復が可能ということです。修復の手順はそれなりに煩雑になりますがね。





2017年7月17日月曜日

Xperia Z3のroot権限取得+Android6.0化


こんにちは。

私が普段メインで使っているスマホのXperia Z3ですが、なんとau版のみAndroid5.0.2までしかアップデートが降ってきません。グローバル版はもちろん、同じ国内キャリアのdocomo版ですらAndroid6.0.1までアップデートが降ってくるというのに…。

というわけで、無理やりau版のZ3(SOL26)にAndroid6.0.1を焼いてみました。その過程でついでにroot権限も取得しましたので、備忘録代わりに書いておきます。ネット上では、Android4.4にダウングレードしたりする方法が紹介されていたりしますが、そんな面倒くさいことは一切不要で、既存の内部データも消えません。

2017年最新の方法です。2つの端末で成功を確認しました。

なお、この方法は海外版のROMを焼いてAndroidをアップグレードすることが最終目標となりますが、海外版のROMにはテレビ(ワンセグ/フルセグ)機能、赤外線通信機能、NEC、フェリカは実装されていません。つまりこの方法でAndroidをアップグレードした場合、前記の機能は全て使えなくなってしまいます。したがって、スマホをICカードとして使用している方や、(あんまりいないと思うけど)テレビ視聴に使っている方は多少古くともAndroid5.0で甘んじた方が吉かと思います。
ハード的にはテレビアンテナやフェリカは実装されているので、海外版のROMでもソフト面をいじれば使えるようになると思っている方もいるかもしれませんが、単にテレビやNFCのアプリのapkファイルやドライバを移植するだけでは動作しません。ハードとソフトを紐づけるフレームワークが実装されていないので当然といえば当然ですが…もともと、いわゆるガラスマ機能の使用は想定されていないROMですので、変にいじらないで我慢しましょう。(NFCだけは設定画面にトグルが表示されるのでいじればなんとかなる、かも。でもやめといたほうがいい)



いろいろ準備するもの


①adb環境を整える


adbはAndroid端末にPCからコマンドを出すために必要なもので、これがないと話になりません。こちらのサイトなどにadb環境の構築について詳しく書かれていますので、参照してください。



②必要なソフトウェアのダウンロード


1.Flashtool


Xperia専用のROM焼きツールです。
ちらのページからダウンロードして下さい。ちなみに過去のとあるバージョンでは、FlashToolの不具合が原因で文鎮化したという話がありますので、必ず最新版かそれに近いものをインストールすること。



2.PRFcreater


prerootedと呼ばれるzipファイルを作成するソフトウェアです。root権限を取得した端末はsystem領域が改変されているため、通常のOTAアップデートをしようとするとエラーが発生してしまいます。一方で、FlashToolからアップデート後のROMを焼くと、せっかく取得したroot権限や導入したカスタムリカバリが失われてしまいます。

そこで使うのがこのprerootedというzipファイルで、要するにROMとSuperSUとカスタムリカバリをまとめてくっつけた、「既にroot化されているアップデート後のROM」です。これをカスタムリカバリから焼くことで、root権限やカスタムリカバリを維持したままアップデートが可能です。


追記:XDAで出来合いのprerootedファイルを公開されている方がいましたので、自分でprerootedを作らなくても良くなりました。よって、PRFはインストールする必要は無くなりましたが、これからもXperiaを開発する場合は入れておいて損はないソフトウェアです。




③必要なファイルのダウンロード



1.D6603の23.5.A.0.575のftfファイル


ftfファイルとはFlash Tool Fileの頭文字で、いわばXperia専用のファームウェアファイルです。
root化に使うrootkitはキャリア版のROMには対応しておらず、また23.5.A.0.575なビルドにしか対応していないため、こちらのサイトからグローバル版Z3(D6603)の23.5.A.0.575なftfファイルをダウンロードして下さい。

ちなみに、このftfを焼いた時点でAndroid6.0へのアップグレードは完了します。ここから下はroot取得+サムシングのためのファイルです。




2.ワンクリックrootkit


キューブキューブさんがこちらのドライブで公開されています。いつも便利なツールを作成して下さるキューブキューブさんには毎度感謝です。



3.カスタムリカバリ導入ツール



ただroot権限を取得したいだけならここからは行わなくて構わないのですが、昔からXperiaには、root権限を使ってsystemを改変すると強制的に端末をリブートさせるricというプログラムがOSに組み込まれているため、ricを無効化しないとroot権限を取った意味がありません。
また、rootkitが使える23.5.A.0.575のファームウェアはD6603の最新ファームウェアではありませんので、最新ファームウェアをrootを維持したまま焼きたいという方もいらっしゃるかと思います。
ricの無効化と最新ファームウェアへのアップデートを行うためには、カスタムリカバリを導入する必要があります。

Z3はワンクリックでカスタムリカバリを導入できるツールをキューブキューブさんが公開されています。有難い!
こちらのドライブからダウンロードできます。



4.23.5.A.1.291のprerootedファイル


グローバル版Z3(D6603)の最新ビルドは23.5.A.1.291です。23.5.A.0.575のままだとアップデート通知が鬱陶しい(そのままアプデしようとすると当然エラー吐かれる)うえに、アップデートしないとSTAMINAモードが実装されないので、最新版のファームウェアを先述のprerootedの形で焼きます。本来はPRFcreaterで自作しなければなりませんが、親切な方がXDAにアップロードして下さっているのでこちらのサイトから落とせます。




手順


1.FlashToolでD6603のftfを焼く


FlashToolの基本的な使い方はここでは触れませんので、他のサイトを参照してください。

Excludeは、AMSSから始まる3つの項目、Fotakernel、Partitionチェックを入れてFlashして下さい。MISK TAの項目は全てにチェックを入れて下さい。ここを間違えると文鎮化のリスクがぐっと高まります。
CONTENTSの枠にboot_delivery, cache, elabel, kernel, systemの5つが表示されていればOKです。

ちなみに、ROM焼きの際はエラー防止のため内部データを全てwipe(消去)する必要があることが多いのですが、この方法の場合wipeは必要ありませんでした。アップグレードの際は必要ないようです。

全て確認したらFlashを開始してください。かなり時間がかかりますが、焼き終わってブートをかければ、Android6.0が起動するはずです。ここでブートループすることはおそらくないと思いますが、もしそうなった場合はもう一度焼き直してみるか、内部データを全てwipeしてから焼き直せば上手くいくでしょう。ブートループの際は電源ボタンとボリュームアップ長押しで強制終了できます。

ここからはroot化+最新ビルドへのアップデートの作業となります。



2.rootkitでroot化


ダウンロードしたrootkitを展開し、中にあるバッチファイルを実行してください。1回で成功するとは限りませんので、何回か実行してみて下さい。ここまでの環境構築+ROM焼きが上手くいっていれば、そのうち成功するはずです。

成功すれば、アプリ一覧にCubeSUというSUアプリが追加されます。



3.カスタムリカバリ導入


ダウンロードしたカスタムリカバリ導入ツールを展開して、中にあるバッチファイルを実行してください。端末の画面でroot権限が要求されるので、許可してください。

TWRPが導入されますので、(もしかしたら自動でリブートされたかもしれませんが)一度電源を落とし、リブートして下さい。正常に導入されていれば、SONYロゴが終わるころにランプが点灯します。ボリュームダウンキーを連打してください。TWRPが起動します。

この段階で、PCに繋いで、次の操作のために落としてきたprerootedファイルを端末内の分かりやすい場所に移しておいたほうが賢明です。もしこの後の作業で、OSをwipeした後に必要なファイルが転送されていなかったりしたら面倒くさいので。



4.最新ビルドのprerootedを焼く


本来、D6603のprerootedを焼く場合は、インストール後にbaseband(通信電波帯)が上書きされないようにいろいろいじくる必要があるのですが、私はポケットWi-Fiで運用しているので気にせず焼きました。

LTE回線をお使いの方は、もともと入っていたキャリア版のftfを入手し、拡張子をzipにリネームしてから中のbaseband関連のsinファイル(amss…から始まる3つのファイル)を抜き出し、prerooted内のものと入れ替えてください(その際は、抜き出してきたsinファイルの名前をprerooted側のものに合わせてリネームしておくこと)。これで通信関係はOKなはずです。

Partition関連のファイルはいじらなくてもちゃんと32GBで認識されました。

ここからは文鎮化のリスクが最も高いです。気を付けて作業してください。

TWRPは通常のリカバリとは違ってタッチ操作が可能です。

新しいファームウェアをまるまる焼くわけですので、まずは既存のファームウェアを全て消去する必要があります。(全部消すなら今までの操作が全て無駄になるように思われる方もいらっしゃるかもしれませんが、そもそもこのTWRPを導入するためにroot権限が必要ですので、全く無駄ではありません。)

wipeの項目からadvanced wipeを選択し、system、cache、dalvik cacheを選択してwipeして下さい。この操作をした後はprerootedを焼くまで端末にOSが存在しないことになりますので、何があっても電源を落とさないでください。

次に、installの項目から、端末内に移したprerootedファイルをインストールして下さい。時間がかかりますが、ここまでエラー無く進められていれば問題なくインストールできるはずです。

終了後、再起動して完成です。




あとがき

これでかなり端末が便利になると思います。カスタムリカバリも導入されているので、Xposedのフレームワークも簡単にインストールできます。

初回の再起動ではNFCバイナリか何かのアップデートに失敗すると思います。その場合、絶対にNFCをONにしようと試みないでください。暴走して電池消費がヤバくなります。まあ、adbからブロックすればいいんだけど。

次はZ3TCのrootについて書こうかな。

自己紹介&使用端末紹介。


こんにちは。
某国立高校に通っているルーターと言います。どうぞよろしゅう。

Android端末やガジェットのソフト周りを好きでいじっているので、それに関することを備忘録代わりにちまちま書いていこうと思います。Xperia・Nexus・Fireを主に使っているので、そこらへんのroot取りや文鎮修理、便利ツール紹介などが中心になるかと思います。

※当ブログを参考にして仮にお持ちのデバイスが文鎮化・破損・故障等しても、当方は一切責任を負えません。ご了承の上で閲覧をお願いします。



使ってる端末は以下の通り。


Xperia Z3 (SOL26→D6603)


メインで使っている愛用スマートフォン。スマホはこの1台だけです。

Xperiaスマホはかなりの頻度で新しいフラッグシップモデルが発売されますが、CPUの性能を考えると今でも十分活躍できるスマホです。最近はオクタコアCPUが流行りですが、何でもかんでもオクタコアを積めばいいってもんでもありません。排熱性能が付け焼刃なのにオクタコアを積んだばっかりに、優秀なカイロと化したXperia Z4の例もありますしね。



私は、FlashToolでグローバル版のROMを焼いた後、Xperia開発の重鎮たるキューブキューブさんが公開されているワンクリックツールを利用してrootを取得しました。


root取得後はキャリア版のROMに戻しても良いのですが、国内版はAndroid5.0.1までしかアップデートが降って来ないのに対してグローバル版は6.0.1までアップデートされるので、グローバル版のまま運用しています。技適通ってるから何の問題もありません。


Xperia Z2 tablet (SO-05F→SGP521)


先日、日本橋のイオシスにて、インカメラ不良の無保証ジャンク品を13000円(!)という破格の値段で購入しました。インカメラなんてもともと使わないので快適に使えています。

10インチのXperiaタブレットなら上位機種のZ4 tabletがありますが、Z2Tでも十分にハイスペックです。値段がかなり下がっていることも加味すると、コスパは最強なんじゃないでしょうか。

キャリア版なので、グローバル版のROMを焼いてもブートローダーはアンロックできません。しかし、Z2時代なのでまだdm-verity※は存在しませんから、専用のツールでTWRPは比較的簡単に導入出来ます。root権限もアンロックされたブートローダーもなくTWRPを導入できるのはどういう仕組みなのかはよくわかりませんが、どうやら脆弱性からSElinuxを無効化して、OS上でTWRPを焼いているようです。これについてはまた別記事で。

※Z4世代以降の端末でkernelに仕込まれたsystem改変防止プログラム。これのせいでricを無効化して脆弱性を突くやり方が通用しなくなったため、ブートローダーをアンロック出来ないキャリア版の端末はrootが取れなくなった。ああ無情。



Xperia Z3 Tablet Compact (SGP612)


メインで使っている8インチタブレットです。当ブログではZ3TCと略します。スペックは調べてもらえればわかると思うので詳しくは書きませんが、まあ何でも出来る優等生タブレットですね。

SONYはタブレット端末から一時的に手を引いているようですが、もう一度SONYが8インチのタブレットを発売しない限り、これを超える8インチタブはそうそう現れないんじゃないでしょうか。


つい最近、XDAのここここを参考にroot権限を取得しました。今まではAndroid4.4.4にダウングレードしてから脆弱性を突くやり方が主流だったようですが、現在はSONYが公式でブートローダーのアンロックを提供してくれているため、そんなことをしなくてもrootは取れます。もともとこの端末にはキャリア版が存在しませんから、どの端末でも同じやり方が使えるはずです。kernel領域にTWRPを焼くなど、少々エキセントリックなやり方ですが。



Fire HD7(4th gen)


Wi-Fiルーターを契約した時に無料で貰えたAmazonのタブレット端末です。

上の画像では「持ち運びに便利に高性能タブレット」と銘打ってありますが、正確に言えば「RAM1GBのわりにはけっこう高性能タブレット」です。1.5GHz+1.2Ghzのクアッドコアで高速プロセッサーなんてよくもまあ書けるものだと思うものの、実はローエンドタブレットの中ではかなり動作は軽い方です。初期状態では利用できないPlayストアを導入して、root権限でプロセッサのクロック数をいじれば、ミドルレンジのAndroidタブレットくらいの働きはしてくれます。

ちなみに先日、いろいろあってOSとリカバリとブートローダーを同時にふっ飛ばしてしまい高級文鎮が出来上がりました。もちろんリカバリやファストブートなんてありませんから手詰まりになりましたが、起動時にブートローダーより先に立ち上がるpreloaderという領域を利用してなんとか復活。かなり複雑な作業でしたので、また別記事で紹介しようと思います。



Nexus7 (2013)

みんな大好きNexus7です。中古美品で10000円ポッキリ。良い買い物でした。

2013年の機種ですがまだまだ使えます。というかこのNexus7以降、7インチタブレット界に格安の中華タブレットが台頭してきたせいで、Nexus7くらいの丁度いいスペックを持った丁度いい価格帯の丁度いい7インチタブレットはめっきり姿を消してしまいました。もちろん最近の格安タブレットもそこまで性能が悪いわけではないのですが、ディスプレイの解像度や物理的な重さを鑑みると、やはり格安タブは見劣りしてしまいます。


Google謹製のタブレットですので、ブートローダーのアンロックやroot権限の取得は他のタブレットに比べて格段に簡単です。私も買ったその日にroot化してXposed環境まで整えました。




以上です。

これらの端末を中心に、XperiaやAndroid全般に関することを書いていく予定です。まだまだ浅学ですので、ミスがあれば連絡をください。