<<< Built for the i9100 in mind, but fine on any Samsung phone >>>
<<< check your mount points before using this on another phone >>>
<<< Backup, Backaup and Backup your Data >>>
<<< Never use it on a non Samsung Phone >>>
<<< Read before flash, you are warned >>>
Update 08.10.2012:
Following Entropy512 recommendations, I updated the binary-update to a safe one.
Now format commands are used in script instead of delete_recursive.
This makes the wipe much clean if some file system errors are present
Special thanks to shoey63 for his contribution :good:
Since the superbrick bug story on 4.0.4 firmwares for the i9100 and the Note, wiping and factory reset became a tragedy for many.
many users in N7000 forum asked me for these scripts. Here are they!
shoey63 took my attention to a discussion by Entropy512, Elite Recognized Developer who contributed to a better knowledge of the superbrick bug.
I quote him here:
For a while, as there was little knowledge about the nature of the bug, it was suspected that deleting large files could be dangerous.
However, after further knowledge and research:
For ERASE commands to be caused by simple file deletion (a variation of "TRIM") - The filesystem must be mounted with the "discard" option. No ICS kernel/initramfs/firmware combo I've seen for our device, I9100, or I777 does this.
In theory, an app with superuser permissions could issue erase commands - but I am unaware of any apps that do this.
Root has zero effect despite her claim. When you are in recovery, the only thing that matters is the kernel initramfs - contents of /system do not matter. When you are in recovery, "root" is just another file in /system, indistinguishable from any other as far as wiping algorithms go. In fact, her claim that root voids your warranty is incorrect in many countries. For example, in the United States, her claim is in direct conflict with the Magnusson-Moss Warranty Act, which states that a manufacturer must prove that modifications were the cause of damage before denying warranty service. (This was passed decades ago due to lobbying efforts by SEMA, an association of vendors of aftermarket modifications for vehicles - but it applies to phones too.)
CWM, if wipe isn't suppressed, can be more dangerous than Samsung stock recovery - Samsung believes that only secure erase (done by default in Google-originated source code) is dangerous. However the experiences of Robotu and others have me convinced that while non-secure erase (done by stock recovery) is less dangerous, it is not 100% safe. Also note that even CWM's secure erase doesn't always cause damage - some I777 developers wiped multiple times using CWM on the UCLD3 leak without issues, and Gokhanmoral tested wiping with SiyahKernel 3.1rc6 on the I9100 multiple times without issue - but plenty of users suffered damage. One example of what appears to be damage due to wiping on stock ICS is at http://xdaforums.com/showthread.php?t=1752468 - The Tab 7.7 gets to join the party now.
To sum it:
- wipe / factory reset from CWM is extremely risky on broken chipsets and vulnerable kernels
- wipe / factory reset in stock recovery is not without risks, even if probably less
- delete operations, even on big data packets is safe
So, here comes the idea: build some wipe scripts that can run in recovery (be it stock recovery or CWM) to complete the wipe operations using safe delete command to avoid brick risks on these affected phones
I attach these scripts to just run in recovery (will work in stock recovery)
- Samsung_Factory_Reset-signed.zip: will delete data and cache partitions
- Samsung_Wipe_Cache-signed.zip: will delete cache partition
- Samsung_Wipe_Dalvik-signed.zip: will delete dalvik-cache
- Samsung_Wipe_Data_System_Cache-signed.zip: will delete the data, cache and system partition. After this one, phone will not boot, only recovery and download mode are accessible. You need to flash a full ROM in Odin after that
Here's the edify code used, for teach purpose (in v2.0, delete_recursive is now replaced by format commands)
Code:
ui_print("***************************");
ui_print("Wipe data-cache-system");
ui_print("Samsung Phones Only");
ui_print("***************************");
show_progress(1.000000, 0);
ui_print("Checking Samsung Phone...");
assert(getprop("ro.product.manufacturer") == "samsung");
set_progress(0.100000);
ui_print("Mounting partitions");
mount("ext4", "EMMC", "/dev/block/mmcblk0p9", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p7", "/cache");
mount("ext4", "EMMC", "/dev/block/mmcblk0p10", "/data");
set_progress(0.200000);
ui_print("Delete Cache Partition");
delete_recursive("/cache");
set_progress(0.400000);
ui_print("Delete Data Partition");
delete_recursive("/data");
set_progress(0.600000);
ui_print("Delete System Partition");
delete_recursive("/system");
set_progress(0.900000);
###############################################################################
############################ Formatting partitions ############################
#### You need to unmount (ALL?) partitions before formatting one partition ####
# unmount("/cache");
# unmount("/data");
# unmount("/system");
# format("ext4", "EMMC", "/dev/block/mmcblk0p9", "0");
#### Then remount if you intend to use it later in teh script ####
# mount("ext4", "EMMC", "/dev/block/mmcblk0p9", "/system");
# mount("ext4", "EMMC", "/dev/block/mmcblk0p7", "/cache");
# mount("ext4", "EMMC", "/dev/block/mmcblk0p10", "/data");
#### wipe dalvik-cache ####
# mount("ext4", "EMMC", "/dev/block/mmcblk0p10", "/data");
# delete_recursive("/data/dalvik-cache");
# unmount("/data");
#### wipe dalvik-cache done ####
#### Mount in busybox ####
# run_program("/sbin/mount", "/dev/block/mmcblk0p7", "/cache");
# run_program("/sbin/mount", "/dev/block/mmcblk0p10", "/data");
# run_program("/sbin/mount", "/dev/block/mmcblk0p9", "/system");
#### internal sd ####
# run_program("/sbin/mount", "/dev/block/mmcblk0p11", "/sdcard");
###############################################################################
ui_print("Unmounting Partitions");
unmount("/cache");
unmount("/data");
unmount("/system");
set_progress(1.000000);
show_progress(1.000000, 0);
ui_print("Wipe complete!");
ui_print("Reboot in download mode");
ui_print("Flash a full ROM in Odin");
ui_print("by Phil3759@xda-developers.com");
Attachments
-
Samsung_Factory_Reset-signed.zip154 KB · Views: 2,312
-
Samsung_Wipe_Cache-signed.zip153.9 KB · Views: 1,643
-
Samsung_Wipe_Dalvik-signed.zip153.9 KB · Views: 2,659
-
Samsung_Wipe_Data_System_Cache-signed.zip154.2 KB · Views: 1,609
-
Samsung_Factory_Reset_2.0-signed.zip154.5 KB · Views: 1,984
-
Samsung_Wipe_Cache_2.0-signed.zip154.5 KB · Views: 1,368
-
Samsung_Wipe_Data_System_Cache_2.0-signed.zip154.6 KB · Views: 4,301
Last edited: