[SCRIPT][LINUX] Mount System as read write (Android 10+)

Status
Not open for further replies.
Search This thread

aIecxs

Senior Member
Feb 17, 2016
1,033
317
In your modification of the dumpFile function of the script why do you replace the dd command with this?
Code:
adb shell su -c "cat $superPath 2> /dev/null" > $newPath
cat is faster than dd but the main what changed is streaming partition straight into (host) terminal and redirect (host) stdout into partition image on host directly without intermediate temp file on client. works with dd too, same as adb exec-out (linux only).
of course in recovery mode adb pull is still faster, but this is working in boot mode (whatever the reason is for instead of just pulling from twrp)
 
Last edited:
  • Like
Reactions: lebigmac

aIecxs

Senior Member
Feb 17, 2016
1,033
317
you probably have a/b device while this script is for a-only. backup is good point we should make sure super_original.img always exist on host and double check with sha256 (and is never deleted/overwritten from script)
 
Last edited:

lebigmac

Senior Member
Jan 31, 2017
638
296
Is it normal that super_fixed.img weighs less than super_orginal.img?
Yes it's normal for super_fixed.img to have smaller size than super_original.img because the latter is in raw format while the former is in sparse format.

@uvzen how did you flash super_fixed.img ? Yesterday you said you don't have that file because lpmake throw an error at the very end?
So did you end up successfully running the script without any errors or not? Please show me your screenshot again.

In case something goes wrong you can always flash back your super_original.img by doing :
Code:
fastboot flash super super_original.img

But this shouldn't be necessary as the script usually recognizes if there is an error and aborts. For example if you get lpmake error at the end then there will be no super_fixed.img file to flash and it will abort.
 
Last edited:

uvzen

Member
Feb 28, 2020
31
8
Huawei P8
Huawei P10
Yes it's normal for super_fixed.img to have smaller size than super_original.img because the latter is in raw format while the former is in sparse format.

@uvzen how did you flash super_fixed.img ? Yesterday you said you don't have that file because lpmake throw an error at the very end?
So did you end up successfully running the script without any errors or not? Please show me your screenshot again.

In case something goes wrong you can always flash back your super_original.img by doing :
Code:
fastboot flash super super_original.img

But this shouldn't be necessary as the script usually recognizes if there is an error and aborts. For example if you get lpmake error at the end then there will be no super_fixed.img file to flash and it will abort.

I switched to a second PC with a virtual machine and the super_fixed.img file was created without any errors, but it hangs on flash and I have to terminate the script before flash operation and manually flash from windows 10
 

lebigmac

Senior Member
Jan 31, 2017
638
296
I switched to a second PC with a virtual machine and the super_fixed.img file was created without any errors, but it hangs on flash and I have to terminate the script before flash operation and manually flash from windows 10
The super_fixed.img is created without any errors and you still get bootloop after flashing it manually? That's weird.
Did you disable dm-verity and verification?

It probably hangs on flash because there is some kind of fastboot error. Maybe fastboot doesn't work on virtual machines due to some kind of USB driver problem or something.
Keep in mind this script was developed on an actual real machine, not a virtual one. I'm surprised it even runs on a virtual machine at all.
 
Last edited:

lebigmac

Senior Member
Jan 31, 2017
638
296
Tried it on my Oneplus 7T Pro with Android 10. It extracted the superimage but failed at writing it back. It returned this error:
Code:
error: file_write: write: No space left on device
lpmake E 03-02 21:41:55 76867 76867 images.cpp:468] [liblp]sparse_file_write failed with code: -1
lpmake E 03-02 21:41:55 76867 76867 images.cpp:326] [liblp]Could not open image for partition: product_a

makesysrw: Error! failed to create super_fixed.img file./makesysrw.sh super_image.img  14.21s user 37.28s system 51% cpu 1:40.46 total
Any ideas? Thank you for your great work!

That lpmake error definitely needs further investigation...
 
Last edited:

aIecxs

Senior Member
Feb 17, 2016
1,033
317
@lebicmac your are using arithmetic expansion for calculation sizes in bytes. that may cause integer buffer overflow. check myargs.txt for errors
 

lebigmac

Senior Member
Jan 31, 2017
638
296
@Alecxs I searched online and many places they say to use arithmetic expansion for adding two integers together such as here:

I checked the myargs.txt but couldn't find any errors. Where exactly did you find an error please let me know?
So far the script works just fine on my computer/device. I just tested it again today. No problems here.
 
Last edited:

ronlkh1965

Member
Feb 22, 2021
21
10
hmm now that's a new one. Never seen this error before. Your error is happening while the superunpack tool is running. What's happening before partition_3_name = system?
Does the superunpack tool successfully extract the other 2 partitions from your super_original.img file ? vendor.ext4 and product.ext4 ? So it failed at system.ext4 right?

If the super_original.img file was successfully dumped to your computer you could try to run this command manually and post the results here. Thanks
Code:
./tools/superunpack super_original.img
[email protected]:/home/ronlkh# ./tools/superunpack super_original.img
---------------------------------------------------------
Super image dumper v_11 (by expert :) munjeni @ xda 2020)
---------------------------------------------------------

LpMetadataGeometry magic = 0x616c4467
LpMetadataGeometry struct size = 0x34
LpMetadataGeometry sha256 = 4E31CF64275442F40E25C772A18D1FCCD8B1291232E593F65E522FC7AC07DF03
LpMetadataGeometry metadata_max_size = 0x10000
LpMetadataGeometry metadata_slot_count = 0x2
LpMetadataGeometry logical_block_size = 0x1000

LpMetadataHeader magic = 0x414c5030
LpMetadataHeader major_version = 10
LpMetadataHeader minor_version = 0
LpMetadataHeader header_size = 0x80
LpMetadataHeader header sha256 = 0C33F54AD3D2566C375AF93EC4C87E25790373CEE8448BBE45DF26B730DFD75F
LpMetadataHeader tables_size = 0x1d0
LpMetadataHeader tables sha256 = 7B0623329AC6DAEC0D85E2B5CF4246CFEDBF01BB611ADB6FF1EEC22962190C96
LpMetadataHeader partitions offset = 0x0
LpMetadataHeader partitions num_entries = 0x4
LpMetadataHeader partitions entry_size = 0x34
LpMetadataHeader extents offset = 0xd0
LpMetadataHeader extents num_entries = 0x4
LpMetadataHeader extents entry_size = 0x18
LpMetadataHeader groups offset = 0x130
LpMetadataHeader groups num_entries = 0x2
LpMetadataHeader groups entry_size = 0x30
LpMetadataHeader block_devices offset = 0x190
LpMetadataHeader block_devices num_entries = 0x1
LpMetadataHeader block_devices entry_size = 0x40

Partitions = 4 used, 0 not used, total 4

partition_1_name = product
attributes = 0x1
first_extent_index = 0x0
num_extents = 0x1
group_index = 0x1
partition_group = qti_dynamic_partitions
extent num_sectors = 0x1a4f18 (0x349e3000 bytes total)
extent target_type = 0x0
extent target_data = 0x800 (dumping offset = 0x100000)
extent target_source = 0x0
Filetype EXT4. EXT4 size = 0x349e2000
Dumping product.ext4 ...
....................................................
....................................................
.Error writing 512 bytes!
[email protected]:/home/ronlkh#

-rwxr-xr-x 1 ronlkh ronlkh 9539 Feb 28 11:54 makesysrw.sh
-rwxrw-rw- 1 ronlkh ronlkh 1555920 Mar 3 05:42 makesysrw.tar.xz
drwxr-xr-x 2 ronlkh ronlkh 4096 Mar 4 06:32 Music
drwxr-xr-x 2 ronlkh ronlkh 4096 Mar 4 06:32 Pictures
-rw-r--r-- 1 root root 882581504 Mar 4 07:49 product.ext4
-rw-r--r-- 1 ronlkh ronlkh 807 Mar 3 16:09 .profile
drwxr-xr-x 2 ronlkh ronlkh 4096 Mar 4 06:32 Public
-rw-r--r-- 1 ronlkh ronlkh 0 Mar 4 06:33 .sudo_as_admin_successful
-rw-r--r-- 1 root root 9126805504 Mar 4 07:36 super_original.img
-rw-r--r-- 1 root root 600993792 Mar 4 07:36 system.ext4
drwxr-xr-x 2 ronlkh ronlkh 4096 Mar 4 06:32 Templates
drwxr-xr-x 2 ronlkh ronlkh 4096 Feb 28 10:22 tools
-rw-r--r-- 1 root root 1664978944 Mar 4 07:36 vendor.ext4
drwxr-xr-x 2 ronlkh ronlkh 4096 Mar 4 06:32 Videos


Take note, I am running ubuntu on VMWare on my windows10
 
  • Like
Reactions: lebigmac

aIecxs

Senior Member
Feb 17, 2016
1,033
317
i did not find any error, just a hint. this is personal experience, differs for each device. for example
Code:
$ echo $((9243328512+123456789))
776850709
$ expr 9243328512 + 123456789
9366785301
 

lebigmac

Senior Member
Jan 31, 2017
638
296
[email protected]:/home/ronlkh# ./tools/superunpack super_original.img
---------------------------------------------------------
Super image dumper v_11 (by expert :) munjeni @ xda 2020)
---------------------------------------------------------

LpMetadataGeometry magic = 0x616c4467
LpMetadataGeometry struct size = 0x34
LpMetadataGeometry sha256 = 4E31CF64275442F40E25C772A18D1FCCD8B1291232E593F65E522FC7AC07DF03
LpMetadataGeometry metadata_max_size = 0x10000
LpMetadataGeometry metadata_slot_count = 0x2
LpMetadataGeometry logical_block_size = 0x1000

LpMetadataHeader magic = 0x414c5030
LpMetadataHeader major_version = 10
LpMetadataHeader minor_version = 0
LpMetadataHeader header_size = 0x80
LpMetadataHeader header sha256 = 0C33F54AD3D2566C375AF93EC4C87E25790373CEE8448BBE45DF26B730DFD75F
LpMetadataHeader tables_size = 0x1d0
LpMetadataHeader tables sha256 = 7B0623329AC6DAEC0D85E2B5CF4246CFEDBF01BB611ADB6FF1EEC22962190C96
LpMetadataHeader partitions offset = 0x0
LpMetadataHeader partitions num_entries = 0x4
LpMetadataHeader partitions entry_size = 0x34
LpMetadataHeader extents offset = 0xd0
LpMetadataHeader extents num_entries = 0x4
LpMetadataHeader extents entry_size = 0x18
LpMetadataHeader groups offset = 0x130
LpMetadataHeader groups num_entries = 0x2
LpMetadataHeader groups entry_size = 0x30
LpMetadataHeader block_devices offset = 0x190
LpMetadataHeader block_devices num_entries = 0x1
LpMetadataHeader block_devices entry_size = 0x40

Partitions = 4 used, 0 not used, total 4

partition_1_name = product
attributes = 0x1
first_extent_index = 0x0
num_extents = 0x1
group_index = 0x1
partition_group = qti_dynamic_partitions
extent num_sectors = 0x1a4f18 (0x349e3000 bytes total)
extent target_type = 0x0
extent target_data = 0x800 (dumping offset = 0x100000)
extent target_source = 0x0
Filetype EXT4. EXT4 size = 0x349e2000
Dumping product.ext4 ...
....................................................
....................................................
.Error writing 512 bytes!
[email protected]:/home/ronlkh#

-rwxr-xr-x 1 ronlkh ronlkh 9539 Feb 28 11:54 makesysrw.sh
-rwxrw-rw- 1 ronlkh ronlkh 1555920 Mar 3 05:42 makesysrw.tar.xz
drwxr-xr-x 2 ronlkh ronlkh 4096 Mar 4 06:32 Music
drwxr-xr-x 2 ronlkh ronlkh 4096 Mar 4 06:32 Pictures
-rw-r--r-- 1 root root 882581504 Mar 4 07:49 product.ext4
-rw-r--r-- 1 ronlkh ronlkh 807 Mar 3 16:09 .profile
drwxr-xr-x 2 ronlkh ronlkh 4096 Mar 4 06:32 Public
-rw-r--r-- 1 ronlkh ronlkh 0 Mar 4 06:33 .sudo_as_admin_successful
-rw-r--r-- 1 root root 9126805504 Mar 4 07:36 super_original.img
-rw-r--r-- 1 root root 600993792 Mar 4 07:36 system.ext4
drwxr-xr-x 2 ronlkh ronlkh 4096 Mar 4 06:32 Templates
drwxr-xr-x 2 ronlkh ronlkh 4096 Feb 28 10:22 tools
-rw-r--r-- 1 root root 1664978944 Mar 4 07:36 vendor.ext4
drwxr-xr-x 2 ronlkh ronlkh 4096 Mar 4 06:32 Videos


Take note, I am running ubuntu on VMWare on my windows10

@ronlkh1965
This seems like a superunpack specific problem and I would suggest you to post it in the official superunpack thread and wait for the author of the tool (munjeni) to answer it. He should know what's wrong.
Sorry I can't help you with this issue. It doesn't seem related to my script at all.
Apparently it is failing at extracting the partitions from your super.img file for some reason... Have you tried it on a real Linux machine? Maybe it has to do with the virtual machine settings? Do you have full read-write access to the current folder in the virtual machine? Or maybe your super_original.img is corrupted for some reason?

If you can't get superunpack tool to work maybe you can try with lpunpack but then you would have to adjust the script accordingly as superunpack creates raw .ext4 files and lpunpack seems to create sparse .img files

What happens if you execute this command:
Code:
./tools/lpunpack ./super_original.img

Does it successfully create your 4 partitions as sparse .img files?
 
Last edited:

uvzen

Member
Feb 28, 2020
31
8
Huawei P8
Huawei P10
I tried to do it again on a set up system without any virtual machines. Successfully created super_fixed.img and successfully flash to my device but it is still bootloop. I also give a photo of twrp when I restore the super partition.
 

Attachments

  • IMG_20210304_172544.jpg
    IMG_20210304_172544.jpg
    8.5 MB · Views: 39
  • IMG_20210304_172354.jpg
    IMG_20210304_172354.jpg
    2.8 MB · Views: 38
  • Like
Reactions: lebigmac

lebigmac

Senior Member
Jan 31, 2017
638
296
@uvzen sad to hear it causes bootloop on your device :(
Did you disable dm-verity and verification?

Looking at the first screenshot it seems like all went well. I don't see any errors. Even the lpmake commands looks like it's supposed to. And it seems you are also on Android 10 MIUI 12 just like me...
I don't know what could be the problem on your device...

What you can try to do is restart from scratch by doing a clean flash of the super.img from the Xiaomi firmware folder using
Code:
fastboot flash super super.img

And then run the script again but this time redirect the output to a text file and then send me the text file so I can look through it. Maybe there is a hint somewhere on what went wrong.

For redirecting the script's output to a text file you can do this:
Code:
./makesysrw.sh in=./super_original.img>./mylog.txt
 
Last edited:

Blackwe3l

Member
Mar 4, 2021
6
1
My device is realme 6i, the firmware was downloaded from the manufacturer's website, I unpacked super.img using imjtool because the script does not recognize it, then I ran the script, at the end there was an error due to 1GB of extra space, not to mention 100MB. removed # from resize2fs -f -M $ i and still an error! I just need rw, how can I remove it from the script? Can I process an image without connecting a device? I want to flash via SPFT.
 

Blackwe3l

Member
Mar 4, 2021
6
1
Code:
[email protected]:/home/Blackwe3l/makesysrw# ./makesysrw.sh>./mylog.txt super.img
* daemon not running; starting now at tcp:5037
* daemon started successfully
resize2fs 1.45.6 (20-Mar-2020)
e2fsck 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
e2fsck 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
e2fsck 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
e2fsck 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
e2fsck 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
e2fsck 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
e2fsck 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
e2fsck 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
e2fsck 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
e2fsck 1.45.6 (20-Mar-2020)
resize2fs 1.45.6 (20-Mar-2020)
lpmake I 03-05 13:41:05  3133  3133 builder.cpp:1012] [liblp]Partition common_preload will resize from 0 bytes to 1393737728 bytes
lpmake I 03-05 13:41:05  3133  3133 builder.cpp:1012] [liblp]Partition oppo_engineering will resize from 0 bytes to 1074003968 bytes
lpmake I 03-05 13:41:05  3133  3133 builder.cpp:1012] [liblp]Partition oppo_product will resize from 0 bytes to 1081790464 bytes
lpmake E 03-05 13:41:05  3133  3133 builder.cpp:698] [liblp]Not enough free space to expand partition: system
Not enough space on device for partition system with size 6035427328
I only need read-write for system, vendor, common_preload without adding extra space to each partition.
Code:
[email protected]:/home/Blackwe3l/makesysrw# ./imjtool.ELF64 super.img extract
liblp dynamic partition (super.img) - Blocksize 0x1000, 2 slots
LP MD Header @0x3000, version 10.0, with 10 logical partitions on block device of 3188 GB, at partition super, first sector: 0x800
    Partitions @0x3080 in 2 groups:
        Group 0: default
        Group 1: main
            Name: system (read-only, Linux Ext2/3/4/? Filesystem Image, @0x100000 spanning 1 extents and 4 GB) - extracted
            Name: vendor (read-only, Linux Ext2/3/4/? Filesystem Image, @0x12c900000 spanning 1 extents and 627 MB) - extracted
            Name: oppo_product (read-only, Linux Ext2/3/4/? Filesystem Image, @0x153d00000 spanning 1 extents and 7 MB) - extracted
            Name: oppo_engineering (read-only, Linux Ext2/3/4/? Filesystem Image, @0x154500000 spanning 1 extents and 324 KB) - extracted
            Name: common_preload (read-only, Linux Ext2/3/4/? Filesystem Image, @0x154600000 spanning 1 extents and 310 MB) - extracted
            Name: version.19747 (read-only, Linux Ext2/3/4/? Filesystem Image, @0x167d00000 spanning 1 extents and 324 KB) - extracted
            Name: version.19748 (read-only, Linux Ext2/3/4/? Filesystem Image, @0x167e00000 spanning 1 extents and 324 KB) - extracted
            Name: version.19746 (read-only, Linux Ext2/3/4/? Filesystem Image, @0x167f00000 spanning 1 extents and 324 KB) - extracted
            Name: version.19677 (read-only, Linux Ext2/3/4/? Filesystem Image, @0x168000000 spanning 1 extents and 324 KB) - extracted
            Name: version.19678 (read-only, Linux Ext2/3/4/? Filesystem Image, @0x168100000 spanning 1 extents and 324 KB) - extracted
 

Attachments

  • mylog.txt
    7.7 MB · Views: 4

lebigmac

Senior Member
Jan 31, 2017
638
296
I only need read-write for system, vendor, common_preload without adding extra space to each partition.
Thanks for the log. I will look into it.
You have lots of partitions nested inside your super.
Maybe your issue can be fixed simply by adding another if statement to the script that checks the name of the partition and only modifies it if it's equal to system or vendor or whatever.
And then shrink every partition back down to its original size before merging into new super and flashing

Code:
lpmake E 03-05 13:41:05  3133  3133 builder.cpp:698] [liblp]Not enough free space to expand partition: system
Not enough space on device for partition system with size 6035427328

I wonder what this lpmake error means... Does it mean there is not enough space on the harddrive? Or not enough space in the new super image file or what?!
 
Last edited:

Blackwe3l

Member
Mar 4, 2021
6
1
I use a translator, honestly the translation is stupid. I think that the problem is in the system section, I unpacked super, mounted vendor, common_preload they mount without problems, but I can’t mount the system. It looks like the system cannot be resized while others can be resized. Do not think that the super.img image is corrupted, the image is intact. There is enough free space on the hard disk.
 
Status
Not open for further replies.

Top Liked Posts

  • There are no posts matching your filters.
  • 2
    MOD ACTION:

    Thread closed at OP's request.
    1
    Do you think with Cygwin from Windows this will work?
    My congratulations for your work
  • 30
    This Linux-only version is pretty much deprecated at this point. Please use the BRAND NEW UNIVERSAL VERSION instead! Thank you.

    Ladies and gentlemen. Let me present to you my very first release here at the XDA forums:
    Welcome to:
    makeSystemRW v1.04
    automated bash script by lebigmac for Android 10 and above
    Creation date: February 2021
    Updated: March 2021


    Requirements:
    • LINUX ONLY!
    • Android 10 or newer
    • This version only supports devices with super image.
      Check if you have super by running
      ls -Alg /dev/block/by-name
    • phone must be rooted + bootloader unlocked + 10 GB free space on phone
    • at least 20 GB free space on computer for dumping data
    • adb and fastboot commands should be in your $PATH environment variable
    I'm not 100% sure if this is a necessary requirement but I also disabled dm-verity and verification on my device just in case by simply booting into TWRP and then executing these 2 commands:
    Code:
    adb disable-verity
    
    adb shell avbctl disable-verification

    Description: A script for all Android power users that wish to make their read-only Android 10+ system read-write-able again to remove bloatware and make more thorough customizations to their device.

    In a nutshell this is what the script is doing:

    • dumps your existing super image to your pc
    • extracts the embedded read-only partitions (system, vendor, product, etc...)
    • makes these partitions read-write-able
    • joins everything back together to new flashable super.img
    • flashes it to device
    User data is not affected.

    Usage:
    Simply call the script from the shell.
    Optional arguments (replace x with your custom value) :

    • in=x : With this flag you can specify an existing super.img and skip the entire dumping of the super image process. Here you can use the super_original.img which you dumped earlier with makesysrw or the official super.img from your downloaded firmware. You probably have to unsparse the official super.img first using the included simg2img tool for superunpack to recognize it properly. If omitted, makesysrw will dump super image from phone to ./super_original.img
    • out=x : With this argument you can specify the output path. If omitted, default output value is ./super_fixed.img
    • size=x : With this parameter you can specify the extra free space (in megabytes) that will be added to each partition. If omitted, default extra size is 0 (shrink to minimum)
    Examples:
    Code:
    # Run this command if you're first time user:
    # Specify the extra free space in megabytes for each partition:
    ./makesysrw.sh size=100
    
    # Plug an existing raw super image into the script like this:
    ./makesysrw.sh in=./super_original_raw.img size=100
    
    # Specify both the input file as well as the output destination:
    ./makesysrw.sh in=./super_original_raw.img out=./super_fixed.img size=100
    
    # For unsparsing the (sparse) super.img from your phone manufacturer's firmware you can do:
    ./tools/bin/simg2img ./super_sparse.img ./super_raw.img

    NOTE: I did not come up with all this by myself. After searching for a solution for countless days without success, going even as far as learning hex editing - I coincidentally came across a couple of very interesting threads burried deep inside the new forum interface where this technique has been described and discussed by various enthousiasts (links can be found below in the credits section). So I take absolutely no credit for the underlying core mechanisms of the script. I'm only the amateur who put it all together into a compact script so that everybody can enjoy an Android system that's read-write-able again. Just like it used to be in Android 9 or earlier. Before this annoying 'shared_blocks feature' was implemented.

    Credits: Big thanks to @munjeni for allowing me to use his amazing superunpack tool instead of the default lpunpack. Source code can be found here.
    Also big thanks to @Brepro1 without your awesome tutorial guiding me I couldn't have created this script.
    Thanks @AndyYan your
    interesting thread also helped me a lot for automating the script especially the lpdump part.
    More thanks @gabrielfrias for his
    helpful comment
    Thanks @YOisuPU and of course @topjohnwu for discovering the 'shared_blocks feature'
    Thanks @bynarie for making available his
    otatools package! A part of it is now bundled with the archive

    Disclaimer: This is open source software and is provided as is without any kind of warranty or support whatsoever. By using and viewing this software you agree to the following terms:
    Under no circumstances shall the author be held responsible for any damages or negative consequences that may arrise from the (inappropriate) use of this software.
    All responsibility and liability lies with the end-user. You hereby agree not to abuse this software for illegal purposes. Use this software at your own risk!

    Please feel free to improve this script as you see fit (as long as you don't add anything malicious)
    and make sure to post your feedback, suggestions and improvements in the official thread right here.


    3.jpg


    2.jpg


    5.jpg


    1.jpg


    0.jpg

    Mod Edit: Download link removed
    Please click my like button below if you like it! Thanks​
    4
    Ok folks I fixed the problem. I'm wrapping it all up and making a flashable zip and then uploading today. I promised the new universal version would be available this week. Well today is still this week ;)
    I'm so done with this project lol. It was a great bash programming exercise for me but I'm happy if I can start working on something new. I spent too much time on this project already.

    EDIT: Just found a genius called @Kolibass who figured out a way to flash an 8 GB large file in just under 30 seconds. Now compare this to the 2-5 minutes using traditional fastboot! Holy cow that's fast. Multithreading anyone?
    3
    Wait a second I upload new version right now. Give me a minute.
    Don't waste your time with that old version. The new version is a whole different beast! I think it deserve a new thread ;)
    2
    It would be very helpful if you guys could please give me some feedback if the script works for you.
    Which device are you using?
    Your Android version?
    Did you disable dm-verity and verification before running the script?
    Your suggestions to enhance the script. Remember this is only version 1.0
    Thanks!

    @thor_1979
    2
    MOD ACTION:

    Thread closed at OP's request.
Our Apps
Get our official app!
The best way to access XDA on your phone
Nav Gestures
Add swipe gestures to any Android
One Handed Mode
Eases uses one hand with your phone