RSS

Fix Android fastboot flash 'Could not open super partition'

This guide addresses the issue of encountering the error 'Could not open super partition' when flashing a Pixel device using the flash-all.sh script.

Symptom

When flashing a Pixel device using the flash-all.sh script, the process fails with the 'Could not open super partition' error:

$ ./flash-all.sh
Warning: skip copying bootloader_a image avb footer (bootloader_a partition size: 0, bootloader_a image size: 8726312).
Sending 'bootloader_a' (8521 KB)                   OKAY [  0.320s]
Writing 'bootloader_a'                             (bootloader) Flashing Pack version b1c1-0.4-7617406
(bootloader) Flashing partition table for Lun = 0
(bootloader) Flashing partition table for Lun = 1  
(bootloader) Flashing partition table for Lun = 2  
(bootloader) Flashing partition table for Lun = 4
(bootloader) Flashing partition table for Lun = 5
(bootloader) Flashing partition msadp_a
(bootloader) Flashing partition xbl_a
(bootloader) Flashing partition xbl_config_a       
(bootloader) Flashing partition aop_a
(bootloader) Flashing partition tz_a 
(bootloader) Flashing partition hyp_a
(bootloader) Flashing partition abl_a
(bootloader) Flashing partition keymaster_a        
(bootloader) Flashing partition cmnlib_a
(bootloader) Flashing partition cmnlib64_a
(bootloader) Flashing partition devcfg_a
(bootloader) Flashing partition qupfw_a
(bootloader) Flashing partition storsec_a
(bootloader) Flashing partition logfs
OKAY [  0.719s]
Finished. Total time: 1.489s
Rebooting into bootloader                          OKAY [  0.079s]
Finished. Total time: 0.079s
Warning: skip copying radio_a image avb footer (radio_a partition size: 0, radio_a image size: 73183372).
Sending 'radio_a' (71468 KB)                       OKAY [  3.080s]
Writing 'radio_a'                                  (bootloader) Flashing Pack version SSD:...
(bootloader) Flashing partition modem_a
OKAY [  0.507s]
Finished. Total time: 4.036s
Rebooting into bootloader                          OKAY [  0.079s]
...
...
...
extracting boot.img (64 MB) to disk... took 0.786s
archive does not contain 'boot.sig'
extracting super_empty.img (0 MB) to RAM...
Sending 'boot_a' (65536 KB)                        OKAY [  1.650s]
Writing 'boot_a'                                   OKAY [  0.401s]
extracting super_empty.img (0 MB) to RAM...
extracting dtbo.img (8 MB) to disk... took 0.035s
archive does not contain 'dtbo.sig'
extracting super_empty.img (0 MB) to RAM...
Sending 'dtbo_a' (8192 KB)                         OKAY [  0.290s]
Writing 'dtbo_a'                                   OKAY [  0.106s]
extracting super_empty.img (0 MB) to RAM...
extracting vbmeta.img (0 MB) to disk... took 0.001s
archive does not contain 'vbmeta.sig'
extracting super_empty.img (0 MB) to RAM...
Sending 'vbmeta_a' (8 KB)                          OKAY [  0.120s]
Writing 'vbmeta_a'                                 OKAY [  0.067s]
extracting super_empty.img (0 MB) to disk... took 0.000s
Rebooting into fastboot                            OKAY [  0.060s]
< waiting for any device >
Sending 'system_a' (4 KB)                          OKAY [  0.001s]
Updating super partition                           OKAY [  0.007s]
Deleting 'system_b'                                FAILED (remote: 'Could not open super partition')
fastboot: error: Command failed

The error “Could not open super partition” during a fastboot flash operation typically indicates an issue with accessing or modifying the super partition on the device.

Reboot and redo flash-all.sh get the same error again.

Solution

Since the Pixel devices use a dynamic partitioning scheme, and it have a b partition. If one failed. We can try to active the b partition and flash again.

  1. Reboot into fastboot mode:
$ adb reboot bootloader
  1. Check the current active slot:
$ fastboot getvar current-slot

If it returns a, then we need to switch to slot b.

Hint: use fastboot getvar all to see all the variables if needed.

  1. Set the active slot to b:
$ fastboot set_active b
Setting current slot to 'b'                        OKAY [  0.023s]
  1. Verify the active slot has been changed:
$ fastboot getvar current-slot
  1. Now, try running the flash-all.sh script again:
./flash-all.sh

or just flash images that failed before:

fastboot --set-active=b -w -v --skip-reboot update image.zip

This should allow the flashing process to proceed.

Full success flash log:

```sh
$ fastboot --set-active=b -w -v --skip-reboot update image-blueline-sp1a.210812.016.c2.zip
--------------------------------------------
Bootloader Version...: xxx
Baseband Version.....: xxx
Serial Number........: xxx
--------------------------------------------
extracting android-info.txt (0 MB) to RAM...
Checking 'product'                                 OKAY [  0.000s]
Checking 'version-bootloader'                      OKAY [  0.000s]
Checking 'version-baseband'                        OKAY [  0.000s]
Setting current slot to 'b'                        OKAY [  0.037s]
archive does not contain 'fastboot-info.txt'
extracting boot.img (64 MB) to disk... took 0.411s
fastboot: verbose: target reported max-download-size of 268435456 bytes
archive does not contain 'init_boot.img'
extracting dtbo.img (8 MB) to disk... took 0.067s
archive does not contain 'dt.img'
archive does not contain 'pvmfw.img'
archive does not contain 'recovery.img'
extracting vbmeta.img (0 MB) to disk... took 0.000s
archive does not contain 'vbmeta_system.img'
archive does not contain 'vbmeta_vendor.img'
archive does not contain 'vendor_boot.img'
archive does not contain 'vendor_kernel_boot.img'
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
archive does not contain 'boot_other.img'
archive does not contain 'odm.img'
archive does not contain 'odm_dlkm.img'
extracting product.img (2148 MB) to disk... took 19.844s
extracting system.img (845 MB) to disk... took 5.716s
archive does not contain 'system_dlkm.img'
extracting system_ext.img (236 MB) to disk... took 1.136s
extracting system_other.img (67 MB) to disk... took 0.257s
extracting vendor.img (442 MB) to disk... took 2.295s
archive does not contain 'vendor_dlkm.img'
archive does not contain 'vendor_other.img'
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
extracting super_empty.img (0 MB) to RAM...
fastboot: verbose: Do flash boot_b boot.img
extracting boot.img (64 MB) to disk... took 0.304s
archive does not contain 'boot.sig'
extracting super_empty.img (0 MB) to RAM...
Sending 'boot_b' (65536 KB)                        OKAY [  1.549s]
Writing 'boot_b'                                   OKAY [  0.379s]
extracting super_empty.img (0 MB) to RAM...
fastboot: verbose: Do flash dtbo_b dtbo.img
extracting dtbo.img (8 MB) to disk... took 0.019s
archive does not contain 'dtbo.sig'
extracting super_empty.img (0 MB) to RAM...
Sending 'dtbo_b' (8192 KB)                         OKAY [  0.192s]
Writing 'dtbo_b'                                   OKAY [  0.052s]
extracting super_empty.img (0 MB) to RAM...
fastboot: verbose: Do flash vbmeta_b vbmeta.img
extracting vbmeta.img (0 MB) to disk... took 0.008s
archive does not contain 'vbmeta.sig'
extracting super_empty.img (0 MB) to RAM...
Sending 'vbmeta_b' (8 KB)                          OKAY [  0.001s]
Writing 'vbmeta_b'                                 OKAY [  0.003s]
extracting super_empty.img (0 MB) to disk... took 0.000s
Sending 'system_b' (4 KB)                          OKAY [  0.000s]
Updating super partition                           OKAY [  0.006s]
Deleting 'system_a'                                OKAY [  0.005s]
Deleting 'vendor_a'                                OKAY [  0.005s]
Resizing 'product_b'                               OKAY [  0.005s]
Resizing 'system_b'                                OKAY [  0.005s]
Resizing 'system_ext_b'                            OKAY [  0.005s]
Resizing 'system_b'                                OKAY [  0.006s]
Resizing 'vendor_b'                                OKAY [  0.005s]
extracting super_empty.img (0 MB) to RAM...
fastboot: verbose: Do flash product_b product.img
extracting product.img (2148 MB) to disk... took 16.836s
archive does not contain 'product.sig'
Resizing 'product_b'                               OKAY [  0.005s]
Sending sparse 'product_b' 1/9 (262140 KB)         OKAY [  7.237s]
Writing 'product_b'                                OKAY [  1.615s]
Sending sparse 'product_b' 2/9 (262140 KB)         OKAY [  7.441s]
Writing 'product_b'                                OKAY [  1.674s]
Sending sparse 'product_b' 3/9 (262140 KB)         OKAY [  7.399s]
Writing 'product_b'                                OKAY [  1.651s]
Sending sparse 'product_b' 4/9 (262140 KB)         OKAY [  7.438s]
Writing 'product_b'                                OKAY [  1.638s]
Sending sparse 'product_b' 5/9 (262140 KB)         OKAY [  7.446s]
Writing 'product_b'                                OKAY [  1.607s]
Sending sparse 'product_b' 6/9 (262140 KB)         OKAY [  7.516s]
Writing 'product_b'                                OKAY [  1.662s]
Sending sparse 'product_b' 7/9 (262140 KB)         OKAY [  7.509s]
Writing 'product_b'                                OKAY [  1.643s]
Sending sparse 'product_b' 8/9 (262140 KB)         OKAY [  7.163s]
Writing 'product_b'                                OKAY [  1.625s]
Sending sparse 'product_b' 9/9 (102612 KB)         OKAY [  2.961s]
Writing 'product_b'                                OKAY [  0.675s]
extracting super_empty.img (0 MB) to RAM...
fastboot: verbose: Do flash system_b system.img
extracting system.img (845 MB) to disk... took 5.703s
archive does not contain 'system.sig'
Resizing 'system_b'                                OKAY [  0.005s]
Sending sparse 'system_b' 1/4 (262140 KB)          OKAY [  6.218s]
Writing 'system_b'                                 OKAY [  1.663s]
Sending sparse 'system_b' 2/4 (262140 KB)          OKAY [  6.335s]
Writing 'system_b'                                 OKAY [  1.637s]
Sending sparse 'system_b' 3/4 (262140 KB)          OKAY [  6.338s]
Writing 'system_b'                                 OKAY [  1.662s]
Sending sparse 'system_b' 4/4 (79672 KB)           OKAY [  1.945s]
Writing 'system_b'                                 OKAY [  0.538s]
extracting super_empty.img (0 MB) to RAM...
fastboot: verbose: Do flash system_ext_b system_ext.img
extracting system_ext.img (236 MB) to disk... took 1.962s
archive does not contain 'system_ext.sig'
Resizing 'system_ext_b'                            OKAY [  0.005s]
Sending 'system_ext_b' (242504 KB)                 OKAY [  5.743s]
Writing 'system_ext_b'                             OKAY [  1.523s]
extracting super_empty.img (0 MB) to RAM...
fastboot: verbose: Do flash system_a system_other.img
extracting system_other.img (67 MB) to disk... took 0.549s
archive does not contain 'system_other.sig'
extracting super_empty.img (0 MB) to RAM...
Sending 'system_a' (69440 KB)                      OKAY [  1.633s]
Writing 'system_a'                                 OKAY [  0.420s]
extracting super_empty.img (0 MB) to RAM...
fastboot: verbose: Do flash vendor_b vendor.img
extracting vendor.img (442 MB) to disk... took 4.884s
archive does not contain 'vendor.sig'
Resizing 'vendor_b'                                OKAY [  0.005s]
Sending sparse 'vendor_b' 1/2 (262140 KB)          OKAY [  6.256s]
Writing 'vendor_b'                                 OKAY [  1.674s]
Sending sparse 'vendor_b' 2/2 (191236 KB)          OKAY [  4.651s]
Writing 'vendor_b'                                 OKAY [  1.185s]
Setting current slot to 'b'                        OKAY [  0.023s]
Erasing 'userdata'                                 OKAY [  5.758s]
Erase successful, but not automatically formatting.
File system type raw not supported.
wipe task partition not found: cache
Erasing 'metadata'                                 OKAY [  0.107s]
Erase successful, but not automatically formatting.
File system type raw not supported.
Finished. Total time: 193.796s

fastboot usage quick reference

% fastboot help
usage: fastboot [OPTION...] COMMAND...

flashing:
 update ZIP                 Flash all partitions from an update.zip package.
 flashall                   Flash all partitions from $ANDROID_PRODUCT_OUT.
                            On A/B devices, flashed slot is set as active.
                            Secondary images may be flashed to inactive slot.
 flash PARTITION [FILENAME] Flash given partition, using the image from
                            $ANDROID_PRODUCT_OUT if no filename is given.

basics:
 devices [-l]               List devices in bootloader (-l: with device paths).
 getvar NAME                Display given bootloader variable.
 reboot [bootloader]        Reboot device.

locking/unlocking:
 flashing lock|unlock       Lock/unlock partitions for flashing
 flashing lock_critical|unlock_critical
                            Lock/unlock 'critical' bootloader partitions.
 flashing get_unlock_ability
                            Check whether unlocking is allowed (1) or not(0).

advanced:
 erase PARTITION            Erase a flash partition.
 format[:FS_TYPE[:SIZE]] PARTITION
                            Format a flash partition.
 set_active SLOT            Set the active slot.
 oem [COMMAND...]           Execute OEM-specific command.
 gsi wipe|disable           Wipe or disable a GSI installation (fastbootd only).
 wipe-super [SUPER_EMPTY]   Wipe the super partition. This will reset it to
                            contain an empty set of default dynamic partitions.
 create-logical-partition NAME SIZE
                            Create a logical partition with the given name and
                            size, in the super partition.
 delete-logical-partition NAME
                            Delete a logical partition with the given name.
 resize-logical-partition NAME SIZE
                            Change the size of the named logical partition.
 snapshot-update cancel     On devices that support snapshot-based updates, cancel
                            an in-progress update. This may make the device
                            unbootable until it is reflashed.
 snapshot-update merge      On devices that support snapshot-based updates, finish
                            an in-progress update if it is in the "merging"
                            phase.
 fetch PARTITION OUT_FILE   Fetch a partition image from the device.
boot image:
 boot KERNEL [RAMDISK [SECOND]]
                            Download and boot kernel from RAM.
 flash:raw PARTITION KERNEL [RAMDISK [SECOND]]
                            Create boot image and flash it.
 --dtb DTB                  Specify path to DTB for boot image header version 2.
 --cmdline CMDLINE          Override kernel command line.
 --base ADDRESS             Set kernel base address (default: 0x10000000).
 --kernel-offset            Set kernel offset (default: 0x00008000).
 --ramdisk-offset           Set ramdisk offset (default: 0x01000000).
 --tags-offset              Set tags offset (default: 0x00000100).
 --dtb-offset               Set dtb offset (default: 0x01100000).
 --page-size BYTES          Set flash page size (default: 2048).
 --header-version VERSION   Set boot image header version.
 --os-version MAJOR[.MINOR[.PATCH]]
                            Set boot image OS version (default: 0.0.0).
 --os-patch-level YYYY-MM-DD
                            Set boot image OS security patch level.

Android Things:
 stage IN_FILE              Sends given file to stage for the next command.
 get_staged OUT_FILE        Writes data staged by the last command to a file.

options:
 -w                         Wipe userdata.
 -s SERIAL                  Specify a USB device.
 -s tcp|udp:HOST[:PORT]     Specify a network device.
 -S SIZE[K|M|G]             Break into sparse files no larger than SIZE.
 --force                    Force a flash operation that may be unsafe.
 --slot SLOT                Use SLOT; 'all' for both slots, 'other' for
                            non-current slot (default: current active slot).
 --set-active[=SLOT]        Sets the active slot before rebooting.
 --skip-secondary           Don't flash secondary slots in flashall/update.
 --skip-reboot              Don't reboot device after flashing.
 --disable-verity           Sets disable-verity when flashing vbmeta.
 --disable-verification     Sets disable-verification when flashing vbmeta.
 --disable-super-optimization
                            Disables optimizations on flashing super partition.
 --disable-fastboot-info    Will collects tasks from image list rather than $OUT/fastboot-info.txt.
 --fs-options=OPTION[,OPTION]
                            Enable filesystem features. OPTION supports casefold, projid, compress
 --unbuffered               Don't buffer input or output.
 --verbose, -v              Verbose output.
 --version                  Display version.
 --help, -h                 Show this message.

OmniLock - Block / Hide App on iOS

Block distractive apps from appearing on the Home Screen and App Library, enhance your focus and reduce screen time.

DNS Firewall for iOS and Mac OS

Encrypted your DNS to protect your privacy and firewall to block phishing, malicious domains, block ads in all browsers and apps

Ad