How To Guide Platform-Tools v34.0.3 has a different bug - May 1, 2023 TQ2A.230505.002 Global - Unlock bootloader / Root Pixel 7 Pro [Cheetah] / SafetyNet

Search This thread

roirraW "edor" ehT

Forum Moderator
Staff member

Lughnasadh

Senior Member
Mar 23, 2015
5,173
6,059
Google Nexus 5
Huawei Nexus 6P
Let me explain the error in v34.0.0:

As we all know the partition /super contains a few dynamic partitions. These dynamic partitions only can be handled in userspace by fastbootd mode (which is an executable binary inside the recovery's ramdisk). To flash /super there are two existing methods:
1. In bootloader mode by flashing a super.img to /super.
2. In fastbootd mode by flashing the single dynamic partitions inside of /super.

The firmware of a Pixel has got no super.img inside it, but instead of this another zip archiv (imagesXXX.zip) with all dynamic partitions and a super_empty.img. The super_empty.img is only a partition table of /super with all start/end blocks of the dynamic partitions. These start/end blocks may change with every new firmware build and that's why they are called "dynamic".

For flashing the Pixel's firmware the command fastboot flashall is used by Google. The flashing process starts in bootloader mode to flash bootloader.img + radio.img and then the flashing routine behind fastboot flashall has to decide whether to stay in bootloader mode or to switch into fastbootd mode. For Pixel devices fastboot should switch into fastbootd mode to flash the single dynamic partitions. But it won't and that's the error in v34.0.0.!

Instead of this fastboot remains in bootloader mode and tries flashing /super with a super.img. Let's have a look again at the error message that users get:

Code:
Sending sparse 'super' 1/1 (4194303 KB)          
FAILED (Sparse file is too large or invalid)
fastboot: error: Command failed

Due to the fact that there's no super.img (neither as a raw image nor as a sparse image) fastboot outputs that error message above. The reason for getting this error you'll find in the source (line 249):

C++:
RetCode FastBootDriver::Download(const std::string& partition, struct sparse_file* s, uint32_t size,
                                 size_t current, size_t total, bool use_crc, std::string* response,
                                 std::vector<std::string>* info) {
    prolog_(StringPrintf("Sending sparse '%s' %zu/%zu (%u KB)", partition.c_str(), current, total,
                         size / 1024));
    auto result = Download(s, use_crc, response, info);
    epilog_(result);
    return result;
}
RetCode FastBootDriver::Download(sparse_file* s, bool use_crc, std::string* response,
                                 std::vector<std::string>* info) {
    error_ = "";
    int64_t size = sparse_file_len(s, true, use_crc);
    if (size <= 0 || size > MAX_DOWNLOAD_SIZE) {
        error_ = "Sparse file is too large or invalid";
        return BAD_ARG;
    }

In short: If sparse_file size is 0 Byte or less (= no sparse_file) than output error text "Sparse file is too large or invalid".

Why does this error occure since v34.0.0?

The developer David Anderson thought it was a good idea not to boot into fastbootd mode as much as really, really needed. He wanted to save time during the flashing process (round about 50 sec.). See fully detailed in the spoiler below.

fastboot: Avoid reboots to userspace when using flashall/update.

Reboots to fastbootd (userspace fastboot) take a long time, particularly
due to the orange AVB screen and the likelihood of devices having uart
enabled. For "flashall", there is rarely a need to actually go into
userspace, because all of super is getting thrown away. We can just
flash super in the bootloader.

In the past we didn't do this because computing super.img is expensive -
both in terms of time (due to reading dependent images) and in terms of
space (it's easily over 5GB).

But we don't actually need to fully compute super.img. We can build a
sparse_file containing the metadata/headers, with additional references
to each image file containing partition data. Liblp provides the API to
do that, and here, we simply need to translate the layout to libsparse.

On Pixel, this reduces flashall time by around 35-50 seconds, or around
20% of total time, depending on whether uart is in use.

There are some caveats, in which case we'll fall back to normal
fastbootd. This does not work on non-A/B devices, on retrofit dynamic
partition devices (Pixel 3), and in some other edge-casey scenarios. If
it fails, -v will add logging information about why.

Bue: 266982466
Test: fastboot flashall on Pixel 5+
Change-Id: Ie040da597d739faa7f834202184cec8f8e412076

(source: https://android.googlesource.com/platform/system/core/+/667b1efadd8ce8d8cf19d0684a871125cce203d3)

But something went wrong during the execution of his code. As a result of this the flashing process ends with an error and without flashing the contents of /super.
Following the log of the repo /android/platform/system/core/refs/heads/master/./fastboot several changes were made till today. But we'll have to wait for the next update, which will (hopefully) be officially released soon.

I hope it is somewhat understandable. :)
Quite understandable. I actually pondered whether this was the reason for the issue a couple of weeks ago here, but didn't look into it in depth as you did.

I was also going by Google saying they discovered the cause, were working on a fix and then following the trail where they referenced this bug in the commit Displax mentioned, which also seemed logical to me.
 
  • Like
Reactions: roirraW "edor" ehT

lunatix01

Member
Apr 16, 2022
25
3
localhost
im trying to unlock the bootloader and it says Unrecognized command flashing unlock.

OEM unlocked and debugging is on, and the device is detected in fastboot, i even downloaded the 33 platform tools still the same.

edit: nvm my bad i was in fastbootd
 
Last edited by a moderator:
  • Like
Reactions: roirraW "edor" ehT

simplepinoi177

Forum Moderator
Staff member
saw this last night...kinda freaked me out...
I mean, i guess it's good to know and all, but since it's not on/enabled by default, I wonder how much it really needs to be notified -- as the user would surely know it's on because they turned it on.
Then again, it might be good to suggest if the user doesn't have it enabled and might be interested in it....
 
  • Like
Reactions: roirraW "edor" ehT

roirraW "edor" ehT

Forum Moderator
Staff member
saw this last night...kinda freaked me out...
I mean, i guess it's good to know and all, but since it's not on/enabled by default, I wonder how much it really needs to be notified -- as the user would surely know it's on because they turned it on.
Then again, it might be good to suggest if the user doesn't have it enabled and might be interested in it....
The ability it brings to turn it off for just one time sounds good, and users can probably long press it just like most any other notification and customize it, make it "silent" while still keeping it handy enough if you do wish to access it.

Of course, I know or imagine that most users aren't even aware of the ability to customize notifications, but they'll either find out or they won't. 😂
 

pndwal

Senior Member
saw this last night...kinda freaked me out...
I mean, i guess it's good to know and all, but since it's not on/enabled by default, I wonder how much it really needs to be notified -- as the user would surely know it's on because they turned it on.
Then again, it might be good to suggest if the user doesn't have it enabled and might be interested in it....
Oh... It looked like it would be active by default (with compatible multi-voltage charger) but with new option to turn off once (until a reboot?) and that user is simply notified now... Am I wrong? 🤔

Other devices normally have adaptive charging on by default when available... PW
 
  • Like
Reactions: roirraW "edor" ehT

simplepinoi177

Forum Moderator
Staff member
Oh... It looked like it would be active by default (with compatible multi-voltage charger) with option to turn off once (until a reboot?) and that user is simply notified now... Am I wrong? 🤔 PW
I only remembered that, when I first set up my P7P, I had to choose to enable it....
 

roirraW "edor" ehT

Forum Moderator
Staff member

Pixel 7 losing n25 in recent updates is "intended behavior"
Ah! Now I get it. Google is The Joker! ;) Seriously, though, is there a reason why, anywhere?

7-c-91-dc-44-f-0-d-6-4-ee-1-87-ec-e-5-c-849-b-7-d-062.jpeg.crdownload
 

Schroeder09

Senior Member
Nov 6, 2017
1,152
227
Google Pixel 7 Pro
Yes rooting and having an unlocked bootloader is strongly discouraged by the Graphene developers, but I have a call recording app that only works with root.

I migrated to Graphene when Marcel stopped supporting Xprivacy Lua. It is the next best thing and I recommend it. Everything works and they provide regular security updates.

I have not used stock Google OS in a long time so cannot compare it with Graphene.
Can you speak to the battery life of graphene OS on a p7p? How much SOT are you getting and over what what period of time off the charger is that said SOT happening over? What's idle drain percentage per hour?


Can anyone else speak to battery drain and battery life since the march update? I've lost an hour of SOT when off the charger 18hrs. Combined active/idle drain is now regularly 2.8-3.5%/hr when before it was 2.1% - 2.8%. I'm not aware of any changes I made other than the update.
 
Last edited:
  • Like
Reactions: roirraW "edor" ehT

simplepinoi177

Forum Moderator
Staff member
Can you speak to the battery life of graphene OS on a p7p? How much SOT are you getting and over what what period of time off the charger is that said SOT happening over? What's idle drain percentage per hour?


Can anyone else speak to battery drain and battery life since the march update? I've lost an hour of SOT when off the charger 18hrs. Combined active/idle drain is now regularly 2.8-3.5%/hr when before it was 2.1% - 2.8%. I'm not aware of any changes I made other than the update.
Can you say it's been subpar since December (update)?
I just saw an article in my Google feed speaking a bit on the matter, but it marks the December update as the cause...but it speaks on the "ImsService" and its wakelocks when frequently consuming location data as the cause. Supposedly there's a bug report to Google, in which it is responded to and is said to be escalated to the dev team...
I'll put the link in this thread if it ends up being relevant...
 
  • Like
Reactions: roirraW "edor" ehT

bluegrass55

Senior Member
Sep 29, 2011
631
90
London
Can you speak to the battery life of graphene OS on a p7p? How much SOT are you getting and over what what period of time off the charger is that said SOT happening over? What's idle drain percentage per hour?


Can anyone else speak to battery drain and battery life since the march update? I've lost an hour of SOT when off the charger 18hrs. Combined active/idle drain is now regularly 2.8-3.5%/hr when before it was 2.1% - 2.8%. I'm not aware of any changes I made other than the update.
I don't really pay attention to SOT, idle drain.
The display is on QHD and 120hz. I have a smartwatch & health app that is always running in the background.
90% at 9am. By 3pm 30%.
Battery drain is similar to my old Oneplus 5T, with the same apps but on Pie.
 

Schroeder09

Senior Member
Nov 6, 2017
1,152
227
Google Pixel 7 Pro
Can you say it's been subpar since December (update)?
I just saw an article in my Google feed speaking a bit on the matter, but it marks the December update as the cause...but it speaks on the "ImsService" and its wakelocks when frequently consuming location data as the cause. Supposedly there's a bug report to Google, in which it is responded to and is said to be escalated to the dev team...
I'll put the link in this thread if it ends up being relevant...
As in the December update is when it started? ABSOLUTELY. I've posted many times here and across different platforms that the November battery life was STELLAR. It may have even been here on XDA where I said I have thought about factory resetting tho phone and going back to November with the only reason being for battery life. There was a notable drop after November.
 
  • Like
Reactions: roirraW "edor" ehT

xunholyx

Recognized Contributor
Dec 3, 2012
7,855
5,405
Vancouver
Google Pixel 5
Google Pixel 7 Pro
I don't really pay attention to SOT, idle drain.
The display is on QHD and 120hz. I have a smartwatch & health app that is always running in the background.
90% at 9am. By 3pm 30%.
Battery drain is similar to my old Oneplus 5T, with the same apps but on Pie.
I agree. I have no issues with battery life on mine either. I leave from home at 80-85% for work and come home at about 35-40% 8hrs later.
 
  • Like
Reactions: roirraW "edor" ehT

simplepinoi177

Forum Moderator
Staff member
As in the December update is when it started? ABSOLUTELY. I've posted many times here and across different platforms that the November battery life was STELLAR. It may have even been here on XDA where I said I have thought about factory resetting tho phone and going back to November with the only reason being for battery life. There was a notable drop after November.
If that's the case, the article I'll link below might illuminate some...
It states that the December firmware update specifically (and all subsequent, since all updates after the previous carry-over said bugs until they're specifically dealt with) may be to blame -- the hindrance of excessive idle draining...

https://piunikaweb.com/2023/03/28/google-pixel-7-pixel-6-excessive-idle-battery-drain-issue/
 
  • Like
Reactions: roirraW "edor" ehT

Schroeder09

Senior Member
Nov 6, 2017
1,152
227
Google Pixel 7 Pro
If that's the case, the article I'll link below might illuminate some...
It states that the December firmware update specifically (and all subsequent, since all updates after the previous carry-over said bugs until they're specifically dealt with) may be to blame -- the hindrance of excessive idle draining...

https://piunikaweb.com/2023/03/28/google-pixel-7-pixel-6-excessive-idle-battery-drain-issue/

Thanks for the info and link. The article starts out saying Google is aware and is working on it, but there isn't any specific issue in the issue tracker mentioned that we can all dogpile. There is a screenshot of a user saying they entered an issue in issue tracking. I guess I will go to that. I don't have time now.

Later in the article in one of the march updates to the article the author says someone contacted Google, Google said they were unaware of the issue, and asked the user to send their phone in for a replacement. So are they working on it or not? My guess is they're not just using intelligence guided by experience. Also, the roots of the drain don't seem to be analyzed by power users. The sources of drain they mention seem to be the generic battery usage categories found within the android system settings app as opposed to specific wakelock names that would be obtained from an app like better battery stats. I guess the ImsService thing might be the one specific wakelock mentioned in the article.

I do show high network drain. When I look in BBS wakelocks though I don't see ImsService. I think I have seen it before but not regularly. It's the same old usual offenders: gms.services, android *job.deadline* alarms, etc. See attached screenshots below.
 

Attachments

  • Screenshot_20230330-075051.png
    Screenshot_20230330-075051.png
    200.1 KB · Views: 50
  • Screenshot_20230330-075112.png
    Screenshot_20230330-075112.png
    99.4 KB · Views: 51
  • Screenshot_20230330-075055.png
    Screenshot_20230330-075055.png
    143.8 KB · Views: 48
  • Screenshot_20230330-075106.png
    Screenshot_20230330-075106.png
    85.5 KB · Views: 48
  • Screenshot_20230330-075047.png
    Screenshot_20230330-075047.png
    440.8 KB · Views: 46
  • Screenshot_20230330-075039.png
    Screenshot_20230330-075039.png
    452.2 KB · Views: 45
  • Screenshot_20230330-075133.png
    Screenshot_20230330-075133.png
    210.1 KB · Views: 53
  • Like
Reactions: roirraW "edor" ehT

Schroeder09

Senior Member
Nov 6, 2017
1,152
227
Google Pixel 7 Pro
I agree. I have no issues with battery life on mine either. I leave from home at 80-85% for work and come home at about 35-40% 8hrs later.
What's your usage during the day over that 50% drop as far as SOT? If it's like an hour and the rest is idle drain that 50% drop is NOT normal. The pixel 2xl I came came from gets nearly as good of battery as my p7p, and I replaced the battery in that. Aftermarket batteries are never as good as OEM. This idle drain is not normal. Google play services seems to be the issue- as always- but the s23U guys have the same gms stuff. They are seeing stellar battery life. I fear this IS hardware related and is due to using inferior, cheap, junk cell antennas or modems of some sort that have to make the phone work hard to search for good signal. I hope I am wrong and that the issue is software, but I don't remember battery life ever getting better through the life of the phone. It only ever gets worse with software and is never corrected. I should just go back to the November update and stop messing with updating this phone. Use it on November, 2022 update for 5 years until I get a new phone and forget about it!
 
  • Like
Reactions: roirraW "edor" ehT

xtcislove

Senior Member
Jan 17, 2010
1,377
284
Gummersbach
OnePlus 8 Pro
OnePlus 9 Pro
Quick questions:
I like to keep the abillity to use custom kernels if i update and i know i need to edit the flash all bat like this:

fastboot update image-cheetah-buildnumber.zip --disable-verity --disable-verification

1. Does pixel flasher keep verity etc diabled or do i need to tick disable verity and disable verification with advanced mode enabled?
2. If i use flash all bat or pixel flasher with verity/verfication option enabled to UPDATE the device will it wipe data?
 
  • Like
Reactions: roirraW "edor" ehT

Top Liked Posts

  • 1
    So I guess the feature drop is postponed to next Monday at least?
    1
    Something must have been really broke for them to not push.
    1
    So I guess the feature drop is postponed to next Monday at least?

    Something must have been really broke for them to not push.

    Just a guess of mine, but I think maybe they thought it was more important for them to get the new Android 14 Beta 3 out as soon as possible, to give them as much time as they could to debug it the rest of the way. Who knows, though.
  • 8
    What in the Holy Hand Grenade of Antioch? So I wonder if we can expect a second 34.0.3, or a 34.0.3 R2, or if this is intended behavior / "good enough" for Google for now.

    And thanks!
    This is scandalous for Google.
    Didn't work on redfin

    Code:
    fastboot: error: ANDROID_PRODUCT_OUT not set
    Fixed in upstream.
    6
    As @Lughnasadh said it likely would, Platform-Tools v34.0.3 is out. Test at your own risk.



    (both links resolve to the same zip)

    Nothing in the release notes about it yet.

    Edit: The adb.exe and fastboot.exe do indeed have different hashes than the most recent 34.0.1.
    For what it's worth, Mishaal Rahman said he tested it and the problem has been fixed.
    5
    Your phone isn't dead, it's just resting. Probably pining for the fjords
    LOL! Nice.

    You're welcome! I have no idea if this is a feature or a bug, and I'm guessing Google doesn't either 🤣
    LOL!!

    Can you please explain where you put this command line. I'm not exactly sure how to add it.
    Thanks, I'm on Windows and I'll stay with 33.0.3 until it's fixed
    Just for reference (but I recommend still sticking to @badabing2003's advice), on Windows, you:
    1. Right-click the start button
    2. Choose System from the pop-up menu
    3. Over on the FAR right, choose "Advanced system settings". Instead of steps 1 & 2, you can also click (left) on the start button and start typing Advanced system settings, and eventually you'll see "View advanced system settings", and click on that.
    4. Click on "Environment Variables" at the bottom on the default Advanced tab at the top.
    5. Under the bottom "System variables" section, click "New".
    6. For Variable name, put in:
      • Code:
        ANDROID_PRODUCT_OUT
    7. For Variable value, put in the full path to your platform-tools folder. For example:
      • Code:
        S:\platform-tools\
    I always run platform-tools while actually having a command line open in the platform-tools folder, and I haven't tested this version yet, so as was remarked previously, I don't know if that would necessarily prevent requiring these steps.
    5
    5
    Comparison of old and new 34.0.1 (utilities version changes)

    Old:

    ADB: 1.0.41 (34.0.1-9680074)
    Fastboot: 34.0.1-9680074
    Make_f2fs (casefold): 1.15.0 (2022-05-20)
    Mke2fs: 1.46.6 (1-Feb-2023)

    New:
    ADB: 1.0.41 (34.0.1-9979309)
    Fastboot: 34.0.1-9979309
    Make_f2fs (casefold): 1.16.0 (2023-04-11)
    Mke2fs: 1.46.6 (1-Feb-2023)
  • 60
    Pixel 7 Pro [Cheetah]

    Updated May 13, 2023
    Note that more than three users have said that 34.0.1 (even May 10, 2023's binary update of 34.0.1) did not work correctly for them. I recommend sticking with 33.0.3 (just below these quotes)

    Someone reported it to Google (added a comment about 34.0.1 to the existing 34.0.0 report).
    tried to flash the latest build of AncientOS with it, did not work. Back to r33.0.3 and it worked fine
    platform-tools_r34.0.1-windows is not functioning properly. Back to 33.0.3 we go...
    Add me to the list of users that had a problem with platform-tools 34.0.1. I got into a bootloop after running flash-all.bat. Downgraded to 33.0.3, reran the new (old) flash-all.bat, and was all good.

    Using 34.0.1, the phone never even got to the fastbootd part of the process

    May 10, 2023 binary update of 34.0.1:
    Update
    I tested SDK Platform-tools r. 34.0.1 it is not fixed. There are still problems with fastbootd. Use SDK Platform-tools r. 33.0.3

    The download links for 33.0.3:


    Google Pixel Update


    Here there be dragons. 🐉 I am not responsible for anything at all. 😹

    VERY IMPORTANT - On the Pixel 7/Pro, we use Magisk to patch init_boot.img, NOT boot.img AND we flash the patched init_boot to the init_boot partition - do not flash it to the boot partition.​

    Thanks to @edcsxz, @Lughnasadh, and @AndyYan for news about that and confirming it.

    Moved @mariusnoor's provided zero-day OTA.zip to Post #8 - Old news from the OP.

    Unlocking or locking the bootloader will wipe the device every single time, so be sure to have your data backed up before doing so, or better yet, just unlock it as soon as you get the device.​

    Keep in mind that unlocking the bootloader or rooting might affect your phone's capability to use banking apps such as Google Pay, your local bank's app, or even the ability to install some apps like NetFlix. See Post #2 - Unlocking Bootloader / Rooting / Updating | SafetyNet | ADB/Fastboot & Windows USB Drivers.​

    If you're going to re-lock the bootloader, make sure the ROM you have on your phone is completely stock (by flashing the latest official firmware) BEFORE re-locking it.​

    There are no permanent negative consequences if you unlock or re-lock the bootloader other than it will wipe your phone, and while your bootloader is unlocked you get a brief screen when you boot the phone telling you (and anyone who sees your phone at the time) that it's unlocked. You will also continue to receive updates (if you've merely unlocked the bootloader, you can take updates as normal) unlike Samsung, Sony, et cetera, which have permanent major consequences with reduced functionality even if you un-root and re-lock your bootloader. If you're actually rooted (not just bootloader unlocked), you'll have to perform extra steps to manually update each month, and to keep root/re-root.

    INDEX:

    • Post #2 - Unlocking Bootloader / Rooting / Updating | SafetyNet | ADB/Fastboot & Windows USB Drivers:
      • How to Root the first time / aka How to unlock the Bootloader
      • Unlocking Bootloader (required in order to root)
      • How to update each month (and also how to root)[requires an unlocked bootloader for updating via this factory image method]
        • OPTIONAL: If you want to flash both slots, after this first time, then after do the following
      • SafetyNet
      • Optional steps when updating - flashing custom kernels
        • The two schools of thought on disabling Verity and Verification
      • ADB/Fastboot and Windows USB Drivers - direct download links and the most recent changelog
    • Post #3 - Other, most important resources:
      • A list of other important apps
      • TWRP [not made for the Pixel 7 (or 6) Pro yet - will update when or if ever it has - don't hold your breath]
      • Factory Images (requires an unlocked bootloader)
      • Full OTA Images(doesn't require an unlocked bootloader - you can ask questions in this thread, but I won't be providing the steps necessary, as I always use the factory image)
        • @mariusnoor's provided official URL to download the zero-day OTA to TD1A.220804.031.
      • Check warranty status
      • Official Google Pixel Update and Software Repair (reported as of January 23, 2022 to still not be updated for the Pixel 6/Pro - no idea if it has yet now, or if it will be for the 7/Pro)
      • Official Google Pixel Install fingerprint calibration software (also available at the bottom of the Update and Software Repair page above) - I believe this is only helpful if you've replaced the screen - if it's anything like the Pixel 6 Pro: if you have the screen replaced, then you *must* have the fingerprint reader replaced as well.
      • Find problem apps, Magisk, and LSposed Modules by (three different methods)
      • Official Google Android Flash Tool (OEM Unlocking needs to be toggled on - you do not have to manually unlock the bootloader - their site will do that on its own)
      • How to determine if you already have Verity and Verification disabled (required for custom kernels for now)
      • How to unroot
    • Post #4 - Build ID definitions
    • Post #5 - Blank
    • Post #6 - Regarding P7P 5G model numbers and capabilities, and how to determine your hardware version
    • Post #7 - My personal advice for how to get your device back up and running as you had it before a factory reset
    • Post #8 - Old news from the OP

    Thank you to the following users who have all contributed greatly to my knowledge of Pixels since I came back to XDA a year ago after a few years of mostly inactivity. Apologies if I miss anybody. In alphabetical order:

    41

    Unlocking Bootloader / Rooting / Updating | SafetyNet | ADB/Fastboot & Windows USB Drivers


    Unlocking Bootloader / Rooting / Updating:

    How to Root the first time / aka How to unlock the Bootloader:
    Unlocking the bootloader will factory reset your device. There is no way around this. I highly suggest never re-locking your bootloader once you unlock it. If you do ever re-lock the bootloader, only do so after restoring the phone to 100% stock by using the latest Pixel 7 Pro Factory Image or Official Google Android Flash Tool.

    Verizon variants:
    Will never be able to have their bootloader unlocked. It's like winning the lottery, and just as rare and relatively random. There is nothing that anyone on XDA can do to help you unlock your Verizon variant.

    T-Mobile and AT&T variants:
    Can be unlocked once you pay the phone off, then you contact the carrier and arrange to Carrier unlock the phone. Once the phone is Carrier unlocked, then you can unlock the bootloader with the usual caveats (will wipe the device and there's no way around it).

    The direct-from-Google (or other retailers who aren't U.S. Carriers), the factory Carrier Unlocked Pixels:
    Can be bootloader unlocked at any time. I'd try it first before putting a SIM card in the phone. If OEM unlocking is grayed out, try connecting to Wi-Fi, and reboot if necessary. If it's still grayed out, try with your SIM card, and reboot again. Historically on Pixels, most of the time you can toggle OEM unlocking immediately, but occasionally some users have found it took a little while after being either connected to Wi-Fi or having your SIM card installed in it, and then eventually (hours? day? days?) you can toggle OEM unlocking.

    The rest of the world's carriers:
    No idea. Feel free to ask in the thread and hopefully, someone with specific knowledge will answer.

    Other than trying the things I mentioned above, there is nothing else that anyone on XDA can do to help get OEM unlocking to be ungrayed.

    Unlocking Bootloader (required in order to root)
    The one-time first steps are:
    1. Android Settings
    2. About phone
    3. Click on Build number repeatedly, about seven times
    4. Go back to the main Android Settings
    5. System
    6. Developer options
      • Toggle OEM unlocking on. See @Namelesswonder's tip below (this won't help with variants that are supposed to be bootloader locked):
        Also a little tip for anyone trying to enable OEM unlocking on a device and it is grayed out, you can force the phone to check for eligibility by connecting to the internet in whatever way, going to the dialer, and dialing *#*#2432546#*#* (CHECKIN).
        You should receive a notification from Google Play services with "checkin succeeded" and OEM unlocking should be available immediately if the device is eligible.
        Google account not needed, SIM not needed, no other setup required. Works on completely-skipped-setup-wizard. Just need to make sure to connect to the internet and select the connection as metered to avoid any updates.
      • Toggle USB debugging on.
      • [Optional] I highly suggest you also disable Automatic system updates. Note that in a situation such as the Android 12 serious bootloader security issue, this setting will not keep Google from forcing an update to come through anyway.
    7. How to actually root follows the same steps below as how to update each month.
    8. Download the latest ADB/Fastboot (SDK Platform Tools) and Windows USB Drivers.
    9. Unzip the Platform Tools and Drivers.
    10. NOTE: If you have USB drivers for other Android devices installed, like Samsung, they can alternately sometimes work and not work with Google Pixels. I recommend uninstalling those drivers, or at least updating that driver to Google's driver as instructed below (the Device Manager entry may be different with other OEMs).​

    11. The Windows USB Drivers may have to be installed twice:
      • The first time while your phone is running and unlocked as normal.
        1. In Windows, right-click on the Start Button and choose Device Manager.
        2. Plug your phone into the computer and look for the new hardware entry in Device Manager. Near the top of Device Manager should be Android Device. Click the drop-down arrow to the left of it.
        3. Below Android Device, it should now show Android Composite ADB Interface
        4. Right-click the Android Composite ADB Interface and choose Update driver
        5. Choose Browse my computer for drivers
        6. Click Browse and navigate to where you unzipped the Windows USB drivers to.
        7. Follow the prompts to install the driver.
        8. Keep Device Manager itself open - you'll need it again in a minute, but you can close any other Device Manager windows after you have installed the driver.
        9. Open a Command Prompt and navigate to the platform-tools folder.
        10. Run command:
          Code:
          adb devices
        11. On your Android device, you'll get an ADB prompt. Check the box to always give ADB permission and click OK.
        12. Confirm that the command results in a list of Android devices. When doing these producedures, you should only have the one device you want to work on connected, to keep things simple.
      • The second time to install the driver is while the phone is in Bootloader (fastboot mode), notFastbootD (fastbootd) mode. I know it's confusing.
        • Run command:
          Code:
          adb reboot bootloader
        • Repeat the instructions above starting with "Right-click the Android Composite ADB Interface".
          • This second time installing the drivers while in Bootloader (fastboot mode), it will show up as "Android Bootloader Interface". Thanks @simplepinoi177 for the suggestion to add this detail.
    12. Run command:
      Code:
      fastboot flashing unlock
    13. On the phone, press either the up or down volume button once until you see Unlock the bootloader |>| beside the power button.
    14. Press the power button. The phone will go black for a second and then show near the bottom Device state: unlocked.
    15. After these first-time steps to unlock the bootloader, if you want to root, continue below at the step:
    How to update each month (and also how to root) [requires an unlocked bootloader for updating via this factory image method]
    1. These three instructions only apply if you're already rooted and updating from one firmware version to another:
      • Made sure all Magisk Modules have been updated.
      • Disable all Magisk Modules.
      • UNhide Magisk!
    2. If you are going to use the Official Google Android Flash Tool, then skip the steps I indicate with FAB(Flash-All.Bat).
      • If using the Android Flash Tool to update/dirty flash, you should have the following items notselected:
        • Deselect Wipe
        • Deselect Force Flash all partitions (which will also wipe)
        • Deselect re-lock bootloader
    3. Always use the latest ADB/Fastboot (SDK Platform Tools) and Windows USB Drivers.
    4. Unzip the Platform Tools.
    5. Download the latest Pixel 7 Pro Factory Image (at the bottom of the "Cheetah" section).
    6. Unzip the factory image to the same platform-tools folder, i.e. so that flash-all.bat and all other files are in the same folder as ADB and Fastboot from the platform-tools.
    7. * FAB VERY important - Edit the flash-all.bat (on Windows) or flash-all.sh (on Linux) and remove the -w from the fastboot update image-cheetah-etcetera.zip line. This will keep the script from wiping your phone when you run it.
    8. Extract only the init_boot.img file from the image-cheetah-etcetera.zip to the same platform-tools folder.
    9. Copy the init_boot.img from the PC to the phone's internal storage.
    10. On the phone: Apply Magisk Stable to the new stock init_boot.img. NOTE: It is always possible that an Android Update (Monthly, QPR [Quarterly Platform Release], new major Android versions, and Beta versions) might need a new version of Magisk Stable, Beta, or Canary from GitHub to work correctly. XDA forum for Magisk is here.
      • Launch the Magisk app.
      • Beside "Magisk", click "Install".
      • Click "Select and Patch a File", and choose the init_boot.img that you just copied to the phone's storage.
    11. Copy the Magisk'd init_boot.img (filename similar to magisk_patched-25200_1a2B3c.img)back over to the computer.
    12. * FAB Run commands:
      Code:
      adb reboot bootloader
      flash-all.bat (on Windows)
      or
      flash-all.sh (on Linux)
      
      (Note:  At least two Apple Macintosh users had trouble using the flash-all.sh - at least one of those users, everything went smooth once they used a Windows PC for this part of the process)

      IMPORTANT - The flash-all will take several minutes and reboot on its own several times including to a mode called "FastbootD", and finally reboot into full Android when it's done. Do not interrupt this process. On the FastbootD screen on the phone, do not use any of the manual selection options - let the flash-all script do it's work. Do not unplug your phone until it has fully booted into Android.​

      Thanks to @PurppleMonkey and @xgerryx for suggesting a warning about this. Thanks to @simplepinoi177 for suggesting the "FastbootD" clarification.
    13. On the phone:
      • Wait for the phone to boot normally.
      • OPTIONAL: If you want to flash both slots, after this first time, then after do the following:

        • Code:
          adb reboot bootloader
          fastboot --set-active=other
          flash-all.bat
        So you're doing the flash-all.bat a second time on the second slot.
    14. On the computer:
      • Open a Command Prompt and navigate to the platform-tools folder.
      • Run command:
        Code:
        adb reboot bootloader
      • After phone has rebooted into Bootloader (Fastboot) mode, run command:
        Code:
        fastboot flash init_boot magisk_patched-25200_1a2B3c.img
        fastboot reboot
    15. Unlock the phone.
    16. Confirm that the phone boots completely normally.
    17. Cautiously re-enable Magisk Modules.
    18. Reboot.
    19. Confirm everything worked fine.
    20. If the phone won't boot correctly after having enabled Magisk Modules, see either of the two solutions below:
      • For the future, you don't need to go into safe mode unless that's your preference. I forgot what all it resets, but it's many settings and it's bothersome. I'd rather just reinstall my modules and not have to figure out those Android settings/changes which I come across days or weeks later when I infrequently do something. Have your phone reboot and run this:
        Code:
        adb wait-for-device shell magisk --remove-modules
        I like to just do this first:
        Code:
        adb devices
        So the server is running, then I have the long one pasted and ready to go once the phone turns off.
      • Find problem apps, Magisk, and LSposed Modules by (three different methods) section in my next post. After following that link, you may have to scroll up a little bit and the section title will be highlighted.

    SafetyNet:

    Use whichever of these is newer than the other:
    • @Displax Universal SafetyNet Fix Mod on XDA.
    • Official Universal SafetyNet Fix released by @kdrag0n available at XDA.
    1. Launch the Magisk app.
    2. Go to Magisk's Settings (Gear in top right).
      • Click Hide the Magisk app.
      • When you hide it, you'll have the optional opportunity to change the Magisk app's name to whatever you wish. It doesn't have to be complex to fool apps that check for Magisk.
      • Important: When you have the Magisk app hidden or renamed, you can accidentally install a new copy of Magisk. This situation won't work at all - neither copy of Magisk will work with two installed. This is one reason why I don't completely hide Magisk, so I can tell it's installed because I have it renamed as something easily recognizable.
      • Back to the Magisk app's Settings...
      • Click Systemless hosts. This adds a Magisk Module to Magisk, which you can verify in a later step.
      • Toggle Zygisk on.
      • Toggle Enforce DenyList on.
      • Click Configure DenyList.
        • Add every app that you want to explicitly deny root and the existence of root.
        • You can click the 3-dot menu and choose the options to display system and/or OS apps, if necessary.
        • Note that for many apps, it is not enough to click the single checkmark to the right of the app name in this list. For many but not all apps, you should click on the app name and you'll see it expand to two or more entries, each with its own toggles. In this expanded state, you can now check the single top checkbox beside the main app name and it'll toggle all individual sub-entries.
        • Some apps add new entries to this list from time to time, so if you find that an app used to work for you when rooted and doesn't now, check this list again and look for the entries that aren't fully checked. There will be an incomplete horizontal line above the apps that don't have all of their sub-entries toggled.
        • You can use the Search button at the top of this list to find specific apps quickly.
        • The most common apps you should definitely fully check in this list are:
          • IMPORTANT - There are some things, such as Google Play Services which it's fine to add to the DenyList, but it's perfectly normal when used in combination with the Universal SafetyNet Fix (USNF) that it is back to being unchecked the next time you visit the DenyList. Since USNF takes care of Google Play Services, you don't even have to add it to the DenyList in the first place.​

          • Google Play Store
          • Google Services Framework
          • Google Play Protect Service
          • Wallet
          • GPay
          • Any banking apps.
          • Any streaming apps that use DRM.
          • Any 2FA apps, especially those for work.
          • Some of those Google apps might not need denying, but it doesn't hurt to deny them.
          • Any time you toggle more entries in this list, it may be necessary to reboot the phone for it to take effect.
    3. From the main screen in the Magisk app, go to Modules at the bottom.
    4. Confirm that the Systemless hosts Magisk Module is added to this list, and enabled.
    5. Install the appropriate Magisk Module: Universal SafetyNet Fix referenced above these numbered instructions.
    6. Reboot.
    7. Install from the Play Store:
      • YASNAC - SafetyNet Checker
        • Launch it.
        • Click Run SafetyNet Attestation.
        • It should say:
          • Basic integrity: Pass
          • CTS profile match: Pass
          • Evaluation type: BASIC
      • Play Integrity API Checker
        • Launch it.
        • Click Check.
        • It should have the following with a green checkmark:
          • MEETS_DEVICE_INTEGRITY
          • MEETS_BASIC_INTEGRITY
        • It's normal for MEETS_STRONG_INTEGRITY to have a red X.
      • You don't have to keep these installed, although I keep them handy.
      • Sometimes, clearing app cache and/or data for apps like the Google Play Store, GPay, Wallet and others (and then rebooting) after these steps may help pass SafetyNet as well.
    8. See @V0latyle's explanation (and further linked post) for why we can't achieve STRONG_INTEGRITY with an unlocked bootloader.
    9. See @V0latyle's [DISCUSSION] Play Integrity API regarding why SafetyNet, per se, is actually defunct and replaced with Play Integrity - and New Official Universal SafetyNet Fix released by @kdrag0n v2.4.0 referenced in the steps above takes care of the latter.

    Optional steps when updating - flashing custom kernels:
    • Download the custom kernel of choice on the phone.
      • Be sure to read the particular installation instructions in the kernel threads' OP - any instructions in their OPs takes priority over anything I say here, which is generalized.​

        For now even the AK3 Zip versions of custom kernels requires Verity and Verification to be disabled.
        How to determine if you already have Verity and Verification disabled - see section in Post #3 - Other, most important resources
      • The two schools of thought on disabling Verity and Verification:
        • My post here. If you want to discuss it any, please do so in my thread, or at least not in that custom kernel thread, so as to keep the thread on-topic.
    • Extract the vbmeta.img file from the inner Zip of the factory image zip and put it in the same folder with the latest extracted platform-tools.
    • Hook the phone up to your computer and run the following commands:

      • Code:
        adb reboot bootloader
        [wait for the phone to reboot to bootloader (fastboot mode)]
        Code:
        fastboot flash vbmeta vbmeta.img --disable-verity
        fastboot reboot
    • Unlock the phone once it's booted up.
    • Make sure the Kernel Flasher app is up to date. XDA thread for the Kernel Flasher app is here.
    • Launch Kernel Flasher.
    • Select the slot that's mounted.
    • Choose Flash AK3 Zip.
    • Select the custom kernel zip just downloaded.
    • When it's done flashing, head to Android Settings and perform a Factory Reset, as is currently needed for Despair kernel.
    • If you failed to disable Verity and Verification ahead of time, if you have to, just force the phone off using these instructions: Turn your Pixel phone on & off, then press the Volume Down and Power buttons for a couple of seconds to get into the bootloader (fastboot mode). You'll still have to factory reset after disabling Verity in combination with this kernel, for now.
    • Whenever you use the flash-all to flash your phone, as long as you want to continue to disable Verity and Verification, you'll have to further modify the flash-all script as such:

      • Code:
        fastboot update image-cheetah-buildnumber.zip --disable-verity --disable-verification

    ADB/Fastboot & Windows USB Drivers:

    Platform Tools was updated in August 2022 to v33.0.3 (don't use the newer v34.0.0 - it has issues):

    Release Notes https://developer.android.com/studio/releases/platform-tools:

    33.0.3 (Aug 2022)​

    • adb
      • Don't retry adb root if first attempt failed.
      • Fix track-devices duplicate entry.
      • Add receive windowing (increase throughput on high-latency connections).
      • More specific error messages in the "more than one device" failure cases.
      • Reject unexpected reverse forward requests.
      • Fix install-multi-package on Windows.
    • fastboot
      • Remove e2fsdroid as part of SDK platform-tools.
      • Print OemCmdHandler return message on success.
    You'll need this if you're going to unlock the bootloader on your Pixel 7 Pro: SDK Platform Tools (download links for Windows, Mac, and Linux). Note that you can find links to download the tools elsewhere, but I wouldn't trust them - you never know if they've been modified. Even if the person providing the link didn't do anything intentionally, the tools could be modified without them being aware. Why take a chance of putting your phone security further at risk?

    You can alternately use the tools from the SDK Manager, but most of us will want to stick to the basic tools-only without the complications of the full development manager.
    For Windows, get Google's drivers here Get the Google USB Driver (ADB will likely work while the phone is fully booted, but if you're like me, you'll need these drivers for after you adb reboot-bootloader, to be able to use ADB and Fastboot.
    33
    Please test this UNSF build. Should be passing basic/device integrity.

    Use updated version from main post instead
    22
    I would expect that once 2.4.0 is released publicly, we should probably go back to using the official release, but conversely, as long as something works for you, there's also not necessarily a need to fix what isn't broken. Personally, I plan on switching once it's made completely public.

    Note that @Displax wasn't trying to replace the official version - they always kept it the same version as the most recent official along with "Mod", "Mod 2", or "Mod 2.1", so that suggests to me they were merely making temporary workarounds until/if the official was updated.
    Indeed. My MOD is a temporary solution until kdrag0n release accurate fix.

    I didn't change the update channel in the module on purpose so that everyone can upgrade to the new official version automatically without any problems.
    21

    Other, most important resources


    A list of other important apps: - be sure to thank the respective OPs:
    How to unroot
    One of these two options:
    1. Official Google Android Flash Tool (OEM Unlocking needs to be toggled on - you do not have to manually unlock the bootloader - their site will do that on its own).
      Select the options to:
      • Wipe
      • Force flash all partitions
      • Re-lock bootloader
    2. Flash the completely stock init_boot.img from the same firmware version that you're on:
      Code:
      adb reboot bootloader
      fastboot flash init_boot init_boot.img

    TWRP [not made for the Pixel 7 (or 6) Pro yet - will update when or if ever it has - don't hold your breath]
    I would guess that this should be the appropriate URL for official TWRP custom recovery for the Pixel 7 Pro, but who knows when/if that will actually be made available, and it may become available unofficially in these forum sections before being made official. I'll adjust this URL as needed. https://twrp.me/google/googlepixel7pro.html.

    Factory Images (requires an unlocked bootloader)
    It's also handy to have to the full official firmware available, whether it's to recover from accidents or for actual development. Note the official link to the general Factory Images for Nexus and Pixel Devices page. The following link goes directly to the Pixel 7 Pro (Cheetah) section: Pixel 7 Pro Factory Images. I prefer to actually bookmark a link to the device listed immediately below the device I want the firmware for, because Google dumbly (in my opinion) puts the latest firmware at the bottom of the list for each particular device, and that ends up making you scroll a lot after a year or two of monthly updates.

    Full OTA Images (doesn't require an unlocked bootloader - you can ask questions in this thread, but I won't be providing the steps necessary, as I always use the factory image)

    Check warranty status - *may* reveal if a phone is refurbished, only if the phone was refurbished through Google - thanks to @Alekos for making me aware of the site.

    Official Google Pixel Update and Software Repair (reported as of January 23, 2022 to still not be updated for the Pixel 6/Pro - no idea if it has yet now, or if it will be for the 7/Pro)

    Official Google Pixel Install fingerprint calibration software (also available at the bottom of the Update and Software Repair page above) - I believe this is only helpful if you've replaced the screen - if it's anything like the Pixel 6 Pro: if you have the screen replaced, then you *must* have the fingerprint reader replaced as well.

    Find problem apps, Magisk, and LSposed Modules by (three different methods):
    1. Google's Help Page for Find problem apps by rebooting to safe mode - this can be a lifesaver and keep you from having to do a restore to 100% complete stock or even from having to do a factory reset. This will deactivate all Magisk modules, and they'll remain deactivated even after you boot normally after briefly booting to safe mode. You can re-enable the Magisk modules as you wish to try to narrow down the problem if it was caused by a Magisk module. This can even get things working again after a Magisk Module wasn't finished installing and potentially causing a bootloop.
    2. You can also follow @Jon8RFC's advice:
      For the future, you don't need to go into safe mode unless that's your preference. I forgot what all it resets, but it's many settings and it's bothersome. I'd rather just reinstall my modules and not have to figure out those Android settings/changes which I come across days or weeks later when I infrequently do something. Have your phone reboot and run this:
      Code:
      adb wait-for-device shell magisk --remove-modules
      I like to just do this first:
      Code:
      adb devices
      So the server is running, then I have the long one pasted and ready to go once the phone turns off.
      Worked for me yesterday when I accidentally tried some old version of a Magisk Module. You have to reinstall your Magisk Modules, but if you're using a third-party widget, it won't disable them like Safe mode does.
    3. (May only be for mis-behaving LSposed modules):
      In the future try this

      adb wait-for-device shell su -c "touch /data/adb/modules/zygisk_lsposed/disable"
      adb reboot

      Official Google Android Flash Tool (OEM Unlocking needs to be toggled on - you do not have to manually unlock the bootloader - their site will do that on its own)
      OEM unlocking in developer options needs to be toggled on. I don't "believe" you have to actually do the "fastboot flashing unlock" command.

      How to determine if you already have Verity and Verification disabled (required for custom kernels for now)
      I keep seeing this asked, so I added a Magisk module for it to the linked Github release. With the module installed, you can just run:

      Code:
      su
      avbctl get-verity
      avbctl get-verification

      I spent way more time debugging that I downloaded Github's HTML of the update-binary script rather than the raw file than I care to admit. 🤦‍♂️ Off to bed.
      Alternative two more manual ways of checking:
      Since you´re probably already rooted anyway if you plan to flash this kernel, simply reboot your device. After you enter the device immediately take a kernel log with for example EXKM or any other app that allows to do that, terminal, etc.

      Look for that line
      [ 1.273480] init: [libfs_avb]AVB HASHTREE disabled on: /vendor_dlkm

      If you see this line, verity/verification should be disabled.
      I've seen several cases where having the ability to check would have been handy, so I pushed an avbctl binary built against the latest aosp sources here.

      The simplest way to use it would be the following:

      Code:
      adb push avbctl /data/local/tmp
      adb shell
      su
      cd /data/local/tmp
      chmod +x avbctl
      ./avbctl get-verity
      ./avbctl get-verification