Note:
that this method is tested on Stock Android 4.2.1 and Stock CM 12.0 (Android 5.0) , both devices having custom Recovery (ADB always enabled as default) . If your Stock Recovery allows ADB shell access then you may also consider this solution.
Instructions:
- You should try your pattern-cracking software (or whatsoever the genre it has) from inside the Stock Recovery to see whether it works with the former's environment (ADB shell available there or not).
- Since I would never try step 1., I would do the following:
For Jellybean 4.2.1:
- Boot into Recovery and mount Data partition.
- Open a shell on PC and type:
adb pull /data/property/persist.sys.usb.config ~/
Repace~/
with home directory of your OS. - Open that file in a text editor and you would possibly see
mtp
written there. Change it tomtp,adb
.Note that sometimes Android doesn't understand the text file changes if the line terminator is "DOS Terminators" which Notepad would probably do on Windows (mine is Linux so no issue here).In that case, I would suggest not usingadb pull
but doing:adb shell echo 'mtp,adb' > /data/property/persist.sys.usb.config
You may verify that theecho
command overwrote the file by using:adb pull /data/property/persist.sys.usb.config ~/
and seeing the file's content in some text editor. - Unmount
Data
and reboot into Android OS. USB Debugging would probably be enabled.
For Lollipop 5.0:
JB 4.2.1 users can also follow this method if the previous one didn't work for them.
- Boot into Recovery and mount Data partition.
- Repeat step 2 and 3 used in JB 4.2.1 method.
- We need to tweak some parameters in
settings.db
. Type:adb pull /data/data/com.android.providers.settings/databases/settings.db ~/
- Back it up at some other location too, and open the file in an SQLITE editor. I'm running Linux and DB Browser for SQLite works well. It's also available for Windows OS/OSX.
- In the
global
table, change the value for:adb_enabled
to1
development_settings_enabled
to1
- Check that
verifier_verify_adb_installs
is set to1
in theglobal
table. - Check that as default, in the
secure
table:adb_notify
is1
adb_port
is-1
These checks in step 6 and 7 are not necessary but should be done so that troubleshooting becomes rather easy if the solution doesn't work for you. - Save the changes in
settings.db
and copy it back into Android by typing:adb shell rm /data/data/com.android.providers.settings/databases/settings.db exit adb push ~/settings.db /data/data/com.android.providers.settings/databases/
That delete (rm
) command is not necessary sinceadb push
should overwrite the file, but I executed it for my peace of mind. - Unmount
Data
and reboot into Android OS. ADB probably would be enabled.
This is how it actually worked out when tested on my devices.