Context
The fastboot command line is an android tool that allows to interact with an android device when in fastboot mode. I needed to switch from "fastboot mode" toward "EDL mode" (EDL stands for "Emergency Download").
If this is usually done with the command fastboot oem edl, but on the Xiaomi RedMi note 3 Pro, for some reasons, it uses a specific non-standard root command reboot-edl. This is a new occasion for showing why open-source matters, and to recompile fastboot and add the missing command.
Compiling
The following is for debian related systems. In a previous blog post I explained in detail each command for a similar hack in empathy source code.
This time, I'll give the full transcript without much explanation:
mkdir /tmp/fastboot && cd /tmp/fastboot && apt-get source android-tools-fastboot </dev/null && cd android-tools-* cat <<EOF | patch -p1 && --- a/core/fastboot/fastboot.c +++ b/core/fastboot/fastboot.c @@ -284,6 +284,7 @@ void usage(void) " continue continue with autoboot\n" " reboot reboot device normally\n" " reboot-bootloader reboot device into bootloader\n" + " reboot-edl reboot device into EDL (RedMi Note 3 Pro)\n" " help show this help message\n" "\n" "options:\n" @@ -803,6 +804,7 @@ int main(int argc, char **argv) int wants_wipe = 0; int wants_reboot = 0; int wants_reboot_bootloader = 0; + int wants_reboot_edl = 0; int erase_first = 1; void *data; unsigned sz; @@ -929,6 +931,9 @@ int main(int argc, char **argv) } else if(!strcmp(*argv, "reboot-bootloader")) { wants_reboot_bootloader = 1; skip(1); + } else if(!strcmp(*argv, "reboot-edl")) { + wants_reboot_edl = 1; + skip(1); } else if (!strcmp(*argv, "continue")) { fb_queue_command("continue", "resuming boot"); skip(1); @@ -1009,6 +1014,8 @@ int main(int argc, char **argv) fb_queue_reboot(); } else if (wants_reboot_bootloader) { fb_queue_command("reboot-bootloader", "rebooting into bootloader"); + } else if (wants_reboot_edl) { + fb_queue_command("reboot-edl", "rebooting into EDL mode"); } if (fb_queue_is_empty()) EOF apt-get build-dep android-tools-fastboot -y </dev/null && ## prefix with `sudo` if needed dpkg-buildpackage -rfakeroot -b </dev/null && cd .. && dpkg -i android-tools-fastboot*.deb ## prefix with `sudo` if needed
You should now have a new fastboot command with the reboot-edl command.
Once your Redmi Note 3 Pro is in fastboot mode (power it up with Power and Volume-Down button pressed), you are ready to fire:
# fastboot reboot-edl rebooting into EDL mode... OKAY [ 0.001s] finished. total time: 0.001s
Checking that your device is now in EDL mode could be done with:
# lsusb | grep Qualcomm Bus 001 Device 086: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)
Happy hacking !
More info
- fastboot pre-compiled for windows on xda.