[Xiaomi Poco X3 Pro] urbanman2004:
I know I'm late to the party, but sometimes life keeps you busy and I know I said would eventually put together another guide describing how to flash Android 13 in 2023 so this is it. For those of you who don't know, my original Poco X3 Pro went to bed and never woke back up (which you can read about here) and I had already bought a backup phone in 2022 since I liked this phone so much, but I regret not getting around to setting it up till after my phone died.

I decided to stick with ArrowOS instead of some other rom like LineageOS this time around to install Android 13. From my experience, ArrowOS v13.0 is way more robust compared to ArrowOS v11.0, much more snappier with fluid motion when scrolling with less crashes too.

Kudos to @kubersharma for his contribution by providing us the official Android 13 AOSP rom release, ArrowOS v13.0 [vayu].

Now, throughout this guide, I have linked the page or post based on information I gathered to put this guide together in order to credit that person instead of having to name drop them individually. These are fully detailed instructions to make it easier for newbs.

I've spent a better part of 2 weeks figuring all of this stuff out so hopefully you won't go through the trouble I did. PLEASE DO NOT PM ME FOR HELP. REPLY TO THIS GUIDE BELOW, THANKS. NOW LET'S BEGIN!!!

UNLOCK BOOTLOADER

1. Unlock the bootloader with Xiaomi Unlocker tool.

a. Be aware this process will factory reset the device before proceeding.

b. Download the Mi Unlock app onto your PC. Extract the contents within the zip file into an empty folder then run the app.

c. Register for Xiaomi account and sign in with your Mi Account.

d. Your Mi Account must be added to your Mi Settings

Sign into your Mi Account on the device.

Go to Settings –> About Phone –> tap on MIUI version (For POCO) until it says Developer options is enabled.

Back out of About Phone, Additional Settings –> Developer options –> Mi Unlock status.

Agree, then "Add account and device".

e. Shut down your phone manually, and hold Vol down + Power button to enter Fastboot mode.

Download and install the latest Xiaomi USB Drivers or here (or Google's latest USB drivers for Windows if all else fails) for your PC.

Connect the device to the computer via USB cable, and confirm that your phone shows up recognized as "Android Bootloader Interface" (in Device Manager), and click "Unlock" in the Unlock app.

NOTE: If Windows does not recognize the device due to it automatically installing the wrong "Kedacom Device Driver" then you will have to manually install the drivers for "Android ADB Interface/Android Bootloader Interface".

f. After your first initial unlock attempt, you MUST wait 168 hours before unlock process can fully complete.

Wiping the device or removing the Mi account from the device could result in the timer being reset.

g. After the waiting period expires, click "Unlock" in the Unlock app. You will notice the phone will restart followed by subsequent different screens during the phone's boot sequence including the "POCO" screen which now displays an "open lock icon" at the top, indicating your bootloader unlock attempt and will eventually end up on a "This device is locked" screen where you have to confirm you are the device owner by entering your Mi Account password to "activate this device"; connect to your WiFi prior to doing so if the device lacks an active sim card.

FLASH CUSTOM RECOVERY & ROM THEN ROOT

2. Download the Official ArrowOS v13.1-vayu fastboot ROM for POCO X3 Pro [direct link here].

NOTE: For ArrowOS to work, it requires any MIUI 12.x to 13.x (S or R) before flashing it otherwise the ROM may not boot.

a. Choose the GApps build type which "includes now: Play Services, Core apps and Play Store... All similar AOSP apps have been overwritten with Gapps... All Gapps packages and other files are extracted from original and latest system images for Pixel devices."

b. Copy the fastboot ROM into a folder named 'TWRP' on the root of your microSD.

3. Ensure USB Debugging is already enabled on your device (in Settings –> Additional Settings –> Developer options).

4. Remove any screen unlock (i.e., fingerprint, PIN, pattern or password) in MIUI.

5. Power off device and put it in Fastboot mode (Vol down + Power button).

6. Download the latest SDK Platform Tools from Google for adb compatibility and create a folder called "adb" in the root of the "C:\" drive.

a. Extract the files adb, AdbWinApi.dll, AdbWinUsbApi.dll, and fastboot into the folder.

b. Ensure the latest Xiaomi USB Drivers are installed for your PC, connect the device to the computer via USB cable, and confirm that your phone shows up recognized as "Android Bootloader Interface" in Device Manager.

c. Launch "Command Prompt" as admin on your PC and run the command:

cd C:/adb

To show a list of devices (including your phone) connected to your PC, enter the command:

fastboot devices

7. Download the unofficial TWRP [TeamWin Recovery Project] v3.7.0 recovery file by Nebrassy and copy it into the ADB install folder and rename it to "recovery.img".

NOTE: TWRP comes equipped with data decryption making it capable of accessing the DATA partition on the device.

8. Flash custom recovery file in CMD, run commands:

fastboot flash recovery "recovery.img"

fastboot boot recovery.img

9. Your device should automatically boot into custom recovery. At this point, your device's internal storage will become accessible from recovery or the PC, and if you're using a microSD, it will be as well. It is highly encouraged to use a microSD during this process. If your microSD was not already plugged in then Reboot –> Recovery for it to be recognized.

a. Go to Wipe –> Format Data, type "yes" to perform data wipe; Back out to the main menu.

b. Go to Install –> Navigate to the TWRP folder on the microSD (via "external_sd")..

Select "

Arrow-v13.1-vayu-OFFICIAL-20231009-GAPPS.zip

" and flash the ROM, but do not change any of the checkboxes that show up before doing so.

Format data (not wipe) before rebooting into the new ROM.

NOTE: At most it takes around 1 minute to boot back up.

10. After going through the phone's boot sequence, you'll be presented with the initial phone setup process onscreen where you can begin recovering your data.

11. Go to Settings –> About phone –>tap on Build number until it says Developer options is enabled.

a. Back out to Settings –> System –> to access Developer options –> Enable USB Debugging.

Scroll down to "Default USB configuration" and change it from "No data transfer" to "File Transfer".

12. To install Magisk, you will need to use the Patch Image method as it is guaranteed to work 100% of the time.

a. Open "

Arrow-v13.1-vayu-OFFICIAL-20231009-GAPPS.zip

" and copy "boot.img" to the phone's internal storage.

b. Download the latest version of Magisk (Magisk v26.4) and copy it to the phone's internal storage and use the native "Files" app to install the apk.

NOTE: Magisk binaries (ZIP) are now included within Magisk Manager APK file. Now you don't have to download it separately. You can install the .apk file or rename its extension to .zip then flash it through custom recovery / TWRP.

c. Launch Magisk from the app drawer and go to "Install" under Magisk –> "Select and Patch a File," select the "boot.img" you copied internally –> "LET'S GO".

d. Copy the generated patched file to the ADB folder and flash it via fastboot by running the following commands:

cd C:/adb

fastboot flash boot boot.img

e. Reboot into the new ROM and voila!

fastboot reboot

NOTE: Since recovery is located in boot, Magisk will be overwritten after updating / flashing TWRP which will require you to reflash Magisk again.

f. Use an app such as Root Checker or BusyBox Checker (from the Play Store) to confirm root status.

g. To bypass/restore SafetyNet validation, open the Magisk app, go to Settings (cogwheel icon) and enable MagiskHide.

h. As of Magisk v24.0, to restore SafetyNet and Play Integrity validation, you have to manually install the following module, Play Integrity Fix by chiteroman. Install MagiskHide Props Config to bypass the Android root detection implementation.

Download the latest version of Play Integrity Fix (v13.8) and MagiskHide Props Config (v6.1.2-v137), and copy it to the phone's internal storage (preferably the 'Download' folder).

Open the Magisk app, go to Settings (⚙️ cogwheel icon) and enable Zygisk.

Go to Modules (puzzle icon), and tap on "Install from Storage."

Select the "Play Integrity Fix" and "MagiskHide Props Config" zip files you downloaded to install, but reboot only after installing the second zip.

Allow the installation process of both modules to complete and press "Reboot" to restart your phone after receiving a "Done" message.

Play Integrity Fix should be enabled once you're booted back into the system.

NOTE: If Zygisk was disabled, Play Integrity Fix will be nonfunctional so enable Zygisk and reboot the phone again for changes to take effect.

Open Magisk, go to Settings (⚙️ cogwheel icon), configure the Denylist with the apps you wish to hide root from:

Go to ⋮ (at top left) -> "Show System apps"

Search "Google" to deny all Google apps except for YouTube (e.g., Google Play Services, Google Play Store, and Google Wallet)

Deny any apps that require safety checks like some banking apps

Enforce Denylist and restart the phone.

If performed successfully, your phone should now be able to conceal/evade root detection from banking apps or others that require safety checks.

To check the device's SafetyNet status, use either one of the following apps in the Play Store: SafetyNet Helper Sample, SafetyNet Checker, or YASNAC (Yet Another SafetyNet Attestation Checker). Use Play Integrity API Checker to verify Play Integrity; however, you may encounter an "Error getting token from Google" message.

For those of you who already own a Pocophone F1, you're in luck because I've already created a guide for installing Android 13 via LineageOS on it which can be seen here. Also, I recently purchased myself a Poco F5 Pro so be on the lookout for a guide on how to flash a rom and root it in the not so distant future.