Wipe data/Factory reset through ADB

Daniel Edwards picture Daniel Edwards · May 30, 2012 · Viewed 307.1k times · Source

Basically this is my problem/

I have 200+ phones running stock Android that need to be wiped (in the Wipe Data/Factory Reset way) and then a new ROM installed with some additional apks.

Currently I've got everything automated except the Wipe Data part. Everything else can be done through a .bat with a set of commands quite happily but I cannot for the life of me work out how to either imitate or force the recovery mode to wipe the data.

Things I've currently tried:

  • Wiping the data myself using rm -r * on the folders it's supposed to do (data,cache,sd-ext etc.). This does wipe but then the ROM doesn't work properly and gets stuck in a bootloop.
  • Trying to use "adb input keyevent" to mimic the key presses. I have no idea what they are mapped to because they are in a UNIX shell basically and even then there is no "input" because the OS hasn't been loaded anyway.
  • Trying to find the file/script on the system that actually runs the wipe/reset and then running that manually. This might be the simplest way as it's already been written for me somewhere but I just cannot see where it is hidden, even in something like CWM.

If anyone has got any method whereby I could do this factory reset through a .bat or through the adb shell I would greatly appreciate it. Been trying to solve this for about 2 days now with little progress.

Answer

Daniel Edwards picture Daniel Edwards · May 31, 2012

After a lot of digging around I finally ended up downloading the source code of the recovery section of Android. Turns out you can actually send commands to the recovery.

 * The arguments which may be supplied in the recovery.command file:
 *   --send_intent=anystring - write the text out to recovery.intent
 *   --update_package=path - verify install an OTA package file
 *   --wipe_data - erase user data (and cache), then reboot
 *   --wipe_cache - wipe cache (but not user data), then reboot
 *   --set_encrypted_filesystem=on|off - enables / diasables encrypted fs

Those are the commands you can use according to the one I found but that might be different for modded files. So using adb you can do this:

adb shell
recovery --wipe_data

Using --wipe_data seemed to do what I was looking for which was handy although I have not fully tested this as of yet.

EDIT:

For anyone still using this topic, these commands may change based on which recovery you are using. If you are using Clockword recovery, these commands should still work. You can find other commands in /cache/recovery/command

For more information please see here: https://github.com/CyanogenMod/android_bootable_recovery/blob/cm-10.2/recovery.c