I’ve had some time on my hands the last couple of days due to the flu so I thought I would put some of that time toward working out why the download and recovery modes are seemingly disabled in some Samsung Galaxy S units around the globe.
It’s been established that the download and recovery modes (AKA three button mode) are not entirely disabled and I have proven this for myself. You can force an affected Samsung Galaxy S into either mode by using the Android SDK along with the USB drivers for your phone and entering the following commands from the SDK tools folder in a command prompt (without quotations):
- “adb reboot download” (for download mode),
- Entering this mode should show an android with a shovel.
- “adb reboot recovery” (for recovery mode).
- Entering this mode should show something resembling a text mode interface.
So the modes are there but are ultimately useless if a firmware flash is unsuccessful for whatever reason (i.e. flash interrupted, corrupted firmware image, incorrect firmware, etc) as you need the phone to boot up to respond to requests via the SDK. Not ideal unless you want to keep returning your device to your carrier or Samsung to reflash or you are lucky enough to own a compatible JTAG flash tool to write directly to memory without a functioning operating system.
Android phones have a standard boot sequence which is well documented here. In a nutshell, after the Boot ROM finds and loads the first stage boot loader (AKA Primary Boot Loader or PBL or boot.bin) the second stage boot loader (AKA Secondary Boot Loader or SBL or sbl.bin) is loaded. After that, the operating system is loaded (in this case it is the Linux kernel) and parameters can be passed to alter the start up mode (recovery mode is “bootmode=2”).
Theoretically, something in the SBL (or something with which SBL is interacting such as NVRAM) is doing one of the following:
- unable to receive key presses during boot (something upstream is blocking communication),
- ignoring key presses during boot (key presses received but discarded with no further action),
- expecting a different set of key presses, either:
- alphanumeric combination impossible to execute given the lack of physical keyboard,
- an unknown combination of existing buttons (less likely as most have already tried all the possible combinations).
- key presses received but the code to trigger download or recovery modes as a result of the key presses has been disabled or removed.
The folks over at XDA Developers have been trying to figure out which of the partitions contains the error causing the download and recovery modes to be inaccessible via key press combination on boot. The hunt is still in progress but I am definitely keeping my eyes peeled just in case they come up with a solution before Samsung.