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

Search This thread

dr.wtf

Senior Member
Dec 25, 2011
992
207
Just realized that Ubuntu version now seems to work with Mint. I used Kali because Ubuntu version didn't work previously.
 
  • Like
Reactions: badabing2003

moisthat

Senior Member
Jun 25, 2016
51
13
I've been doing in since Nexus 6P days, I don't see any added risks.
recommendation: Flash to Inactive Slot, in case anything goes wrong, you're back to your working slot, if it goes well, Inactive becomes the active one.
Active/inactive slot refers to the partitions, yeah? Where can I read up or what to search for to understand more what they are, how they work etc?
 

zgfg

Senior Member
Oct 10, 2016
8,231
5,876
Xiaomi Mi 11
Xiaomi Mi 11 Lite 5G

badabing2003

Recognized Contributor
Sep 17, 2012
1,629
1,989
  • Like
Reactions: J.Michael

J.Michael

Recognized Contributor
Jan 20, 2018
1,529
1,626
Samsung Galaxy Tab A series
So after applying the last update, I'm getting into Bootloop. Any ideas are very welcome. I'm trying to disable the magisk modules without success.
Did you boot into safe mode? Did you reboot after booting into safe mode? (Booting into safe mode sets some flag so on next boot, Magisk will not load any modules. If modules are your only problem, that gives you one chance to use Magisk to permanently disable all modules.)

Why do you suspect modules?

What update did you apply? Android, Magisk, PixelFlasher?
 

badabing2003

Recognized Contributor
Sep 17, 2012
1,629
1,989
Flashing is working fine.
So most likely as you guessed the issue has to do with Magisk modules.

At first you had the following modules
Code:
    Magisk Modules:
        AOSP Mods (Full version)            enabled   2.4.0
        DisableFlagSecure                   enabled   v3.0
        MagiskHide Props Config             enabled   v6.1.2-v137
        Magisk Bootloop Protector           enabled   v1.8.1
        Android 13 QR-scanner lockscreen shortcutdisabled  v1.0
        Universal SafetyNet Fix             enabled   v2.3.1
        Universal GMS Doze                  disabled  1.8.7
        volte-properties for Pixel 6 Pro    enabled   1
        Zygisk - LSPosed                    enabled   v1.8.5 (6649)

It flashed ok, then it went into recovery, eventually to adb
You had the following modules active on next try (so you removed some)
Code:
    Magisk Modules:
        AOSP Mods (Full version)            enabled   2.4.0
        DisableFlagSecure                   enabled   v3.0
        MagiskHide Props Config             enabled   v6.1.2-v137
        Magisk Bootloop Protector           enabled   v1.8.1
        Android 13 QR-scanner lockscreen shortcutdisabled  v1.0
        Universal SafetyNet Fix             enabled   v2.3.1

And that too flashed ok, but still caused you problems.
That is why it's always a good idea to disable modules (you can do so directly in PF) before flashing.

How do you recover from this.
I see your device is either ending up in bootloader mode or recovery mode.
When in bootloader mode, SOS won't work, it needs adb mode,
In recovery mode you can issue adb commands, but I'm not certain you'd have root access to disable Magisk (I doubt it)

What you could do is flash non-patched boot.
Download the latest PF, 4.6.0 is out select the stock boot instead of patched boot, and hit the Flash Boot button
1670301118634.png


You will be able to boot to your device, but you won't be rooted.
If you flash back patched boot, you would run into the same issue because as soon as you boot, Magisk would load the modules and cause the bootloop. And you can't disable the modules if you don't have su access.
I'm surprised that Bootloop Protector is not saving you, to be honest, although I too have it on my phone, in case of a rainy day, I never needed to use it.
Perhaps ask in the module's thread why it is not kicking in.

There is a way though.
Uninstall your Magisk Manager
Download and install this special Magisk that gives you root access but does not load any modules.
@gecowa6967 was kind enough to build a custom Magisk to get around the same problem you're running into.
You create a patched boot with that special Magisk, and flash it,
Then when you reboot, and have root access, disable all modules
You can then flash back a normal patched boot, and enable one module at a time, until you figure out which is causing you the problem.

The process is a bit tedious, but nothing serious, you can get back fully operational without losing data.
Ask questions if you are uncertain about any step.
 

p4ra

Senior Member
Oct 23, 2012
91
37
www.google.com
OK, seriously, this is probably one of the best tools I have ever used. Actually this is the only reason why I have decided to keep using my P7P. I thought that keep the phone up-to-date with root (forced to root if I want to use full potential) would be a pain in the ass. But patching to December update including the download took me exactly 315 seconds. AMAZING! THANK YOU!

I am going to donate, immediately.
 

badabing2003

Recognized Contributor
Sep 17, 2012
1,629
1,989
OK, seriously, this is probably one of the best tools I have ever used. Actually this is the only reason why I have decided to keep using my P7P. I thought that keep the phone up-to-date with root (forced to root if I want to use full potential) would be a pain in the ass. But patching to December update including the download took me exactly 315 seconds. AMAZING! THANK YOU!

I am going to donate, immediately.
Thanks for your consideration, no donation please, read about it in OP to see what's better.
 
  • Like
Reactions: p4ra

tutuco

Senior Member
Apr 16, 2007
65
6
SAO PAULO
Google Pixel 6 Pro
Flashing is working fine.
So most likely as you guessed the issue has to do with Magisk modules.

At first you had the following modules
Code:
    Magisk Modules:
        AOSP Mods (Full version)            enabled   2.4.0
        DisableFlagSecure                   enabled   v3.0
        MagiskHide Props Config             enabled   v6.1.2-v137
        Magisk Bootloop Protector           enabled   v1.8.1
        Android 13 QR-scanner lockscreen shortcutdisabled  v1.0
        Universal SafetyNet Fix             enabled   v2.3.1
        Universal GMS Doze                  disabled  1.8.7
        volte-properties for Pixel 6 Pro    enabled   1
        Zygisk - LSPosed                    enabled   v1.8.5 (6649)

It flashed ok, then it went into recovery, eventually to adb
You had the following modules active on next try (so you removed some)
Code:
    Magisk Modules:
        AOSP Mods (Full version)            enabled   2.4.0
        DisableFlagSecure                   enabled   v3.0
        MagiskHide Props Config             enabled   v6.1.2-v137
        Magisk Bootloop Protector           enabled   v1.8.1
        Android 13 QR-scanner lockscreen shortcutdisabled  v1.0
        Universal SafetyNet Fix             enabled   v2.3.1

And that too flashed ok, but still caused you problems.
That is why it's always a good idea to disable modules (you can do so directly in PF) before flashing.

How do you recover from this.
I see your device is either ending up in bootloader mode or recovery mode.
When in bootloader mode, SOS won't work, it needs adb mode,
In recovery mode you can issue adb commands, but I'm not certain you'd have root access to disable Magisk (I doubt it)

What you could do is flash non-patched boot.
Download the latest PF, 4.6.0 is out select the stock boot instead of patched boot, and hit the Flash Boot button
View attachment 5778365

You will be able to boot to your device, but you won't be rooted.
If you flash back patched boot, you would run into the same issue because as soon as you boot, Magisk would load the modules and cause the bootloop. And you can't disable the modules if you don't have su access.
I'm surprised that Bootloop Protector is not saving you, to be honest, although I too have it on my phone, in case of a rainy day, I never needed to use it.
Perhaps ask in the module's thread why it is not kicking in.

There is a way though.
Uninstall your Magisk Manager
Download and install this special Magisk that gives you root access but does not load any modules.
@gecowa6967 was kind enough to build a custom Magisk to get around the same problem you're running into.
You create a patched boot with that special Magisk, and flash it,
Then when you reboot, and have root access, disable all modules
You can then flash back a normal patched boot, and enable one module at a time, until you figure out which is causing you the problem.

The process is a bit tedious, but nothing serious, you can get back fully operational without losing data.
Ask questions if you are uncertain about any step.
WoW thanks. Worked like a charm. Now I'm running without Bootloop protector, AOSP Mods and Zygisk - LSPosed.
 
  • Like
Reactions: badabing2003

Top Liked Posts

  • 1
    Sorry about that.
    I downloaded the file with .exe extension. When I double click on that , l get a prompt to run the program . Then I get the following error.
    View attachment 5830989
    Ok I see, it does not even launch.
    I'll see if I can create a workflow on Github to build 32 bit windows version (it could take some time as I'm currently quite busy). In the meantime you can try the Build it yourself steps.
    1
    Just flashed Android 14 Developer Preview with no problems.

    It doesn't appear that Zygisk works on Android 14, but other than that...
  • 6
    New Release:
    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.
    4
    So here is something weird ive been experiencing. Ive attached a log for it too but let me explain.
    I tried flashing the January Update as it came out, but had a Writing error as if my phone had been disconnected.
    No Biggies i just reflashed on all. Now the funny thing is i can only use one slot at a time.
    Meaning if you look in my Log i can use Slot B if i flash it but not Slot A. Reflashing into inactive slot, aka Slot A here, makes Slot A usable but Slot B cant be booted anymore. I see the Google Logo and then it Bugs out and reboots until it Boots into the working Slot.
    Is this Intended?

    EDIT: It doesnt seem to accept my Txt.
    Im just gonna pastebin it then:
    Log
    This is an expected behavior,
    I have previously posted my findings and why this happens, I'll try to find my post which had all the details.
    In short there is two reasons why it's not bootbale.

    1- Full Factory image flashes system_other.img to the other slot's (inactive) system partition, which includes the optimized dex for the target phone, and on first successful boot, it copies those.
    This in effect makes the alternate slot's system partition not usable.

    2- You would think ok, let's just rewrite that system partition, or flash factory with system_other removed and problem solved, and that would be logical thought, and it actually works, I managed to test that on Pixel XL and booted one with rooted image and the other stock. However in newer Androids (Android 10 or newer with logical partitions), this does not work, because AVB fails when you switch slots.
    3
    Building for Linux
    ./build.sh: line 15: pyinstaller: command not found
    No joy
    Did you do the venv activation / loading?
    And did you run the requirements module loading part at least once in venv?
    The error suggests that pyinstaller module is not installed, which would either be because it was never installed, or you're not in the correct venv.
    3
    Sweet, that is very cool, that's exactly what I need.
    Assuming that it is not too much trouble on Moderators, only if knew one :LOL:
    We have specific areas of responsibility, unfortunately mine does not include Google. @roirraW "edor" ehT is assigned to this section, and was the one who discovered the ability to do this.
    Can threads be merged into one thread so that past notes are not lost?
    Yep
    More importantly, I love that thread you started, thanks for pointing out, I would have never noticed.
    If that approach works (I need to read up on it) I can easily add support for it in PF to simplify the whole process.
    Unfortunately no one has volunteered yet
    3
    Tool looks awesome. Maybe discussed but didn't find it in search.
    Thanks, yes discussed, but it's not always easy to search and find.

    The default behavior of dirty flash of factory w/ patch init_boot will go to active slot, correct?
    Correct

    So with the expert mode, flash inactive slot will the tool automatically set the flashed slot to active on first boot after flash? Or will it boot the same slot I was running and require toggle to set active slot?
    With the latest version, Flash to Inactive Slot is moved to basic mode, so you don't need to be in expert mode to be able to select it.
    Yes, when you flash to inactive slot, the phone will reboot to the newly flashed (previously inactive) slot which would become the new active one.By the way, your last selection will be remembered by PF, so if you select Flash to Inactive Slot, next time you launch the app it will be selected.

    New to this A/B but updating to the inactive slot seems the safer approach no? So any issue with flash update you can immediately fail back to what you had been using? (This is how I've approached flashing network equipment with dual firmware slots)
    Yes and no, unfortunately the monthly flashed factory image includes a system-other data which would be flashed to the other slot's (ie the previous active) system partition, and that includes optimized dex for the current image which gets copied to the data partition on first successful boot , if the failure happens after writing that partition, you would need to restore that partition to be able to boot it.
    Even if no failures happen, if the slot is rooted, simply switching slots will not allow you to boot to the older slot due to verification that happens when you switch slots. This is only on newer devices.
    I have experimented with older Pixel (XL to be specific) and I flashed without system-other and I was able to boot to both slots without any issues, in fact I had one rooted, and the other stock and both cases worked. Too bad we don't get that on new phones.
    Regardless I still flash to inactive slot, mainly for the following reasons,
    - If anything goes wrong before the system-other flashing stage, the phone is usable
    - I still can boot to the other slot by flashing system from previous image
    - My other slot is only 1 release behind.


    My Pixel 7 Pro presently have active slot B with Dec. and inactive slot A with original Oct. So my thinking is next update I'll go for slot A.

    Correct.
  • 97

    PF_promo-banner_v4.png

    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​

    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 (see this if you're having issues with a Linux build.)

    Usage

    Basic Mode

    1. 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 Image of link 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.)
      If you already have your phone connected to the PC, the application will detect all connected devices
      (in adb, fastboot, sideload, recovery modes) and populate the combo box (2).
      Otherwise connect your phone to your PC, and hit the Scan button and then select your device.
    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.
        Image of shell root access
      • (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).
    3. Next select the factory image, the application will recognize the phone model from the image name.
      You can download factory images by clicking the Image of link next to it.
    4. Process the factory image. PixelFlasher will extract boot.img file from the factory image and populate it in the list below (5).
    5. Select boot.img from the list, the selected boot.img can be patched (6), or flashed (10).
    6. Optional: Select this option if you want to patch the boot.img with Magisk. If Magisk is not already be installed on your phone, PixelFlasher will install it for you.
      Your phone does not need to be rooted to create a patched boot.img 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 already rooted or not, the whole process is without any manual step.
    7. If you want to flash (10) a patched boot.img select the newly added entry.
      The following details are listed.
      • Image of patched-boot Indicates that the selection is patched.
      • SHA1 is (shortened for display only) sha1 of boot.img
      • 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 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 was extracted.
    8. Select the Flash Mode
      • 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.
    9. 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).
    10. 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 Image of PixelFlasher GUI
    Image of PixelFlasher GUI

    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.

    1. Option to Change the Active Slot (the inactive slot is automatically selected).
      Option to reboot to Recovery.
    2. Options to Lock / Unlock bootloader, Option to disable Magisk modules when bootlooping.
    3. 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.
    4. Custom Flash. select this to switch from flashing a Factory Image to flashing a single file.
    5. 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.
    8
    PixelFlasher 4.0.0 pre-release:
    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.
    7
    New release:
    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.
    7
    @badabing2003 , I really like your work, well done, I couldn't find a donation link, can you please provide me with that. Thanks and keep up the good work.
    Thanks for your consideration, appreciated.
    Like I mentioned to other such queries, no donation is necessary, this is a payback to the community that has given me years of support and joy.
    If you want to do something good, help others who're just starting or struggling navigating through the maze of information.
    7
    Forgive me if I've asked this before....does ADB shell need root access in order for Pixel Flasher to patch the boot image via Magisk?

    In other words, will the automatic patching work on unrooted devices?
    Here's a complete flow diagram of the patching process, hope it makes it clearer.

    1662558670612.png


    Drive UI and generate patched boot.img box is a new feature that will be available in 3.8.0 (hopefully to be released today), it uses UIAutomator to drive the UI and not require user interaction, the user can still decide to do it manually.

    Without su permissions on adb shell, PixelFlasher will report that the device is not rooted and will follow the flow of un-rooted.