Wednesday, February 27, 2013

Nexus S 4G Fastboot Waiting for Device


I have an older Nexus S 4G (D720) and needed to flash it to Gingerbread to use for some application testing. This should have been simple to do, but I ran into some issues. I worked out my issues and I thought I’d document them here so others could benefit.

When I followed the instructions from posts like:
whenever I attempted any of the “fastboot” commands, fastboot would respond with

<waiting for device>

and fastboot would hang. I found many posts and articles describing similar behavior, but all the workarounds seemed to include installing unsigned drivers from suspicious download sites or other steps that didn't seem to address the core problem.

Here is what I learned in my situation. For background


1. Install the Android SDK and Eclipse.
Eclipse probably isn’t necessary but it is nice to have.

2. Launch the Android SDK Manager.
From Eclipse go to Window->Android SDK Manager

From the command line execute “sdk manager” from the android SDK folder (if it isn’t already in your path).

3. In the Android SDK manager verify that the Google USB Driver is installed and up to date.
Install or update the driver using the SDK Manager if needed.

4. Connect the target phone to the PC using USB. Make sure USB Debugging is enabled on the phone.
On the Nexus S 4G running Gingerbread 2.3.7 this is under Settings->Applications->Development

5. From the command line, display all adb devices
Use the command:

adb devices

This command is in the Android SDK platform-tools folder. I have this added to my Path. ADB should list out all attached Android devices
If no devices are listed, make sure you have the Google Android USB driver installed.

Windows Device Manager should show a device of “Android Composite ADB Interface”. If this device is shown with an error, right click and select Update driver software. The instructions at http://developer.android.com/tools/extras/oem-usb.html#InstallingDriver should be helpful.


6. Use ADB to reboot the phone into Fastboot mode
Use the command:

adb reboot bootloader

This command is in the Android SDK platform-tools folder. I have this added to my Path. The phone should reboot into Fastboot mode.


7. Verify that fastboot can access the phone
Use the command:

fastboot devices

This should list out all attached Android devices in Fastboot mode. Notice that the device is no longer visible to ADB. “adb devices” no longer lists the device. However, “fastboot devices” should.

A device in Fastboot mode requires a different driver on your Windows machine. Without this driver the Fastboot command cannot communicate with the phone. If no devices are listed, make sure you have the Android Bootloader Interface driver installed.

8. Install the Android Bootloader Interface driver if needed
If Fastboot Devices lists the phone, this step is not necessary. If Fastboot does not list the phone or shows 

<waiting for device>

You may need to install the Android Bootloader Interface driver.
a. Run Windows Device Manager from Control Panel
b. Right click on the Android phone device that shows a warning and select Update Driver Software
c. Select “Browse my computer for driver software”
d. Select “Let me pick from a list of device drivers on my computer”
e. Select the correct Manufacturer and Model. For my phone this was Google and Android Bootloader Interface.
f. complete the driver update
g. If a reboot is needed, reboot your PC.



Now repeat the previous step to verify that fastboot can access the phone

9. Download and expand the device images to use.
For this phone, Google publishes the standard images at https://developers.google.com/android/nexus/images#sojusgwk74

Download the selected image from the link and expand the archive. I used WinRAR from http://www.win-rar.com

The expanded archive includes a number of image files and some command scripts to flash the device


10. Execute the commands from flash-all.sh to flash the device.
Change to the folder with the expanded images and execute the fastboot commands from the flash-all.sh file:

fastboot flash bootloader bootloader-crespo4g-d720sprke1.img
fastboot reboot-bootloader
fastboot flash radio radio-crespo4g-d720sprkh1.img
fastboot reboot-bootloader
fastboot -w update image-sojus-gwk74.zip