Kindle Fireの赤画面からの復旧方法+Cynanogenmod10.1の導入

Kindle FireにCyanogenmodを入れようとして失敗して、赤画面のままどうにもならなくなった。

この状態からの復旧方法について調べた。

必要なもの
・Factory Cableと呼ばれるmicroUSBコネクタ側の1ピンと4ピンが接続されているもの
・古いバージョンのbootloader
・適切なfirmware等

とりあえず調べた時のネタ元は以下の2つ。
[Kindle Fire 2 Restore][Working!!!]-12/7/2012
[BOOTLOADER] 2nd-Bootloader/Recovery unlock process for KFire 2 [04/02 TWRP update]


手順1: Factory Cableを用意する。

[Info]Making/Using a Factory Cable
↑の元ネタは「How/why to make your own Motorola “Factory Cable”」で、こちらの方が、配線図付きでわかりやすい(以下の画像は、ここからの転載)
Schematic


手順2: Factory Cableを使ってパソコンとKindle Fireをつなげる
手順3: Kindle Fireの電源を入れる

「Fastboot」という画面が表示されます。


手順4: fastbootコマンドが動くか確認

まず、Windows上で「Android Bootloader Interface」を認識させる。
その状態で、fastboot devicesを実行。

Z:\android\kindle>fastboot.exe devices

Z:\android\kindle>

何も表示されない。

では、「fastboot -i 0x1949 devices」では?

Z:\android\kindle>c:fastboot -i 0x1949 devices
393C000600000001        fastboot

Z:\android\kindle>

「-i 0x1949」というオプション指定が必要です。

手順5: bootloaderを古いバージョンにする

bootloaderをver 10.2.4のもので書き直します。
入手元は、[BOOTLOADER] 2nd-Bootloader/Recovery unlock process for KFire 2 [04/02 TWRP update]です。

Z:\android\kindle>c:fastboot.exe  -i 0x1949 flash bootloader otter2-u-boot-prod-10.2.4.bin
target reported max download size of 486539264 bytes
sending 'bootloader' (227 KB)...
OKAY [  0.197s]
writing 'bootloader'...
OKAY [  0.276s]
finished. total time: 0.475s

Z:\android\kindle>

手順6: 続いて、bootイメージとかを書き戻します。

Cyanogenmodにするときは、「otter2-freedom-boot.img」「otter2-twrp-2.4.4.0-recovery.img」を使います。
標準のKindle Fire OSにしたい時は、バックアップしてあった「boot.img」「recovery.img」「system.img」を使います。

ここでは、Cyanogenmod用のものを書き込んでいきます。

Z:\android\kindle>c:fastboot -i 0x1949 flash boot otter2-freedom-boot.img
target reported max download size of 486539264 bytes
sending 'boot' (8192 KB)...
OKAY [  0.454s]
writing 'boot'...
OKAY [  1.085s]
finished. total time: 1.541s

Z:\android\kindle>c:fastboot -i 0x1949 flash recovery otter2-twrp-2.4.4.0-recovery.img
target reported max download size of 486539264 bytes
sending 'recovery' (8153 KB)...
OKAY [  0.379s]
writing 'recovery'...
OKAY [  0.839s]
finished. total time: 1.220s

Z:\android\kindle>c:fastboot -i 0x1949 reboot
rebooting...

finished. total time: 0.002s

Z:\android\kindle>

注: Kindle Fire純正OSにする場合は、rebootの前に「fastboot -i 0x1949 flash system system.img」でシステムを戻してからrebootします。

手順7: systemを書き込みます。
TWRPからcyanogenmodとgappsのzipファイルを適用します。

手順8: 再起動して終了

Kindle Fireでroot取得とfirmwareバックアップ

Kindle Fireを手に入れたので、とりあえず標準状態で1日使ってみた。

・・・あまり面白くない。

そこで、普通のAndroidタブレットとして使おうと試みた。

その場合、2つやり方がある。

その1:標準のAmazon Kindle Fire OSのAndroid部分を表に出すようにする
その2:標準OSは消して、別のAndroid OSを入れる

まず、必要な情報集め

・日本のKindle Fireは、海外のKindle Fire 2/Kindle Fire 2nd Genに相当するRAM 1GBモデル
・海外のKindle Fire 2の開発コードは「otter2」?
・海外のKindle Fire(RAM 512MB)と、海外のKindle Fire 2(RAM 1GB)は別のfirmwareを使う

(以下、「Kindle Fire」を表記した場合は、日本のKindle Fire=海外のKindle Fire 2をさす)
・Kindle FireにKindle Fire HDのfirmwareは使えない
・Kindle Fireに別OSを入れる場合はロックされているbootloaderを解除する必要あり(bootloader unlock)
・bootloader unlockには、標準OSでroot取得できるようにする必要がある

・Androidスマートフォン向けで有名なCynanogenmodからKindle Fire向けも出ている
・その他、いろんな情報はxda-developersの「Kindle Fire 2 Android Development」にある

今回は、とりあえず、「root取得」と「firmwareバックアップ」までの記事とします。
(警告: Kindle Fire 10.4.3_user_4308520で「[ONE-CLICK] Automated Freedom-Boot and TWRP installer」を使ったら失敗し、赤画面から進まなくなりました)


手順1: rootの取得

まず、現状、手元のKindle Fireは、firmwareが2013/06/20段階での最新 10.4.3_user_4308520になっている。
これに対して、root取得が可能かどうかが最大の問題となる。

[Root][Working 10.3.1]Kindle Fire 2 Root made easy」で紹介されているroot取得ツールのうち、「Bin4ry’s Root(Root MANY ANDROID! [Upd: 18.06.2013] – Switched to improved method)」を使って実施。

Z:\android\kindle\Root_with_Restore_by_Bin4ry_v31>RunMe.bat
======================================================================
= This script will root your Android phone with adb restore function =
= Script by Bin4ry (thanks to Goroh_kun and tkymgr for the idea)     =
=             Idea for Tablet S from Fi01_IS01                       =
=                      (18.06.2013) v31                              =
======================================================================

Device type:
1) New Standard-Root (thx Ariel Berkman)
2) New Xperia Root by Goroh_kun (Xperia Z, Xperia V [JellyBean] ...)
3) Old
4) Old-Special (for example: Sony Tablet S, Medion Lifetab)
G) Google Glass Mode (thx Saurik for the ab file)

x) Unroot

Make a choice: 1
Please connect Device with enabled USB-Debugging to your Computer
Doing a Backup first, please confirm this on your device!
Now unlock your device and confirm the backup operation.
Done!
続行するには何かキーを押してください . . .

Kindle Fireの画面に、バックアップしますか?という表示が出るので、バックアップを実施する。
バックアップ完了の表示が出たら、パソコン側でキーを押す

Please select the RESTORE MY DATA option now on your device!
Now unlock your device and confirm the restore operation.
Please press any Key when restore is done.
続行するには何かキーを押してください . . .

Kindle Fireの画面に、リストアしますか?という表示が出るので、リストアを実施する。
リストア完了の表示が出たら、パソコン側でキーを押すと、Kindle Fireが再起動する。

Going to reboot now ...
4644 KB/s (380532 bytes in 0.080s)
5069 KB/s (1500495 bytes in 0.289s)
4948 KB/s (1165484 bytes in 0.230s)
remote object '/system/bin/ric' does not exist
.
Going to copy files to it's place
Rebooting again, please wait!
Z:\android\kindle\Root_with_Restore_by_Bin4ry_v31\ric が見つかりませんでした。

ここまで出たところで、再度、Kindle Fireが再起動。
画面ロックが出たら、ロック解除を実施。

Z:\android\kindle\Root_with_Restore_by_Bin4ry_v31\ric が見つかりませんでした。
Restoring previous Backup! Please select the RESTORE MY DATA option now on your
device!
Now unlock your device and confirm the restore operation.
Please press any Key when restore is done.
続行するには何かキーを押してください . . .

今度はKindle Fire上に「完全な復元」という画面が表示される。
「データを復元する」を選択する。

そして、パソコン側で何かキーを入力すると、Kindle Fireが再起動する。

Going to reboot last time now ...
You can close all open command-prompts now!
After reboot all is done! Have fun!
Bin4ry
続行するには何かキーを押してください . . .

そして、Kindle Fireにロック解除画面が出てきたら、処理完了。

C:\Program Files (x86)\Android\android-sdk\platform-tools>adb shell
shell@android:/ $ su
su
shell@android:/ #

手順2:バックアップ取得

いろいろバックアップを取得します。
手法は「[BOOTLOADER] 2nd-Bootloader/Recovery unlock process for KFire 2 [04/02 TWRP update]」を元に実施。

上記のページには↓な風に書かれているのですが、このままやったところ、全然動きませんでした。

adb pull /dev/block/mmcblk0boot0
adb pull /dev/block/platform/omap/omap_hsmmc.1/by-name/boot
adb pull /dev/block/platform/omap/omap_hsmmc.1/by-name/recovery
adb pull /dev/block/platform/omap/omap_hsmmc.1/by-name/system

うちで実施した手順は以下のようになります。

C:\Program Files (x86)\Android\android-sdk\platform-tools>adb shell
shell@android:/ $ su
shell@android:/ # cd /mnt/sdcard
shell@android:/mnt/sdcard # mkdir backup
shell@android:/mnt/sdcard # cd backup
shell@android:/mnt/sdcard/backup # dd if=/dev/block/mmcblk0boot0 of=mmcblk0boot0.img
4096+0 records in
4096+0 records out
2097152 bytes transferred in 0.479 secs (4378187 bytes/sec)
shell@android:/mnt/sdcard/backup # dd if=/dev/block/platform/omap/omap_hsmmc.1/by-name/boot of=boot.img
16384+0 records in
16384+0 records out
8388608 bytes transferred in 1.955 secs (4290848 bytes/sec)
shell@android:/mnt/sdcard/backup # dd if=/dev/block/platform/omap/omap_hsmmc.1/by-name/recovery of=recovery.img
16384+0 records in
16384+0 records out
8388608 bytes transferred in 1.904 secs (4405781 bytes/sec)
shell@android:/mnt/sdcard/backup # dd if=/dev/block/platform/omap/omap_hsmmc.1/by-name/system  of=system.img
1814528+0 records in
1814528+0 records out
929038336 bytes transferred in 271.368 secs (3423536 bytes/sec)
shell@android:/mnt/sdcard/backup # ls -l
-rw-rw-r-- root     sdcard_rw  8388608 2013-06-20 10:06 boot.img
-rw-rw-r-- root     sdcard_rw  2097152 2013-06-20 10:05 mmcblk0boot0.img
-rw-rw-r-- root     sdcard_rw  8388608 2013-06-20 10:06 recovery.img
-rw-rw-r-- root     sdcard_rw 929038336 2013-06-20 10:11 system.img
shell@android:/mnt/sdcard/backup # exit
C:\Program Files (x86)\Android\android-sdk\platform-tools>z:

Z:\android\kindle>c:adb pull /mnt/sdcard/backup/mmcblk0boot0.img
3373 KB/s (2097152 bytes in 0.607s)

Z:\android\kindle>c:adb pull /mnt/sdcard/backup/boot.img
3232 KB/s (8388608 bytes in 2.534s)

Z:\android\kindle>c:adb pull /mnt/sdcard/backup/recovery.img
3472 KB/s (8388608 bytes in 2.359s)

Z:\android\kindle>c:adb pull /mnt/sdcard/backup/system.img
3646 KB/s (929038336 bytes in 248.811s)

Z:\android\kindle>

以上で、完了です。