Redmi 9 Custom ROMs Compilation (Dandelion / cattail)
A curated index of custom recoveries, kernels and ROMs for the Redmi 9 family — cattail, dandelion, angelica and friends on the garden platform — covering Android 11 through Android 16.
WARNING: Flashing a custom ROM is the point where a phone stops being recoverable by normal means. If you soft-brick it, Xiaomi will not help you. Back everything up, confirm your codename twice, and keep your stock firmware downloaded before you start. I’m not responsible for what happens to your device.
The Redmi 9 family is unusually well supported for a budget phone, mostly because everything in it shares the same MediaTek garden platform. This is a running index of the custom recoveries, kernels and ROMs available for it, from Android 11 all the way up to Android 16.
Sources: the Dandelion Telegram channel for the ROM index below, and ombob’s guide for the unified ROM and flashing steps. Video walkthrough: Redmi 9 Custom ROM (YouTube).
1. Know your device before anything else
Every Redmi 9 variant has a different codename, and the wrong firmware on the wrong codename is a brick. Check yours first — dial *#*#6485#*#*, or read Settings > About phone, or run fastboot getvar product in fastboot mode.
| Marketing name | Codename |
|---|---|
| Redmi 9 (India), Redmi 9 Active India | cattail |
| Redmi 9A, 9i, 9A Sport | blossom / dandelion |
| Redmi 10A | dandelion_c3l2 |
| Redmi 9C (Global) | angelica |
| Redmi 9C NFC | angelican |
| POCO C3, POCO C31 | angelicain |
Sources disagree slightly on which marketing name maps to which codename — several of these devices ship under different names in different markets. Trust your own device’s reported codename, not this table. If you are unsure, ask before flashing.
2. Before you flash anything
- Unlock the bootloader first. No custom ROM will install without it. If you have not done it yet, follow my Redmi 9 India (cattail) Bootloader Unlocking Guide first.
- Back up your IMEI. On MediaTek devices this lives in
nvram,nvdataandnvcfcg. Wipe them without a backup and you lose cellular service, VoLTE and Wi-Fi calling — permanently, and with no user-accessible way to restore it. - Download the stock firmware for your exact codename (see Section 6) and keep it on your PC before you start.
- Back up your photos and files.
fastboot -wand the format-data step both wipe everything. - Charge the battery above 50%.
PS: If you are coming from a stock MIUI 12.0.xx build on an Android 10 device, you must flash the Android 11 firmware update package first. The unified ROMs assume you are already on MIUI 12.5.xx.
3. The unified garden ROM family
The reason so many ROMs exist for this phone is that Xiaomi built the entire Redmi 9 range on one platform. As ombob puts it:
Blossom = Garden = Unified dandelion/angelica/angelicain/angelican/cattail
So a single 64-bit ROM build can cover cattail, dandelion, angelica, angelicain and angelican. That gives you official-style 64-bit apps on a phone that shipped with 32-bit-only software — the main reason people flash these in the first place.
- Unified 64-bit Android 13 guide: ombob.eu.org
- Updated Android 15/16 guide: ombob.eu.org
- Unified custom recovery (OrangeFox): sfile.mobi
Even with a unified ROM, check that the download explicitly lists your codename. “Works on Redmi 9” in a download listing means nothing on its own.
4. ROM index
Everything below is posted to the Dandelion channel. Where a ROM has multiple builds, the numbers are the post IDs in order — later numbers are newer builds.
Custom Recoveries
Custom Kernel
- Sashimi Kernel 1
Android 11
Android 13
- LineageOS 1
Android 14
Android 15
Android 16
- Miku UI 1 33
- Project Infinity X 2 4 11 17 35 40 41 45 47
- CrDroid 3 16 24 34 38 43
- MistOS 5 15
- risingOS 6 21
- axionAOSP 7 10
- CherishOS (Official) 8
- CherishOS 9
- LunarisAOSP 12 37 46
- axionAOSP (Official) 13 20 22 31
- crDroid (Official) 14
- Afterlife OS (Official) 18
- LineageOS 19
- BlissRoms (erofs) 23
- Project Sakura 25
- crDroid (erofs) 26
- Lineage OS (erofs) 27
- AlphaDroid 28 42
- MistOS (official) 29 39
- Project Clover 30
- EvolutionX 32
- Voltage OS 36
- ProjectMatrixx 44
GApps
- NikGApps A16 arm64 1
5. GApps
If you are flashing a 64-bit build, you need arm64 Google Apps. A 32-bit GApps package will either fail to install or leave you with broken Play Services.
- NikGApps A16 arm64 — the channel’s recommendation for Android 16
- microG — a lighter, FOSS alternative if you’d rather not sideload Google’s binaries
Always match the GApps package to your Android version and architecture.
6. Stock firmware per codename
Keep the correct one on your PC. These are Firmware Update (Vendor R) packages from the gardenrealmec11c12c15 project.
| Device | Codename | Firmware |
|---|---|---|
| Redmi 9 / 9 Active India | cattail | fw_cattail MIUI 12.5.6.0 |
| Redmi 9A / 9i / 10A | dandelion | fw_dandelion V12.5.9.0 |
| Redmi 9C | angelica | fw_9C_angelica V12.5.4.0 |
| Redmi 9C NFC | angelican | fw_angelican V12.5.3.0 |
| POCO C3 / C31 | angelicain | fw_angelicain V12.5.4.0 |
7. Flushing the ROM
This is the sequence from ombob’s guide. It works with adb sideload in a custom recovery:
1
2
3
4
5
fastboot -w
fastboot erase userdata
fastboot flash recovery recovery.img
fastboot reboot bootloader
fastboot reboot recovery
Then, inside the recovery:
- Format data (mandatory — MIUI encryption will cause boot loops otherwise).
- Flash the firmware update package, only if you came from stock MIUI 12.0.xx on Android 10.
- Flash vendor R, if the ROM you picked doesn’t already bundle it. Most current builds include it.
- Flash the ROM zip.
- Reboot to system, then reboot back into recovery once more.
- Flash your GApps.
- Format data again, then reboot to system.
Warning: Steps 1 and 7 each wipe the phone. Any failure between them can leave you in a state where only a full stock reflash recovers. Don’t improvise in the middle of this sequence.
8. Notes
- Telegram links rot. Post IDs in the index can be edited or deleted by the channel at any time. If a link 404s, the build is gone.
erofsbuilds need anerofs-capable recovery. Both the TWRP (erofs) and OrangeFox entries in the index support it; older recoveries may fail to mount/system.- Newer is not always better. Android 16 builds on this hardware are community ports, not official work. If you need a phone that just works, stay on stock.
- Relocking after flashing (
fastboot flashing lock) wipes data again and requires you to be back on a stock ROM. Leaving the bootloader unlocked is the normal end state for a custom ROM device.
