How to root OxygenOS 12?

Search This thread

"E"ster78

New member
Sep 24, 2015
2
0
OnePlus 8 Pro
This is not as easy as you might think. The default payload dumper (and the Go version) cannot handle these incremental OTAs:


Instead you need to use this:

Unfortunately, this payload extractor fork is broken on windows. I had to set up a Ubuntu VM to run it.

The entire process took the majority of my afternoon

Attached is the extracted boot.img, both magisk patched and unpatched. Hopefully it saves others some time.
Are there only India, China and global versions of this phone?
And also thanks for saving me loads of time.
 

henk5066

Senior Member
Apr 29, 2013
102
20
Northborough
What are the chances we can get the c21 update? I tried pulling the files for c16 yesterday on my own for my in2025 and never got them to work.
 

Swap_File

Member
Apr 12, 2016
34
26
OnePlus 8 Pro C21 Global Stock and Magisk Patched boot.img is attached.

OTA-ing is becoming a pain. I cannot get magisk's built in patch after OTA to work with OnePlus's new Android 12 Updates on my OnePlus 8 Pro. The only safe way I've found to update is to uninstall magisk, update, then extract and patch a new boot.img.
 

Attachments

  • boot.zip
    21 MB · Views: 31
  • magisk_patched-25100_Kpc46.zip
    21.4 MB · Views: 58

g33gz

Member
Oct 5, 2016
25
10
This is not as easy as you might think. The default payload dumper (and the Go version) cannot handle these incremental OTAs:


Instead you need to use this:

Unfortunately, this payload extractor fork is broken on windows. I had to set up a Ubuntu VM to run it.

The entire process took the majority of my afternoon

Attached is the extracted boot.img, both magisk patched and unpatched. Hopefully it saves others some time.

What commands do you have to run in ubuntu to get this to run properly? I'm throwing the C.20 payload into the same directory (also tried in a sub dir called old) and I keep erroring out.

Thanks!
 

Swap_File

Member
Apr 12, 2016
34
26
Use this specific tool:


You need to first extract the last full OTA, which was C16. I used the exact Full OTA commands from the site:

"LD_LIBRARY_PATH=./lib64/ ./extract.py --output_dir output/ payload.bin" (with C16 payload.bin)

Move the files in output to old, and remove the bin extensions, delete the C16 payload.bin and replace with the C20 payload.bin

Then you need to apply the incremental OTA, C20. I used the exact Incremental OTA commands from the site:

"LD_LIBRARY_PATH=./lib64/ ./extract.py --output_dir output/ --old_dir old/ payload.bin" (with C20 payload.bin)

Inside of the output directory you will now have a C20 boot.img

To keep going to C21, delete the old folder, move output to old, and remove the extensions again, delete the C20 payload.bin and replace with the C21 payload.bin.

"LD_LIBRARY_PATH=./lib64/ ./extract.py --output_dir output/ --old_dir old/ payload.bin" (with C21 payload.bin)

Inside of the output directory you will now have a C21 boot.img
 
  • Like
Reactions: g33gz

g33gz

Member
Oct 5, 2016
25
10
Use this specific tool:


You need to first extract the last full OTA, which was C16. I used the exact Full OTA commands from the site:

"LD_LIBRARY_PATH=./lib64/ ./extract.py --output_dir output/ payload.bin" (with C16 payload.bin)

Move the files in output to old, and remove the bin extensions, delete the C16 payload.bin and replace with the C20 payload.bin

Then you need to apply the incremental OTA, C20. I used the exact Incremental OTA commands from the site:

"LD_LIBRARY_PATH=./lib64/ ./extract.py --output_dir output/ --old_dir old/ payload.bin" (with C20 payload.bin)

Inside of the output directory you will now have a C20 boot.img

To keep going to C21, delete the old folder, move output to old, and remove the extensions again, delete the C20 payload.bin and replace with the C21 payload.bin.

"LD_LIBRARY_PATH=./lib64/ ./extract.py --output_dir output/ --old_dir old/ payload.bin" (with C21 payload.bin)

Inside of the output directory you will now have a C21 boot.img


Weird... I'm getting the same error as I got in windows right from the first step...

Code:
Traceback (most recent call last):
  File "./extract.py", line 7, in <module>
    import update_payload
  File "/home/tardo/update_payload_extractor/update_payload/__init__.py", line 22, in <module>
    from update_payload.checker import CHECKS_TO_DISABLE
  File "/home/tardo/update_payload_extractor/update_payload/checker.py", line 40, in <module>
    from update_payload import common
  File "/home/tardo/update_payload_extractor/update_payload/common.py", line 24, in <module>
    from update_payload import update_metadata_pb2
  File "/home/tardo/update_payload_extractor/update_payload/update_metadata_pb2.py", line 21, in <module>
    serialized_pb=b'\n\x15update_metadata.proto\x12\x16\x63hromeos_update_engine\"1\n\x06\x45xtent\x12\x13\n\x0bstart_block\x18\x01 \x01(\x04\x12\x12\n\nnum_blocks\x18\x02 \x01(\x04\"z\n\nSignatures\[email protected]\n\nsignatures\x18\x01 \x03(\x0b\x32,.chromeos_update_engine.Signatures.Signature\x1a*\n\tSignature\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"+\n\rPartitionInfo\x12\x0c\n\x04size\x18\x01 \x01(\x04\x12\x0c\n\x04hash\x18\x02 \x01(\x0c\"w\n\tImageInfo\x12\r\n\x05\x62oard\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x0f\n\x07\x63hannel\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\t\x12\x15\n\rbuild_channel\x18\x05 \x01(\t\x12\x15\n\rbuild_version\x18\x06 \x01(\t\"\xe6\x03\n\x10InstallOperation\x12;\n\x04type\x18\x01 \x02(\x0e\x32-.chromeos_update_engine.InstallOperation.Type\x12\x13\n\x0b\x64\x61ta_offset\x18\x02 \x01(\r\x12\x13\n\x0b\x64\x61ta_length\x18\x03 \x01(\r\x12\x33\n\x0bsrc_extents\x18\x04 \x03(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x12\n\nsrc_length\x18\x05 \x01(\x04\x12\x33\n\x0b\x64st_extents\x18\x06 \x03(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x12\n\ndst_length\x18\x07 \x01(\x04\x12\x18\n\x10\x64\x61ta_sha256_hash\x18\x08 \x01(\x0c\x12\x17\n\x0fsrc_sha256_hash\x18\t \x01(\x0c\"\xa5\x01\n\x04Type\x12\x0b\n\x07REPLACE\x10\x00\x12\x0e\n\nREPLACE_BZ\x10\x01\x12\x08\n\x04MOVE\x10\x02\x12\n\n\x06\x42SDIFF\x10\x03\x12\x0f\n\x0bSOURCE_COPY\x10\x04\x12\x11\n\rSOURCE_BSDIFF\x10\x05\x12\x0e\n\nREPLACE_XZ\x10\x08\x12\x08\n\x04ZERO\x10\x06\x12\x0b\n\x07\x44ISCARD\x10\x07\x12\x11\n\rBROTLI_BSDIFF\x10\n\x12\x0c\n\x08PUFFDIFF\x10\t\"\xd7\x05\n\x0fPartitionUpdate\x12\x16\n\x0epartition_name\x18\x01 \x02(\t\x12\x17\n\x0frun_postinstall\x18\x02 \x01(\x08\x12\x18\n\x10postinstall_path\x18\x03 \x01(\t\x12\x17\n\x0f\x66ilesystem_type\x18\x04 \x01(\t\x12M\n\x17new_partition_signature\x18\x05 \x03(\x0b\x32,.chromeos_update_engine.Signatures.Signature\x12\x41\n\x12old_partition_info\x18\x06 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12\x41\n\x12new_partition_info\x18\x07 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12<\n\noperations\x18\x08 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\x12\x1c\n\x14postinstall_optional\x18\t \x01(\x08\x12=\n\x15hash_tree_data_extent\x18\n \x01(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x38\n\x10hash_tree_extent\x18\x0b \x01(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x1b\n\x13hash_tree_algorithm\x18\x0c \x01(\t\x12\x16\n\x0ehash_tree_salt\x18\r \x01(\x0c\x12\x37\n\x0f\x66\x65\x63_data_extent\x18\x0e \x01(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x32\n\nfec_extent\x18\x0f \x01(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x14\n\tfec_roots\x18\x10 \x01(\r:\x01\x32\"L\n\x15\x44ynamicPartitionGroup\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x0c\n\x04size\x18\x02 \x01(\x04\x12\x17\n\x0fpartition_names\x18\x03 \x03(\t\"Y\n\x18\x44ynamicPartitionMetadata\x12=\n\x06groups\x18\x01 \x03(\x0b\x32-.chromeos_update_engine.DynamicPartitionGroup\"\xdb\x05\n\x14\x44\x65ltaArchiveManifest\x12\x44\n\x12install_operations\x18\x01 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\x12K\n\x19kernel_install_operations\x18\x02 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\x12\x18\n\nblock_size\x18\x03 \x01(\r:\x04\x34\x30\x39\x36\x12\x19\n\x11signatures_offset\x18\x04 \x01(\x04\x12\x17\n\x0fsignatures_size\x18\x05 \x01(\x04\x12>\n\x0fold_kernel_info\x18\x06 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fnew_kernel_info\x18\x07 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fold_rootfs_info\x18\x08 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fnew_rootfs_info\x18\t \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12\x39\n\x0eold_image_info\x18\n \x01(\x0b\x32!.chromeos_update_engine.ImageInfo\x12\x39\n\x0enew_image_info\x18\x0b \x01(\x0b\x32!.chromeos_update_engine.ImageInfo\x12\x18\n\rminor_version\x18\x0c \x01(\r:\x01\x30\x12;\n\npartitions\x18\r \x03(\x0b\x32\'.chromeos_update_engine.PartitionUpdate\x12\x15\n\rmax_timestamp\x18\x0e \x01(\x03\x42\x02H\x03'
TypeError: __new__() got an unexpected keyword argument 'serialized_options'
 

xtcislove

Senior Member
Jan 17, 2010
1,078
184
Gummersbach
OnePlus 8 Pro
Weird... I'm getting the same error as I got in windows right from the first step...

Code:
Traceback (most recent call last):
  File "./extract.py", line 7, in <module>
    import update_payload
  File "/home/tardo/update_payload_extractor/update_payload/__init__.py", line 22, in <module>
    from update_payload.checker import CHECKS_TO_DISABLE
  File "/home/tardo/update_payload_extractor/update_payload/checker.py", line 40, in <module>
    from update_payload import common
  File "/home/tardo/update_payload_extractor/update_payload/common.py", line 24, in <module>
    from update_payload import update_metadata_pb2
  File "/home/tardo/update_payload_extractor/update_payload/update_metadata_pb2.py", line 21, in <module>
    serialized_pb=b'\n\x15update_metadata.proto\x12\x16\x63hromeos_update_engine\"1\n\x06\x45xtent\x12\x13\n\x0bstart_block\x18\x01 \x01(\x04\x12\x12\n\nnum_blocks\x18\x02 \x01(\x04\"z\n\nSignatures\[email protected]\n\nsignatures\x18\x01 \x03(\x0b\x32,.chromeos_update_engine.Signatures.Signature\x1a*\n\tSignature\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"+\n\rPartitionInfo\x12\x0c\n\x04size\x18\x01 \x01(\x04\x12\x0c\n\x04hash\x18\x02 \x01(\x0c\"w\n\tImageInfo\x12\r\n\x05\x62oard\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x0f\n\x07\x63hannel\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\t\x12\x15\n\rbuild_channel\x18\x05 \x01(\t\x12\x15\n\rbuild_version\x18\x06 \x01(\t\"\xe6\x03\n\x10InstallOperation\x12;\n\x04type\x18\x01 \x02(\x0e\x32-.chromeos_update_engine.InstallOperation.Type\x12\x13\n\x0b\x64\x61ta_offset\x18\x02 \x01(\r\x12\x13\n\x0b\x64\x61ta_length\x18\x03 \x01(\r\x12\x33\n\x0bsrc_extents\x18\x04 \x03(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x12\n\nsrc_length\x18\x05 \x01(\x04\x12\x33\n\x0b\x64st_extents\x18\x06 \x03(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x12\n\ndst_length\x18\x07 \x01(\x04\x12\x18\n\x10\x64\x61ta_sha256_hash\x18\x08 \x01(\x0c\x12\x17\n\x0fsrc_sha256_hash\x18\t \x01(\x0c\"\xa5\x01\n\x04Type\x12\x0b\n\x07REPLACE\x10\x00\x12\x0e\n\nREPLACE_BZ\x10\x01\x12\x08\n\x04MOVE\x10\x02\x12\n\n\x06\x42SDIFF\x10\x03\x12\x0f\n\x0bSOURCE_COPY\x10\x04\x12\x11\n\rSOURCE_BSDIFF\x10\x05\x12\x0e\n\nREPLACE_XZ\x10\x08\x12\x08\n\x04ZERO\x10\x06\x12\x0b\n\x07\x44ISCARD\x10\x07\x12\x11\n\rBROTLI_BSDIFF\x10\n\x12\x0c\n\x08PUFFDIFF\x10\t\"\xd7\x05\n\x0fPartitionUpdate\x12\x16\n\x0epartition_name\x18\x01 \x02(\t\x12\x17\n\x0frun_postinstall\x18\x02 \x01(\x08\x12\x18\n\x10postinstall_path\x18\x03 \x01(\t\x12\x17\n\x0f\x66ilesystem_type\x18\x04 \x01(\t\x12M\n\x17new_partition_signature\x18\x05 \x03(\x0b\x32,.chromeos_update_engine.Signatures.Signature\x12\x41\n\x12old_partition_info\x18\x06 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12\x41\n\x12new_partition_info\x18\x07 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12<\n\noperations\x18\x08 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\x12\x1c\n\x14postinstall_optional\x18\t \x01(\x08\x12=\n\x15hash_tree_data_extent\x18\n \x01(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x38\n\x10hash_tree_extent\x18\x0b \x01(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x1b\n\x13hash_tree_algorithm\x18\x0c \x01(\t\x12\x16\n\x0ehash_tree_salt\x18\r \x01(\x0c\x12\x37\n\x0f\x66\x65\x63_data_extent\x18\x0e \x01(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x32\n\nfec_extent\x18\x0f \x01(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x14\n\tfec_roots\x18\x10 \x01(\r:\x01\x32\"L\n\x15\x44ynamicPartitionGroup\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x0c\n\x04size\x18\x02 \x01(\x04\x12\x17\n\x0fpartition_names\x18\x03 \x03(\t\"Y\n\x18\x44ynamicPartitionMetadata\x12=\n\x06groups\x18\x01 \x03(\x0b\x32-.chromeos_update_engine.DynamicPartitionGroup\"\xdb\x05\n\x14\x44\x65ltaArchiveManifest\x12\x44\n\x12install_operations\x18\x01 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\x12K\n\x19kernel_install_operations\x18\x02 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\x12\x18\n\nblock_size\x18\x03 \x01(\r:\x04\x34\x30\x39\x36\x12\x19\n\x11signatures_offset\x18\x04 \x01(\x04\x12\x17\n\x0fsignatures_size\x18\x05 \x01(\x04\x12>\n\x0fold_kernel_info\x18\x06 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fnew_kernel_info\x18\x07 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fold_rootfs_info\x18\x08 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fnew_rootfs_info\x18\t \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12\x39\n\x0eold_image_info\x18\n \x01(\x0b\x32!.chromeos_update_engine.ImageInfo\x12\x39\n\x0enew_image_info\x18\x0b \x01(\x0b\x32!.chromeos_update_engine.ImageInfo\x12\x18\n\rminor_version\x18\x0c \x01(\r:\x01\x30\x12;\n\npartitions\x18\r \x03(\x0b\x32\'.chromeos_update_engine.PartitionUpdate\x12\x15\n\rmax_timestamp\x18\x0e \x01(\x03\x42\x02H\x03'
TypeError: __new__() got an unexpected keyword argument 'serialized_options'
You might like to try the tools from my post a page back.

Its already compiled and is good to go. I used it for any payload so far.
 

Swap_File

Member
Apr 12, 2016
34
26

Swap_File

Member
Apr 12, 2016
34
26
Weird... I'm getting the same error as I got in windows right from the first step...

Code:
Traceback (most recent call last):
  File "./extract.py", line 7, in <module>
    import update_payload
  File "/home/tardo/update_payload_extractor/update_payload/__init__.py", line 22, in <module>
    from update_payload.checker import CHECKS_TO_DISABLE
  File "/home/tardo/update_payload_extractor/update_payload/checker.py", line 40, in <module>
    from update_payload import common
  File "/home/tardo/update_payload_extractor/update_payload/common.py", line 24, in <module>
    from update_payload import update_metadata_pb2
  File "/home/tardo/update_payload_extractor/update_payload/update_metadata_pb2.py", line 21, in <module>
    serialized_pb=b'\n\x15update_metadata.proto\x12\x16\x63hromeos_update_engine\"1\n\x06\x45xtent\x12\x13\n\x0bstart_block\x18\x01 \x01(\x04\x12\x12\n\nnum_blocks\x18\x02 \x01(\x04\"z\n\nSignatures\[email protected]\n\nsignatures\x18\x01 \x03(\x0b\x32,.chromeos_update_engine.Signatures.Signature\x1a*\n\tSignature\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"+\n\rPartitionInfo\x12\x0c\n\x04size\x18\x01 \x01(\x04\x12\x0c\n\x04hash\x18\x02 \x01(\x0c\"w\n\tImageInfo\x12\r\n\x05\x62oard\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x0f\n\x07\x63hannel\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\t\x12\x15\n\rbuild_channel\x18\x05 \x01(\t\x12\x15\n\rbuild_version\x18\x06 \x01(\t\"\xe6\x03\n\x10InstallOperation\x12;\n\x04type\x18\x01 \x02(\x0e\x32-.chromeos_update_engine.InstallOperation.Type\x12\x13\n\x0b\x64\x61ta_offset\x18\x02 \x01(\r\x12\x13\n\x0b\x64\x61ta_length\x18\x03 \x01(\r\x12\x33\n\x0bsrc_extents\x18\x04 \x03(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x12\n\nsrc_length\x18\x05 \x01(\x04\x12\x33\n\x0b\x64st_extents\x18\x06 \x03(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x12\n\ndst_length\x18\x07 \x01(\x04\x12\x18\n\x10\x64\x61ta_sha256_hash\x18\x08 \x01(\x0c\x12\x17\n\x0fsrc_sha256_hash\x18\t \x01(\x0c\"\xa5\x01\n\x04Type\x12\x0b\n\x07REPLACE\x10\x00\x12\x0e\n\nREPLACE_BZ\x10\x01\x12\x08\n\x04MOVE\x10\x02\x12\n\n\x06\x42SDIFF\x10\x03\x12\x0f\n\x0bSOURCE_COPY\x10\x04\x12\x11\n\rSOURCE_BSDIFF\x10\x05\x12\x0e\n\nREPLACE_XZ\x10\x08\x12\x08\n\x04ZERO\x10\x06\x12\x0b\n\x07\x44ISCARD\x10\x07\x12\x11\n\rBROTLI_BSDIFF\x10\n\x12\x0c\n\x08PUFFDIFF\x10\t\"\xd7\x05\n\x0fPartitionUpdate\x12\x16\n\x0epartition_name\x18\x01 \x02(\t\x12\x17\n\x0frun_postinstall\x18\x02 \x01(\x08\x12\x18\n\x10postinstall_path\x18\x03 \x01(\t\x12\x17\n\x0f\x66ilesystem_type\x18\x04 \x01(\t\x12M\n\x17new_partition_signature\x18\x05 \x03(\x0b\x32,.chromeos_update_engine.Signatures.Signature\x12\x41\n\x12old_partition_info\x18\x06 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12\x41\n\x12new_partition_info\x18\x07 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12<\n\noperations\x18\x08 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\x12\x1c\n\x14postinstall_optional\x18\t \x01(\x08\x12=\n\x15hash_tree_data_extent\x18\n \x01(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x38\n\x10hash_tree_extent\x18\x0b \x01(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x1b\n\x13hash_tree_algorithm\x18\x0c \x01(\t\x12\x16\n\x0ehash_tree_salt\x18\r \x01(\x0c\x12\x37\n\x0f\x66\x65\x63_data_extent\x18\x0e \x01(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x32\n\nfec_extent\x18\x0f \x01(\x0b\x32\x1e.chromeos_update_engine.Extent\x12\x14\n\tfec_roots\x18\x10 \x01(\r:\x01\x32\"L\n\x15\x44ynamicPartitionGroup\x12\x0c\n\x04name\x18\x01 \x02(\t\x12\x0c\n\x04size\x18\x02 \x01(\x04\x12\x17\n\x0fpartition_names\x18\x03 \x03(\t\"Y\n\x18\x44ynamicPartitionMetadata\x12=\n\x06groups\x18\x01 \x03(\x0b\x32-.chromeos_update_engine.DynamicPartitionGroup\"\xdb\x05\n\x14\x44\x65ltaArchiveManifest\x12\x44\n\x12install_operations\x18\x01 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\x12K\n\x19kernel_install_operations\x18\x02 \x03(\x0b\x32(.chromeos_update_engine.InstallOperation\x12\x18\n\nblock_size\x18\x03 \x01(\r:\x04\x34\x30\x39\x36\x12\x19\n\x11signatures_offset\x18\x04 \x01(\x04\x12\x17\n\x0fsignatures_size\x18\x05 \x01(\x04\x12>\n\x0fold_kernel_info\x18\x06 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fnew_kernel_info\x18\x07 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fold_rootfs_info\x18\x08 \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12>\n\x0fnew_rootfs_info\x18\t \x01(\x0b\x32%.chromeos_update_engine.PartitionInfo\x12\x39\n\x0eold_image_info\x18\n \x01(\x0b\x32!.chromeos_update_engine.ImageInfo\x12\x39\n\x0enew_image_info\x18\x0b \x01(\x0b\x32!.chromeos_update_engine.ImageInfo\x12\x18\n\rminor_version\x18\x0c \x01(\r:\x01\x30\x12;\n\npartitions\x18\r \x03(\x0b\x32\'.chromeos_update_engine.PartitionUpdate\x12\x15\n\rmax_timestamp\x18\x0e \x01(\x03\x42\x02H\x03'
TypeError: __new__() got an unexpected keyword argument 'serialized_options'

I think that's an error with certain versions of protobuf, but I am not familiar.
 

xtcislove

Senior Member
Jan 17, 2010
1,078
184
Gummersbach
OnePlus 8 Pro
How did you get those tools to work with incremental OTAs?

The only tool I have been able to get to work with incremental OTAs is:
TBH i never tried incremental OTA´s.

Is there a reason why i need to? I always could download latest firmware from xda or oygen updater as full package.
 

Swap_File

Member
Apr 12, 2016
34
26
TBH i never tried incremental OTA´s.

Is there a reason why i need to? I always could download latest firmware from xda or oygen updater as full package.

To the best of my knowledge, C20 and C21 for the OnePlus 8Pro are only available as incremental OTAs, that's why everyone is having such trouble with finding boot.img files.

C16 is the last full OTA they offered.
 

xtcislove

Senior Member
Jan 17, 2010
1,078
184
Gummersbach
OnePlus 8 Pro
To the best of my knowledge, C20 and C21 for the OnePlus 8Pro are only available as incremental OTAs, that's why everyone is having such trouble with finding boot.img files.

C16 is the last full OTA they offered.
India: C21
Global: C16
Europe: C20

Latest full packages that i find.

Where do i search for more recent incremental OTAs?

Did you try the tools i suggested?
 

Swap_File

Member
Apr 12, 2016
34
26
India: C21
Global: C16
Europe: C20

Latest full packages that i find.

Where do i search for more recent incremental OTAs?

Did you try the tools i suggested?

I tried the tools you linked, but they do not help with incremental OTAs.

Global is up to C21, but only via incremental updates. No full updates for global C21 have been released.

The global C20 and C21 updates will show up if you are not rooted, when rooted I had to download the zips via Oxygen Updater in advanced mode.
 

Attachments

  • Screenshot_2022-07-01-14-03-05-55_1f7d930ac4546e961acbbe2ed3d9ab7f.jpg
    Screenshot_2022-07-01-14-03-05-55_1f7d930ac4546e961acbbe2ed3d9ab7f.jpg
    379.3 KB · Views: 19
Last edited:

g33gz

Member
Oct 5, 2016
25
10
I'm on Ubuntu MATE 22.04 LTS

VirtualBox:~$ pip3 show protobuf
Name: protobuf
Version: 4.21.1
So I manually installed the same version of protobuf you're using (same distro too) and it doesnt seem to want to run for me...

Code:
dir output/ payload.bin
Extracting system
Traceback (most recent call last):
  File "/home/tardo/update_payload_extractor/./extract.py", line 67, in <module>
    extract(args.payload, args.output_dir, args.old_dir, args.partitions)
  File "/home/tardo/update_payload_extractor/./extract.py", line 40, in extract
    helper._ApplyToPartition(
  File "/home/tardo/update_payload_extractor/update_payload/applier.py", line 551, in _ApplyToPartition
    old_part_file = (open(old_part_file_name, 'r+b')
FileNotFoundError: [Errno 2] No such file or directory: 'old/system'


I have the c.16 payload.bin in the root dir of where the payload extractor files are and I'm running the command you shared.
Code:
LD_LIBRARY_PATH=./lib64/ ./extract.py --output_dir output/ payload.bin

Weird...

EDIT: I'm going to use the original dumper I have been using to extract C.16 files, then will put them into the old dir and see if the second command works with c.20

If it works, I'll use that as a solution for now (Gotta have them updates! lol)
 
Last edited:

Top Liked Posts