Androidスマホ OnePlus 5 が Decryption unsuccessful と表示されて起動できなくなった 起動できるようにするまでのメモ

はじめに

  • データは全部ロストしました。バックアップは大事なので常日頃取っときましょう😢
  • 原因は分かっていません
  • この手の問題を解決するために久々に苦労したし情報が纏まっていないのでメモ

物故割れた

朝起きてスマホを触ろうとしたら何故か電源が落ちていて、電源を付けたらこうなってた

f:id:naari_3:20190303000936j:plain
Decryption unsuccessful

Decryption unsuccessful

The password you entered is correct, but unfortunately your data is corrupt.

To resume using your phone, you need to perform a factory reset. When you set up your phone after the reset, you'll have an opportunity to restore any data that was backed up to your Google Account.

(雑な訳、僕はこう受け取った)
復号失敗

入力したパスワードはあってたけど、残念ながらあなたのデータは壊れてます。

スマホを使い続けるためにはファクトリーリセットが必要です。リセット後のセットアップ時、Googleアカウントにバックアップしたデータから復旧できるかもしれませんね。

何事かと思いながらも何回か再起動をしたが、同じ画面が出るだけ

こういう時は既に取っていたTWRPのバックアップデータからリストアすればいいのだろう、と思いリカバリーモードに入ったのだが、ストレージが全部なくなっているように見えた

f:id:naari_3:20190302222024j:plain
Systemがおかしい図

17592186044373MBって何… 17EB(エクサバイト)…?

自分の使っているモデルはストレージが128GBのモデルなので何らかを使って天元突破したんでしょうか、どうやら完全にパーティションがぶっ壊れている様子です 僕は寝てる間に何をしたんだ…?

  • TWRPのバックアップを外のストレージに逃したりするほど要領のよい自分ではなかったこと
  • 復旧させるほうがめんどくさいと判断したこと
  • 元々Android 7系から8系に上げられない要因(後述)が元々あったこと

等が重なり、良い機会だと思ってデータを完全に削除してファクトリーリセットをしようと考えた (一応メニュー上にあるfix filesystemなる項目は試してみたが状況変わらず)

ROMも物故割れてた

そのままTWRPでファクトリーリセットを試み、System(3GB弱)とInternal storage(112GB程度)の要領表示は元に戻ったが、起動できず…

それもそのはずで、/system 以下が全部ぶっ壊れていたのだからROMも全壊状態で、とすればROMを焼く他ないためROM焼きに専念することにした

ROMが焼けない

ROMを焼くと決まればまずは最新のROMをそのまま焼くことにした

最新のROMのバージョンは OOS 9.0.4で、Android 9.xベースらしい

以下からFull ROM Zipをダウンロード

[OFFICIAL] OxygenOS 9.0.4 (Android Pie 9.0) OTA for OnePlus 5 (cheeseburger)

これは余談なんですが、OnePlus系のスマホは面白くて、公式ROM(Oxygen OS、略称OOS)についての情報をOnePlusの人(?)がそのままXDAフォーラムに書き込んでくれている

OnePlus Oneの時はたしかCyanogenModが公式にROMを提供していて、標準ROMがCyanogenMod 11Sというものだった(後に色々あったため、今は独自ROMのOOSになった)というものあるためなのか、割とギークに優しい

話を戻して、ダウンロードしたzipして、焼く

TWRPの AdvancedADB sideloadを選択、受け付ける状態にした後に

adb sideload /path/to/OnePlus5Oxygen_23_OTA_047_all_1902221956_9e0803ddc2.zip

普通はこれで焼けるはずだが、何故か失敗する

失敗時のログを取っていなかったが、「 /vendor が壊れている 」 だとか「 E3004 this package is for "oneplus 5" devices; this is a "" 」のようなエラーだった覚えがある (Warning: No file_contexts Error: Vendor partition doesn't exist! も出たがこちらはもう一度ファクトリーリセットをかけたら表示されなくなった)

よくわからなかったが、詳しい知り合いに相談してみたところ、ちょっと前からAndroidでProject Trebleというものが始まっているらしく、 /vendor はそのためのディレクトリなのではないかということだった

juggly.cn

ここではProject Trebleについては大きく説明しない(よくわかっていないため)

OnePlus 5は登場してからそろそろ2年が経とうとしているわけで、そんな昔の端末でも対応しているのか分からなかったが、調べてみるとどうやら OOS 5.1.5 からProject Trebleに対応するようになったらしい

OnePlus 5 & OnePlus 5T get OxygenOS 5.1.5 with Project Treble support

forums.oneplus.com

つまりバージョンのアップデートで /vendor がまともになり、そうでないと 最新のOOSを焼くことが出来ないんじゃないか?と考えた

適当にそのままOOS 5.1.5を焼こうとしたがこれもまた焼くことが出来ず…

このときのエラーは E3005: This device is unlocked;bootstate: ""; sdk version "25". というエラーだった

そういえば昔「この端末で OOS 4.x (Android 7.x) から OOS 5.x (Android 8.x) にアップデートしようとした時、なぜかブートローダーをロックした状態でないとアップデート出来なかったなぁ、ブートローダーをロックするとデータが消えるし、面倒くさいし放置でいいや」となったことを思い出した

今回は既にデータを全損したので面倒くさがる理由も無くなったため、次はブートローダーをロックすることにした

公式のリカバリじゃないとだめ

というわけで次はブートローダーをロックする

fastbootに切り替えてからこれをする

fastboot oem lock

端末の操作をしてロック成功

さてTWRPからROMを焼こうとするが、TWRPが起動しない

どうやらlock状態ではTWRPは使えないようで、そんな状態からリカバリー的な行動を起こすためにはリカバリーを最初から入っていた標準のものに焼き変える必要があるとのことだった

以下で標準リカバリーのダウンロード

[OFFICIAL] OxygenOS 9.0.4 (Android Pie 9.0) OTA for OnePlus 5 (cheeseburger) (Stock recovery imagesという項目の “7.1.1_2017-05: OP5_recovery.img` のほう)

fastboot flash recovery /path/to/OP5_recovery.img

これであればlock状態でもリカバリーに入って焼くことが出来る

OOS 5.1.5のROMが焼けないのでアンロックしてからOOS 4.xのものを焼く

これでようやくOOS 5.1.5のROMが焼けるようになったので焼こうとしたが、焼くことが出来なかった (標準リカバリではTWRPと違い、ターミナル上の進捗表示が45%前後になるとエラーを吐いて死ぬ)

ここでまた思い出したことがあり、ブートローダーのロック/アンロックをした後は一度ROMを起動しないと正しく動かない事があるらしく、もしやそれに引っかかってしまったのでは?と考えてみた

そもそも前述したとおりにこの端末では未だ OOS 5.x の稼働実績がないこともあったため、もう一つ戻って OOS 4.x を入れてみることにした

今回はOOS 5 になる直前の OOS 4.5.15 を焼く

ROMは以下の公式リンクのコピー集からダウンロードした(XDAにも有志のミラー集があるが、Android transfileというアップローダーが激で遅いため以下からのダウンロードがおすすめ)

forums.oneplus.com

まずは念の為に前まで動いていた状態に戻すため、もう一度ブートローダーをアンロックする

fastboot oem unlock

標準リカバリーでもadb sideloadでROMが焼けるので焼く

adb sideload /path/to/OnePlus5Oxygen_23_OTA_020_all_1712052226_98fd584ab032fe.zip

これでようやく成功し、ROMの起動ができるようになった🎉

OOSのアップデートを繰り返す

この次に、まずは OOS 5.1.5 へのアップデートを目指すため、段階を踏んでのアップデートを行う

まずは OOS 5.1.1 へのアップデート (このバージョンを選んだ理由は大きくなく、殆ど当てずっぽうでアップデートした)

先程貼った公式ダウンロードリンク集から OOS 5.1.1 のROMのダウンロード、同じようにリカバリからROMを焼く

adb sideload /path/to/OnePlus5Oxygen_23_OTA_034_all_1804201219_3824995916a49ee.zip

こちらも問題なく成功

次に OOS 5.1.5 (さっき焼けなかったやつ) を焼いてみる

adb sideload /path/to/OnePlus5Oxygen_23_OTA_038_all_1808082017_ebb1d69f37.zip

こちらも成功!先程出来なかった工程が出来るようになった

OOS 5.x を焼くには lock状態 かつ ROMが存在する状態でないと成功しないのかもしれない

OTAで OOS 9.0.4 へアップデート

OOS 5.1.5 の起動を確認したところ、 OOS 9.0.4 へのアップデートを催促されたため、そのままアップデート (OTAで1.6GBのファイル落とさせるのってどうなんですかね…)

既に上記の手順でクリーンになっているためか、問題なく終了した

消えたデータはどうしようもなかったが、なんとか起動できる状態まで持ち込めた

つまり我々はどうすればよかったのか

今回成功した手順のみを書き記していくと以下のようになる

  • TWRPでFactory Reset
  • 標準リカバリの書き込み
  • ブートローダーのロック
  • OOS 4.5.15 の書き込み
    • 一回起動しておくこと
  • OOS 5.1.1 の書き込み
  • OOS 5.1.5 の書き込み
  • OOS 9.0.4 へOTAでアップデート

結局具体的に何が原因でこうなったのか、何が良くて成功出来たのか分からなかったが、起動できるようになったので良しとしましょう

余談: LineageOSの最新版もすぐに焼けなかった

最初に OOS 9.0.4 を焼こうとした後、LineageOSの最新版も焼こうとしたが、こちらも失敗した

XDAのフォーラムを見てみると HOW TO INSTALL LINEAGEOS の欄に

Make sure your phone was running OxygenOS 5.1 at least once and is currently on latest firmware

と書いてあり、一度 OOS 5.1.x を起動する必要があったようだ

もしかしたら先程 OOS 4 の後に.OOS 5.1.1 を焼いたのは知らずに良い手を打っていたのかもしれない

さいごに

一体何故こうなったのか分かっておらず、こういった状態になると近いうちにまた同じ問題が起こるのではないかと不安になる

スマホも特定のアプリしか使っていなかった上に殆どの情報がクラウド上に保存されている状態だったため、次回使えるようになるまでの復旧は楽だろうが、遠出中に急にこのような事態になると困ってしまう、こわい

早いうちに機種変しようかなぁ…高い出費こわいなぁ…