[GUIDE] Install Magisk with proper support for OTA updates

Search This thread


Senior Member
Jul 22, 2012
Could somebody successfully install the November OTA with Magisk Manager v8.0.3 and Magisk 20.4? As usual I restored the original boot image and installed the OTA without problems. Unfortunately installing Magisk to the inactive slot doesn't work anymore - after selecting "install to inactive slot" the download finishes but the installation doesn't start afterwards. Am I missing something?


Senior Member
Nov 20, 2012
  • Like
Reactions: x1_logic


Senior Member
Nov 20, 2012

Top Liked Posts

  • There are no posts matching your filters.
  • 72
    * I'm not responsible for bricked devices, dead SD cards, thermonuclear war, or you getting fired because the alarm app failed. 
    * Please do some research if you have any concerns about features included in the products you find here before flashing it! 
    * YOU are choosing to make these modifications, and if you point the finger at me for messing up your device, I will laugh at you. 
    * Your warranty could be void if you tamper with any part of your device / software.
    * Same statement for XDA.

    Here's an alternative method to install Magisk that support OTA updates (copied from the Mi A1 forum and expanded :) )

    You need a PC with Android platform tools (they exist also for MacOS and Linux). When using Windows, you should also install MiFlash tool to get the required drivers to recognize the device.


    First thing to do: unlock the bootloader (if you didn't already do this, obviously). Smartphones with Android One are much easier to unlock compared to other Xiaomi phones with MIUI (where you have to ask for authorization and wait for weeks).
    CAUTION: when you unlock the bootloader, the phone will reset, erasing all your saved data. Backup your data before unlocking.

    1. Go to Settings > System > About phone > and tap many times on "Build number" until you unlock "Developer options" (on Andoird 9 "About phone" is right at the top of the Settings app).​
    2. Go back to the previous page (i.e. Settings > System), where you can find now "Developer options". Go there and enable the "OEM unlocking" option (and it's better to never disable this).​
    3. Now you can shutdown your phone, then turn it on while holding the "Volume down" button pressed. Release it when you see the Fastboot screen You can also use the command "adb reboot-bootloader" if you already connected the phone to the PC.​
    4. Now connect the phone with your PC via USB cable, open an administrative command prompt, move to the directory where the Android platform tools are placed and unlock the bootloader with the following command:
    fastboot oem unlock
    The phone will reboot, erasing all the data.​

    Now you unlocked your phone's bootloader and can continue to the next section.


    5. Download and install on the smartphone the latest version of Magisk Manager's apk available.
    You need the smartphone to be connected to the internet, because Magisk won't install and won't work properly without a connection.​

    6. Now you can easily download an already patched boot.img from the following list and jump straight to point 10 of this guide, or you can continue to the next point and learn to patch yourself an original boot.img
    If you choose the short way, be sure that you select the patched_boot.img with the same "Build number" currently installed on your phone (see point 1 of this guide), and don't flash the file directly on the phone memory, because Magisk will not work properly (do exactly what this guide says, and you will not find problems, hopefully).
    For our convenience, extract the patched_boot.img file in the same directory where Android platform tools are located.
    In case you erroneously flash those patched files directly on the phone, flash back the original boot.img via fastboot and follow the guide:

    7. You need the original boot.img to patch. You can find it inside the official fastboot ROM zip for daisy. Check that the downloaded ROM version is the same as the "Build number" currently installed on your phone (see point 1 of this guide). If the versions are different, update (or downgrade if possible) your phone to that version. You can also download original boot.img elsewhere (for example at the point 6 of this guide), but always pick the same "Build number" of your phone.
    After you get the boot.img, copy it to the phone memory (via USB or microSD, or download directly from the phone browser, as you prefer).​

    8. Open the Magisk Manager app installed previously, it will ask if you want to install Magisk. Accept by tapping on "Install" > "Patch Boot Image File" and select the boot.img file that you get on the point 7 of this guide.​

    9. Wait until the process completes (about 1 minute), then tap on "Close". Now in the phone memory, inside the Download directory, you should have a patched_boot.img file. Copy that file to the PC, inside the same folder where the Android platform tools are located, for our convenience.​

    10. Reboot the phone in fastboot mode (as already explained in point 3 of this guide), open an administrative command prompt, move to the Android platform tools directory and then write the following command:
    fastboot boot patched_boot.img
    If everything works the phone should boot normally. Open Magisk Manager and it should ask to install Magisk, if not you must tap on the "Install" button. Then choose "Install" > "Direct Install (Recommended)" to install Magisk on the phone, and reboot when finished.​

    11. Last step to stay safe when a new OTA update arrives: go to "Settings" > "System" > "Developer options" > and disable "Automatic system updates". From now on, you should check manually if a new OTA update is available.​

    Now the installation is finished, you can use Magisk Manager to install modules and manage root permissions.


    UPDATE 9 February 2019 It seems that with the latest Magisk (v18.1) and Magisk Manager (v7.0.0) the following procedure is working fine again. I didn't test it personally, but some users gave positive feedback.

    WARNING! January 2019 Since the arrival of Android 9 Pie, the OTA update with Magisk as described in the following section, doesn't seem to work anymore. It could work, but you could also get a bootloop with the risk of losing your data.
    Before upgrading from Android 8 to 9, or doing an OTA update after Android 9 you should:
    - backup your data;
    - remove any lockscreen password or fingerprint;
    - uninstall totally Magisk and reboot.
    If after doing this you get a bootloop, you could try to manually flash the vanilla boot.img via fastboot on the current slot (the same version as the last installed OTA). If you managed to fix the bootloop you can then install Magisk anew, from step 5 of this guide.
    If the phone wants your PIN or password to proceed after the OTA update or after fixing the bootloop, and your PINs or passwords doesn't work, then you could have to reset the phone (or erasing the data partition, that should be the same thing), losing all your data.
    Last chance if everything fails, you can flash the latest fastboot ROM from the official Xiaomi site and the phone will be working again.

    IMPORTANT: OTA updates will work only if all the partitions on the smartphone are untouched. Magisk Manager can restore the original boot.img following this section of the guide, but if you tampered directly with the system partition (e.g. manually editing build.prop) or other partitions, OTA will refuse to install.
    You can try to fix OTA updates without the need to flash the whole original fastboot ROM, by flashing only the tampered partitions (usually only "system") with the corresponding img file found inside the fastboot ROM zip. Check the "Troubleshooting" section of this guide for details.

    12. When you know that a new OTA update is available and you want to install it, open Magisk Manager, and tap on "Uninstall" > "Restore Images" but very important: absolutely don't reboot the phone now!
    Important note: Magisk Manager will restore the boot.img that was found on the phone while installing Magisk. If the boot.img was already non-vanilla (for example you flashed the boot.img with TWRP before installing Magisk), Magisk Manager will backup that modified version of boot.img, and when restored the OTA will not work, as that's not a vanilla boot.img.​

    13. Close Magisk Manager and go to "Settings" > "System" > "System update" and install the OTA update. After the update is downloaded, a two-stages update will begin.​

    14. When both stages of the update process completed, it will ask to restart: DON'T DO IT!. Open Magisk Manager again and tap on "Install" > "Install" > "Install to Inactive Slot (After OTA)" and after that you can tap on "Reboot".​

    After the reboot you will have the updated Android version with Magisk already working.

    Thanks to user @jashancheema for the Mi A1 guide and a bigger thanks to @topjohnwu for the OTA part and above all for developing Magisk.

    WARNING: before attempting any of the following operations, you must disable any screen lock, PIN or password, because you risk to not get back your data (encryption issues). It is recommended to take a backup, too (as every time a custom modding is involved).

    You can get errors when installing OTA updates if you didn't follow meticulously the guide.
    Check this list to try to find where the problem lies:
    - when a new version is found, the updater will check if all the partitions on the device are untouched. If there is a partition that has been modified, the OTA updater will not proceed with the installation;​
    - typically, the two partitions commonly modified by user modding are the boot partition (that's where Magisk and TWRP are installed) and the system partition (when you change a config file, add or remove a system app, etc.);​
    - a system partition modified only by using Magisk modules is effectively untouched, because Magisk register all changes to /system in a file in the /data partition and then trick Android to believe those changes are really applied to /system;​
    - boot partition instead is really modified, but if you install Magisk following this guide, Magisk will save a copy of the untouched boot partition, and restoring it before applying OTA update will make the update work.​

    Now, if you didn't follow this guide to install Magisk and you installed it in other ways, Magisk could alert you that he cannot restore the original boot.img (the boot partition) when you try to apply the OTA update.
    To fix this, you can flash directly the vanilla (original, unmodified, untouched) boot.img taken from the point 6 of this guide, using those commands:
    fastboot getvar current-slot
    fastboot flash boot_? boot.img
    the first command will tell you what is the current slot in use (a or b), the second command will flash the original boot into the phone, but you have to change the "?" in the command with a or b (i.e. the current slot that the first command provided).
    Remember that the boot.img file version must correspond to the Android build version currently running in your phone.

    If the OTA update will still refuse to apply, probably you changed something directly in the /system partition (for example you changed something in the build.prop without using a Magisk module to do this).
    In this case you have to flash the original system.img in the phone with those commands:
    fastboot getvar current-slot
    fastboot flash system_? system.img
    and as before, the first command will tell you the right slot to use instead of the "?" in the second command.
    Here you can find the system.img extracted from the OTA updates zip (along with every other .img file inside that):

    If you want to obtain the system.img by yourself, you can find it inside the fastboot images but usually they are not updated monthly like OTA updates. But you can extract the system.img directly from the OTA update zips found in this thread (as I did above with my dumps), using the Python scripts found here.

    To make the Python scripts work in Debian/Ubuntu and derivatives, you have to download both "extract_android_ota_payload.py" and "update_metadata_pb2.py", give them execution property and then install the package "python-protobuf". After this you can give this command to unpack the payload.bin file (that you must extract from the OTA update zip):
    ./extract_android_ota_payload.py /path/to/payload.bin
    This will extract in the current directory all the .img files inside payload.bin, including the system.img
    I don't know how to proceed in Windows, probably you only need to install the latest Python2 release and the script will work.​

    As the last resort, you can flash directly with MiFlash the latest fastboot image available (even if older than your current version). Use the "flash_all.bat" script but before take a backup of your data, because the phone will be fully reset.
    If you don't want to take the risk of not doing a backup, use the script "flash_all_except_storage.bat" when flashing, so you will keep all your data, but be warned that sometimes you will not be able to access the data anymore, because of encryption problems.
    Right after the flash, you can start following the guide from point 5 or 6.
    It should not be a problem downgrading the build version via fastboot, as long as the Android main version remain the same (Oreo 8.1 at the moment).
    I'm sorry that I disappeared and didn't update the guide, but work and real life events come before this. I cannot reply to some help requests I received in the past weeks too, sorry again.
    And now that I have some little spare time, I prefer experimenting with the custom ROMs than working around the stock ROM.

    If you feel that something in the guide needs an update let me know answering this message, and I will change it (if you want the updated .img in the first page please link me them so I can add them).
    Does anyone have the patched book for A9 Pie?

    Patched boot for Pie firmware (Magisk 18.0):

    Stock boot for Pie firmware
    I can hereby confirm that OTA updates with Magisk works smoothly from 10.0.2 to 10.0.3 using the latest Magisk version 18.1 and Magisk Manger 7.0.0.
    Steps are as described as in this guide or if you don't trust this thread is up-to-date or want to have instructions with pictures use the official Magisk guide from here.

    I would actually suggest that OP adds this link to his first post as the official guide will always be up to date in the unlikely case something changes in the OTA update procedure. Also the official guide has screenshots, which makes it easier to follow.

    Also I do use adaway, TB backup root and a bunch of other root apps. Apparently they do not influence OTA updates. However you should still be careful as potentially any root app could alter the /system partition.

    Hint for BubuXP ;)
Our Apps
Get our official app!
The best way to access XDA on your phone
Nav Gestures
Add swipe gestures to any Android
One Handed Mode
Eases uses one hand with your phone