[OnePlus 8T Guides, News, & Discussion] BillGoss:
Update 240721: TWRP and Orange Fox do NOT work properly on stock OOS 14. See the discussion starting at https://xdaforums.com/t/guide-root-and-keeping-root-options.4387977/post-89610238

A. First time rooting​

View attachment 5693869

This process is common across all options

A.1 Flashing Magisk patched boot image​

There are two ways to sourcing a copy of the stock boot image (other than using TWRP - See A.2).

Using the MSM Tool readback option to pull a copy of the current boot image from the phone

Using Payload Dumper and a full update zip

A.1.1 Using MSM Tool ReadBack​

The MSM Tool has a feature (ReadBack) that allows it to pull copies of partitions from a phone when it is connected in EDL mode to a PC.

This means that you can pull a copy of your currently running stock boot image directly from the (unrooted) phone and you are not dependent on having access to a full rom installation zip.

A big thanks to @scottlam1 for this information (see https://xdaforums.com/t/oxygenos-a12-breaks-rooting.4456251/post-87067419 and following). You can get a copy of the MSM Tool from @Some_Random_Username's https://xdaforums.com/t/op8t-oos-kb...ol-to-restore-your-device-to-oxygenos.4180837. I used the one for OOS 11.0.7.9 for KB05AA when testing this process.

Find your current slot by connecting your phone to your PC and running adb shell getprop ro.boot.slot_suffix Note: on OOS 12 when you connect the phone to the PC you must enable "Transfer files" on the phone for ADB to see the device.

Start MsmDownloadTool V4.0.exe

Select User type: Others and click Next

Press F8

Select the appropriate boot partition (boot_a or boot_b based on the getprop result). Note: do NOT select both boot_a and boot_b because ReadBack will only produce one boot.img file and the _b extract will overwrite the _a extracted file.

Enter the password: oneplus and then press OK. You should now see a ReadBack button underneath the Target dropdown list.

Reboot the phone into EDL mode using adb reboot edl . When you see it connected to the MSM Tool - it will show an entry with COM3 (for example) - click on the ReadBack button.

Warning: Do NOT click on the Start button as this will start the installation process and reset your phone.

MSM will show "ReadBack Complete" (in green) when it has copied the boot image and power off the phone. Close the MSM tool.

Disconnect the phone from the PC, turn on your phone, reconnect it to the PC, and copy the boot image (it's in C:\boot.img) to your phone.

The rest of the process is the same as that in section A.1.2 below, but starting from step 6 in @DroidFreak32's guide as you already have the boot image.

A.1.2 Using Payload Dumper​

Notes:

This can ONLY be used on full update zips, NOT on incremental updates.

Note: if you use @mslezak's Payload Dumper (see https://xdaforums.com/t/incremental...urrently-op8t-11-0-9-9-kb05aa-posted.4314677/ then you may be able to use it on incremental updates. I personally have not done this.

Follow the instructions detailed in @DroidFreak32's https://xdaforums.com/t/guide-how-t...national-kb2000-kb2001-kb2003-kb2005.4178675/ paying attention to:

Use the latest stable version of Magisk (my recommendation as of June 2022)

Do NOT use the "To flash" option in step 11 because this causes issues when you get the next OTA update. Use the the "To Temporarily boot into a rooted system (RECOMMENDED!!)" option.

Backup both the stock boot and Magisk patched boot images if you are going to use CLI

I also recommend that on OOS you install @Displax's Universal SafetyNet Fix Magisk MOD module v2.4.0 or later to pass Play Integrity with an unlocked bootloader (https://xdaforums.com/t/module-mod-universal-safetynet-fix.4553699/).

A.2 Using TWRP or Orange Fox​

I will use TWRP throughout the document to mean TWRP or Orange Fox unless indicated otherwise.

I use the TWRP installer zip to create an installer for Orange Fox by replacing the recovery.img file in the TWRP installer zip with the Orange Fox recovery image (the file has to be named recovery.img). The advantage of this is that you can then flash the recovery zip in recovery as well as in Magisk (install it as a module). And the installer zip will flash recovery to both slots.

Notes:

on OOS 11 use TWRP 11 from https://dl.twrp.me/kebab/

on OOS 12 use the WIP TWRP 12 version from https://xdaforums.com/t/recovery-12...roject-8t-9r-2022-07-27.4473983/post-87271673 or Orange Fox from https://xdaforums.com/t/recovery-un...ry-project-oneplus-8t-9r-22-nov-2022.4391139/

on OOS 13 use @Siddhant221's version of TWRP from https://xdaforums.com/t/recovery-13-unofficial-teamwin-recovery-project-8t-9r-2022-07-27.4473983/ or Orange Fox R12.1 V20 for OOS from https://xdaforums.com/t/recovery-un...ry-project-oneplus-8t-9r-22-nov-2022.4391139/

on OOS 14 there is currently (as of 240721) NO properly working custom recovery

Boot bootloader

fastboot boot <twrp.img>

(optional - see next item) Backup current boot

Install Magisk-*.apk and note that Magisk will create a backup of the current stock boot (see section C)

Install @Displax's Universal SafetyNet Fix Magisk MOD module v2.4.0 or later to pass Play Integrity with an unlocked bootloader (https://xdaforums.com/t/module-mod-universal-safetynet-fix.4553699/)

Reboot system

Uninstall Magisk stub

Install Magisk-*.apk and in Magisk>Settings enable both Zygisk and Enforce DenyList

Reboot system

A.2.1 Keep TWRP​

If you want to keep TWRP installed then the process is very similar to that described for Magisk. The difference is that this time we backup recovery and install TWRP. You can merge the Magisk process with the TWRP process by: Backing up current boot and recovery; Installing both the Magisk-*.apk and the TWRP installer zip.

Here's the process for just TWRP:

Boot bootloader

fastboot boot <twrp.img>

Backup current recovery

Note: the TWRP backups of physical partitions (like boot and recovery and so on) are actually image dumps. You could rename the files from *.emmc.win to *.img and install them using TWRP or other methods.

Install TWRP installer zip

Reboot system

B. Keeping root during an update​

View attachment 5895141

B.1 System Update downloads and installs the update​

This is using the built-in System Update tool, which you'll find in:

OOS 11: Settings>System settings> System Update

OOS 12 and higher: Settings>About device>Software update

The process is complicated because you cannot use Magisk>Magisk Install>"Install to inactive slot" as this will fail on OOS 11 (for incremental updates) and OOS 12 (for all updates, including the initial update from OOS 11 to OOS 12).

But testing on OOS 13 (updating from F.62 to F.63 on KB2003 and KB2005) shows that you can now use "Install to inactive slot" and, therefore, the simpler B.1.2 process can be used with System Updater for both incremental and full OTA updates. However this needs more testing (by adventurous IN users).

B.1.1 Safe​

The following process is safe to use on all versions and types of OTA updates. It is courtesy of @osm0sis in https://xdaforums.com/t/tools-zips-...ices-platforms.2239421/page-149#post-84764713 and @rage302 in https://xdaforums.com/t/guide-wip-root-and-keeping-root-options.4387977/page-4#post-86830285.

If you have TWRP installed then reboot recovery, restore the stock OOS recovery (you would/should have taken a copy of it when you installed TWRP as mentioned in A.2.1), and reboot system. Without doing this, an incremental OTA will fail when it checks for the stock recovery.

Restore the current stock boot image using Magisk>Uninstall Magisk>"Restore images" and DO NOT reboot

Download and Install the update (and DO NOT reboot) using:

OOS 11: Settings>System Settings>System Update>Download and Install

OOS 12 and higher: Settings>About device>Software update

Copy the updated boot image as follows:

On PC:Find the inactive slot suffix:

adb shell getprop ro.boot.slot_suffix Note: on OOS 12 when you connect the phone to the PC you must enable "Transfer files" on the phone for ADB to see the device.

If the result is _a then the inactive slot suffix is _b otherwise it is _a

Take a copy of the inactive slot boot image: adb shell su -c dd if=/dev/block/by-name/boot<inactive slot suffix> of=/sdcard/oos-ota-boot.img replacing <inactive slot suffix> with the value you previously determined (_a or _b). Note: Magisk may prompt you (on your phone) to grant root access to Shell - grant it.

On phone: Patch the dumped oos-ota-boot.img using Magisk>Magisk Install>"Select and Patch a File"

Copy /sdcard/Download/magisk_patched*.img to your PC

Restore root to the current slot using Magisk>Magisk Install>"Direct Install (Recommended)". This is so you keep root in case the update somehow fails and you're returned to the current system.

Turn on Airplane Mode to prevent Google Play Services detecting that the phone is bootloader unlocked and making your phone uncertified in Google Play.

Reboot the phone from the System Update dialog; verify that you are now running the updated version

On PC: Reboot to bootloader using adb reboot bootloader

Boot (NOT flash) the patched boot image: fastboot boot <magisk-patched image> where <magisk-patched image> is the patched image you transferred to the PC

On phone: Verify that Magisk shows you are rooted

Make rooting permanent using Magisk>Magisk Install>"Direct Install (Recommended)" and reboot again

Turn off Airplane Mode

B.1.2 Simple​

The following process is the simplest update method, but is limited to:

OOS 11 full image OTAs only

OOS 13+ full image OTAs and, starting with C.62, incremental OTAs (confirmed for KB2003 and KB2005)

If you have TWRP installed then reboot recovery, restore the stock OOS recovery (you would/should have taken a copy of it when you installed TWRP as mentioned in A.2.1), and reboot system. Without doing this, an incremental OTA will fail when it checks for the stock recovery.

Restore the current stock boot image using Magisk>Uninstall Magisk>"Restore images" and DO NOT reboot

Download and Install the update (and DO NOT reboot) using:

OOS 11: Settings>System Settings>System Update>Download and Install

OOS 13+: Settings>About device>Software update

Note that the OOS 13+ EU/IN local installer will first extract the update (and update the inactive slot partitions) and then prompt you to Install it and it is IMPERATIVE that you DON'T CLICK on Install at this point as it will finish the installation and reboot without prompting, leaving you without root.

Restore root to the current slot using Magisk>Magisk Install>"Direct Install (Recommended)". This is so you keep root in case the update somehow fails and you're returned to the current system.

Root the updated boot image using Magisk>Magisk Install>"Install to inactive slot"

Note: if you accidentally reboot from Magisk at this point and end up in a bootloop (EU and IN), see: https://xdaforums.com/t/guide-root-and-keeping-root-options.4387977/page-17#post-88204853

On OOS 13+ EU and IN now tap on Install in the local updater process and on NA tap Reboot; on OOS 11 reboot.

To re-install TWRP, follow the process in A.2.1

B.2 Manual Install​

This involves manually downloading the update zip and then installing it using one of the following options.

It is up to you to download the update (from whichever source you use).

How to get a copy of the update zip

The simplest option is to use Oxygen Updater (https://play.google.com/store/apps/details?id=com.arjanvlek.oxygenupdater).

It is also possible to get a copy of the update zip if the OOS 13+ System Updater is showing that an update is available and the installation button is showing "Extract".

You'll find the installation zip (named my_manifest_*_patch.zip or my_manifest_*_all.zip for incremental or full OTA) in /data/ota_package/OTA/.otaPackage.

B.2.1 Local Install​

This is using:

OOS 11: System Update>Gear icon (local install)

OOS 12: MyApplication2 app (source: https://oxygenos.oneplus.net/English_20220225101104.apk; see https://forums.oneplus.com/threads/oxygenos-12-for-the-oneplus-8t.1555060/)

OOS 13+: On EU and IN Settings>About device>Software update>3-dot menu>Local install; on NA: same as for OOS 12

Note: If the Local install option is greyed out because the System Updater is showing that an update is available, then you can still use Local install by:

Turn on Airplane mode to prevent the System Updater finding the update again after the next step.

Go to Settings>Apps>App Management>3-dot menu>Show system and clear storage from Software update

View attachment 5883977

If you have TWRP installed then reboot recovery, restore the stock OOS recovery (you would/should have taken a copy of it when you installed TWRP as mentioned in A.2.1), and reboot system. Without doing this, an incremental OTA will fail when it checks for the stock recovery.

Move the update zip to /sdcard (NOT a subdirectory of /sdcard).

Magisk>Uninstall Magisk>Restore images - this restores the stock boot image whilst keeping Magisk.

Install the update using the appropriate local installer for your version of OOS and DO NOT reboot.

Note that the OOS 13+ EU/IN local installer will first extract the update (and update the inactive slot partitions) and then prompt you to Install it and it is IMPERATIVE that you DON'T CLICK on Install at this point as it will finish the installation and reboot without prompting, leaving you without root.

Restore root to the current slot using Magisk>Magisk Install>"Direct Install (Recommended)". This is so you keep root in case the update somehow fails and you're returned to the current system.

Root the updated boot image using Magisk>Magisk Install>"Install to inactive slot"

Note: if you accidentally reboot from Magisk at this point and end up in a bootloop (EU and IN), see: https://xdaforums.com/t/guide-root-and-keeping-root-options.4387977/page-17#post-88204853

On OOS 13+ EU and IN now tap on Install in the local updater process and on NA tap Reboot; on OOS 11 and 12 reboot.

To re-install TWRP, follow the process in A.2.1

B.2.2 Using CLI​

CLI (command line interface) tools, such as Terminal (I use Termux from https://f-droid.org/en/packages/com.termux/) or ADB shell, allows you to manually download delta updates avoiding the need to wait for full updates or for someone to post a copy of the delta update zip.

If you use Terminal then you can install updates without the need of a PC (my preferred option).

Using line commands, at one level, can simplify some processes by avoiding the need to switch out to recovery and back again. On the other hand, they complicate things by requiring knowledge of how to use them.

The commands you need to be familiar with are:

dd to read-from/write-to the partitions in /dev/block/by-name

grep to scan the output of a logcat

getprop to find out which are the active/inactive slots

logcat to read the Android logs

su to run commands as root

Get a copy of the update zip

Note: I'm running the NA version of OOS. If the URL below for the OTA is different for other OOS versions, please let me know via a PM.

Once the phone tells me that there's an update available I do the following in Termux:

su -c "logcat -d" | grep -Eo "https://android.googleapis.com/packages/ota-api/package/[a-z0-9]*.zip"

This looks for the the Google OTA server file name in logcat and returns the source address. For example, the KB2005 C.11 incremental update was https://android.googleapis.com/packages/ota-api/package/435fc808f603bbc8a63ce30fd944676a65a61d6f.zip

Note: You should run these commands as soon as you get a notification that you have the update. If you leave it too long then the log file will roll over and you won't be able find the url.

wget -O /sdcard/oos-ota-update.zip <source address>

This pulls a copy of the file to /sdcard

Note: You could also just paste the URL into a browser to download the file

Find the active slot suffix: getprop ro.boot.slot_suffix

If the result is _a then the inactive slot suffix is _b otherwise it is _a

Restore active slot stock boot/recovery (recovery: only if TWRP is installed) using dd if=<copy of stock boot/recovery> of=/dev/block/by-name/<boot/recovery><active slot suffix>

Note: you could also use Magisk to restore the stock boot using Magisk>Uninstall Magisk>Restore images - this restores the stock boot image whilst keeping Magisk

Install the update using the appropriate local installer for your version of OOS and DO NOT reboot

Note that the OOS 13+ EU/IN local installer will first extract the update (and update the inactive slot partitions) and then prompt you to Install it. It is IMPERATIVE that you DON'T CLICK on Install at this point as it will finish the installation and reboot without prompting leaving you without root.

The local installer is:

OOS 11: System Update>Gear icon (local install)

OOS 12: MyApplication2 app (source: https://oxygenos.oneplus.net/English_20220225101104.apk; see https://forums.oneplus.com/threads/oxygenos-12-for-the-oneplus-8t.1555060/)

OOS 13+: On EU and IN Settings>About device>Software update>3-dot menu>Local install; to be advised on NA

Backup the new inactive slot stock boot/recovery (recovery: only if TWRP is installed) using dd if=/dev/block/by-name/<boot/recovery><inactive slot suffix> of=<new boot/recovery img>

Restore root to the current active slot dd if=<copy of current Magisk patched stock boot/recovery> of=/dev/block/by-name/<boot/recovery><active slot suffix>. This is so you keep root in case the update somehow fails and you're returned to the current system.

Note: You could also use Magisk>Magisk Install>"Direct Install (Recommended)"

(ONLY if keeping TWRP) Magisk>Modules>Install from storage: Select <twrp-installer.zip>

Magisk>Magisk Install>"Install to inactive slot" and DO NOT reboot

Backup the new Magisk patched stock boot using dd if=/dev/block/by-name/<boot><inactive slot suffix> of=<new Magisk patched boot img>

On OOS 11 and 12: Reboot. On OOS 13+ now tap on Install in the local installer to finish the installation.

C. A note on Magisk backup folders in /data​

When Magisk patches a stock boot image using either Magisk>Magisk Install>"Direct Install (Recommended)", Magisk>Magisk Install>"Install to inactive slot", or is installed in TWRP, then it creates a backup of the stock boot image in a directory named /data/magisk_backup_<SHA1 of stock image>.

When you use Magisk>Uninstall Magisk>Restore images the backup corresponding to the current patched boot image is used to restore the stock image to the current (active) slot.

Clearly, if you deleted these magisk_backup directories then Magisk will not be able to restore the stock boot image. You must, therefore, always keep the current backup.

If you don't delete these backups you can end up with a lot of obsolete backups. So, how to work out which one is the one you need to keep?

The simplest way is to:

Restore the current stock boot image using Magisk>Uninstall Magisk>Restore images

Delete all the /data/magisk_backup_* directories

Restore the rooted boot image using Magisk>Magisk Install>"Direct Install (Recommended)" - this also creates a new magisk_backup directory (no need to reboot)