JavaScriptを有効にしてください

Redmi K40にROMを焼こうとして失敗し、復旧させた話

 ·   ·  ☕ 3 分で読めます

あらすじ

私がWindowsにインストールしている何かが悪さをしているのか、正常に解凍できていないのか、或いは転送で何か問題が起きているのかはわかりませんが、Windows環境(10/11, Vaioやデスクトップ等複数環境で検証)でROM焼きを行うと必ず以下のエラーが出て止まります。

Sending sparse 'super' 7/11 (786328 KB)            FAILED (remote: 'failed to check sparse crc')
fastboot: error: Command failed
"Flash super error"

Superを残して次へ進もうとしても

Sending 'misc' (8 KB)                              FAILED (remote: 'Error: Last flash failed : CRC Error')
fastboot: error: Command failed
"Flash misc error"

といった感じでCRCの検証が出来ずバッチが停止します。
この状態で再びフラッシュをやり直すには再起動してfastbootモードに入り直す必要があるのですが、何せファームが生焼けなのでQualcomm純正のFastBootモードの画面(先頭にSTARTという緑の文字が表示されるもの)が登場します。(明らかにXiaomiの機種で出てはいけない画面ですね…)
この状態になった場合でもファームを通常通りフラッシュすることはできますし、アップデート/ダウングレードを行っても文鎮化することはありませんから、まずは落ち着いて別に環境を用意し直すことをおすすめします。何らかの原因でフラッシュが阻害されているということなので。

環境

失敗(あくまで現状の環境)

fastboot version 31.0.3p1-android-tools
Installed as /usr/bin/fastboot

成功

  • ArchLinux (3/16時点の最新パッケージ群)
  • Linuxでは別でドライバのインストールは不要
  • GNU tar
tar (GNU tar) 1.34
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

作者: John Gilmore, Jay Fenlason.
  • fastboot
fastboot version 32.0.0-8006631
Installed as C:\ProgramData\chocolatey\lib\adb\tools\platform-tools\fastboot.exe

手順

共通

  1. fastbootでフラッシュ可能なファームウェアをダウンロードする

失敗

  1. 7zipでfastbootファームウェアを解凍
  2. flash_all.batでフラッシュ
  3. CRCエラーでコケる

成功

  1. tar -xvfでファームウェアを回答
  2. flash_all.shでフラッシュ
  3. 最終行でfastboot rebootが実行され、MIUIが起動

追記

  • Poco F3でも生焼けの場合同様の症状が発生するものと思われます。
  • 友人のWindows環境でも同様に失敗が報告されていますので、環境に左右されやすいWindowsではフラッシュしない方が吉なのかもしれません。
  • CRCエラーを強制的に飛ばすには、flash_all.bat(or sh)内の
1
2
fastboot %* flash crclist %~dp0images\crclist.txt || @echo "Flash crclist error" && exit /B 1
fastboot %* flash sparsecrclist %~dp0images\sparsecrclist.txt || @echo "Flash sparsecrclist error" && exit /B 1

(shの場合)

1
2
3
4
fastboot $* flash crclist `dirname $0`/images/crclist.txt
if [ $? -ne 0 ] ; then echo "Flash crclist error"; exit 1; fi
fastboot $* flash sparsecrclist `dirname $0`/images/sparsecrclist.txt
if [ $? -ne 0 ] ; then echo "Flash sparsecrclist error"; exit 1; fi

をコメントアウト@REM(or #)することでCRC検証をスキップすることができますが、これを行った場合でもCRC検査に失敗している=破損している以上起動はしません…

  • 2chの方ではVM上のubuntuでフラッシュできている方がいらっしゃいましたが、私はどうもうまく認識されませんでした。なるべく実機を使ってあげたほうが良いかもです。

取り敢えず走り書き。後に何か差異が判明したら追記するかもです…

共有

hayabusa2yk
著者
hayabusa2yk
Dev/Admin of servers