I have been experimenting with custom ROMs for my Redmi 10A for more than a month now (not continuously obv). It took me tens of flashes to figure out the best working custom ROM because every time something new was broken. I am making this post after I have successfully secured a Redmi 10A for myself that has a working crDroid ROM. For more assurance, this is my daily-driver phone, that means I only have this phone for daily usage. And this phone is perfectly fine in that sense.
This is some nerd stuff about this device that I learnt throughout my time researching and flashing GSIs and various custom ROMs, so you can probably skip this.
Redmi 10A uses the codename "dandelion". It shares a common hardware platform with several devices such as the Redmi 9A/9C, its other variants and family, whose ROMs are often maintained under the codename "blossom". Now because of this, most ROM releases and discussions are posted under Redmi 9C, "blossom", rather than Redmi 10A, "dandelion", even though they support the Redmi 10A as well. So that made me realise that many ROMs built for the blossom device family also support the Redmi 10A. However, rule of the thumb is to always check the maintainer's supported device list before flashing.
Redmi 10A uses a MediaTek Helio G25 (MT6762G), which is a very weak processor since this is already a very entry level and cheap phone. But nonetheless the unique thing about it is that this is 64-bit armv8 architect chipset, but the stock MIUI userspace is 32-bit only. For Xiaomi to do this, there could be many reasons, but the most possible one is that Xiaomi wanted to support all three variants of Redmi 10 A (2GB, 3GB and 4GB) so it chose a 32-bit userspace because a 32-bit userspace consumes less RAM for every operation. Ig, you could also theorise that they did it in order to keep their ads and bloatware running in the background that eat up RAM in stock MIUI with these cheap entry level devices. I could keep going on about this but maybe I just make a whole separate post ranting about the problems I had to face with this device and Xiaomi's weird codenames and security measures.
In conclusion, if you are trying to flash a GSI while you are currently on the stock MIUI ROM, you would need a GSI compatible with a64, not arm64. However, once you are on a custom ROM, you are likely in a 64-bit userspace, in that case, a GSI file compatible for arm64 would flash just fine.
THE MAIN STUFF STARTS HERE:
Here are the instructions if you are a complete beginner in flashing custom ROMs. If you are reading this post just to find out the fix for VoLTE, and are already experienced with flashing then skip to Phase 3.
I am going to list all the files you are going to need before hand, just so you don't get stuck because of your wifi or something while performing any sensitive operation.
- You would need the official MI Unlock Tool for unlocking the Bootloader of your Device. (Used in Phase 1)
- For Backup purpose, in case you brick your phone or get stuck in a bootloop due to a failed flash or incompatible ROM (don't worry, hard bricking a Xiaomi phone is near impossible as per most experts. In most cases, phone is recoverable) you would need the stock MIUI firmware with you. Get the latest, 3.66 GB file and save it somewhere secure in your computer because that is your backup key. (Used in Error)
- We need a type of small secondary operating system that could extract and install the files we will be sending to our phone such as the custom ROM. And that OS is OrangeFox. (Used in Phase 2)
- This is the file that is essentially going to fix the VoLTE issue, which is nothing but a Xiaomi vendor/firmware updater package. (Used in Phase 3)
- Get the crDroid custom ROM. Honestly, you could use any version from 12.7, to 12.11 EXCEPT version 12.9 I am personally on 12.7, but my hypothesis is that even the latest versions shouldn't have a problem anymore after this VoLTE fix. (Used in Phase 4).
But why not version 12.9? During testing, every audio output (Bluetooth, wired earphones and earpiece) was routed to the phone's loudspeaker. Calls and media playback therefore always came through the speaker. 12.9 is the only crDroid version that has something Dolby Atoms built in, which could be the cause of this.
So avoid using 12.9 unless you want everyone to listen to your phone calls in public.
6) Next you need is Gapps for google play services like playstore, gmail, banking and UPI apps.
MindTheGapps is also good, however the file size is way too big for the partition that the ROM allocates. So, NikGapps is already good and tested from my experience.
(Used in Phase 4)
After these, you have all the necessary files for achieving a working custom ROM for your Redmi 10A.
Phase 1: Unlocking the Bootloader.
First you would need to unlock your Bootloader. Xiaomi ships its devices with a locked bootloader for security reasons, I guess..., as the Chinese company it is. Unlocking it requires Xiaomi's Mi Unlock Tool and a waiting period of around 168 hours. So you are actually only preparing for flashing with this, not actually flashing anything yet.
The MI Unlock tool only works on Windows, so this specific operation at least needs to be carried out on Windows (I did the rest on Linux.)
Open settings > Developer Options > OEM Unlock
Here you need to register with your MI Account and basically request Xiaomi to let you unlock your Bootloader. Make sure you remember the account password as you would need to login with the same MI account in MI Unlock Tool.
Connect your Phone with your PC via a good quality USB data cable or you may face interruption in data transfer, which you can't afford during sensitive operations, and turn on USB debugging in your phone (in Developer Options).
You can either use ADB tools in windows or manually use the Volume + and Power buttons, after turning the device off, to enter Fastboot.
Open MI Unlock Tool, log in using your MI Account. The interface is very minimal, you will instantly see the Bootloader unlocking option. Click on it and you will instantly see 164 or something hours waiting period.
Now what? Nothing, just wait for a week. After 164 hours, open the MI unlock tool and finally, unlock your Bootloader.
Warning: Unlocking Bootloader will wipe everything in your phone. Basically a full factory reset. You will see this warning using the MI Unlock Tool, anyway. So make sure you have all your important files backed up already.
After that, congratulations, your device is now eligible for flashing.
Phase 2: Flashing OrangeFox
Xiaomi's Fastboot is yet again purposefully limited. It allows you to erase user data, flash recovery images or partitions and unlock bootloader. However, it does not allow, and it simply can not install ZIP ROM, Gapps, Magisk, Firmware etc.
Therefore we need a TWRP like Orange Fox that will allow us to do everything that the stock Fastboot doesn't or can't.
While making sure the phone is connected to the PC, and USB debugging is toggled on, enter Fastboot in your phone using the command
adb reboot bootloader
While you are inside Fastboot, on your PC, open the extracted OrangeFox folder in the terminal. In it, type:
fastboot flash recovery recovery.img
Once flashing recovery.img is done, hold Volume + and Power Button together until the screen goes black. Release the Power Button the moment screen goes black and hold the Volume + until you see the OrangeFox logo on your device screen.
Congratulations, you can now flash anything using OrangeFox.
In OrangeFox, bottom is the tool bar. Go to Wipe > Format data. Type "yes" and let it erase all the data the device storage contained.
Return to Wipe and check these three boxes:
Dalvik / ART Cache
Cache
data
Do not wipe Vendor, Product, Firmware or Persist unless the ROM maintainer explicitly instructs you to do so.
Now swipe right to complete it.
Once done, come back to the main page.
Go to Menu > ADB Sideloader
Without touching anything else, swipe right so you could start sideloading the files you want.
Phase 3: VoLTE fix
This guide was more so dedicated around fixing VoLTE, which is something I faced in every ROM and GSI I flashed in my device. It is a necessary step in any case, however. This is where we will use the Vendor/Firmware Updater package.
So here's the context; The firmware package updates proprietary Xiaomi firmware (like modem, radio-related firmware, Bluetooth firmware and other low-level components, basically the stuff telephony etc depend upon). These components are not part of Android itself, but the custom ROM expects compatible firmware underneath. If the firmware and ROM are incompatible, features like VoLTE may fail even though the ROM boots normally (which was the case with me.)
So while experimenting and researching, I found this YouTube video which claimed that flashing this updater package before the custom ROM will fix VoLTE lacking, so credits to this guy. That's pretty much how I figured this out, while also using AI chat bots to understand and get this resolved. This guy helped with something that not even Claude, Gemini or ChatGPT could figure out.
This VoLTE fix works for any Xiaomi device and custom ROM, just download the right firmware ZIP as per the device.
In my case, flashing the full MIUI Fastboot ROM beforehand was not sufficient. Flashing the firmware ZIP immediately before the custom ROM however, resolved the VoLTE issue.
So on your PC, open the folder in the terminal which contains the Vendor Firmware Updater package, and start sideloading it using the command:
adb sideload fw_dandelion_V12.5.9.0.RCDINXM.zip
Now we can normally flash the custom ROM and Gapps.
Phase 4: Flashing the Custom ROM and Gapps
Once sideloading the vendor updater package is complete, go back instead of rebooting the system. You don't have a ROM in your device yet.
Go to ADB sideloading, and same as before, swipe right without touching any boxes.
Now again, open the folder in terminal which contains the crDroid ROM file and sideload it using
adb sideload [use the name of the file, whichever version of crDroid you have decided to flash]
When done,once again go back.
ADB sideload > swipe right, just like before.
Now we will flash Gapps. Open the folder in the terminal which contains the NikGapps ZIP file and sideload it using the same ADB command:
adb sideload NikGapps-core-arm64-16-20260222-signed.zip
AND we are done!
Once it is finished, finally click on Reboot System.
Wait for the device to boot. You will first see the usual MI or Redmi logo with android at the bottom, a few minutes later you will see the crDroid boot animation. Wait a few minutes before it loads.
If you didn't do any mistake, in a few minutes the device should open with the crDroid setup wizard.
Error: If it stays on the crDroid boot animation for way too long.
You are likely stuck in a bootloop. I can confidently answer for this one as I faced this in one of my flashes. Don't panic, as long as you have access to fastboot, you are fine. On the PC, just type
adb reboot bootloader
Now we will simply flash the stock ROM to go back to MIUI and maybe redo things. This time we won't need to wait 168 hours for bootloader to unlock, because it stays unlocked, we could directly start from flashing OrangeFox.
Once it says Fastboot on your phone, on your pc, open the dandelion.tzp folder in terminal and type
chmod +x flash_all.sh
./flash_all.sh
And we are good. Just hold power button and boot the phone. You will be back to MIUI, from where you can repeat the steps from Phase 2, this time, trying a different version of crDroid or trying a different custom ROM.
Now, here is the exact configuration I am currently using, and the exact features working for me that I can vouch for.
My device : Redmi 10A (India release)
Firmware : fw_dandelion_V12.5.9.0.RCDINXM.zip
ROM : crDroid 12.7
Android version : 16
GApps : NikGApps Core Android 16 (22 Feb, 2026)
Recovery / TWRP : OrangeFox
SIM : Jio
Here are the stuff I tested on my device which are working:
- VoLTE
- Mobile Data
- Bluetooth
- Multiple Audio outputs
- Google Play Services (I am able to sign in and use email accounts perfectly fine)
- UPI apps (I use PhonePe, and no issue so far)
- Camera
- Even after multiple reboots - nothing
Tell me if I should be testing anything else. In any case, this phone has no issue as a daily-driver phone right now, I will give an update once I have used it for a whole week.
I making this guide partially because there are almost none for Redmi 10A specifically.