Installing Official crDroid Android 16 on the Xiaomi Mi 9 (cepheus)

This guide documents a full installation of official crDroid Android 16 on the Xiaomi Mi 9 (cepheus), including the problems encountered during the process and how they were resolved.

It is written as a practical field guide rather than a generic ROM flashing checklist. The goal is to help other Mi 9 owners avoid the same mistakes and get to a clean, booting system on the first serious attempt.

Why this guide exists

The Xiaomi Mi 9 is an old but still capable phone. In this case, the stock ROM was running:

  • Android 10
  • A security patch level from April 1, 2021

That is old enough to be a real security concern for a daily driver, especially if the phone still handles banking apps, 2FA, email, and general account access.

Official LineageOS is not available for cepheus, so the best current official option was crDroid. At the time of this installation, the target ROM was:

  • crDroid 12.9
  • Android 16
  • device: cepheus

The final working result

The installation eventually succeeded.

The key things that made it work were:

  1. Unlock the bootloader properly with Xiaomi’s official Mi Unlock tool.
  2. Use a recovery image that can actually boot on this device.
  3. Format data before the clean flash sequence, not at the end.
  4. Flash in the right order.
  5. Do not rely on stock recovery or assume reboot recovery will preserve the temporary custom recovery session.
  6. Re-enter OrangeFox from fastboot when needed instead of trusting stock recovery transitions.

What was installed

The working setup used:

  • Official crDroid ROM for cepheus
  • Required firmware package: V12.5.6.0.RFACNXM
  • NikGapps package intended for official crDroid Android 16 builds
  • OrangeFox recovery booted temporarily from fastboot

Before you start

This process wipes the phone.

Before doing anything:

  • Back up DCIM, Download, Documents, Pictures, Movies, WhatsApp, and Telegram
  • Make sure Google Authenticator or any other 2FA app has already been migrated elsewhere
  • Make sure you understand your banking app recovery path
  • Remove all Google accounts from the phone before flashing

That last point matters because Factory Reset Protection can become a problem if you wipe and reflash with accounts still attached.

Important warning about Xiaomi Mi 9 bootloader unlock

The Xiaomi Mi 9 does not unlock the same way as many Pixels.

What did not work:

  • fastboot flashing unlock

What was required:

  • Xiaomi’s official Mi Unlock tool
  • a Xiaomi account
  • a Windows environment for the actual unlock step

In other words, if you are coming from a Pixel workflow, do not assume the Mi 9 can be unlocked with the same fastboot commands.

Files used

Prepare these files before starting:

  • official crDroid ROM zip for cepheus
  • required firmware zip V12.5.6.0.RFACNXM
  • matching NikGapps package for official crDroid Android 16
  • a recovery image that boots successfully on cepheus

In this installation, OrangeFox was used successfully as a temporary recovery boot image from fastboot.

The clean installation flow that worked

This is the exact high-level sequence that produced a booting system.

1. Unlock the bootloader

Use Xiaomi’s official Mi Unlock process first.

Once done, verify the device is really unlocked before continuing.

2. Boot a custom recovery temporarily from fastboot

Do not assume stock recovery is useful for this installation.

Boot OrangeFox from fastboot. Do not worry if it is not permanently installed yet.

3. Format data first

This was the most important correction in the process.

Initially, data formatting was done too late. That caused a bad installation flow and repeated returns to recovery instead of a normal system boot.

The correct move for a clean install is:

  • boot custom recovery
  • format data
  • reboot back into custom recovery

Because the recovery was being booted temporarily, “reboot back into custom recovery” had to be handled carefully. Rebooting the wrong way could drop the phone back into stock Mi Recovery 3.0.

4. Flash the required firmware

Once back in custom recovery after formatting data, flash the required firmware package first.

This ensures the ROM has the firmware base it expects.

5. Flash the crDroid ROM

After firmware, flash the ROM zip itself.

6. Return to custom recovery again

This is where temporary recovery sessions matter.

On this device, simply choosing recovery reboot in the wrong context could bounce the phone into stock Mi Recovery instead of the custom recovery environment needed for the next step.

The reliable workaround was:

  • if needed, boot OrangeFox from fastboot again

7. Flash GApps before first system boot

GApps must be installed before the first normal boot if you want a standard Google-enabled setup.

In this installation, NikGapps for official crDroid Android 16 was flashed after the ROM.

8. Reboot to system

After firmware, ROM, and GApps are in place, reboot to system and let the phone take its time on first boot.

The first boot can take a while. Do not panic too early.

What went wrong during the real installation

Several problems showed up. These are worth documenting because they are exactly the kinds of issues that can waste hours if you do not already know what they mean.

Problem 1: The wrong assumption from a Pixel-style workflow

The first assumption was that the Mi 9 could be handled like a Pixel:

  • unlock with fastboot
  • use a simple recovery flow
  • reboot between steps

That assumption was wrong.

The Mi 9 needed Xiaomi’s unlock flow, and recovery handling was less forgiving.

Problem 2: Temporary recovery versus stock recovery

OrangeFox was being booted temporarily with fastboot.

That means:

  • custom recovery exists only for the current session
  • if the phone reboots the wrong way, it can fall back into stock recovery

This caused multiple returns to:

  • Mi Recovery 3.0

That was confusing at first, but it was not a brick. It just meant the phone had left the temporary recovery session.

Problem 3: Mi Recovery 3.0 kept appearing

This happened more than once.

Why?

  • the phone was rebooting away from the temporary recovery environment
  • stock recovery was still the persistent recovery on the device

How it was handled:

  • manually return to fastboot
  • boot OrangeFox again from fastboot
  • continue from there

Problem 4: fastboot boot with one recovery image failed

One recovery image produced:

  • BootImage is Incomplete

That meant the selected image was not suitable for direct boot in the expected way.

The fix was:

  • use a different recovery payload
  • specifically, extract and boot a working recovery.img from the OrangeFox package

That image booted successfully.

Problem 5: ADB push to /sdcard failed in recovery

At one point, copying installation zips directly to /sdcard failed with a message equivalent to:

  • the remote side could not create the file
  • the required key was not available

That happened because storage was still in an encrypted state and the recovery environment could not use /sdcard normally yet.

The fix was to avoid file copy to internal storage and use:

  • adb sideload

That was much more reliable for this setup.

Problem 6: The ROM flashed, but the phone did not boot the system

After one installation round, the phone returned to recovery instead of booting normally.

Recovery logs showed the flash process itself did not obviously fail, which made the situation misleading.

The actual issue was the installation order.

The fix was:

  • redo the installation
  • move format data to the beginning of the clean flash sequence

That was the turning point.

Problem 7: Rebooting recovery at the wrong time caused confusion

Because custom recovery was temporary, rebooting “to recovery” did not always mean “back into OrangeFox”.

Sometimes it meant:

  • back into stock recovery

The reliable mental model was:

  • temporary recovery is disposable
  • if you lose it, return to fastboot and boot it again

Once that was treated as normal instead of surprising, the process became manageable.

The practical installation model that turned out to be safest

If doing this again from scratch, the safest model would be:

  1. Unlock bootloader with Mi Unlock.
  2. Remove all Google accounts from the phone.
  3. Back up all important files and app-related access beforehand.
  4. Boot OrangeFox from fastboot.
  5. Format data immediately.
  6. Return to OrangeFox again if recovery session changes.
  7. Sideload firmware.
  8. Sideload ROM.
  9. Return to OrangeFox again from fastboot if necessary.
  10. Sideload GApps.
  11. Reboot to system.

That is the sequence I would recommend to others.

How to avoid the specific problems encountered here

To avoid getting stuck in Mi Recovery

  • Expect it if you are only temporarily booting custom recovery
  • Do not interpret it as instant disaster
  • Use hardware buttons to return to fastboot
  • Boot the custom recovery again and continue

To avoid storage copy failures

  • Prefer adb sideload
  • Do not depend on pushing large zip files to encrypted internal storage

To avoid a non-booting flashed ROM

  • Format data before the clean flash sequence
  • Do not postpone it until the end
  • Install GApps before first normal boot

To avoid FRP headaches

  • remove all Google accounts before starting

To avoid banking and 2FA lockout

  • migrate authenticator apps before flashing
  • verify your banking app recovery path in advance
  • do not start this process late at night if you still depend on those apps immediately

What about SafetyNet / Play Integrity / banking apps?

This guide is about installation, not app certification guarantees.

A few realities still apply:

  • the bootloader is unlocked
  • this is a custom ROM
  • some banking or security-sensitive apps may still object

That does not mean the ROM install failed. It means app integrity policy is a separate issue from getting the operating system running.

Final thoughts

The Xiaomi Mi 9 can still be revived into a modern Android 16 device with an official custom ROM, but the process is not as frictionless as flashing a Pixel.

The hardest parts were not the ROM package itself. They were:

  • Xiaomi’s unlock model
  • temporary recovery behavior
  • storage encryption quirks
  • getting the installation order exactly right

Once those were understood, the installation stopped feeling random and started behaving predictably.

If you follow the clean order described above, you should have a much smoother experience than the one documented here.

Troubleshooting summary

If you only want the condensed version, here it is:

  • fastboot flashing unlock does not work for Mi 9: use Mi Unlock
  • custom recovery can be temporary: expect to re-enter it from fastboot
  • stock Mi Recovery 3.0 appearing is annoying, but not fatal
  • if /sdcard is unusable in recovery, use adb sideload
  • if the ROM flashes but the phone will not boot, redo the install with format data at the start
  • install GApps before first system boot

Suggested article title alternatives

  • How I Installed Official crDroid Android 16 on the Xiaomi Mi 9
  • Xiaomi Mi 9 crDroid Install Guide: What Broke and How I Fixed It
  • Installing Android 16 on the Mi 9 with Official crDroid: A Real-World Walkthrough
Scroll to Top