[Guide-WIP] How to Root the Pixel 3 XL - Google Pixel 3 XL Guides, News, & Discussion

I don't have my device yet, but here's what someone with the device can do once you have unlocked your bootloader:
Update: This method will work once MagiskManager is patched to support the P3XL:
https://twitter.com/topjohnwu/status/1052993970303889418
1) Download the latest factory image from here:
https://developers.google.com/android/images#crosshatch
2) Extract the file to your pc somewhere. Inside the archive, there is a boot.img
3) Upload boot.img to /sdcard
4) Install Magisk Manager from the link below. You can use adb install from the command line, or upload to your phone and sideload it with some file manager app (Root explorer for example).
https://github.com/topjohnwu/Magisk/releases/download/manager-v6.0.0/MagiskManager-v6.0.0.apk
5) Open Magisk Manager app and choose install. Select the boot.img file you uploaded in step 3
6) Copy the patched_boot.img file generated from Magisk Manager in step 5 to your pc.
7) Reboot to bootloader (adb reboot bootloader) or Power off the phone completely, and hold volume down while you power it up.
8) fastboot flash boot patched_boot.img
9) Reboot and check to see if you have root in Magisk Manager.
If this does not work or you get into a boot loop or it freezes, simply reboot to bootloader and flash stock boot.img from the factory image.

We need twrp

TheUndertaker21 said:
We need twrp
Click to expand...
Click to collapse
I believe this method would bypass the requirement for twrp. I won't be able to test until I get home tonight but I will try and update later.

Apparently Topjohnwu has confirmed that MagiskManager does not patch the boot image correctly, so this does not work as of yet. Will most likely need a new version of MagiskManager to get this working. I will modify the first post accordingly.
TheUndertaker21 said:
We need twrp
Click to expand...
Click to collapse
No we do not.

Today is the day

From his Twitter. Should be any day now. Excited
https://twitter.com/topjohnwu/status/1053488124389720064?s=19

Welcome to the Magisk family, Pixel 3!
I originally planned to do more changes to Magisk Manager before a new public release, but I think people can't wait to root their shiny new Pixel 3, so here we go!
Up-to-date Documentations
Some subtle details, design choices, developer guides are all added to the documentations!
For most average users though, the most interesting part would be the tutorial: Best Practices for MagiskHide, please take some time and check it out!
Magisk Documentations
Boot Image Header v1
Google updated the boot image header format from v0 to v1 and was first used on the Pixel 3. The new header supports recovery DTBOs, which won't be used on any A/B devices, including Pixel 3 so that isn't the main issue here. The new format stores its version number to an originally unused entry in the header to determine whether the extended header entries is used. However in some freaking devices like Samsung's, they have been using the supposedly "unused" entry as the size of an non-AOSP "extra section" for quite a long time. magiskboot is designed to support extracting these extra sections (because people use Samsung), but with the introduction of header v1, the tool couldn't interpret the image properly, and thus generating invalid boot images.
magiskboot's boot image parsing, unpacking and repacking code was rewritten with C++ to utilize the more powerful language features due to the complexity (because I still need to support freaking PXA format headers used by old Samsung devices...)
MagiskSU Rewrite
Both the daemon and client side of MagiskSU is completely rewritten with improvements and optimizations, for example: simplified `su_info` caches, early ACK between daemon and client to prevent process freezing when denied, sending parsed command-line options instead of full arguments, and many more!
Samsung Defex Patches
A hexpatch for removing Samsung's new KNOX feature: Defex Safeplace was actually already introduced in previous releases, but that solution wasn't ideal since each new kernel release would generate different patterns. A more general patch (which is only a single CPU instruction!) was discovered and included into this new release.
Magisk-Modules-Repo Moderation
If you aren't aware, a team of zealous volunteer moderators were already starting to review new submission manually, being the gate keeper of our beloved Magisk-Modules-Repo. Hopefully this will prevent pointless/spam modules polluting the download section in Magisk Manager!

Thread closed as per OP request.
Thanks
SacredDeviL666
Forum Moderator.

Related

[TOOLS][ZIPS][SCRIPTS] osm0sis' Odds and Ends [Multiple Devices/Platforms]

osm0sis' Odds and Ends -- Misc./Batch Tools, Flashable Zips, Scripts, etc.
General Information
In a nutshell, I just wanted a single thread to gather links to some of my other, larger projects, but also serve as a spot I could put some smaller scripts and zips I've created that I don't think merit their own separate threads. This is partially for my own sanity and will hopefully make it easier for others to find some things as well. A lot of the stuff here was developed with the GN, N4, N5, N7s or N5X, OP5/T, OP6/T, OP7Pro/T, OP8Pro/T or OP9Pro (my devices) and Windows in mind, but could generally be applicable to most devices either out-of-the-box or with some slight modification. If you see something that inspires you, go ahead and mod it, just let me know and give me some credit somewhere. If anyone would like to know the specifics of what's in a particular script that I haven't already linked to more information on, just let me know and I'll post that in here as well.
Note: Older zips with a "cwm-" prefix are NOT only for the now-defunct ClockworkMod Recovery, the prefix was used to denote a flashable zip before I adopted Chainfire's "UPDATE-" prefix. Please use a currently maintained recovery, like TWRP, for all zips to ensure the best compatibility/results.
My development work on my many projects comes out of my free time, so if you enjoy this project or anything else I've done on xda, please consider sponsoring my ongoing work using my GitHub Sponsors profile. For a one-time donation you can hit the donate link from my profile. Thank you for your support!
Misc./Batch Tools
AnyKernel3 (many devices) - link
AnyKernel was a simple template for an update.zip that could apply any kernel to any ROM, regardless of ramdisk to reduce the chance of any issues arising from the custom kernel pairing. The drawback to this is that some kernels require modifications to the ramdisk to enable/set up kernel features, and in the old AnyKernel format there was no way to do this. AnyKernel3 pushes the format even further by allowing kernel developers to modify the underlying ramdisk for kernel feature support easily using a number of included command methods along with properties and variables to customize the install experience.
APK-Patcher (many devices) - link
A proof-of-concept, simplifies APK modification to make it easier for modification creators to keep creating. Using JesusFreke's brilliant bak/smali and iBotPeaches' excellent apktool, modified to run on-device along with the various binaries required, allows on-the-fly APK modifications to be applied via recovery, to whatever ROM APK is present, taking the constant update burden off of the modification creator. The zip is smart and automated, using the APK name to run all the various parts involved for complicated patches and is extensible to any number of APKs in a single zip.
Android Image Kitchen (many devices) - link
A collection of Windows/Android ports of the necessary Linux utilities for Android image (kernel+recovery) mod work, and my own automation script to unpack, edit and repack the ramdisk. Other guides/scripts exist but none of them are universal for target device, compression and/or developed for Windows/Android. Now also Linux builds to bring my improved featureset back to where it came from, recently extended to macOS as well. Has been extremely useful for me in my messing around with kernel ramdisks.
ADB Screenshot (many devices) - attached
Take screenshots while in recovery. Useful for development of recovery apps or error reporting. Original method had lots of different threads around with the general method for various devices but I figured out a couple tricks required for getting it working on the Galaxy Nexus and then automated the process. Tested and confirmed working with both pixel formats of CWM and TWRP. More information in this GN Q&A FFmpeg thread. New method uses fb2png and should work on all ARM devices.
ADBsync sdcard Backup (many devices) - attached
Backs up the entire sdcard so that you can have a complete snapshot of your device when you make periodic backups, and be able to restore things exactly as they were. Automates the sync process of Renate NST's great adbsync utility which makes only newer files get pulled, significantly decreasing backup time for the sdcard compared to "adb pull". Original version posted in the old adbsync thread. Defaults for devices with /data/media/ internal sdcards (Nexus devices, etc.), but is easily customizable to backup other mountpoints or backup via ADB over WiFI.
Flashable Script Zips
TWRP A/B Retention Module script (many devices) - link
We need an interoperable root ecosystem again. A/B and system-as-root were a big setback to the root community in this respect. To help alleviate this issue, this atypical Magisk script zip "module" will keep TWRP installed to both slots when flashed from Magisk Manager after an A/B OTA has installed in the background, but before you use Manager to install Magisk to inactive slot.
Nexus BootUnlocker script (GN, N4, N5, N7 '13, N10) - attached
I don't know about everyone else but sometimes I find I've rebooted into the bootloader only to realize I've forgotten to unlock it in segv11's excellent BootUnlocker App beforehand. Well, I decided to make a BootUnlocker Script for my Galaxy Nexus so I could just boot to recovery quickly, unlock, then adb reboot-bootloader (or use my Reboot To Bootloader script below) to get back without having to fully boot the OS to make the change. Also extremely useful in the case you aren't able to boot. As with the app there is no data loss like there would be with fastboot, allowing you to relock for safety. Originally posted in the GN EDIFY Scripting thread. Modified for the newer Nexus devices and combined into a single Nexus BootUnlocker zip with tamperbit reset support added using information from the BootUnlocker App Dev thread. For newer devices using Factory Reset Protection (N6 and later), the BootUnlocker Script can't directly toggle the lockstate due to new security tokens, but it does now toggle the ability to use "fastboot oem unlock" without needing a booted device.
N7 BootUnlocker script (N7 '12) [creation guide] - link
The Nexus 7 2012 is a special case. Per-device encryption of an entire partition makes it impossible to support the N7 '12 in a simple root app, or flashable zip as above, however using my guide and included script you can now create a working BootUnlocker Script Zip for your specific device. As with the above scripts there is no data loss like there would be with fastboot, allowing you to relock for safety.
sdcard Fix Permissions script (many devices) - attached
A little flashable zip script to fix ownership and permissions of files and directories on the sdcard to what they would be if Android OS had put them there itself, since some apps can't access pushed files that have root.root as owner/group. This is useful when restoring to your sdcard backup, as with my ADBsync sdcard Backup batch script above, since generally, pushed files get root.root from adb shell and higher permissions than usual. Also a solution for a bug where sdcard files get lower permissions somehow, resulting in similar access problems. Currently written for devices with /data/media/ internal sdcards (Nexus devices, etc.), but could easily be modified for other mountpoints. No longer required on Oreo since it fixes these itself at boot.
Recovery SLAM script (many devices) - link
Recovery "Simple Legacy Auto-Mount" (SLAM!) is for devices that have been updated to SAR, but there are older zips that break in TWRP because they rely on the mounts occuring a certain way, especially during a ROM OTA. Recovery SLAM mounts them more as the zips would expect, generally allowing them to proceed. Most useful for premounting /system before a legacy zip with my FlashAfterUpdate addon.d script.
SUmount script (many devices) - attached
Another tool for the toolkit of anyone using Chainfire's SuperSU or topjohnwu's Magisk systemless root, this simple flashable zip script toggles the mounting of the su.img, magisk.img and magisk_merge.img while in recovery to allow easier access to the /su, /magisk and /magisk_merge filesystems, simplifying manipulating it via ADB shell, AROMA Filemanager or TWRP's terminal/file manager. Especially useful to anyone who uses su.d/post-fs-data.d scripts or can't boot due to some issue with a user addition in /su/su.d, /su/bin or a Magisk module.
unSU script (many devices) - link
While experimenting with Chainfire's brilliant SuperSU systemless root, I discovered that uninstalling the older style system-modifying root through his app (<2.60) didn't restore all of the modified system files correctly, so I wrote this script to do so and aid in people wanting to unroot from recovery. Expanded to support uninstallation of Koush's SuperUser, phh's Superuser, SuperSU Systemless (su.img and BINDSBIN), Magisk, LineageOS addonsu and custom ROM su binaries.
Adreno Systemless Installer script (N5, N6, N7 '13) - link
For use with Qualcomm's official updated preview GPU drivers packages for Adreno 3xx/4xx-powered Nexus stock images. This is a different frontend to take whatever device zip from Qualcomm is in the same directory as it (also searching /sdcard), then unpack and install it as a Magisk module or into the SuperSU systemless root /su filesystem, instead of the usual /system.
Kernel MultiROM Injector script (many devices) - attached
Intended for use in Chainfire's excellent FlashFire app to automate re-injecting the current boot image ramdisk with Tasssadar's brilliant MultiROM's trampoline bootmenu; this avoids having to do this as an extra step in MR-TWRP following an OTA, ROM Delta or SuperSU update. Should work for all EMMC devices with MultiROM installed.
GN PIT Editor script (GN) - link
Dumps and alters the Galaxy Nexus' Partition Information Table (PIT) to reclaim unneeded space from the /cache partition and add it to /system to allow for larger ROMs and GApps packages to make continued support for Lollipop+ easier. The resulting file is byte-for-byte identical to those created by external tools like PIT Magic, so that it may be flashed back to the device in Odin Mode to complete the repartitioning.
Kernel Emergency Reset script (many devices) - link
Basically a go-to cure-all for custom kernel users experiencing issues after an upgrade due to old settings left over in a kernel control app (eg. franco.Kernel updater, Trickster, etc.), or problematic init.d/userinit.d scripts. It's also useful if you just want to make sure you're running clean defaults without conflicts.
Reboot To Bootloader script (all devices) - attached
Those who preferred using CWM may have noticed a couple of things missing that the other popular custom recovery, TWRP, has built-in. One of these is a file explorer/manager, which is answered by amarullz' brilliant AROMA Filemanager. Another thing I found myself wanting was a way to reboot back to the bootloader once I'm in recovery, so I created this very very simple flashable zip script. (No longer required on CWM >=6.0.3.5). Note: Once in the bootloader, "Start" will boot you back to recovery. Not sure why, but it's not a big deal, just reboot normally from recovery at that point.
Flashable Installer Zips
Flashlt Installer (many devices) - attached
Installs my Flashlt script to allow easy flash and dump of boot, recovery and radio/modem (possibly others) EMMC or MTD partitions while booted, and trimming of null characters from files. Also installs a script zip that makes flashing boot.img (kernel), recovery.img, and radio.img/modem.img (baseband) files via recovery simple. It aims to save the average user the hassle of repacking their own image zip, or using the command-line or fastboot to flash it. Place an appropriately named file in the same directory as the zip and flash away! Should work on all devices with normal partition naming ("boot", "recovery" and "radio" or "modem") which accept Android standards-compliant images (including a/b slot devices like Pixel). Extremely handy when used with amarullz' brilliant AROMA Filemanager, and/or my Android Image Kitchen: Mobile Edition (linked above).
Busybox Installer (all devices) - attached
A byproduct of building my own static busybox compiles in all Android architectures for my AIK-mobile package, I figured I might as well offer them up separately as well since there weren't any providers making Android x64 builds when I was researching. Detects device (ARM/64, x86/_64, MIPS/64) to install the busybox binary, cleans up symlinks from any previous install and generates new ones. Detects and supports SuperSU/Magisk systemless installs. Please read the release post about applet inclusion and special features.
nano Terminal Editor Installer (many devices) - attached
An installer to push my own static Android ARM build of the nano editor and required files to /system/xbin and /system/etc/terminfo, with a wrapper adding a --term option to try terminfo profiles more easily. Detects and supports SuperSU/Magisk systemless installs. Can then be used from Terminal while booted. When flashed in recovery also allows temporary recovery use by pushing a script to /sbin/nano with the required setup, so you can trigger it from adb shell or TWRP Terminal. Makes it extremely easy and worry-free to tweak and mod on the go, knowing you can edit the faulty build.prop or startup script if something goes wrong.
adb + fastboot Installer (many devices) - attached
Marshmallow removed adb from the /system/bin directory. For those wanting this functionality back, here's an installer to push static compiles of adb and fastboot to /system/xbin, with a wrapper to point adb to the correct HOME directory and set TMPDIR for compatibility. Detects and supports SuperSU/Magisk systemless installs. Can then be used from Terminal while booted.
Nexus Media Installer (many devices) - attached
Custom ROMs usually don't include Google ringtones/notifications/system sounds and bootanimation, instead including numerous terrible sounds and often less-than-desirable visuals. This installs the media from old Nexus devices systemlessly (SuperSU and Magisk supported), or to system with an addon.d script to survive a ROM update or dirty flash, and using the zip name (also reading from /data/.nexusmedia) to allow user choice.
mtd-utils Installer (many devices) - attached
mtd-utils (flash_erase, nanddump, nandwrite) are necessary for mod work on a number of Android devices using mtd/char devices instead of the more standard emmc/block devices, and where the busybox versions have been less reliable in the past (especially where it doesn't include flash_erase), using the official suite is preferable. The older ARM builds available on XDA were about a decade old, so I worked out how to configure and cross-compile from the latest source. Detects and supports SuperSU/Magisk systemless installs. Can then be used from Terminal while booted
ZipSigner + Zip Installer (many devices) - attached
Signing zips and APKs on-device has always been a tricky proposition due to memory requirements of the old SignApk.jar, running a jar on an Android device, and other complications for script-based zips. Android has always been missing a zip binary (for unzip see my Busybox Installer). ZipAlign is also handy if you do APK work. To remedy this once and for all, here's an installer to push my dexed version of topjohnwu's brilliant zipsigner.jar and static ARM compiles of zip and zipalign to /system/xbin, with a wrapper to run zipsigner with Android's dalvikvm. Detects and supports SuperSU/Magisk systemless installs. Can then be used from Terminal while booted.
odex Script Installer (all devices) - attached
Based on the great work and binaries from this thread, a simple installer to push my odex script along with the required dexopt-wrapper and zip binaries to /system/xbin and set the appropriate permissions. Automates the procedure to odex any apk or jar from the commandline to potentially improve performance. Dalvik runtime (KitKat and below) only. Also uses cut from busybox.
N5X/6P BLOD Workaround Injector (N5X, N6P) - link
When, unfortunately, my Nexus 5X was recently stricken with the abominable Bootloop of Death, I looked into the well-publicized workaround and turns out it was all contained in the ramdisk and cmdline of a Android image. This is the perfect application of AnyKernel2, so I made an AK2 add-on zip to patch both the current boot and recovery partitions with all the current workarounds to help others afflicted by this issue to hopefully regain their data/device as easily as possible. Linked is the Nexus 5X thread, the Nexus 6P thread may be found here.
N7'13 TWRP flo2flox Injector (N7 '13) - link
The Nexus 7 2013 (flo) has seen a bit of a resurgence with official Lineage 18.1 support repartitioned as "flox". Since official TWRP is still automatically being built only for flo and this isn't compatible with flox, and the minor changes required for flox support were a great application of AnyKernel3, this zip automates the patching process so making official TWRP from flo2flox is easy for all going forward.
GN Synapse Support Injector (GN) - link
This AK2 kernel add-on for the Galaxy Nexus injects support for the Synapse tweaking app into the current boot partition ramdisk, including all the Synapse interfaces for the GN I've maintained since the Franco Kernel and DirtyV Kernel days.
GN Recovery Color Correction Injector (GN) - link
The aging screen on the Galaxy Nexus was looking pretty rough in recovery until I discovered the recently added new OMAP kernel color correction was also present in the most recent TWRP recovery versions. So this add-on zip uses AK2 to patch the current recovery partition ramdisk to add the command to reduce that green/yellow SAMOLED nastiness.
Kernel init.d Support Injector (many devices) - attached
An experimental proof-of-concept. Following from great ideas by Captain_Throwback in my AnyKernel2 thread and using script from my Flashlt script above, this AK2 zip will inject basic init.d bootscript support into any kernel ramdisk on any emmc device with normal partition naming and using the Android bootable image standard, without having to bloat a ramdisk using a busybox binary. This zip is also signed, so could potentially be used with non-Nexus stock recovery on a locked bootloader.
CMSetup Fix for GApps Installer (many devices) - attached
Installs a su.d script fix to work around the CyanogenMod/LineageOS 13 ROM issue of a broken Quick Settings pull-down when CMSetupWizard is removed as part of a GApps installation. Removing CMSetupWizard is useful because it allows Google's SetupWizard to grant apps default permissions, so the workaround automatically executes the only required command at the appropriate time following first boot. Requires a SuperSU/Magisk installation (for su.d/post-fs-data.d support). Flash after the SuperSU/Magisk zip and your GApps.
Dev Team init.d Pack Installer (all devices) [see "950iosettings, etc." below] - link
A simple installer I wrote to create the /system/etc/init.d/ directory, extract the latest init.d scripts as published by the "Franco's Dev Team" tuning collective (of which I was a member), then set correct owner, group and permissions to the entire init.d directory. If you are a developer and would like to include these tunables/scripts in your kernel or ROM please provide credit. A lot of time and effort has gone into this project and that's all we ask.
Scripts
950iosettings + 875mntsettings + 925vmsettings + 975experimental init.d scripts (all devices) [with Franco's Dev Team] - links
Also available bundled in an installer. The scheduler tunables have already gained a bit of attention/adoption on various devices and kernels, but this is the init.d script I wrote to set the new custom scheduler tunables values as "default" by an independent loop, sleeping in the background and detecting each time the scheduler is changed. There is no effect on idle drain or deep sleep. The settings included are the complete work of the "Franco's Dev Team" (or "Team Franco") tuning collective, of which I was a member. We strove to perfect the scheduler, vm and various other settings for the smoothest and fastest experience available. The collective was: malaroth, osm0sis, joaquinf, The Gingerbread Man, pkgnex, Khrushy, shreddintyres. If you are a developer and would like to include these tunables/scripts in your kernel or ROM please provide credit. A lot of time and effort has gone into this project and that's all we ask. Lollipop(+) updated versions now also available through the continued excellent work of pkgnex.
999-flashafterupdate.sh addon.d+addon.d-v2 script (many devices) - attached
For ROMs that don't have "Flash After Update" support built into their delta/update process. During an upgrade, this script will flash zips from an sdcard directory, with several options (listed in the script header) for displayed output, after all other addon.d backup/restore actions have completed. This can be used to flash SuperSU and then an AnyKernel2 kernel on LineageOS, for example. Only zips that specifically support addon.d-v2 can be supported on A/B devices. See this how to for instructions for use with A/B devices. Unzip once downloaded and place in /system/addon.d/ with rwxr-xr-x (755) permissions.
98-twrp_ab.sh addon.d-v2 script (many devices) - attached
Allows you to keep TWRP installed in a boot partition through A/B OTAs with Magisk installed by copying the TWRP ramdisk from the current slot to the updated one, before Magisk's addon.d-v2 script patches it. Requires a current Magisk installation since we need the tools and Magisk's the only way to ensure a working addon.d-v2 environment across ROMs at the moment. Unzip once downloaded and place in /system/addon.d/ with rwxr-xr-x (755) permissions.
97-dumpimages.sh addon.d+addon.d-v2 script (many devices) - attached
For ROMs with boot.img, etc. inside an OTA payload.bin or otherwise inaccessible, it dumps the updated chosen partitions before further modifications (TWRP, Magisk, etc.), saving it to /sdcard/Download/boot.img or to/from other customizable locations at the top of the script. Unzip once downloaded and place in /system/addon.d/ with rwxr-xr-x (755) permissions.
00-omnirootfix.sh addon.d-v2 scipt (many devices) - attached
OmniROM appears to include 69-gapps.sh automatically in its /system/addon.d directory despite not shipping with any GApps; when not rooted this doesn't appear to present a problem, but really this is only because the script doesn't have enough permissions to run how it's supposed to since Omni's sepolicy doesn't let addon.d-v2 work correctly. Once Magisk is installed, providing more privileges to the addon.d-v2 update_engine, Omni's 69-gapps.sh would remove important system files during an A/B OTA when no GApps were installed, so this script will simply prevent that for those wanting to run Omni minimally and with root. Remove the .txt extension once downloaded and place in /system/addon.d/ with rwxr-xr-x (755) permissions.
00-resizesystem.sh addon.d script (many devices) - attached
One common solution for aging devices is to resize the /system partition so that it can hold newer, larger ROMs and, of course, GApps packages. On devices where the /system partition has been resized to hold larger GApps packages, but the ROM in use has system.dat format zips with no resizing functionality, the extra space would get lost in a ROM delta flash, breaking things when GApps attempted to restore. This script will resize the system partition to its maximum before the GApps restore occurs on EMMC-based devices with standard partition naming. Remove the .txt extension once downloaded and place in /system/addon.d/ with rwxr-xr-x (755) permissions.
10-extract-lineage-kernel.sh addon.d script (many devices) - attached
Nowadays with systemless root and other boot.img mods out there, it's good to have a backup of your ROM's unmodified boot.img handy in case you want to do a clean flash of your boot partition. Since LineageOS moved their update zips to a /data/data subdirectory that made this harder to get to, I automated the procedure as an addon.d script so that the newest gets extracted on each update. The output directory may be changed by editing the script. Remove the .txt extension once downloaded and place in /system/addon.d/ with rwxr-xr-x (755) permissions.
999-customkernel.sh addon.d script (many devices) - attached
Addon.d is awesome at restoring your GApps, root app, and other things after a ROM Delta, update, or dirty flash, but of course this can leave a lot of stuff out that you'd also have to re-flash (see below for a personal addon.d script you can modify to cover anything else you want to save). This script aims to help remedy the issue for custom kernel users on EMMC-based devices with standard partition naming by dumping the current kernel as part of the addon.d backup process, and then restoring it after the ROM has flashed its included kernel. Remove the .txt extension once downloaded and place in /system/addon.d/ with rwxr-xr-x (755) permissions. This is deprecated by my FlashAfterUpdate addon.d script, above.
logohack.sh (GN) - link
Galaxy Nexus bootloader image replacement hack script. Inspired by bitdomo's brilliant imgdata tool and replicating the functionality of Ezekeel's abandoned, broken paid Logo Me app, this script improves upon the app version by working on all Galaxy Nexus bootloaders and on-the-fly, to allow replacement of the Google logo and lock images within the sbl partition. Remove the .txt extension once downloaded and place in /system/bin/ or /su/bin/ with rwxr-xr-x (755) permissions. It can then be run from the Terminal.
flash_image (many devices) - attached
MTD devices require a little extra finesse when flashing partitions from the command prompt and multiple commands, versus MMC devices, for which we can just use the dd command both ways. I wrote this little script to simplify the process for myself in my MX Box tinkering. It parses /proc/mtd so you only need to enter the partition name. It requires _n0p_'s excellent MTD-Utils compiled for Android, and uses grep and cut from busybox. Remove the .txt extension once downloaded and place in /system/xbin/ with rwxr-xr-x (755) permissions. It can then be run from the Terminal.
getprio (all devices) - attached
Android doesn't allow you to check the priority (or "niceness") of a process with the getpriority command as you would with normal Linux, and busybox doesn't provide this functionality either, so I wrote this reasonably simple script to allow you to check the niceness of a process. Some kernels have been experimenting with increasing the priority of com.android.systemui for smoothness, so this command can be used for testing different levels and whether the renice command set it correctly. Remove the .txt extension once downloaded and place in /system/xbin/ with rwxr-xr-x (755) permissions. It can then be run from Terminal with either the pid (default), class or a class name search string. Uses pidof and pgrep from busybox.
gappsintegrator init.d script (many devices) - link
ROM GApps Auto-Integration of /data/app GApps into /system, complete with libs (unlike Titanium Backup), for Jelly Bean through Marshmallow. It should process things early enough in the boot that afterwards Dalvik will immediately do the cleanup ("Android is upgrading..."), much like following an OTA. An initial GApps installation is one requirement and there are some important notes for support of Lollipop and above. Intended for ROMs with a busybox installation. Can also remove libs from and zipalign the integrated APKs if those binaries are present in the ROM.
lmkwhitelist init.d script (all devices) - link
Users running ROMs or kernels with extremely aggressive custom lowmemorykiller (lmk) driver settings may notice their launcher redrawing frequently. Some kernels/ROMs also include an exclusion for this by making stock (or the included) launcher unkillable, however that still leaves all the 3rd party launchers out there that people use. I wrote this init.d script with a community created list of the most common launchers to make whichever one is installed unkillable. This also has instructions for how to set up init.d scripts. If your launcher isn't included in the list, you can modifiy it by adding the application class name (from the Play Store URL) to the list within quotes, separated by spaces. Also part of the 975experimental Franco's Dev Team init.d script, linked above.
dalvik2cache init.d script (all devices) - link
Bind mounts the dalvik-cache directory to the cache partition. Useful on devices where the cache is sizable and unlikely to be used for OTAs (custom ROM, etc.), and the data partition is not. Every little bit counts!
settingsdump.sh (all devices) - attached
In comparing vm settings from various kernels and ROMs to see what's out there, I wrote this script to generate a list of the values of all the relevant sysfs files and directories. Now expanded to cover cpu and governor as well. Remove the .txt extension once downloaded. To run it, assuming you just put it in /sdcard/, open Terminal Emulator and type: "sh /sdcard/settingsdump.sh" (without quotes). It will output the file to /sdcard/r*-output.txt where * is the revision of the kernel you're running. This makes it easier to compare what's changed between different nightlies, for example.
Other
BootUnlocker app (many devices) [with segv11] - link
With a number of users researching and contributing the bootloader lockbit and tamperbit offsets in threads around xda and to the development thread for seg11's excellent BootUnlocker app, I have begun making beta builds with these new devices added. With hopes of adding any/all that can be, it now supports all the older Nexus devices, OnePlus devices and several others. We are accepting Pull Requests and collaborators for further device/design updates. Check my original revival post for more details.
G-Box Midnight MX2 g18ref ROM, recovery and kernel osmods (MX Box) [with BenniBenassi & relol] - link
I bought one of these unbranded Android TV boxes and was immediately determined to tweak it as much as possible following my work on the Galaxy Nexus. Flashing the official Matricom stock ROM over the generic included one I also discovered the recovery didn't have any A/V output to my old CRT TV. I set out to dump the kernel and recovery images, fix the recovery images and tweak the kernel defaults for the most performance.
Holo Stock Notification Icons for Notification Toggle (many devices) - link
This was likely my first post ever on xda. It is a "Notificon" pack for j4velin's fantastic Notification Toggle App, bringing a seamless stock look to this indespensibly useful app. Also a great way to get back to Settings easily from the notification shade since Android 4.2, and add shutdown/reboot menu functionality to stock/vanilla ROMs.
My GN Kernel Settings + 900colorsettings init.d script (GN) - link
I was being asked a fair amount for my kernel settings over in the GN f.K thread where I helped out, so I posted them up. I also put up an init.d script for setting color values on boot, which can drastically change the outcome on older panels, and at least makes custom values seamless. Instructions for how to set up init.d scripts are included.
Galaxy Nexus Baseband Collection: maguro - i9250 / M420 / SC-04D Radios (GN) [with josteink] - link
Original thread author josteink moved on to other devices and asked me to take over the thread. Lots of great information on the GN radios, posted alphabetically by region and chronologically by the build string date I found embedded in the images. Huge respect and massive thanks to josteink for seeing the need for a baseband thread almost as soon as the Galaxy Nexus was launched, way back in December 2011, and maintaining it diligently.
TK GApps (many devices) [with TKruzze] - link
After helping TKruzze with some of the concept and script work for his famous Paranoid Android Google Apps packages (PA GApps 2.0), we decided to collaborate again for his return to XDA after a much-needed hiatus, with me doing the thread setup and management with DevDB, and a Q&A section so things don't get overwhelming for those trying to follow along. The main thread remains locked and can be subscribed-to for those wanting notification only when there's a new GApps release, and the Q&A functioned as the main discussion thread where people can help each other. Much of the script is the same from PA GApps but TKruzze has added some impressive new features, made many fixes and revamped a large portion of the documentation. I also continued as an adviser and submitted script when needed.
Nexus Louder Audio Improvement Patch (GN, N4, N5, N7 '12, N7 '13) [with Misledz] - link
One of my earliest forays into EDIFY scripting, I wrote the flashable zip install/revert scheme for this great volume boost mod by Misledz. The scripts check to see if the mod is already installed and if so recommends you flash the version-specific revert that goes with it. More on that in the Intelligent EDIFY thread. During install the script also backs up the ROM files it replaces so that you don't need to reflash your whole ROM if something goes wrong, just use the revert to restore the backups. I eventually rewrote this completely in shell script with a Universal install/revert, that detects which files to backup and leaves a list for itself to revert. I also wrote automation batch scripts for Misledz as the "Louder Build Farm" to simplify his work for all the versions of the mod he maintains for various devices, linked in the knowledge base below. GN/Dev thread linked; Other links can be found there.
Payload-Dumper-Go for Android Magisk Module (many devices) [with ssssut] - link
payload-dumper-go arm compile and wrapper for use extracting from payload.bin on-device.
Git for Android Magisk Module (many devices) [with Termux] - link
Hacked arm64 git commands for use on booted Android.
Google Experience XML Magisk Module (many devices) [with Google] - link
Hacked Google Nexus/Pixel/Android One sysconfig feature xml entries for use on non-Google devices.
Digital Wellbeing Add-on Magisk Module (many devices) [with Google & Open GApps] - link
Digital Wellbeing for Android 12L and 13 GApps that don't properly support it (like MindTheGapps).
Model Mod Magisk Module (many devices) - link
Experiment to append _SN to the existing device model to get CTS passing again after the September 2021 server-side SafetyNet changes, (superceded by kdrag0n's excellent Universal SafetyNet Fix module).
Xposed Framework Installer Zip (many devices) [with rovo89 & Tungstwenty] - link
When JB4.3 broke all previous root methods I made this simple frontend script to install rovo89's brilliant Xposed Framework for modding ROMs until they could release a new version themselves. Xposed Framework files and the install.sh used are the work of rovo89 and Tungstwenty; I have only created a recovery flashable zip and shell script to function as an alternative frontend for the framework installation process. Then updated to mimic the APK installation and allow devices with /system write protection like HTC's S-ON to install the framework. (Deprecated as of Xposed 2.5).
BBCode for my xda Signature (n/a) - link
Last and definitely least. A number of people have asked me about the formatting of my signature, so here are some simple BBCode tricks and workarounds I thought others might like too. Keep in mind that my signature can be significantly larger because of my RC status.
Enjoy!
Questions, comments and feedback welcome.
Credits & Thanks: All authors of any included binaries and libraries for their amazing work. Anyone who's helped me with these projects along the way.
Disclaimer: Naturally, you take all the responsibility for what happens to your device when you start messing around with things.
Knowledge Base
Links to information/research posts I've made and other experiments.
----
avbtool-arm (zip package) - link
AOSP's BootSignature.jar for AVB v1 was relatively simple to run on-device for boot.img modifying flashable zips like SuperSU and AnyKernel2 but avbtool for AVB v2 is written in Python, so that makes things a bit trickier. For experimentation I whipped up a little wrapper script to run avbtool on-device with an actual Python interpreter.
Omni SoundPacks (and Nexus Stock pack) - link
My suggested expansion to the Omni SoundPacks feature to allow it to cover all SystemUI sounds.
OnePlus FingerPrint Material Icons (Information) - link
My preferred fingerprint icon for the in-screen OP6T sensor using Zacharee1's excellent OPFPControl app.
----
Complete Shell Script Flashable Zip Replacement + Signing Documentation (Reference) - link
Using a shell script instead of an update-binary in flashable zips can make them universal for architecture and put a lot more power in the hands of the developer. This reference documents all of the analogous functions myself and others have written to make this easy.
Booted Zip Flashing Shell Setup Script (Reference/How-To) - link
My implementation of booted zip flashing, originally for AnyKernel2 in Franco Kernel Updater (now Franco Kernel Manager) and since expanded to support AK3's ability to be flashed from anywhere and support most other flashable zips on devices that allow remounting /.
Unified ext4/f2fs ramdisk + ROM installer (Reference) - link
Supporting multiple filesystems like ext4 and f2fs in a custom kernel boot.img ramdisk required some work before custom ROMs were updated to do this themselves and use fallback fstabs. This is the roll-up post gathering all the changes necessary for someone to add this pre-official support to their ramdisk, kernel and ROM installers.
FlashFire Recipe Book (Reference/How-To) - link
Just a quick reference of common tasks (OTA flashing, etc.) for people figuring out how to use Chainfire's brilliant flashing app.
personal addon.d (How-To/Template) - link
I was tired of having to redo a number of tasks (remove files, backup Nexus sounds and replace the AOSP ones, etc.) to get my device back to where I wanted it after flashing a newer nightly, so I wrote an addon.d script to do it all for me. Provided if anyone wants to modify it for their own personal setups.
KBox2: Set Up A Build Environment On Android (How-To) - link
Very cool Linux-like command prompt environment on Android. I originally had it set up as a native build environment with rudimentary git support. You can follow my steps to do the same.
Keeping SafetyNet Passing With Incremental Google OTA on Virtual A/B Devices (How-To) - link
Post-reboot checks added to the incremental OTA process for Virtual A/B devices using Google's servers made it impossible to remain rooted throughout the OTA process, but following these instructions you can complete the OTA then re-root without SafetyNet catching you.
Cygwin-Linux Cross-Compiler (How-To) - link
Compiling from Cygwin with a Linux target required some fixes to the toolchain, so I detailed them for future reference.
N4/N5/N7 '13 Qualcomm Optimized Bionic/Dalvik Patch Comparisons (updated zips) - link
Using Qualcomm optimized files on Snapdragon devices improves performance greatly on KitKat. Especially good on Nexus devices or AOSP ROMs. I took the time to dissect the required files and see what worked best.
AIK Build Farm (desktop shell script) - link
The Cygwin shell script "build farm" I wrote for my Android Image Kitchen project to perform all of the cross-compiles required for the mobile and Linux versions. Allows someone to setup the repos from scratch and build.
Louder Farm (zip packages) - link
The Nexus Louder project was a pretty massive system file modifcation undertaking. This details my work to make building the patch zips easy for co-dev Misledz, and includes the farm packages at various stages.
----
N7 '13 Bootloader cracking (Information) - link
Sat down with my parents' Nexus 7 2013 (before I got my own) over Christmas and cracked the bootloader for unlock support via my Nexus BootUnlocker Script zip and later the official BootUnlocker App.
N7 '13 Unbricking (Information) - link
Instructions I put together for recovering from a hard brick (bad bootloader flash usually), via the exposed Qualcomm/Marshall London "HS-USB Diagnostics 9006" mode.
Default System Alarm Setting Script (Information) - link
A script snippet function to allow easily changing the default alarm sound on ROMs that hide this ability, like OnePlus' OxygenOS.
SELinux Audit2Allow Script (Information) - link
A script snippet for turning SELinux audits in a logcat into allow statements ready for supolicy or magiskpolicy.
Partition Dumping Script (Information) - link
A script snippet for dumping all non-userland partitions from any eMMC device, useful for bootloader lockstate hacking.
GN Partition Information Table (PIT) Research (Information) - link
Wanting to push the GN as far as possible, several remaining users came together to discuss how it could be repartitioned to add more space to /system to better support Lollipop+ and I contributed a large amount of R&D over several posts throughout the thread which resulted in the PIT Editor script zip (posted above). Could be useful for other devices using PITs as well.
GN/N7 '12 tunables post (deprecated) (Reference) - link
The list of supported basic tunables on franco.Kernel for the Galaxy Nexus and Nexus 7 2012 back when those were my primary supported devices.
GN scheduler tunables HZ scale (Information) - link
The Galaxy Nexus scheduler (and other) tunables opperate on an odd scale due to the the device's HZ value in the source being weird. This post experiments with that and finding the method/equation behind it.
LMK boot timing (Information) - link
The Android lowmemorykiller module default tunables go through a bizarre sequence during boot, so I experimented and came up with a script to allow setting alternates as soon as possible.
LMK Launcher Whitelist/Niceness settings reversion (Information) - link
Setting oom_adj values and changing the niceness on launchers and systemui improved responsiveness and helped avoid these important processes being killed by LMK. Then I noticed sometimes they spontaneously reset; experimentation followed.
MTD partition flashing (Reference) - link
My MTD-based MX Box set-top device gave me a few hours of headaches until I figured out how to dump and flash the boot (kernel) partition correctly. This details my experiments and the correct procedure I discovered.
nano Android static build instructions (Reference) - link
A little documentation of all the dirty tricks I used to get the nano terminal editor utility to build for Android from the official git repo source.
mtd-utils Android static build instructions (Reference) - link
A little documentation of all the dirty tricks I used to get mtd-utils to build for Android from the official git repo source.
Pixel Launcher bind mount instructions (Reference) - link
I was annoyed that on stock Nexus 5X and 6P Pixel Launcher wasn't available and when sideloaded lost the Google Feed pane, so I replaced Google Now Launcher with Pixel Launcher using bind mounts.
Netflix broken DRM workaround instructions (Reference) - link
Custom Nexus 7 2013 ROMs Nougat+ have all had issues with Netflix due to some peculiarities of the DRM libraries the ROMs use, but some found that intentionally semi-breaking DRM using files from other devices allows Netflix to work again, but this broke Google Play Movies. I did some more testing, resolved the Play Movies issue and wrote up how to install the single needed replacement library either to system or with a systemless bind mount.
----
Thanks for the interest! More to come, I'm sure!
What can I say...
SUBSCRIBED
Sent from my Galaxy Nexus
Far superior
thanks
Franco Team always made a great work .... Keep it up.
Thanks for these great useful infos!
Bookmarked, subscribed and rated a well deserved 5 stars :good:
Thanks for sharing. Very useful.
Nice...
Envoyé depuis mon Galaxy Nexus avec Tapatalk
Nice collection osmosis
Many thanks osm0sis, to you and all the team for all your contributions Almost feel as though I know you since I've been hanging round GNex and N7 franco.Kernel threads for so long and if you pop up on the N4 thread it's like seeing an old friend I'm mostly quiet, but really appreciate all you do :thumbup:
Sent from my Nexus 4 using Tapatalk 2
Subscribed... Thanks dude...
-3StarsAndaSun
Subscribed. Thanks
Thanks back to you, everyone! I've learned a hell of a lot about Linux and Android in the year since I got my GN, and I mostly have xda to thank for that, even though I've always been the type to tinker and Google things. Still lots more to learn though! But, at the very least I guess nobody can say I haven't been busy since becoming a RC, huh?
Nice to see all these settings are adopted by others, also the interactive tuneables are used in ak kernel now.
Verstuurd van mijn Nexus 7 met Tapatalk
Subscribed :good: !
New version of testvalue.sh up. I added the input value to the output.txt file to make it easier to read since it starts at 0. Right now we're trying to work out the equation for the scale of certain cfq and deadline tunables on the GN, which is a bizarre one:
7, 15, 23, 31, 39, 46, 54, 62
Increases by 8s but occasionally (on the 5th jump, though sometimes 6th) it increases by 7.
Edit: Every 3rd increase of 7 occurs on the 6th instead of the 5th.
Edit 2: Stats genius of the group, @pkgnex worked out what the trick was; dropping the decimals once calculated.
So in Excel: y=TRUNC(x*7.8125,0)
:good:
The "why" of the GN tunables working this way, with a value of 125/16 is a very good question. No ideas there, personally. Something to do with the GN having a HZ value of 128 (where on others it's 100 or even 200) I'd assume, but I don't see the direct connection.
This was very handy to know though, because the cfq+deadline source requires the number of jumps (x) to hardcode the values, not the actual desired numbers like you'd expect.
Perfect!!!
Very interesting
Created a getprio script last night for use in /system/xbin as a runnable script to check the niceness of a process. It's up in the 2nd post now. It attempts to make up for Android not having "getpriority", and not displaying the niceness in "top" or "ps" like it would on mainstream Linux.
Code:
usage: getprio [-p] <pid> | -c <class> | -s <search string>
note - class name search will only use the top result
So you can either -p the numeric pid of a process if you know it (this is the default so the -p argument is optional), -c the class name of the process (eg. com.android.systemui), or -s a search string using part of the class name (eg. systemui). If there is more than one result for the search only the top result will be returned so if you are trying something like "-s mms", you'll only see the system mms process and not com.android.mms until you get more specific with "android.mms" or something. It's likely you've got a lower level process if you get the response "Warning: empty class name!" so that's your tip your search was too broad. Naturally, processes must be running in order to return info as well. :good:
Edit: ps -p will display niceness on Android, but it's not ideal if you want it only for a specific process like with getpriority. Thanks boype.

[UPDATE / KEEP ROOT GUIDE] SEPTEMBER 2021 (RQ3A.210905.001) - "CORAL" Magisk-Patched & Stock Boot / DTBO Images

IMPORTANT!! THESE FILES / THIS THREAD IS FOR PIXEL 4 XL "CORAL" ONLY, NOT PIXEL 4 "FLAME"!!
==========> USEFUL LINKS ==========>
==> DOWNLOAD LATEST SDK PLATFORM TOOLS HERE: https://developer.android.com/studio/releases/platform-tools
==> Official Factory Image / OTA - Downloads / Flashing Guide Here (recommend reading): https://developers.google.com/android/images
==> topjohnwu's Official Magisk GitHub Repo - "Useful Links" Section includes installation instructions, FAQ's, documentations, and more: https://github.com/topjohnwu/Magisk#useful-links
==> @Didgeridoohan's excellent Magisk Troubleshooting / FAQ / Installation Guide (also linked from topjohnwu's GitHub!): https://www.didgeridoohan.com/magisk/HomePage
==> Universal SafetyNet Fix Magisk Module by kdrag0n - Use this module by kdrag0n (make sure to donate / give thanks to him for his amazing work!): https://github.com/kdrag0n/safetynet-fix/releases
==> SafetyNet w/ Xposed - I recommend LSposed over EdXposed (better hooking mechanism, less likely to trigger SafetyNet violation, overall more efficient with handling resources anyway).
<========== USEFUL LINKS <==========
**IT IS HIGHLY RECOMMENDED TO PATCH THE STOCK BOOT IMAGE YOURSELF, FROM YOUR OWN DEVICE, USING MAGISK MANAGER. WHILE THERE'S A GOOD CHANCE THE FILE I PROVIDED BELOW WILL BE IDENTICAL (USE A FILE HASH CHECKSUM TOOL IF YOU'RE CURIOUS), THERE IS ALSO A CHANCE THEY MAY HAVE SMALL, BUT SIGNIFICANT, VARIANCES**
Thanks for the info and link, @wrongway213
Link to @topjohnwu's post: twitter dot com /topjohnwu/status/1272136975022084097?s=19 (until I figure out how to stop new XDA from forcing the URL to embed a giant twitter posting in the middle of the post...)
ALL FILES BELOW ARE FOR "RQ3A.210905.001, Sep 2021"!
Magisk v23.0 Patched Boot Image: https://www.androidfilehost.com/?fid=7161016148664802803
Factory Untouched Boot Image: https://www.androidfilehost.com/?fid=7161016148664802804
Factory Untouched DTBO Image: https://www.androidfilehost.com/?fid=7161016148664802805
----------------------------------------------
-------------UPDATE PROCESS BELOW-------------
----------------------------------------------​
EASY UPDATE / SEAMLESS KEEP-ROOT UPDATE PROCESS (using a PC - a very intuitive, effective, and relatively safe method).
** You can only follow this guide verbatim if coming EXACTLY from build "11.0.0 (RQ3A.210805.001.A1, Aug 2021)". But the general idea is the same for other builds, you just need the correct files for your device.
coral-rq3a.210805.001.a1-factory-dtbo.img: https://www.androidfilehost.com/?fid=14943124697586378273
coral-rq3a.210805.001.a1-factory-boot.img: https://www.androidfilehost.com/?fid=14943124697586378275
September 2021 sideload OTA zip: https://dl.google.com/dl/android/aosp/coral-ota-rq3a.210905.001-807a4197.zip
DO NOT BOOT BACK INTO O/S UNTIL ALL STEPS ARE COMPLETED - THIS ENSURES EVERYTHING BOOTS BACK UP WITH MAGISK / EDXPOSED ALL RUNNING PROPERLY RIGHT AWAY
*. make sure installed Magisk (Manager) app version is equal to or greater than the Magisk pre-patched version boot image provided
1. boot into bootloader
----------------
** I was on custom kernel, so I needed to flash BOTH the stock boot and dtbo images
2. fastboot flash boot coral-rq3a.210805.001.a1-factory-boot.img
3. fastboot flash dtbo coral-rq3a.210805.001.a1-factory-dtbo.img
......* these steps to restore stock recovery; dtbo.img also necessary for some kernel installations.
......* won't hurt to flash both anyway, so if you're unsure, go ahead and do both.
-----------------
4. use volume keys to change selection to boot to Recovery Mode
......- when you reach the android symbol with No Command, hold power button, tap volume up, in case you've forgotten
5. choose option "Apply update from ADB"
6. adb sideload coral-ota-rq3a.210905.001-807a4197.zip
7. Once the OTA sideload is done, Reboot to bootloader (you'll also notice it's now on the other slot after OTA flashed)
8. fastboot flash boot coral-rq3a.210905.001-magisk_patched-23000.img
9. done, start the phone
(Optional - Flash custom kernel. If you had a custom kernel, you need to re-flash it)
This is a 100% seamless update that requires no additional / re-setup of any of my Magisk or EdX/LSposed setups. All of the factory files can be found here https://developers.google.com/android/images. boot.img and dtbo.img are in their corresponding full Factory Image zips, and the ota zip is under Full OTA Images.
-------------------------------------------------
-------------------TROUBLESHOOTING-------------------
-------------------------------------------------​
Issues after updating?
If you end up unable to boot or bootlooping afterwards, you most likely have an old Magisk module that isn't playing nice with the new build. There are 2 main things you can do:
1. Flash the new factory untouched boot image. You will of course lose root, and all modules will be disabled. However, it should at least get you able to boot back up quickly and have a working phone if you're in a bind.
2. I would recommend checking Tulsadiver's thread: https://forum.xda-developers.com/pixel-4-xl/how-to/magisk-modules-disabler-booting-magisk-t3990557
Instead of reverting to stock boot image, fastboot boot (NOT FLASH) Tulsadiver's boot image. This will boot your phone in Magisk Core-Only Mode, with all modules disabled but root retained. From here you can open Magisk Manager and disable suspect modules. Before rebooting, go to Magisk Manager's settings and disable Magisk Core-Only Mode. Once you disable the incompatible module, the phone should boot back up.
- See this post (or thread) for more tips / context / an example: https://forum.xda-developers.com/showpost.php?p=82509691&postcount=16
Since Magisk v21.x, Core Only mode has been replaced by using Android's built-in Safe Mode. Booting into Safe Mode should essentially boot you back into your system but with all modules disabled (as well as Magisk Hide). Keep in mind that even after you reboot, modules will remain disabled, unless you re-enable them first. Also remember to re-enable Magisk Hide if you had it enabled before.
Please see @Didgeridoohan's guide for more details: https://www.didgeridoohan.com/magisk/MagiskModuleIssues#hn_Core_Only_Mode
It's also worth mentioning, his guide is extremely well-made and contains a lot of useful information that could benefit all Magisk users and modders. I highly recommend looking through it anyway!
Used your files, worked like a charm, thanks.
Thanks
October OTA is available!
https://dl.google.com/dl/android/aosp/coral-ota-rq3a.211001.001-d641dc96.zip
Ghisy said:
October OTA is available!
https://dl.google.com/dl/android/aosp/coral-ota-rq3a.211001.001-d641dc96.zip
Click to expand...
Click to collapse
Lel, where is our Android 12 rollout o.o
This is just a security update without any functional features. The heck.
Morgrain said:
Lel, where is our Android 12 rollout o.o
This is just a security update without any functional features. The heck.
Click to expand...
Click to collapse
It's coming in a "few weeks" for Pixel phones, per Google.
Lughnasadh said:
It's coming in a "few weeks" for Pixel phones, per Google.
Click to expand...
Click to collapse
So the Android 12 "release" early October was a lie. Jikes.
Companies should really start communicating release dates better. There are rumors now that Battlefield will also get delayed until 03/2022. Well...
Morgrain said:
Lel, where is our Android 12 rollout o.o
This is just a security update without any functional features. The heck.
Click to expand...
Click to collapse
I'm not in a hurry to update to 12 so I don't mind.
It would have been nice however to get a feature drop in the meantime.
Android 12 has been "really" released now.
Google rolling out Android 12 to current Pixel phones today
After three developer previews and four betas, Android 12 is ready to launch on Pixel phones as Google's biggest mobile OS release...
9to5google.com
Did someone used this method voor Android 12?
Which methods are you using, with flashall without -w?
knopie said:
Did someone used this method voor Android 12?
Which methods are you using, with flashall without -w?
Click to expand...
Click to collapse
Late to the game here.
I updated from October 11 to November and 12 following this method without an issue. (I skipped the October 12 release)
I'm on a Verizon MVNO and used the "unbranded" version 12.0.0 (SP1A.211105.002, Nov 2021).
I didn't flashall. Followed this guide exactly, using Magisk to extract and patch the boot image myself.
Haven't had a problem, beyond not getting the the wireless internet connection quick toggle mod to stick (adb shell settings put secure sysui_qs_tiles “wifi,cell,$(settings get secure sysui_qs_tiles)”)
I used the flashall method and it worked, no problems for me and simple.
Could someone share the boot image for 12 (SP2A.220305.012) please?
I don't know why but I had an issue and now I'm stuck without root.
*EDIT*
Here it is, if you find yourself in the same situation of taking the March 2022 OTA and lost root here is the unmodified boot image ready for Magisk patching.
Google Drive - Virus scan warning
drive.google.com

📳🔥 PixelFlasher, a GUI tool for flashing / updating / rooting / managing Pixel phones.

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
DESCRIPTION​As the name suggests this is an application to flash (update) Pixel™ phones (possibly all Google™ made phones/tablets, YMMV.)
PixelFlasher at its core is a UI layer (with bells and whistles) on top of adb / fastboot commands, hence many of its features can be used on non Pixel devices as well. (YMMV).
The executable is self contained and does not require Python™ to be installed on the system.
Basic mode: Should suit most users. Some of the features in basic mode are:
Simple UI interface, click and go. No more command line, no more placing all files in one directory.
boot.img management UI, select the boot.img file to patch and click the patch button. Fully Automated patching with Magisk (without manual steps) and perform upgrades without losing root.
No more manually extracting files transferring to the phone, patching / re-flashing and doing multiple reboots.
No more setting airplane mode and clearing storage to retain Safetynet passing.
Display details of boot.img (or init_boot.img for Pixel 7 / 7 Pro).
SHA1 checksum.
Origin (file it was extracted from).
Whether it is patched or not, and if it is patched.
What version of Magisk was used to patch it.
On what device it was patched.
Date of patching.
The SHA1 of the source boot.img file.
Option to Live boot from a choice of boot.img or patched image.
Flash just the boot / init_boot image.
Choose to keep data or wipe data while flashing.
Ability to flash even if multiple devices are connected to the computer.
Option to flash to inactive slot.
Display information about the phone.
ID
Hardware model.
Device architecture.
Current installed firmware (build).
If it is rooted with Magisk.
Magisk version (Magisk Tools).
Magisk Manager version (the app).
List installed Magisk modules.
Connection mode (Adb | Fastboot | Sideload | Recovery).
Bootloader version.
Active slot.
Android OS API version.
Convenient quick links to download Android platform tools or device firmware.
Magisk Manager installation UI, screenshot. Supported versions:
stable (official)
beta (official)
canary (official)
debug (official)
alpha
delta
special build that disables modules, used to recover from bootloops due to bad module(s) when safe mode does not work.
Magisk Backup Manager, screenshot.
List all Magisk backups currently on the device.
Highlight the one that is backup of the current installed version.
Delete backups.
Manually add backup from PC.
Auto Backup: PixelFlasher figures out what needs to be backed up, and if it finds it on the PC, it creates the backup.
Magisk modules management, enable / disable modules selectively, this comes in handy to disable suspect modules before an upgrade screenshot:
Name
Version
Description
Enabled / Disabled.
Display Android Platform Tools (SDK) version and warn / block if the version is old.
Install APK (an app) file from the computer onto the device.
Advanced features are hidden to keep the interface simple and easy to follow.
A lot of checks and validations for smooth operation.
Automatic check for program updates.
Package (Application) Manager, screenshot:
Disable (Freeze)
Enable
Uninstall
Install APK
Download APK
Multi-Select
Show Package Details.
Expert mode: (should only be turned on by experienced users). In addition to the basic features, you get:
The ability to flash custom ROM (with or without patching boot.img)
Option to flash to both slots.
Option to flash to inactive slot.
Options to disable verity and or verification.
Ability to change the active slot.
Ability to live boot to custom boot.img (temporary root).
Ability to boot to recovery.
Ability to flash custom image: boot, recovery, radio, kernel, ...
Ability to sideload an image.
Lock / Unlock bootloader.
Option to gain temporary root (good for testing or checking things out).
SOS Disable Magisk modules to get out of bootloop (experimental).
Prerequisites​
Android SDK Platform-Tools.
Android Pixel phone factory image or Android Pixel phone full OTA image.
Bootloader unlocked phone (see excellent guide links in credits section below).
Installation​PixelFlasher doesn't have to be installed, just double-click it and it'll start.
Check the releases section for downloads.
Supported platforms​
Windows
MacOSX
Linux
​Usage​Basic Mode
First thing to do is select Android™ Platform Tools, if Android™ Platform Tools is already in your PATH environment, the application will detect it and pre-populate it.
Otherwise you'd have to select where it is installed.
You can download the lastest Android™ Platform Tools by clicking the
next to it.
If you have multiple versions, you can select another version, although it is best to always use the most recent version (The selected version will be identified and displayed.)
Hit the Scan button to detect connected devices, the application will detect all connected devices
(in adb, fastboot, sideload, recovery modes) and populate the combo box (2).
Select your device from the list in the combo box. The following information about the connected device is displayed.
(1st field) Rooted devices will be identified with a checkmark ✓. Note: If you want PixelFlasher to detect root, or automatically use Magisk to patch boot.img, you need to grant root permissions to shell in Magisk.
(1st field) Non-Rooted devices will be identified with a ✗.
(1st field) Devices in fastboot mode will be identified with a ? (in fastboot mode, root status cannot be determined).
(2nd field) (adb), (f.b), (sid) or (rec) to indicate connection mode adb / fastboot / sideload / recovery.
(3rd field) Device ID.
(4th field) Device hardware.
(5th field) Current running firmware (in fastboot mode current firmware cannot be determined).
Next select the factory or full OTA zip file (don't unzip), the application will recognize the phone model from the image name and validate the SHA-256 checksum.
You can download factory images by clicking the
next to it. You can download full OTA images from here.
Note: Because both firmware package and full OTA are complete images, you can upgrade to any newer version without worrying about jumping versions (downgrades might work, but are not recommended).
Process the factory image. PixelFlasher will extract boot.img (or init_boot.img for Pixel 7 / 7 Pro) file from the factory image and populate it in the list below (5).
Select boot.img (or init_boot.img for Pixel 7 / 7 Pro) from the list, the selected file can be patched (6), or flashed (10).
Optional: Select this option if you want to patch the boot.img (or init_boot.img for Pixel 7 / 7 Pro) with Magisk. If Magisk is not already installed on your phone, PixelFlasher will install it for you. Your phone does not need to be rooted to create a patched file. This would be the typical choice for monthly updates.
This option will allow updating the phone without losing root (not even temporarily).
Note: See note above for granting root permissions to shell.
Whether the phone is rooted or not, the whole process is without any manual step.
If you want to flash (10) a patched boot.img (or init_boot.img for Pixel 7 / 7 Pro) select the newly added entry.
The following details are listed.
Indicates that the selection is patched.
SHA1 is (shortened for display only) sha1 of boot.img (or init_boot.img for Pixel 7 / 7 Pro)
Source SHA1 (shortened for display only) SHA1 of source boot.img extracted from the image (This should be the same as SHA1 of an unpatched boot.img)
Package Fingerprint is just the filename portion of the image (without the extension).
Patched with Magisk indicates the version of Magisk used to patch the image (if applicable).
Patched Method indicates what method PixelFlasher used to create a patch (possible options: root, app, uiautomator, manual)
Patched on Device indicates the device model that performed the patching. You should always use patched images that match the model of the device that it will be flashed on.
Date is the either the date the boot.img was extracted, or the date it was patched.
Package Path indicates the file from which boot.img (or init_boot.img for Pixel 7 / 7 Pro) was extracted.
Select the Flash Mode
If factory firmware is selected in step 4:
Keep Data: In this mode -w flag is removed from the flash scripts so that data is not wiped. This is commonly known as dirty flashing.
WIPE all data: As the text suggests, this will wipe your data, use it with caution!
If this mode is selected PixelFlasher will ask for confirmation during the flashing phase.
Dry Run: In this mode, the phone will reboot to bootloader, and then mimic the flash actions (i.e. reboot into bootloader) without actually flashing anything (it prints to the console the steps it would have performed if dry run was not chosen). This is handy for testing to check if the PixelFlasher properly is able to control fastboot commands.
If full OTA image is selected in step 4:
Full OTA: Will flash full OTA image in sideload mode. Features of this mode:
This will always flash to inactive slot similar to how OTA updates happen on the phone.
If something goes wrong during flashing, the active flash is uneffected and the phone boots back to active functional slot.
If you flash to both slots (ie flash twice in a row) then both slots would be bootable.
Your phone's bootloader does not have to be unlocked to be able to flash full OTA image (stock boot only).
Optional: Open Magisk Modules Manager and disable (uncheck) modules known to cause issues during upgrades (the below list has never caused issues for me, so I keep them enabled YMMV).
Flash Pixel Phone This is the final step, to actually flash the phone in the selected Flash Mode.
Note: Unlike the previous versions of the PixelFlasher, all the options are dynamic, i.e. depending on what you select before clicking the Flash button, there is no more concept of prepared package. PixelFlasher will first present you the selected options and ask for your confirmation if you want to proceed with flashing.
Expert Mode
To enable the export mode use the File Menu | Advanced Configuration and select Enable Advanced Options
In this mode the following additional options are exposed (green bounding boxes), below notes are more for enumeration than a guide, as they should be trivial and obvious to an expert.
Option to Change the Active Slot (the inactive slot is automatically selected).
Option to reboot to Recovery.
Options to Lock / Unlock bootloader, Option to disable Magisk modules when bootlooping.
Apply Custom ROM. This replaces the factory ROM image with the selected file.
PixelFlasher extracts boot.img from the ROM image and displays below for selection or patching. Please make sure to read the documentation of the chosen ROM, as each custom ROM instructions could be different.
To be clear, this is what PixelFlasher does internally when this mode is selected, please understand it, and don't use it if the selected ROM guide does not fit the bill. You've been warned!
Keeps stock bootloader and radio images.
Replaces the stock ROM image with the selected custom ROM image.
Flashes in the chosen Flash Mode just like a stock image, i.e. bootloader, custom ROM and radio images in the original order that they were in the stock firmware.
Patching boot.img can be performed if the option is selected. You can select any of the listed boot.img.
Flash Mode is similar to basic flash mode described above in step 7.
Custom Flash. select this to switch from flashing a Factory Image to flashing a single file.
Browse to select a a valid image file (.img or .zip). Or select a boot.img from the list above and click on the paste button to paste the selected boot.img into the file selection. Choose the dropdown to select image type.
boot (can be flashed to Live or boot) - Expected file type .img
bootloader - Expected file type .img
dtbo - Expected file type .img
product - Expected file type .img
radio - Expected file type .img
recovery - Expected file type .img
super_empty - Expected file type .img
system - Expected file type .img
system_ext - Expected file type .img
system_other - Expected file type .img
vbmeta - Expected file type .img
vbmeta_system - Expected file type .img
vbmeta_vendor - Expected file type .img
vendor - Expected file type .img
vendor_boot - Expected file type .img
vendor_dlkm (the device will be put into fastbootd mode during this operation) - Expected file type .img
image - Expected file type .zip
SIDELOAD - Expected file type .zip
Select the appropriate flash options. Note: For Tensor devices (Pixel 6, Pixel 6a, Pixel 6 Pro, Pixel 7, Pixel 7 Pro) When Flash to both slots option is selected, Pixelflasher flashes each slot individually to overcome a Google bug that fails with the option --slot=all
Credits​
First and foremost Magisk by John Wu which made rooting Pixel™ phones possible, without it none of this would have mattered.
Big thanks to [ryder203], [t-ryder] for his valuable ideas, feedback and testing. Your contributions are very much appreciated.
[Homeboy76] and [v0latyle] at xda for their excellent guides [here and here] on Pixel™ series phones. This program could not have been possible without their easy to follow guides.
I strongly encourage all beginners to follow those guides rather than use this program, it is important to understand the basic steps involved before diving into one click tools or advanced tasks.
Marcel Stör's nodemcu-pyflasher source code which jump started my introduction to wxPython and eventually this program.
JackMcKew for pyinstaller Github Actions.
Endless counts of xda members and their posts that tirelessly answer questions and share tools. Too many to enumerate.
Disclaimer​
Code:
*******************************************************************************
PLEASE DO YOUR PART AND READ / SEARCH / RESEARCH BEFORE USING THIS PROGRAM
AND/OR ATTEMPTING ANY MODIFICATIONS ON YOUR DEVICE.
THIS PROGRAM ASSUMES THAT YOU ALREADY KNOW HOW TO AND HAVE ALREADY UNLOCKED
YOUR BOOTLOADER, ALREADY ROOTED YOUR DEVICE, AND KNOW HOW TO USE ANDROID SDK
PLATFORM-TOOLS, ETC.
THIS TOOL IS SIMPLY MY QUICK WAY OF UPDATING THE FIRMWARE WHILE ROOTED WITH
MAGISK, WITHOUT LOSING DATA / REQUIRING A WIPE.
MODIFYING YOUR DEVICE COMES WITH INHERENT RISKS, AND IT'S NOT MY RESPONSIBILITY
IF YOU LOSE YOUR DATA OR BRICK YOUR DEVICE. THE TOOL I SHARE HAVE WORKED FOR ME,
BUT THAT DOESN'T MEAN THAT YOU MAY NOT RUN INTO PROBLEMS. **BACKUP YOUR DATA.**
*******************************************************************************
No Donation
I've been asked quite few times about donation, (here, here ... just to list a few).
I'll put it here so that my stance is clear.
This program will remain totally free, ad free, even donation free, it's my way to give a little back to the community that has given me years of support and joy.
You can contribute by helping the next newcomer to learn the ropes and navigate through the maze of information.
Device specific support threads:
Google Tablet
Google Pixel 7 Pro
Google Pixel 7
Google Pixel 7a
Google Pixel 6 Pro
Google Pixel 6
Google Pixel 6a
Google Pixel 5
Troubleshooting:
See this post.
Generate Sanitized support.zip file (File Menu) and submit that with your report.
Latest Release:
June 23, 2023 v5.3.3.0 release
#79 Bug-fix: Package Manager column stays unsorted when filtered.
Warn users that extract the contents of firmware and use the image inside as firmware, which is no good.
Warn users of Android Platform-Tools 34.0.3 about potential issues and suggest using 33.0.3
Package manager bug fixes and improvements.
Spoiler: Older Releases
June 21, 2023 v5.3.2.0 release
Added support for Pixel tablet (tangorpro).
For future devices, fixed a bug to auto detect init_boot partition and flash init_boot instead of boot even if the device is newer than the PixelFlasher and is not in PixelFlasher's list.
Disable Patch buttons if device is not in adb mode.
Reboot to system after lock / unlock bootloader if No Reboot option is not selected.
Increase sleep after reboots to various modes to assure that slow devices have time to be detected.
Updated Readme and screenshots.
Minor improvements and bug fixes.
June 16, 2023 v5.3.1.2 release
Set Active slot now automatically reboots to system after setting the slot, unless "No Reboot" option is selected.
Update Ubuntu 20.04 build to be aligned to the same methods that Ubuntu 22.04 build uses.
Improve confidence value calculation when comparing compressed sha1 against normal sha1 to account for shift.
Do not abort when the sha1 comparison confidence value is low, leave the choice to the user.
Update Windows builds (both) as wxPython wheel path changed, rely on a more persistent URL instead.
June 06, 2023 v5.3.0.0 release
Added Github Action build on Windows 2019 with Python 3.8 to support Windows 7.
PixelFlasher now supports loading and processing Samsung Firmware (at least my Samsung's ), it would extract AP, BL, CSC, Home_CSC ... and then extract boot.img.lz4 from AP and unpack the lz4.
When creating a patch from the set boot.img, PixelFlasher will also create boot.tar to be flashed as AP to retain root.
If there was a way to pre-load odin with the extracted files, flashing could also be automated.
I know, what does PixelFlasher have anything to do with Samsung firmware? I added it for my own use.
June 03, 2023 v5.2.0.2 release
#76 Get a better build with Github action to support more Linux based platforms (no functionality changes).
June 01, 2023 v5.2.0.1 release
Bug fix #78 Error when opening a shell console on Linux / Mac
June 01, 2023 v5.2.0.0 release
Update build workflows
Add payload_dumper functionality to PixelFlasher to handle OTA files, thanks to vm03 for sharing source code.
Added rules engine code to better / easier management of the UI widgets enabling / disabling.
Auto detect Pixel OTA image and extract boot / init_boot / vbmeta for patching and flashing.
Add Full OTA mode, which flashes full OTA image, while optionally retaining root, and best of all, for A/B devices, both slots are bootable, you can even have one rooted and one not.
May 25, 2023 v5.1.0.2 release
Skip testing fastbootd in dry run mode if Android platform tools version is > 34, is it no longer supports fastbootd (at least 34.0.3 does not)
v5.1.0.1 release notes:
Exception handling when device is not in the listed Pixel devices.
v5.1.0.0 release notes:
Support for Android platform tools version 34.0.3, and automatic setting of ANDROID_PRODUCT_OUT environment to workaround a regression introduced in version 34.0.3
Temp workaround to avoid selecting root method patching when Magisk Delta is detected.
Nicer looking / clearer manual patching dialog.
When a Pixel device is selected, PixelFlasher now displays additional information about the device's support.
Things like: Device name, version end date, security update end date, Android version, name, codename, release date, end date.
Boot image list box now displays the applied PixelFlasher patch method.
Auto-resize boot image list box columns for better readability.
Precautionary cleanup up of leftover files on the phone in case root detection software keys on presence of such files.
#77 added attrict3 to requirements.txt in case it helps with certain builds (it shouldn't be needed).
Bug fixes and improvements.
May 21, 2023 v5.0.1.0 release
Added workflow for building on MacOS 13.
ComboBox behavior on Mac is different than Windows, make adjustments.
Ability to set PixelFlasher working directory (no UI).
Speed up startup.
Popup device selection after Wifi adb connect.
Clear Device list after adb kill-server.
May 19, 2023 v5.0.0.1 release
#75 Bug fix, when device is in bootloader, type error.https://github.com/badabing2005/PixelFlasher/issues/74
#74 Added Support for Pixel 7a (lynx)
Configuration option to define the file manager to use on Linux (default: Nautilus)
Configuration option to define the terminal emulator to use on Linux (default: gnome-terminal).
Support for additional types of Factory / ROM files.
Checksum validation of firmware / ROM files (if part of the checksum is in the name, otherwise just display)
New advanced option, ability to choose the patching method (with recommendations).
Added Recovery Image patching option.
Advanced option to enable the use of busybox shell (default off).
Auto detect firmware / rom with init_boot and use init_boot for creating patches, this way future firmware don't have to be manually added to PixelFlasher.
Auto detect devices with init_boot and use init_boot for flashing, this way future devices don't have to be manually added to PixelFlasher.
Auto-popup the detected devices dropdown after a scan, to make it obvious to select that next. (Thanks @pndwal for the idea)
Show SHA-256 of adb and fastboot binaries, as Google keeps on messing up Android Platform-tools, it's necessary to whitelist / blacklist specific binaries.
#66, when checking the patched files internal SHA1, provide a confidence rating.
Check, valdiate and warn if necessary when flashing an image patched with Magisk Zygote64_32, as there are wipe implications, provide links to documentation.
Added fastbootd testing to Dry Run.
Added Github actions to build all the targets on Github.
Code refactoring, bug fixes and improvements
Apr 30, 2023 v4.10.0 release
Added no reboot option, with this option selected, after flashing is completed, the phone will not reboot to system, giving a chance to take other actions before reboot.
Added built-in file editor, you can now edit the flash script before running, in case you want to customize it (needless to say, should only be used if you know what you're doing)
Added a button to open an explorer in working directory, useful for people who want full control, perform manual actions by following guides, but using PixelFlasher to do the prep work.
Made the Firmware and Rom Process buttons, full with text. It wasn't obvious for some.
Detect and handle Magisk Zygote64_32 automatically, thanks to @Namelesswonder for adding the necessary marker.
Apr 27, 2023 v4.9.0 release
Added support for installing / creating patch with @Namelesswonder Magisk zygisk64_32 (stable, beta, canary, debug versions).
Support for recognizing Lineage firmware and extracting / patching boot.
Display 32 bit capabilities of the device.
Utilize New Magisk 26.x flags as needed (patch support for more devices).
Disable Flash to Inactive slot and Flash to both slots button if the device is not A/B device.
Partition Manager can now list the partitions even if the devices is not rooted.
Added Custom Patch button, which allows selecting a boot file from disk and getting a patched file back to save to disk (all on the PC).
Added Open Folder button to open a file browser to the directory of the selected boot image.
Added Reboot to Download button (Odin mode).
Added Reboot to Safe Mode button.
Storage reorganization, store patched files next to the stock file, and set the patch name to clearly indicate both source and target sha1.
Various additional validation checks.
Bug fixes and other improvements.
Apr 10, 2023 v4.8.2 release
Include additional Magisk versions in the check to display a warning dialog when the user has installed one of the known versions to have issues.
Display USNF related flag values when selecting a device.
Check the downloaded Google firmware checksum to match the one in the filename and warn if it does not.
Link to download Google USB Driver is added in the help menu.
Added more visual troubleshooting event flows.
Install APK now defaults to Non Market.
Added Install APK cancel option.
You can now select an app in package manager and right click to launch it on the phone.
Minor bug fixes and other improvements.
Mar 14, 2023 v4.8.1 release
#47 Feature request: Added partition manager - Allows to erase partitions, and / or dump / backup partitions to PC.
Added more visual troubleshooting event flows.
Added warning message for when Android platform tools versions 34.0.0 and 34.0.1 are used.
Improved support.zip redactions.
Added Support.Zip generator button on the Main screen.
APK Install option can now set the ownership to Play Store Market (useful for Android Auto)
Check and warn the user when Magisk Canary versions 25207, 25208, 25209 and 25210 are being used.
Bug fixes and other improvements.
Feb 12, 2023 v4.8.0 release
#50 Support for Android 14 Developer Preview for Pixel 7 and Pixel 7 Pro
#48 Do not allow patching with hidden Magisk (stub) and adb shell not granted root rights.
Block using Android Platform Tools version 34.0.0 and display a warning because it has known issues
Disable Magisk Backup Manager button if root access to adb shell is not granted.
Button to Open adb shell connected to the selected device.
Work in Progress: Generate graphical activity log to visualize the activity and speed up troubleshooting.
Feb 05, 2023 v4.7.0 release
Added Magisk Backup Manager:
List all Magisk backups currently on the device.
Highlight the one that is backup of the current installed version.
Delete backups.
Manually add backup from PC.
Auto Backup: PixelFlasher figures out what needs to be backed up, and if it finds it on the PC, it creates the backup.
Added Reset on Magisk Manager package name setting to reset to default: com.topjohnwu.magisk
Linux / Mac build.sh now switches to the PixelFlasher folder if it is run from elsewhere.
Magisk installer improvements:
When installing Magisk Alpha or Delta, PixelFlasher updates the configuration to match the package name to the respective Magisk package.
Magisk installer window displays the package name.
You can now copy to clipboard, the download URL and package ID.
Magisk Manager columns are now wider for better readability.
Package Manager improvements:
Added Search / Filter option.
Show count of filtered packages.
Application Name (label column).
"Get Application Names" Button to resolve all package application names. This is a slow process, hence PixelFlasher caches them.
Button to download (pull) APKs from the device. (Multiple downloads in one shot is also supported).
Other under the hood improvements.
When selecting a firmware or ROM file, sha256 is printed to console and displayed on hover, to validate if it matches the published sha256.
More verbose logging that helps with troubleshooting.
Double click on "ADB Connected Devices" to invoke adb kill-server which is handy at times, specially when dealing with Wifi ADB.
Moved existing links under Help Menu | Links, and added few more handy links.
Added timestamp to support.zip filename.
On request, spinning cursor with text "Please be patient ..." is now displayed in red.
Flashing to inactive slot is now in basic configuration instead of advanced configuration.
Preparation work for version 5.0 DB improvements.
#40 Handle locale related exceptions which were causing PixelFlasher to not launch on some Windows 11 systems.
Add the ability to download and install a special Magisk version that has modules loading intentionally disabled. Required to get out of bootloops and manage to disable modules.
Credit to gecowa6967 at XDA.
Dec 05, 2022 v4.6.0 release
Added single click button to easily flash just the boot/init_boot (stock or patched) to the phone.
#39 Display Flash Option changes in the console, and allow flashing to inactive slot in basic mode.
#39 Do the Magisk backup only when rooted.
Decouple OTA sideload from needing factory image.
Other minor improvements.
Dec 04, 2022 v4.5.0 release
New look (Artwork / Icons), compliments of @t-ryder (thank you), based on Material design icons.
New Feature: Package Manager, Install / Uninstall / Freeze (disable) / Unfreeze (enable) packages even system ones (root not required). Handy with Wifi ADB.
Use latest Python updated packages.
Ubuntu 22.04 support.
Miscellaneous improvements.
Nov 09, 2022 v4.4.0 release
New feature: Font and Font size should be configurable by the user #33
New feature: Added WiFi-ADB connect / disconnect button. Left click to connect, Right click to disconnect.
Handy to access a device remotely.
Note: This only works in adb mode, so no fastboot or flashing features work for remote devices, but for patching / installing apks, managing Magisk modules it works well (basically anything that is done in adb).
I personally use this to test patching on remote devices, and also use it to access / install apps to my watch.
Ground work for future features: Get installed Package list, and list which are disabled, enable / disable / uninstall apps. (Will be available in future release).
Move Flash Option Flash to inactive slot to Basic mode from Advanced mode..
Minor UI Improvements
If Magisk does not create a backup attempt to trigger Magisk to create one.
Update readme to include Pixel 7 / 7P specific info.
Oct 27, 2022 v4.3.1.0 release
Bug Fix: Magisk modules not listed on MacOS / Linux
Oct 16, 2022 v4.3.0.1 release
Bug fix: #30 Error during firmware processing file extraction phase.
PixelFlasher-Linux is now labeled PixelFlasher-Ubuntu (It is built on Ubuntu which is not compatible with all Linux flavors. Even though PixelFlasher-Kali is more compatible, it is still not a one size fits all solution.)
Oct 15, 2022 v4.3.0 release
New: You can now download and install alpha and delta Magisk versions in addition to the official stable, beta, canary and debug versions.
Bug fix: Generating support.zip file was modifying the main db file unnecessarily.
Bug fix: When patching with Magisk Manager the version of Magisk Manager was not being displayed in the boot images table.
Bug fix: MacOS downloaded Magisk had space in the file path, which was causing failed installation.
Oct 13, 2022 v4.2.0 pre-release
Support for Pixel 7, 7p (init_boot extraction and patching / flashing).
Added Pixel 7 / 7p partitions flashing options to custom flash.
Improved patching process using boot_patch, add more patch file validations.
Check for Magisk backup and trigger Magisk to backup if missing.
Add more logging messages for troubleshooting.
Code optimization / improvements.
Bug Fix #28 Error when opening download link without a device selected.
Added set_version script to easily set the product version.
Print path of the selected boot to console, for easy copy / paste.
Oct 05, 2022 v4.1.4 release
Rooted Magisk patching will now automatically back up stock-boot.img (more to come).
Bug Fix #27, handle version exception.
Oct 05, 2022 v4.1.3 release
Bug Fix: Extract Magisk Manager version properly.
Oct 04, 2022 v4.1.2 release
include busybox binaries for different Android architectures (arm64-v8a, armeabi-v7a, x86_64, x86)
don't use hidden Magisk for patching, as it is a stub only.
Oct 03, 2022 v4.1.1. release
Bug Fix: Bundle busybox with PixelFlasher to be used for unzipping Magisk.
Bug Fix #25, use the Magisk Manager version number instead of Rooted Magisk version number.
Cosmetic changes and a bit more logging.
Oct 03, 2022 v4.1.0 pre-release
Patching is now fully automatic with or without root.
PixelFlasher uses installed Magisk Manager binaries to create a patch (root binaries are only used if Magisk Manager is not available / accessible)
UIAutomator no longer necessary, neither asking the user to manually patch and click ok when done.
Added an option to set a hidden Magisk package name so that PixelFlasher can find the Magisk and use it, the user still has a choice to use root binaries.
Speed improvements for device property reading.
Speed improvements for Magisk modules reading.
NOTICE:
I'm marking this release as pre-release because I just found out that unzip is not normally available on the phone, which this new patching mechanism uses.
On my test phones they were available.
Unless you have unzip on your phone, you should avoid using this version.
Sorry about this oversight.
Sep 25, 2022 v4.0.0 pre-release
New Feature: On supported devices, where device is not yet rooted (or adb shell su not allowed), an option to control the Magisk Manager GUI (drive UI) to programmatically control the app through UIAutomator and create a patched boot.img
See Patching flow chart for details.
New Feature: Detect if Magisk Manager is at a higher version than installed Magisk, warn the user of a potential rare corner case and offer a choice of patching method.
New Feature: Temporary Root, when flashing if you choose this option, the phone will be flashed with unpatched boot.img, but Live boot to patched boot.img to provide a temporary root.
New Feature: Warn the user to flash both bootloader slots if their device is a Tensor device (Pixel 6, Pixel 6a, Pixel 6 Pro), if current version of OS is lower than Android 13.
New Feature: Flash to inactive slot. Unlike OTA flashing factory image flashing is always done on the current active slot, with this option selected, PixelFlasher will write to inactive slot. This allows one to revert to current working state in case anything goes wrong. This feature combined with Temporary Flash provides best method to test a new firmware without risking losing current working setup.
Note: You should avoid this option if you are on a Tensor device and are upgrading from Android 12 to Android 13 (see the previous feature).
New Feature: Detect and operate on devices that are in Sideload or Recovery mode.
New spinner to indicate PixelFlasher activity.
Renamed Reload button to Scan, to better reflect the button's function. After a scan print the count of devices found.
PixelFlasher previously used MD5 to uniquely identify boot images (patched or otherwise), with version 4.0.0 PixelFlasher now uses SHA1 instead of MD5.
This has no bearing on the functionality, it just better aligns with Magisk way of identifying and tagging boot images.
PixelFlasher now extracts the embedded SHA1 of a Magisk Patched images (only available in newer devices) and assures that it matches the source boot.img's SHA1.
This is just an extra validation.
Code cleanup / refactoring, adding more validations and exception handling.
Print debug details when encountering non compliant Magisk modules.
Firmware link now takes you to the device's download page instead of just the general download page.
To better reflect the file details, transferred and stored boot.img files are now suffixed by their shortened SHA1, while magisk_patched.img files are now suffixed by shortened SHA1 of their source boot.img.
Allow sideload even if bootloader is locked.
Sep 04, 2022 v3.7.0 release
New Feature: Install Magisk into the phone, PixelFlasher displays information about the latest available Magisk versions (stable, beta, canary, debug) and offers the choice to install a selection.
New Feature: Install compatible apk file onto the device from PixelFlasher menu.
Check Android Platform Tools version and warn if it is old.
Block flashing when stock flash_all.bat file is tampered with.
Don't bother with flashing if bootloader is locked.
More validations and exceptions handling.
Improved logging.
Aug 24, 2022 v3.6.0 release
When a device is selected, the Bootloader version is displayed. (Useful for Pixel 6* devices with ARB). Works in adb and fastboot modes.
Added a button to dump full device info (useful for troubleshooting). Works in adb and fastboot modes.
Improved tooltips.
Aug 21, 2022 v3.5.1 release
Fix: Incorrect warning is displayed when Flash on both slots is selected.
The contents of the generated flash-phone.bat file will now be displayed on console even if verbose option is not selected, this helps the user know exactly what commands would be executed before clicking the OK button.
Aug 19, 2022 v3.5.0 release
Add support for fastboot --force flag (to help fix partition issues, caution it will wipe data) see this.
Split image flashing to all slots into two separate single slot flashing to bypass a Google bug on Pixel 6* devices, see this by @Namelesswonder
July 18, 2022 v3.4.0 release
Improvements to the boot extraction / categorization.
Live boot option directly from the selected boot.img UI, even though it was possible to live boot previously through the advanced menu, it is now super easy to select a boot.img (patched or otherwise) and Live boot to that image with a click of a button.
Added warning message in the splash screen and the help about menu, to inform users not to fall for opportunists who are claiming to be the developer of PixelFlasher with a donate button next to the download link. Reminder to all, this program will always be free, ad free, donation free; you should not be solicited for any form of payment.
June 26, 2022 v3.3.5 release
Fix Lock / Unlock bootloader buttons being reversed.
June 12, 2022 v3.3.4 release
Bug fix on MacOS / Linux
Improved notice message about Fastboot process.
June 06, 2022 v3.3.3 release
Bug Fix: When choosing custom ROM, the ROM file was not being copied to the package directory.
Update Documentation and screenshots.
May 25, 2022 v3.3.2 release
Handle system codepage.
Add configurable codepage setting in advanced settings to be able to override the value.
Selected boot color is now blue instead of red to avoid thinking that it has a problem.
After Flashing, clear connected device to avoid using device in case it is not yet ready.
Fix: Paste boot button should be hidden in basic mode.
Always print md5 of Magisk_patched (previously only verbose mode displayed it).
Wait 10 seconds instead of 5 seconds after reboot before issuing next command.
May 21, 2022 v3.3.1 release
Change encoding from utf8 to ISO-8859-1
Button to paste the currently selected boot.img into custom flash file selection.
Several Mac version improvements, thanks to rhetorican for reporting and testing.
UI improvements
Fix: On low resolution screens, the application startup position is high enough to clip the top part.
Fix: On low resolution screens, the patch icon is too large and dis-proportional to the rest of the UI
Better dark mode handling on Mac / Linux
Increase the wait during flashing to account for slower devices.
Further improvements on support.zip redaction process.
Other minor fixes and additional validations.
May 05, 2022 v3.3.0 release
MacOS build.
Handle Magisk module.prop with comments.
Exception handling on magisk module errors.
boot.img management improvements.
Removed old Powershell script.
More checks and validations.
support.zip now includes sanitized PixelFlasher.db
May 04, 2022 v3.2.0 release
Help menu option to create support.zip file, which sanitizes (redacts user names and device IDs) of the log files.
This makes it super easy to provide support.zip file when something goes wrong and need to report it.
In boot management, delete firmware cache of the selected boot.img if it is the last boot.img used from that firmware.
Handle space characters in username.
Console is now responsive when processing firmware file.
More checks and validations.
Update readme with instructions on how to build PixelFlasher on MacOS.
May 02, 2022 v3.1.1 release
Handle UTF-8 Encoding.
May 02, 2022 v3.1.0 release
Fixed a missing step in the final flashing of boot.img
Decoupled Firmware / ROM processing from selecting the files, now we have a separate button to process, makes it clearer and does not give the impression that selecting the file is hanging.
Added splash screen (v3.0.1), the GUI refresh hiccup is gone.
Made the boot.img management delete function more extensive.
I flashed my phone with the May drop using this version.
April 30, 2022 v3.0.0 release
New workflow, no more package preparation, select options and flash all dynamic.
boot.img caching and management UI with details about the state of boot.img files.
Faster as there is no more need to zip a package.
Other optimizations and improvements.
Update documentation.
April 20, 2022 v2.4.1 release
Bug Fixes: Error message during flashing, introduced by code reshuffle.
It turns out that some Magisk Modules don't set the id, which was expected to be present, which caused Magisk module management screen not to display.
April 19, 2022 v2.4.0 release
Magisk modules management, enable / disable modules selectively, this comes in handy to disable suspect modules before an upgrade.
Autoscroll the console.
Code cleanup.
April 17, 2022 v2.3.0 release
Optional automatic check for updates feature.
Added help menu links to:
- Report an issue
- Feature Request
- PixelFlasher Project Page
- PixelFlasher Community (Forum)
- Homeboy76's Guide
- V0latyle's Guide
- Open Configuration Folder
- Check for New Version
Icons for menu items.
Link to download Pixel Firmware.
Link to download Android Platform Tools.
Unlock Bootloader.
Lock Bootloader.
SOS (experimental) - disable Magisk modules to get out of bootloop.
Additional flashing options:
- product
- system
- system_ext
- system_other
- vbmeta_system
- vbmeta_vendor
Added sideload flashing option.
Updated documentation.
Further improved console messages for troubleshooting.
Linux build using Github Actions.
Manual build for Kali Linux.
April 11, 2022 v2.2.2 release
Linux support.
Remember last window position.
List Magisk modules, when Magisk is detected.
Added fastboot verbose option.
Added more checks and validations.
Added more details when errors are encountered.
Cleaner message box (better formatting).
Notice to the user in case fastboot drivers are not setup properly.
More plumbing work for the new upcoming workflow.
Add notes on how to build the Linux version.
April 06, 2022 v2.1.0 release
Setup dedicated profile directory.
Put logs in the profile directory and maintain log history.
Plumbing for Linux support (just the flashing part is left to do).
Plumbing for new workflow.
Bugfix to handle name conflict in ROM filename.
Various minor improvements.
Update documentation.
April 03, 2022 v2.0.1.0-pre release.
Major refactoring
Added Advanced (Expert) mode UI.
Basic mode keeps UI simple and hides expert features.
Support for setting active slot.
Reboot options (recovery, system, bootloader)
Moved custom ROM options to expert mode.
Added custom flashing to expert mode, can now flash to live (temporary root), or custom flash any image to any partition.
Moved flashing to both slots, disabling verity / verification to expert mode.
Many other improvements, validations and checks.
Updated documentation.
March 24, 2022 v1.2.0.1-alpha release.
Added Advanced Configuration menu which unlocks advanced features such as:
- Flashing to both slots
- Disabling Verity
- Disabling Verification
- (More features to come)
The UI will now display the chosen Android Platform Tool's version.
Added an option to toggle verbose console output (help troubleshooting, more verbosity to come).
Stability fixes.
March 22, 2022 v1.1.5-alpha release.
Some users were having issues with 7zip, add 7z.dll to the bundle.
Add fallback mechanism to use python libraries for unzipping when 7zip fails (it would be slower)
March 22, 2022 v1.1.4-alpha release.
Bug Fix: Handle space characters in paths.
March 17, 2022 v1.1.3-alpha release.
Visual indicator if the phone is root and Magisk Tools is found.
Bug Fix: KeyError 'flash_vbmeta'
March 17, 2022 v1.1.0-alpha release.
Changelog
10x speed improvement for full package creation, down from 180 seconds to 18 seconds.
Bug Fix: When using patch option with custom ROM, the boot.img of the custom ROM is now correctly patched.
Add support for flashing vbmeta (experimental) with or without disabling verity and or verification. (This is currently only supported through preferences file)
Reserved
Is there an option to disable Verity and verification just curious
a g bell said:
Is there an option to disable Verity and verification just curious
Click to expand...
Click to collapse
Very easy to add that, curious what would be the use case?
I'm currently setting KEEPVERITY=true and KEEPFORCEENCRYPT=true
I'm not sure what you mean by disable verification though.
I have recently had problems when flashing factory images. They flash fine for me but will not boot leaving the message your device is corrupted bla bla bla disabling Verity and verification in FB fixes the issue they boot straight up.
I would find the option useful
It's this in fastboot: fastboot flash vbmeta --disable-verity --disable-verification vbmeta.img
Of course the using vbmeta.img from what your flashing
a g bell said:
I have recently had problems when flashing factory images. They flash fine for me but will not boot leaving the message your device is corrupted bla bla bla disabling Verity and verification in FB fixes the issue they boot straight up.
I would find the option useful
Click to expand...
Click to collapse
I know how to disable Verity, but how do you disable verification? you know the flag for it?
badabing2003 said:
I know how to disable Verity, but how do you disable verification? you know the flag for it?
Click to expand...
Click to collapse
Sorry l just use fastboot commands
a g bell said:
It's this in fastboot: fastboot flash vbmeta --disable-verity --disable-verification vbmeta.img
Of course the using vbmeta.img from what your flashing
Click to expand...
Click to collapse
Just so it is clear.
This would be the normal steps for the latest oriole image
which flash-all does (-w removed to keep data)
Code:
fastboot flash bootloader bootloader-oriole-slider-1.0-8062051.img
fastboot reboot-bootloader
fastboot flash radio radio-oriole-g5123b-93368-211225-b-8029609.img
fastboot reboot-bootloader
fastboot update image-oriole-sq1d.220205.004.zip
Do you extract vbmeta from image-oriole-sq1d.220205.004.zip and then run
Code:
fastboot flash vbmeta --disable-verity --disable-verification vbmeta.img
as a last step?
or do you just do
Code:
fastboot update --disable-verity --disable-verification image-oriole-sq1d.220205.004.zip
as the last step of flash-all
The two options I gave you are Magisk patching options, so you leave those as default? which would be KEEPVERITY=true and KEEPFORCEENCRYPT=true (That is what the app does)
badabing2003 said:
Just so it is clear.
This would be the normal steps for the latest oriole image
which flash-all does (-w removed to keep data)
Code:
fastboot flash bootloader bootloader-oriole-slider-1.0-8062051.img
fastboot reboot-bootloader
fastboot flash radio radio-oriole-g5123b-93368-211225-b-8029609.img
fastboot reboot-bootloader
fastboot update image-oriole-sq1d.220205.004.zip
Do you extract vbmeta from image-oriole-sq1d.220205.004.zip and then run
Code:
fastboot flash vbmeta --disable-verity --disable-verification vbmeta.img
as a last step?
or do you just do
Code:
fastboot update --disable-verity --disable-verification image-oriole-sq1d.220205.004.zip
as the last step of flash-all
The two options I gave you are Magisk patching options, so you leave those as default? which would be KEEPVERITY=true and KEEPFORCEENCRYPT=true (That is what the app does)
Click to expand...
Click to collapse
l copied the vbmeta.img then flashed with the disable commands added that was after l had the flashed the ROM of course
badabing2003 said:
Just so it is clear.
This would be the normal steps for the latest oriole image
which flash-all does (-w removed to keep data)
Code:
fastboot flash bootloader bootloader-oriole-slider-1.0-8062051.img
fastboot reboot-bootloader
fastboot flash radio radio-oriole-g5123b-93368-211225-b-8029609.img
fastboot reboot-bootloader
fastboot update image-oriole-sq1d.220205.004.zip
Do you extract vbmeta from image-oriole-sq1d.220205.004.zip and then run
Code:
fastboot flash vbmeta --disable-verity --disable-verification vbmeta.img
as a last step?
or do you just do
Code:
fastboot update --disable-verity --disable-verification image-oriole-sq1d.220205.004.zip
as the last step of flash-all
The two options I gave you are Magisk patching options, so you leave those as default? which would be KEEPVERITY=true and KEEPFORCEENCRYPT=true (That is what the app does)
Click to expand...
Click to collapse
I would not worry about changing anything on this topic. Your script is using a full factory image and Magisk v24. This extra step was fixed when Magisk v24 was released...
Only the Ota updates are affected and need to be altered.
Basically if you stick to the full factory image and Magisk v24, you can forget about the extras steps.
Edit: this all was discuss in the Pixel 6 rooting guides.
vandyman said:
I would not worry about changing anything on this topic. Your script is using a full factory image and Magisk v24. This extra step was fixed when Magisk v24 was released...
Only the Ota updates are affected and need to be altered.
Basically if you stick to the full factory image and Magisk v24, you can forget about the extras steps.
Edit: this all was discuss in the Pixel 6 rooting guides.
Click to expand...
Click to collapse
Yes but l am not referring to rooting l am referring to downloading and flashing a factory then facing a Verity issue causing the flashed ROM to not boot. Nothing to do with root access.
vandyman said:
I would not worry about changing anything on this topic. Your script is using a full factory image and Magisk v24. This extra step was fixed when Magisk v24 was released...
Click to expand...
Click to collapse
It' true that my tool uses the factory image, but I don't have control over the Magisk version, it uses whatever is installed on the phone.
a g bell said:
Yes but l am not referring to rooting l am referring to downloading and flashing a factory then facing a Verity issue causing the flashed ROM to not boot. Nothing to do with root access.
Click to expand...
Click to collapse
You can use notepad++ and open your flash=all.bat file. Add your own fastboot script at the end.
The verify disable method was only needed to root back in October. There was no reason otherwise to change the flash-all script at all if you were not rooting. I must have overlooked something since then!
Is there a link on this that is new?
a g bell said:
l copied the vbmeta.img then flashed with the disable commands added that was after l had the flashed the ROM of course
Click to expand...
Click to collapse
doesn't the step `fastboot update image-oriole-sq1d.220205.004.zip` reboot to normal when it completes?
So you try to go back to fastboot mode and then flash the vbmeta with disabling options?
That's going to be tricky to automate, if I add the step after the ROM update, it will never get there.
I created a feature branch to add this (no UI, just through preferences file, this way it keeps it away from normal users, besides it complicates the UI and confuses people)
After finishing it all, I realized that the phone will not be in the bootloader mode.
I know that when the Pixel 6 / Pro first came out (Before Magisk handled it), we had to disable verity and verification, but those options were added to the ROM update line, we didn't had to flash vbmeta separately, I wonder if you do that would it work.
Actually like @vandyman why do you still need to do this if you're using the latest magisk?
Something is different on your phone?
@badabing2003 It would be great to have an opthio to disable Verity and verification flags via this UI. It could be an advanced user choice just in case.
It is true that with latest Magisk root, flags are not a matte anymore, but some times the third-party kerenl or other roms will make the phone not boot leaving the message your device is corrupted...
badabing2003 said:
doesn't the step `fastboot update image-oriole-sq1d.220205.004.zip` reboot to normal when it completes?
So you try to go back to fastboot mode and then flash the vbmeta with disabling options?
That's going to be tricky to automate, if I add the step after the ROM update, it will never get there.
I created a feature branch to add this (no UI, just through preferences file, this way it keeps it away from normal users, besides it complicates the UI and confuses people)
After finishing it all, I realized that the phone will not be in the bootloader mode.
I know that when the Pixel 6 / Pro first came out (Before Magisk handled it), we had to disable verity and verification, but those options were added to the ROM update line, we didn't had to flash vbmeta separately, I wonder if you do that would it work.
Actually like @vandyman why do you still need to do this if you're using the latest magisk?
Something is different on your phone?
Click to expand...
Click to collapse
Everytime l downloaded and flashed a factory image it wouldn't boot and gave me the message your phone is corrupted. So l tried to fix it this issue and disabling Verity and verification they way l posted worked and the flashed factory image then booted.So l thought this would be a useful option for you to add.
a g bell said:
Everytime l downloaded and flashed a factory image it wouldn't boot and gave me the message your phone is corrupted. So l tried to fix it this issue and disabling Verity and verification they way l posted worked and the flashed factory image then booted.So l thought this would be a useful option for you to add.
Click to expand...
Click to collapse
Yeah, but that was not my question, I hear you, you have a legitimate need, but I need to know an answer to this
Which you quoted but did not answer.
I'm also curious if you're using the latest Magisk 24301 because that problem should have been addressed by Magisk.
@bush911
Same concern, if the device is not in bootloader mode after applying the ROM, and the device is boot looping, and you have to manually get the phone out of boot loop and reboot to bootloader, then adding the option is kind of moot.
As for UI, is it really necessary? once you add it to the preferences file, it will remember and use it all the time.
badabing2003 said:
Yeah, but that was not my question, I hear you, you have a legitimate need, but I need to know an answer to this
Which you quoted but did not answer.
I'm also curious if you're using the latest Magisk 24301 because that problem should have been addressed by Magisk.
@bush911
Same concern, if the device is not in bootloader mode after applying the ROM, and the device is boot looping, and you have to manually get the phone out of boot loop and reboot to bootloader, then adding the option is kind of moot.
As for UI, is it really necessary? once you add it to the preferences file, it will remember and use it all the time.
Click to expand...
Click to collapse
Yeah sorry my friend using the XDA app it's a nightmaret anyway it completes the flash then just hangs on the your device is corrupted screen. I have been using the flash all .bat as well to flash.

[ROM][12][UNOFFICIAL][redfin] Evolution-X 20220705.003.a1

I ported this fantastic ROM to the Pixel 5. It's been my daily driver for 3 weeks or so now with no issues so I thought I'd share.
I am not affiliated with Evolution-X in any way. All credit goes to them.
Evolution X #KeepEvolving
#KeepEvolving!
evolution-x.org
NOTES
I did make a few tweaks to the source code while making this port.
-signed the final build with my own private keys
-added some additional statusbar icons
-tweaked the kernel to allow wireguard support and I added some recommendations from the Kali Linux project. You will see the kernel name includeS my tag "PsybernetiQ"
-the notification header feature does not work at the moment; I started to add this feature back from Android11 ("elle") a few days ago and am not finished yet. It doesn't seem to break anything being included in this state, so it's there but you can't actually add any images (yet).
-added Bauhaus93 font
-added support for BromiteWebview. The public key for this webview was added.
-you will get an error upon successfully booting that adaptive connectivity isn't working...just click "ok" or whatever. It doesn't seem to affect anything. IIRC I've seen this in other ROMs.
-if you get a message at around 47% of the sideload install process regarding signature, you can git "y'" to ignore and the build will continue as expected. The % increments should continue past 47% all the way to 100% (or 94% or something like that, the last few % might got by too fast to see.) It should say "transfer x 2.00" on your screen when it's complete. Hit back once or twice, then reboot to system.
-the majority of the device and kernel code I borrowed from LineageOS.
Credits
-Evolution-X (obviously)
-GrapheneOS
-ProtonAOSP/kdrag0n <---this is the best
-LineageOS
built on Linux Mint laptop. Shoutout to Android Studio, Meld, Sublime, Inkscape, gnome terminal, LibreOffice Calc
Instructions
fastboot flash --slot all vendor_boot vendor_boot.img
fastboot flash --slot all boot boot.img
fastboot reboot fastboot
from there head over to recovery, and sideload the ota.
Downloads
boot.img, vendor_boot.img & redfin_ota_update_1659450416.zip from here:
RedfinUnofficialEvolutionX - Google Drive
drive.google.com
I've included a boot.img version that has been pre-rooted with Magisk for your convenience but this is optional.
Kernel Source:
GitHub - HubertVonJass/kernel_google_redbull: kernel for my Unofficial Evolution-X build
kernel for my Unofficial Evolution-X build. Contribute to HubertVonJass/kernel_google_redbull development by creating an account on GitHub.
github.com
Original Source Code:
Evolution X
Pixel-based custom ROM with endless features and quick Android updates for select Android devices - Evolution X
github.com
My Source Code:
HubertVonJass - Overview
I enjoy learning things and helping others. . HubertVonJass has 19 repositories available. Follow their code on GitHub.
github.com
There were some other small changes to other Evolution-X repositories, such as adding Powershare and Touch items from LineageOS to hardware, bootanimation logic triggers in vendor, compatibility matrix changes to allow for device-specific hardware version/support, removing duplicate sepolicy references to TurboAdapter and Flipendo. I'll review my changes again and if it's worth it, make a repo. Otherwise I may just make notes here like "delete thi
I can't promise I'll be able to help you if you have problems or that I will update this every month.
Extra thanks to kdrag0n for all the information they provide on github. The details and explanations you leave in your work for us are supremely valuable and appreciated.
aleph.mercury said:
I ported this fantastic ROM to the Pixel 5. It's been my daily driver for 3 weeks or so now with no issues so I thought I'd share.
I am not affiliated with Evolution-X in any way. All credit goes to them.
NOTES
I did make a few tweaks to the source code while making this port.
-signed the final build with my own private keys
-added some additional statusbar icons
-tweaked the kernel to allow wireguard support and I added some recommendations from the Kali Linux project. You will see the kernel name includeS my tag "PsybernetiQ"
-the notification header feature does not work at the moment; I started to add this feature back from Android11 ("elle") a few days ago and am not finished yet. It doesn't seem to break anything being included in this state, so it's there but you can't actually add any images (yet).
-added Bauhaus93 font
-added support for BromiteWebview. The public key for this webview was added.
-you will get an error upon successfully booting that adaptive connectivity isn't working...just click "ok" or whatever. It doesn't seem to affect anything. IIRC I've seen this in other ROMs.
-the majority of the device and kernel code I borrowed from LineageOS.
Credits
-Evolution-X (obviously)
-GrapheneOS
-ProtonAOSP/kdrag0n <---this is the best
-LineageOS
built on Linux Mint laptop. Shoutout to Android Studio, Meld, Sublime, Inkscape, gnome terminal, LibreOffice Calc
Instructions
Just like any other ROM, flash the boot.img, boot to recovery, sideload the ota. This is based on the July 2022 patch, so maybe you need the radio.img and bootloader.img from the official google source if you have any trouble.Get those 2 from the official site.
Downloads
boot.img & redfin-ota_update-1659317506.zip from here:
RedfinUnofficialEvolutionX - Google Drive
drive.google.com
Kernel Source:
GitHub - HubertVonJass/kernel_google_redbull: kernel for my Unofficial Evolution-X build
kernel for my Unofficial Evolution-X build. Contribute to HubertVonJass/kernel_google_redbull development by creating an account on GitHub.
github.com
I can't promise I'll be able to help you if you have problems or that I will update this every month.
Extra thanks to kdrag0n for all the information they provide on github. The details and explanations you leave in your work for us are supremely valuable and appreciated.
Click to expand...
Click to collapse
Just a heads up: after flashing the boot.img, i got hung up on the Google splash screen. I grabbed the boot.img from Stayboogy's LOS rom and it worked to flash the ROM. To get logs would require me to flash back to stock and I don't have time right now but we'll see. My 5 isn't my daily, just a back up but I'll try and get some feedback for you. Thanks for your work on this ROM
AlexKarimov said:
Just a heads up: after flashing the boot.img, i got hung up on the Google splash screen. I grabbed the boot.img from Stayboogy's LOS rom and it worked to flash the ROM. To get logs would require me to flash back to stock and I don't have time right now but we'll see. My 5 isn't my daily, just a back up but I'll try and get some feedback for you. Thanks for your work on this ROM
Click to expand...
Click to collapse
ok, thanks for the feedback and for a solution should others face the same issue.. I do care about this sort of thing, please know that before uploading to google drive and creating this thread I did wipe my phone and install from scratch in an attempt to make sure something like that didn't happen. I might also suggest others do full wipe first or a second ota install of the ROM. I know the boot.img contains my kernel, I'm not sure off the top of my head if the OTA install also includes the boot.img in the payload.bin. If it does, you'll get the kernel. If not, I suppose you'll get the kernel from whatever boot.img worked for you (LOS in your case).
You can always use an external tool like Android_boot_image_editor on my boot.img and pull out my kernel (should be 15.3MB) and park it somewhere. Then, use the same tool on the boot.img that worked for you. Replace the kernel there with mine and delete the "root" folder in your extraction. Then do ./gradlew pack and you'll have a new, signed boot.img with my kernel. You can also replace the ramdisk there with the one from Magisk and root your phone.
Another head up.. I had same experience, the provided boot.img cannot boot into fastbootd.
As AlexArimov mentioned (thank you. I was kinda panic since this is my primary phone), I tried boot.img from Stayboogy's but got signature error after 47% of installation.
I tried from LOS 19 vendor_boot.img with boot into recovery, it worked. It asked "proceed anyway" button with signature error, and I got into this rom.
Somewhat LOS and ProtonAOSP does not work on me, it always says I am offline even though I am on WiFi and Cell.
This rom finally let me use Android12!
Thank you so much.
I got the signature error too but I said install anyway. I have a Pixel 3, 4, 4a and a 5 so I've seen plenty of ROMs stop at 47% but installation continues anyway, so I let it ride. I checked and the ROM is running the PsybernetiQ_kernel if that's yours?
Just to clarify: when I say I used the boot.img from Stayboogy, I meant I used his custom recovery which gets overwritten after flashing if I understand it correctly.
I have always been interested in EvoX.
Would love to see some images, especially of the tweaks page(s) and battery life once someone's device gets to using it for a little.
Right now I am on stock A12 July ROM with AOSP MODs which is heavily inspired by, IIRC, the main developers of this ROM here.
Thank you for a job well done, OP.
I found it does not trigger pd fast charge.
It should show 9V in pd charger, but only shows 5V.
Is there setting for enabling fast charge?
I already turned off adaptive battery.
Edit: I did test some.
It seems working with 5V-3A, but does not get 9V-2A. 15W max.
But, for wireless charging, it is able to do fast charge. The charger gets 9V.
I assume there is something missed with pd charge.
Update the OP with a few screenshots.
I will rerun this ROM using "m target-files-package otatools-package" instead of "mka evolution", sign it using the method I learned from building GrapheneOS and upload a new ota as well as a zip with the "flash-all.sh" approach. The latter has always worked for me with Proton & GrapheneOS.
rhplusa10 said:
I found it does not trigger pd fast charge.
It should show 9V in pd charger, but only shows 5V.
Is there setting for enabling fast charge?
I already turned off adaptive battery.
Edit: I did test some.
It seems working with 5V-3A, but does not get 9V-2A. 15W max.
But, for wireless charging, it is able to do fast charge. The charger gets 9V.
I assume there is something missed with pd charge.
Click to expand...
Click to collapse
I am not familiar with benchmarking, so I'm, afraid I'm not going to be much help here.
FWIW, my battery performance using this ROM "feels" about the same to me as any other. I mostly used ProtonAOSP but have also used stock, lineage, graphene on this Pixel 5 and none of them struck me as being worse than one another. Just my $0.02.
For science,my typical usage is as such: I talk on my phone maybe 5min a day, listen to music while running for 30min, send about 3 texts, browse the web for 30min and I'll typically have 30-50% at bedtime. I charge overnight and wake to a full charge.
AlexKarimov said:
I got the signature error too but I said install anyway. I have a Pixel 3, 4, 4a and a 5 so I've seen plenty of ROMs stop at 47% but installation continues anyway, so I let it ride. I checked and the ROM is running the PsybernetiQ_kernel if that's yours?
Just to clarify: when I say I used the boot.img from Stayboogy, I meant I used his custom recovery which gets overwritten after flashing if I understand it correctly.
Click to expand...
Click to collapse
Yep, the PsybernetiQ_kernel is mine. It has wireguard activated as well as a few kali-linux wifi driver tweaks but otherwise is the should be the same as the kernel from LineageOS (which itself is very much true to AOSP, IIRC they treat some submodule things differently, like the techpack folder.)
The kernel is built into the ROM tree and is integrated into the overall ROM process. As opposed to ROMs like Proton which does not build a kernel at all or GrapheneOS, which builds a kernel but does so separately from the rest of the ROM process. I'm not saying any way is better or worse than other, just drawing distinctions.
Thank you for the images of the ROM!
Looks great!
aleph.mercury said:
I am not familiar with benchmarking, so I'm, afraid I'm not going to be much help here.
FWIW, my battery performance using this ROM "feels" about the same to me as any other. I mostly used ProtonAOSP but have also used stock, lineage, graphene on this Pixel 5 and none of them struck me as being worse than one another. Just my $0.02.
For science,my typical usage is as such: I talk on my phone maybe 5min a day, listen to music while running for 30min, send about 3 texts, browse the web for 30min and I'll typically have 30-50% at bedtime. I charge overnight and wake to a full charge.
Click to expand...
Click to collapse
Battery life is good. I've on this rom for a day with active use, and all good for battery life.
Other things are all good as well. Some tweak like edge lighting does not work but I don't use it.
Only I found is the charging speed issue.
I think this is related with the kernel.
I want to use other kernel to compare but I cannot find compatible kernel with this rom.
I tried flash boot.img from stock July/2022 and LOS 19 20220727, but cannot boot after flash.
Which boot.img is compatible with this rom?
or, am I wrong to change kernel by flashing boot.img?
rhplusa10 said:
Battery life is good. I've on this rom for a day with active use, and all good for battery life.
Other things are all good as well. Some tweak like edge lighting does not work but I don't use it.
Only I found is the charging speed issue.
I think this is related with the kernel.
I want to use other kernel to compare but I cannot find compatible kernel with this rom.
I tried flash boot.img from stock July/2022 and LOS 19 20220727, but cannot boot after flash.
Which boot.img is compatible with this rom?
or, am I wrong to change kernel by flashing boot.img?
Click to expand...
Click to collapse
I would say it depends on what boot.img you're flashing. If it's the provided boot, that's a recovery. If it's a boot extracted from the payload.bin, that's the kernel(unless I'm wrong).
AlexKarimov said:
I would say it depends on what boot.img you're flashing. If it's the provided boot, that's a recovery. If it's a boot extracted from the payload.bin, that's the kernel(unless I'm wrong).
Click to expand...
Click to collapse
I see, then I have to extract the payload.bin..
but from the stock, the boot.img is from image-redfin-sq3a.220705.003.a1.zip.
I think it should be the kernel, but it would not boot up on this rom.
sorry, I am not very familiar with these mix-n-match things since I am just a normal user
rhplusa10 said:
Battery life is good. I've on this rom for a day with active use, and all good for battery life.
Other things are all good as well. Some tweak like edge lighting does not work but I don't use it.
Only I found is the charging speed issue.
I think this is related with the kernel.
I want to use other kernel to compare but I cannot find compatible kernel with this rom.
I tried flash boot.img from stock July/2022 and LOS 19 20220727, but cannot boot after flash.
Which boot.img is compatible with this rom?
or, am I wrong to change kernel by flashing boot.img?
Click to expand...
Click to collapse
The edge lighting does work for me. IIRC I got mine to work after turning off and on again some of the other features associated with the notifications/display.
If you tell me which items in the kernel are the cause, I'll make note and try to include them in the next update which will be sometime after August 5th, when I expect Google to release the new source code/security patches.
I think you can replace the kernel with any one you please by using this tool:
GitHub - cfig/Android_boot_image_editor: Parsing and re-packing Android boot.img/vbmeta.img/payload.bin, supporting Android 13
Parsing and re-packing Android boot.img/vbmeta.img/payload.bin, supporting Android 13 - GitHub - cfig/Android_boot_image_editor: Parsing and re-packing Android boot.img/vbmeta.img/payload.bin, supp...
github.com
and following these steps with for using that tool:
1) Clone that tool somewhere onto your computer. Copy the boot.img file to the same folder where that tool now resides. open a terminal and type:
./gradlew unpack
2) The will be a new folder under "build" called "unzip_boot".
Go there and replace the file called "kernel" (it does not have a file extension) with your own kernel. It is expecting a kernel of the ".lz4" type not the ".gz" type, so I don't think it will work for .Gz types. For example, your kernel might be called something like Image.lz4; rename it simply "kernel" when it is in the unzip_boot directory. If your kernel is called Image.gz, I don't think it will work. It's using a different compression algorithm.
Delete the folder in unzip_boot called "root."
You can also replace the ramdisk file you see in unzip_boot with the ramdisk from an already-patched-by-magisk-for-the-same-ROM-and-device-boot.img that you can extract following this same process that you would have completed before getting to this part of the walkthrough. To do this, patch the boot image using magisk like you would normally do. Pull this adjusted boot image onto your computer from /sdcard/Download like you would do to flash magisk. Take this boot.img, which magisk has renamed for you something like magisk-202310562484akjbjsdk.img and rename it "boot.img" and perform Step 1). The original ramdisk should be around 1.5MB and the Magisk version of it should be slightly bigger, around 2.0MB.. Rename this unzip_boot folder something different like magisk_unzip_boot. If you have already made an unzip_boot folder prior to trying to mess with this ramdisk part, rename that folder from unzip_boot to something like orig_unzip_boot.
Replace the ramdisk there (the 1.5MB one) with this magisk one (2.0MB). Delete this magisk_unzip_boot folder and rename the other one back to simply unzip_boot, from however you temporarily renamed it (it was suggested to rename it orig_unzip_boot here). Delete the boot.img file that was originally called something like magisk-2021545424947sdfdf.img. Make sure the boot.img file in the main folder is again the original one from earlier, the main one you started with in the first place.
Now, your unzip_boot folder should not contain a "root" folder, it SHOULD contain the new kernel you want, and you may or may not have replaces the ramdisk there with the magisk-adjusted one, thereby rooting your phone when you flash this.
Go to the terminal, you should still be in the same folder that your cloned your repo to, and the boot.img there needs to be the original one, not the magisk boot.img! If in doubt, just copy over again the boot.img from this ROM or from which ever one you've been working with on this ROM that has been successful for you. You should not be in the build folder or the unzip_boot folder.
3) Ok, now enter this into the terminal:
./gradlew pack
You should see some new files with boot in the name; I'd grab the one that is called boot.img.signed. rename it something like new_kernel_boot.img and flash it to your phone. The main thing here being you need to get rid of the word "signed" from the file. There's already a file called boot.img in this folder, that's your original one, so you can't rename it that in this folder.
Now you should have the kernel of your choice and also root if you replaced the ramdisk with the one from Magisk.
**I've always added the vbmeta.img file along with the initial step of decomposing my starting boot.img, I've also removed the vbmeta.img file when performing the magisk ramdisk extraction section, which again is optional for you. Finally, I've always re-included the vbmeta.img back in the final "pack" step. Im not 100% but when I do this I've always been able to root my phone on the stock google ROM and not had to disable verity or disable verification; my understanding is that this Android_boot_image_editor tool is smart enough to know how to reapply the original signatures. But again, I may be wrong about how this works, but by doing it with vbmeta.img included it won't break anything (from my personal experience doing this 100's of times, perhaps 1000's of times)
aleph.mercury said:
The edge lighting does work for me. IIRC I got mine to work after turning off and on again some of the other features associated with the notifications/display.
If you tell me which items in the kernel are the cause, I'll make note and try to include them in the next update which will be sometime after August 5th, when I expect Google to release the new source code/security patches.
I think you can replace the kernel with any one you please by using this tool:
GitHub - cfig/Android_boot_image_editor: Parsing and re-packing Android boot.img/vbmeta.img/payload.bin, supporting Android 13
Parsing and re-packing Android boot.img/vbmeta.img/payload.bin, supporting Android 13 - GitHub - cfig/Android_boot_image_editor: Parsing and re-packing Android boot.img/vbmeta.img/payload.bin, supp...
github.com
and following these steps with for using that tool:
1) Clone that tool somewhere onto your computer. Copy the boot.img file to the same folder where that tool now resides. open a terminal and type:
./gradlew unpack
2) The will be a new folder under "build" called "unzip_boot".
Go there and replace the file called "kernel" (it does not have a file extension) with your own kernel. It is expecting a kernel of the ".lz4" type not the ".gz" type, so I don't think it will work for .Gz types. For example, your kernel might be called something like Image.lz4; rename it simply "kernel" when it is in the unzip_boot directory. If your kernel is called Image.gz, I don't think it will work. It's using a different compression algorithm.
Delete the folder in unzip_boot called "root."
You can also replace the ramdisk file you see in unzip_boot with the ramdisk from an already-patched-by-magisk-for-the-same-ROM-and-device-boot.img that you can extract following this same process that you would have completed before getting to this part of the walkthrough. To do this, patch the boot image using magisk like you would normally do. Pull this adjusted boot image onto your computer from /sdcard/Download like you would do to flash magisk. Take this boot.img, which magisk has renamed for you something like magisk-202310562484akjbjsdk.img and rename it "boot.img" and perform Step 1). The original ramdisk should be around 1.5MB and the Magisk version of it should be slightly bigger, around 2.0MB.. Rename this unzip_boot folder something different like magisk_unzip_boot. If you have already made an unzip_boot folder prior to trying to mess with this ramdisk part, rename that folder from unzip_boot to something like orig_unzip_boot.
Replace the ramdisk there (the 1.5MB one) with this magisk one (2.0MB). Delete this magisk_unzip_boot folder and rename the other one back to simply unzip_boot, from however you temporarily renamed it (it was suggested to rename it orig_unzip_boot here). Delete the boot.img file that was originally called something like magisk-2021545424947sdfdf.img. Make sure the boot.img file in the main folder is again the original one from earlier, the main one you started with in the first place.
Now, your unzip_boot folder should not contain a "root" folder, it SHOULD contain the new kernel you want, and you may or may not have replaces the ramdisk there with the magisk-adjusted one, thereby rooting your phone when you flash this.
Go to the terminal, you should still be in the same folder that your cloned your repo to, and the boot.img there needs to be the original one, not the magisk boot.img! If in doubt, just copy over again the boot.img from this ROM or from which ever one you've been working with on this ROM that has been successful for you. You should not be in the build folder or the unzip_boot folder.
Ok, now enter this into the terminal:
./gradlew pack
You should see some new files with boot in the name; I'd grab the one that is called boot.img.signed. rename it something like new_kernel_boot.img and flash it to your phone. The main thing here being you need to get rid of the word "signed" from the file. There's already a file called boot.img in this folder, that's your original one, so you can't rename it that in this folder.
Now you should have the kernel of your choice and also root if you replaced the ramdisk with the one from Magisk.
**I've always added the vbmeta.img file along with the initial step of decomposing my starting boot.img, I've also removed the vbmeta.img file when performing the magisk ramdisk extraction section, which again is optional for you. Finally, I've always re-included the vbmeta.img back in the final "pack" step. Im not 100% but when I do this I've always been able to root my phone on the stock google ROM and not had to disable verity or disable verification; my understanding is that this Android_boot_image_editor tool is smart enough to know how to reapply the original signatures. But again, I may be wrong about how this works, but by doing it with vbmeta.img included it won't break anything (from my personal experience doing this 100's of times, perhaps 1000's of times)
Click to expand...
Click to collapse
Thank you for the detail explanation.
I will try it.
I am not sure the PD fast charge is related to kernel, but replacing kernel is what I can do easily as a normal user, so just want to try.
delete this post please
AlexKarimov said:
Just a heads up: after flashing the boot.img, i got hung up on the Google splash screen. I grabbed the boot.img from Stayboogy's LOS rom and it worked to flash the ROM. To get logs would require me to flash back to stock and I don't have time right now but we'll see. My 5 isn't my daily, just a back up but I'll try and get some feedback for you. Thanks for your work on this ROM
Click to expand...
Click to collapse
Same but I wasn't smart enough to get passed the splash screen thx homie
ghost9640 said:
Same but I wasn't smart enough to get passed the splash screen thx homie
Click to expand...
Click to collapse
I've amended the the OP to include the vendor_boot.img.
I tried this out on my phone; I flashed the latest google tiramisu ROM just to get a fresh baseline to start from to test this, then downloaded the files from my drive account, and followed the exact instructions as I have them written in the OP and it works.
aleph.mercury said:
I've amended the the OP to include some guidance about the boot.img. Sorry for any inconvenience/stress I may have caused. I'm looking into this for next month's release.
Click to expand...
Click to collapse
No worries, it's the risk anyone takes when they unlock their device and flash. I accepted a long time ago that it's on me since I'm the one who voluntarily flashed a ROM to my device so I'm not upset. I've reset my daily driver so many times at this point that I regularly back up so restoring isn't an issue anyway.

General [Magisk] Magisk Zygote64_32: Enabling 32-bit Support For Apps

The 32-bit apps are back!​
screen-20221120-112309
Watch "screen-20221120-112309" on Streamable.
streamable.com
Synopsis​The Pixel 7 line is Google's first "64-bit only" phones, along with being the highest profile release of a 64-bit only device so far. The device uses the Tensor G2 (GS201), which is a close descendant of the Tensor (GS101) from the Pixel 6 line. So close, that the only major change was swapping out the ARM Cortex-A76 cores for ARM Cortex-A78 cores. The SoC still has full 32-bit support.
This was seemingly done at the last minute to get the ball rolling on switching Android to becoming 64-bit only at some point in the future. That future might be soon for other currently supported Pixel phones as the Android 13 QPR1 Beta includes optional firmware images that are 64-bit only. Given that it is currently optional on QPR1, there is a chance that at the earliest Android 14 will be 64-bit only across all supported Pixels, with a slimmer chance that it will be 64-bit only for AOSP also.
The three items that are of importance are AArch32, what Zygote services are set to start, and whether the build supports multilib.
AArch32​Is a mode starting with ARMv8 that provides support for the 32-bit ARM ABIs: armeabi and armeabi-v7a. An ABI is what defines how software is to be built and ran for specific instruction sets.​AArch32 is not required to be supported with ARMv9-A architectures, which would be processors starting with ARM Cortex-X2/X3/A715. These processors support AArch64 only.​The ARM Cortex-A510 is currently the only ARMv9-A processor that supports AArch32. This combination of processors (X2/X3/A715 with A510) results in asymmetric 32-bit support. This is the likely reason for Google expediting these changes. It is speculated that the Cortex-A520 will not support AArch32, which would put a stop to native 32-bit support completely for future devices.​Tensor G2 cores are still on ARMv8-A and thus still support AArch32.​​Zygote​Is a service that handles creating VMs for starting applications, and is responsible for allowing resources to be shared to reduce memory bloat from duplication. There are two Zygote services, Zygote64 and Zygote (colloquially referred to as Zygote32). Each handle a "warm" VM that is preloaded with libraries, which gets cloned for starting an application. This is done via copy-on-write, which means a copy is only made and occupies memory when attempting to modify a resource. The untouched copies all point back to the original, saving memory.​Without Zygote32, 32-bit applications can't be started. Without Zygote64, 64-bit applications can't be started.​Having multiple Zygote processes is referred to as "Zygote64_32"​​Multilib​Is a scheme that allows for 32-bit and 64-bit libraries to reside on the same device. This is required to support running 32-bit applications on 64-bit devices. Android has it's own implementation that differs from most Linux distributions, which may also differ between each other.​Obviously, without 32-bit libraries (or inversely without 64-bit libraries), a build does not support multilib.​​Somewhat important to note is that the 64-bit only QPR Beta images for the Pixel 4a to 6 are true 64-bit only, they do not support multilib. However, as noted here by Google, the Pixel 7 is 64-bit only but does support multilib.
The support matrix is as follows:
Phone + SoC, Build​SoC AArch32 Support​Zygote Property​Multilib​32-bit Support?​Pixel 6 with Tensor​Yes​Zygote64_32​Yes​Native​Pixel 6 with Tensor, 64-bit Only Build​Yes​Zygote64​No​Not Possible*​Pixel 7 with Tensor G2​Yes​Zygote64​Yes​With Modification​Pixel 7 with Tensor G2, 64-bit Only Build**​Yes​Zygote64​No​Not Possible*​Phone with AArch64-only ARMv9-A​No​Zygote64​No​Not Possible***​
* If no multilib build is also available. It may be possible with extensive work to use Treble to bring 32-bit libraries forward, assuming Android 14+ doesn't remove AArch32 and Zygote32. Emulation could be a possibility but has not been done yet.​** Build does not exist yet. It may be realized with a QPR build or it may be done with Android 14 instead.​*** Emulation could be a possibility but has not been done yet. Currently just the Pixel 6 and 7 have KVM built-in, but the Pixel 7 is the only one with it on by default.​
This means that with the right changes 32-bit support can be enabled and used if 32-bit libraries are on the device and the SoC supports AArch32.
Modifications​The changes required are as follows:
ro.zygote=zygote64_32​ro.vendor.product.cpu.abilist=arm64-v8a,armeabi-v7a,armeabi​ro.vendor.product.cpu.abilist32=armeabi-v7a,armeabi​​Genuinely that simple, property changes. Because the libraries are already in the firmware images it is just the need to instruct Android to use them.
Zygote64_32 refers to starting Zygote64 as the primary process, then starting Zygote32 as the secondary process. With this in place 32-bit applications can be installed and ran as 32-bit libraries are now able to be loaded.
The changes that need to be done are to either be applied to /vendor/build.prop, or done with init.rc modifications, or applied in some way before init.rc is read.
The last point is the critical issue that has halted this: there has not been any easy way to set properties very early in the boot process outside of simply just modifying the file on the partition.
This can't be done easily due to dynamic partitions requiring a custom super partition, and with the larger issue being AVB.
Luckily we can patch Magisk to do these changed early enough in the boot process.
Forewarning​A wipe is required​I do not know exactly why, but when a device is first booted with only Zygote64 it can't be switched over to use Zygote64_32. For some reason the 32-bit libraries inside APEXs are not discovered and loaded by Zygote32.
Support for custom ROMs is not guaranteed​It may or may not work. As a matter of fact, doing this modification isn't necessary as custom ROMs could implement this change themselves.
It is known that the modification does work on LineageOS.
I have not tested all 32-bit applications​I don't actually use any 32-bit apps. I have done testing with a few 32-bit apps I've gotten from APKMirror. So no, I don't know if your Instagram mod is working. I don't see any reason why it wouldn't.
Download Links​
Spoiler
All files are hosted at my download repository
Magisk Zygote64_32:​Recommended:​Release Build​​If you are having troubles and need to produce logs:​Debug Build​​Magisk Delta 32-bit:​For Advanced Users:​Release Build​
If you are having troubles and need to produce logs:​Debug Build​
Installation Instructions​General Prerequisites:​A working platform-tools environment
platform-tools 33.0.3 is required with the Pixel 7​The version you are running can be checked with adb --version and fastboot --version​If you need assistance then read this thread by @roirraW "edor" ehT.​Tools like PixelFlasher can be used, just read into how to use it.​​The factory image for the firmware version you are running or plan to run
Part of the steps are requires the firmware for your phone, you can download it from here..​Copy init_boot.img out from image-xxx.zip inside the firmware archive.​
Backup your data
A wipe is required.​​With my Magisk Zygote64_32 fork (Recommended)​
Spoiler
Magisk Zygote64_32 with the rebased patch by me.​Direct download link for my Magisk Zygote64_32 APK​​Installation with Wipe​
Spoiler
Steps:​Note: If you are unrooted and stock then skip to step 4​
On your phone uninstall the stock Magisk app
Do not use the uninstall Magisk button from within the app, simply just uninstall the app itself
Reboot your phone into the bootloader
Flash the stock init_boot.img for your version and then boot into Android
Install the Magisk Zygote64_32 app from my repository
Copy over the stock init_boot.img to your phone and patch it in the Magisk app
Copy the patched Magisk init_boot.img over to your computer
Reboot your phone into the bootloader
Flash and wipe via fastboot -w flash init_boot magisk_init_boot.img
Complete the setup wizard as normal
Install the Magisk Zygote64_32 app or use the Magisk stub to download the full app from your phone
Stub will not be available until the next reboot after finishing the setup wizard
Open the Magisk app and finish setup for Magisk
Attempt to install and run a 32-bit application. If you are unable to, then verify that you used my Magisk Zygote64_32 app to patch your init_boot.img and that you flashed it to your phone. You will have to perform the steps including the wipe over again.
​With my Magisk Delta 32-bit fork (Not Recommended For General Use, Advanced Users Only)​
Spoiler
Magisk Delta 32-bit with the rebased patch by me.​Direct download link for my Magisk Delta 32-bit APK​
Warning:​Magisk Delta will mount the persist partition for it's early-mount feature, meaning that modules using early-mount could inadvertently fill up the partition, leading to possible corruption.​The steps will take you through creating a backup of the partition to restore if you ever need to.​
Prerequisites:​You need to already have root with Magisk so you can backup the persist partition​
Steps:​Note: If you already have backed up your persist partition then you can skip steps 4 to 7.​
Install my Magisk Delta 32-bit app, it may be installed alongside stock Magisk without issue as it has a different package name.
Copy over the stock init_boot.img to your phone and patch it in the Magisk Delta 32-bit app.
Copy it back over to your computer
Enter a root shell via either method
adb
adb shell
su
You will need to approve the attempt on your phone
Terminal emulator
su
Run the following command:
dd if=/dev/block/by-name/persist of=/sdcard/persist.img
Copy persist.img over to your computer, keep it safe, keep it in multiple places
This is not the Google Pixel 7 persist image, this is uniquely your phone's persist image
Reboot phone to bootloader
Flash and wipe via fastboot -w flash init_boot magisk_init_boot.img
Complete the setup wizard as normal
Install my Magisk Delta 32-bit app
Open the Magisk app and finish setup for Magisk
Attempt to install and run a 32-bit application. If you are unable to, then verify that you used my Magisk Delta 32-bit app to patch your init_boot.img and that you flashed it to your phone. You will have to perform the steps including the wipe over again.
System Upgrade Instructions (Post Mod Installation)​
Spoiler
Either of my Magisk Zygote64_32 forks​
Extract the init_boot from image-xxx.zip of the firmware you want to upgrade to
Patch it in the Magisk app that you are using
Copy the patched Magisk image back over to your computer
Reboot your phone into fastboot
Update the bootloader and radio if necessary
fastboot --skip-reboot update image-xxx.zip
No -w it will wipe your userdata partition
Wait until it is finished
Don't boot the phone into Android
Flash the patched Magisk init_boot.img
This can be done from inside fastbootd
Magisk Upgrade Instructions​
Spoiler
Magisk Zygote64_32 via app​Update normally as you would, by installing the update in the app.​
Magisk Zygote64_32 or Magisk Delta 32-bit manually​
Unhide the Magisk app if you are currently hiding it
Download and install the latest APK for the 'flavor' you are using from my repository
It may be required that you uninstall the app if Android won't let you upgrade it
Perform a direct install from the install menu
Reboot
Changing Between My Magisk Forks​
Spoiler
Download and install the app you want to switch to from my repository
Uninstalling the previous Magisk app is not necessary
Copy the stock init_boot.img for your system version over to your phone
Patch it in the Magisk app you want to switch to
Copy the patched Magisk image back over to your computer
Reboot your phone into fastboot
Flash the patched Magisk init_boot.img
If moving from Magisk Delta 32-bit to Magisk Zygote64_32 then at the same time you can flash your backed up persist fastboot flash persist persist.img
Remove the other Magisk app
Finish setup in the remaining Magisk app.
Uninstallation Instructions​
Spoiler
My Magisk Zygote64_32 fork​Flash the stock init_boot.img​
My Magisk Delta 32-bit fork​
Flash the stock init_boot.img
fastboot flash persist persist.img
Manual method on phone if without original persist image​
Uninstall all Magisk modules, they will clean up any files they put into early-mount.d
Enter a root shell via either method
adb (heavily preferred)
adb shell
su
You will need to approve the attempt on your phone
Terminal Emulator
Navigate to the persist mount
cd $(magisk --path)/.magisk/mirror/persist/
Remove the directory early-mount.d
rm -ir early-mount.d
You will be prompted for each removal and descending into directories, respond with y to approve the action
Can now reboot and flash stock init_boot
Troubleshooting​Stuck at boot animation or bootlooping​Restore stock init_boot.​Grab a logcat with adb to determine what the problem may be.​You might not have wiped your device.​​Booted after installing new Android update but forgot to flash Magisk​Run through the installation instructions again, you will have to wipe your device.​​Unable to install 32-bit apps​Run getprop ro.zygote; getprop ro.vendor.product.cpu.abilist; getprop ro.vendor.product.cpu.abilist32​If the values do not match these then the modification was not applied.​zygote64_32​arm64-v8a,armeabi-v7a,armeabi​armeabi-v7a,armeabi​​32-bit apps force close​This only happened in my testing when I did a first boot with Zygote64 and then installed the modification to use Zygote64_32. Wipe your device or perform the wipeless installation instructions.​It is possible the app may just have issues, or will not work because of missing libraries.​​Clobbered the persist partition​Follow the uninstall steps for Magisk Delta, easiest to use the fastboot steps.​If you didn't backup your persist partition, then RIP.​
Questions​Will I have to wipe on every system update?​I'm glad to say no.​I've tested with my Magisk Delta 32-bit, going from October -> November, while keeping Zygisk/MagiskHide enabled along with the Magisk app being hidden.​I also tested December -> January with my Magisk Zygote64_32 and even swapping to my Magisk Delta 32-bit in the process without issue.​​Can I take OTAs instead of flashing factory images?​I would heavily recommend against doing so, however I have done Android 14 Beta 1 to Beta 1.1 on device and it works.​
I booted with the patch, but then accidentally flashed over init_boot without changing to a different build version, what do I do?​Simply just flash the patched Magisk image back over. I've tested it, 32-bit applications are still kept, and I haven't encountered any issues once I flashed the patched Magisk image back onto it.​​If this was because of an update then follow the installation instructions, you will have to wipe your device.​
Will my persist partition be destroyed?​You shouldn't have to worry about that, a backup persist image will be able to completely restore it. Just don't install modules that will attempt to install more than 32MB of data to the earlymount.d folder.​
Thanks To​Thomas King for Pixel 7 32-bit Helper​@huskydg for Magisk Delta and letting me know about the Zygisk implementation maru​5ec1cff for maru​@nickelnine for bringing attention to Pixel 7 32-bit Helper​Posters in the thread for helping me debug the issues that have come up.​
Reserved 1
FYI - Corvus OS for Pixel 7's does have 32bit app support
Wi1son said:
FYI - Corvus OS for Pixel 7's does have 32bit app support
Click to expand...
Click to collapse
Never heard of it before.
The download page on their home page makes no reference to any Pixel devices.
It's not until viewing their download backend that the ROM comes up.
And most importantly, not a single source on one of their GitHub accounts and the other doesn't have any for the Pixel 7.
thank you, it worked straight away. I'm on LineageOS and just patched the init_boot with your magisk version, flashed it, and everything works - thanks a lot!
bhammler said:
thank you, it worked straight away. I'm on LineageOS and just patched the init_boot with your magisk version, flashed it, and everything works - thanks a lot!
Click to expand...
Click to collapse
Great to know it works on LineageOS.
What steps did you take for installing it? Just flash the patched init_boot along with the other images then booted into the recovery to install the the system?
Great work namelesswonder
Namelesswonder said:
Great to know it works on LineageOS.
What steps did you take for installing it? Just flash the patched init_boot along with the other images then booted into the recovery to install the the system?
Click to expand...
Click to collapse
I was on a running LineageOS 20 with Magisk 25.2. First I've installed your Magisk Delta on top of my Magisk version, patched the stock init_boot.img with Magisk Delta, booted into the bootloader and just flashed the patched init_boot.img without wiping.
Then I've uninstalled the regular Magisk version and everything works since yesterday
bhammler said:
I was on a running LineageOS 20 with Magisk 25.2. First I've installed your Magisk Delta on top of my Magisk version, patched the stock init_boot.img with Magisk Delta, booted into the bootloader and just flashed the patched init_boot.img without wiping.
Then I've uninstalled the regular Magisk version and everything works since yesterday
Click to expand...
Click to collapse
I would be careful since in my testing enabling Zygote32 without a wipe would allow 32-bit applications to be installed but they wouldn't run right as the libraries they're trying to use aren't being loaded for some reason.
The app that would consistently crash in this scenario was Flappy Bird, so try running it to see if it crashes.
If it works fine then I guess LineageOS isn't affected then.
brilliant work. cheers.
Flappy Bird crashes. But the Apps that I use are working: -)
Namelesswonder said:
I would be careful since in my testing enabling Zygote32 without a wipe would allow 32-bit applications to be installed but they wouldn't run right as the libraries they're trying to use aren't being loaded for some reason.
The app that would consistently crash in this scenario was Flappy Bird, so try running it to see if it crashes.
If it works fine then I guess LineageOS isn't affected then.
Click to expand...
Click to collapse
bhammler said:
Flappy Bird crashes. But the Apps that I use are working: -)
Click to expand...
Click to collapse
Well that's good to know that at least some 32-bit apps work when you don't wipe. If you're only using a static set of apps that don't change and they work that's good for you.
@Ghisy you might be able to use the modification without wiping. Your mileage may vary and some apps might not work. If you get stuck at the boot animation you can just flash the previous init_boot you were using and let the phone sort itself out for a few minutes.
Nice work. For anyone building, there's this
https://review.lineageos.org/c/LineageOS/android_device_google_gs201/+/344324
Namelesswonder said:
@Ghisy you might be able to use the modification without wiping. Your mileage may vary and some apps might not work. If you get stuck at the boot animation you can just flash the previous init_boot you were using and let the phone sort itself out for a few minutes.
Click to expand...
Click to collapse
I'm traveling right now so I don't wanna mess around with my phone. I'll take a look when I'm back home in a couple of weeks.
so this is what's needed to get viper4android working? has anyone verified v4a works using this? if so, what version? there are so many at this point it's hard to keep track.
This type of workaround will only persist if future pixel phones or current devices have multilib, correct?
Edit: never mind, I read more of your detailed explanation and I understand now
Schroeder09 said:
so this is what's needed to get viper4android working? has anyone verified v4a works using this? if so, what version? there are so many at this point it's hard to keep track.
Click to expand...
Click to collapse
I doubt this will get V4A working on this device. The problem, in a nutshell, is that V4A uses arm32 audio drivers while this device and some other devices on Android 13 (e.g. Pixel 6 series) use arm64 audio drivers. It's V4A itself that needs updating, which someone is working on at the moment but I don't know how far it has progressed.
Namelesswonder said:
The changes that need to be done are to either be applied to /vendor/build.prop, or done with init.rc modifications, or applied in some way before init.rc is read.​
The last point is the critical issue that has halted this: there has not been any easy way to set properties very early in the boot process outside of simply just modifying the file on the partition.
This can't be done easily due to dynamic partitions requiring a custom super partition, and with the larger issue being AVB.
Click to expand...
Click to collapse
Great work on this. Just curious, in your testing did you try overlay.d to see if that worked early enough to change the props? I saw osm0sis suggest this (as you probably have seen as well) but wasn't sure if you tried it. Just throwing this out there in case...
Lughnasadh said:
Great work on this. Just curious, in your testing did you try overlay.d to see if that worked early enough to change the props? I saw osm0sis suggest this (as you probably have seen as well) but wasn't sure if you tried it. Just throwing this out there in case...
Click to expand...
Click to collapse
Magisk/docs/guides.md at master · topjohnwu/Magisk
The Magic Mask for Android. Contribute to topjohnwu/Magisk development by creating an account on GitHub.
github.com
I do not believe it will work to change props because overlay.d custom rc files are read after init.rc, which means that the init has already been read and init.zygote64.rc has already been imported. The custom rc and supplemental script to change the property would be running after that which wouldn't do anything since the init is already setup.
I have not tested the file replacing ability of overlay.d to see if it can overlay onto the preexisting init files. Would still need a service to set the properties so that when the zygote services launch they know what ABIs are supported.
I didn't go through with that since modifying magiskinit to set up build.prop in a build version agnostic way seemed like a better idea since I knew it already worked. If overlay.d can replace init.rc then that means having to modify the init_boot to contain the new init.rc for each build if Google ends up changing them. I haven't checked init.rc for changes, but I do know that init.zygote64_32.rc did have inconsequential changes from stable Android 13 -> QPR1, so they probably did do some changes.
Thank you for the detailed steps! I could finally enjoy ad free experience on Instagram without having to decompile the app just to add 64bit lib support (and it failed to start regardless...)

Categories

Resources