How To Recover

From WebOS Internals
Jump to navigation Jump to search

Device not booting? webOS Doctor How-To



If you're running Windows, the java executable is probably not within the PATH environment variable. This means you need to first navigate to your java installation folder before running the webOS Doctor. On most systems it will be something like this:

  1. cd "c:\Program Files (x86)\Java\jre6\bin"
  2. java -jar <path to doctor-file>

Fortunately, HP has created a tool called webOS Doctor intended for users to easily restore their devices in the event that they cannot boot for one reason or another.

Note: Before Trying the following steps below. Try removing the battery first and reinsert the battery and turn on the device this will determine whether or not you need to perform the following steps.

Note 2: As of WebOS 1.3.1 your USB data (Pictures, Videos, etc.) is no longer deleted during the process. Older versions of WebOS Doctor WILL DELETE ALL YOUR PERSONAL DATA ON THE DEVICE.

HP webOS Doctor:

All HP WebOS Doctor Versions:

After the download is complete, launch webOS Doctor:

  1. Select your language
  2. Accept the license agreement
  3. Connect your device to your PC while in recovery mode via USB and select "Next" when it becomes available

After completion the device will reboot and present you with the activation set-up.

If your PC does not recognize your device and you cannot go past step 3 above, try the following steps:

  1. Disconnect the USB cable
  2. Completely power off the device (hold down the power button until the option to power off appears)
  3. Remove the battery
  4. Connect the USB cable and wait for the battery image to appear on the screen (or wait around 10-15 seconds)
  5. Hold down the Up button on the volume rocker
  6. While holding the Up button, insert the battery. The USB logo will appear on the screen
  7. "Next" should now be enabled - proceed with the recovery

The above steps will put the device into bootloader recovery mode and should allow the PC to recognize your device and proceed with the restore. In this mode the screen will display a giant USB logo instead of the usual HP startup logo.

It may be necessary to manually start novacom in OSX 10.6. To do this search (Apple-space) for "novacomd" and run the "start-novacomd" executable. Your phone should now be detected and the "next" step will be available.

The process usually proceeds as follows:

(If you're on a Mac, you can follow the progress in /var/log/system.log, on a PC the log is in your personal temporary files area)

  1. WebOS Doctor begins
  2. At 3%, a ramdisk is transferred to the phone, and the phone is rebooted
  3. At 4%, the screen changes to the HP logo
  4. At 9%, the screen changes to a big arrow pointing down to an integrated circuit
  5. Novaterm access is available from 12% onwards
  6. The progress bar advances by 2% increments every 20 seconds or so
  7. If it gets stuck at 52% for more than 30 seconds, it's not going to progress further and you will need to try again.
  8. Around 54% the filesystems are being partitioned
  9. Around 64% the modem firmware is being reflashed
  10. Around 72% the carrier apps are being installed
  11. Around 82% the ROM is being verified

If the process fails at 84% or later, the flash and modem have actually been written, so if you reboot you will get what you were flashing.

Doctor disconnects at 8%

If the webOS Doctor continually disconnects at 8%, then you probably have a corrupted USB drive. This is how you can fix that (note that this will completely and utterly destroy all data on the USB drive).

If you are reading this following an interrupted webOS Doctor, you might want to try to extract the installer uImage from the version that was there before the interrupted procedure. For example if you were upgrading from webOS 2.0.0 to webOS 2.1.0, you might want to try the uImage from the 2.0.0 webOS Doctor jar.

First put the device into recovery mode, then memboot the device using the installer uImage (extracted from your webOS Doctor jar):

novacom boot mem:// < nova-installer-image-castle.uImage 

After it boots, run novaterm:


Once connected to the device, type:

lvm.static vgscan --ignorelockingfailure
lvm.static vgchange -ay --ignorelockingfailure

then type:

mkdosfs -f 1 -s 64 /dev/store/media

Once that completes, put the device back into recovery mode and run the webOS Doctor.

Modifications to the recovery process

Between about 18% and 54% complete, you can novaterm into the device while it is being flashed, and modify the filesystem that will be run after the phone reboots (e.g. to touch /var/luna/preferences/ran-first-use).

If you stay in a mounted directory, you can even cause the flashing to abort after the carrier apps are installed and just before the ROM is verified. This is another point where manual modifications can be made.

After you have made your modifications, unmount any filesystems you have mounted and "tellbootie reboot".

Can't boot into recovery mode?

In the very unlikely event that your device will not boot into recovery mode (indicating that your boot loader on the flash disk may be damaged or corrupted) you can try booting bootie into recovery mode over USB instead: Last_Resort_Emergency_BootLoader_Recovery Note that there has only been one incidence of this being required which ultimately was due to hardware failure, we do not recommend that you attempt this unless you have tried all the steps above exactly as described at least 10 times.

Short of hardware damage, it should not be possible to "brick" a device.

DANGER - The Veer definitely is brickable.


The Doctor's "Next" button is grayed out!

That is, when you're asked to plug in your device, you have plugged it in, and nothing happens. If you have a terminal window open, you may see a message similar to the following repeating indefinitely:

Jun 7, 2011 9:33:48 AM com.palm.nova.installer.recoverytool.runner.DeviceDiscoveryRunner$DeviceDiscoveryThread run
INFO: got controller
Jun 7, 2011 9:33:48 AM com.palm.nova.installer.recoverytool.runner.DeviceDiscoveryRunner$DeviceDiscoveryThread run
INFO: got devices 0
Jun 7, 2011 9:33:49 AM com.palm.nova.installer.recoverytool.runner.DeviceDiscoveryRunner$DeviceDiscoveryThread run
INFO: got controller
Jun 7, 2011 9:33:49 AM com.palm.nova.installer.recoverytool.runner.DeviceDiscoveryRunner$DeviceDiscoveryThread run
INFO: got devices 0

The first thing to try is simply unplugging the USB cable from your device, and then plugging it back in again. Often this will cause the device to be detected and all will be well. If that does not work, do the following:


  • Right-Click "My Computer", choose "Manage".
  • Click "Services", then on the right find "Novacom".
  • Stop the service, then start it
  • Try The Doctor again


  • Open a shell, type "ps -e | grep novacom"
  • If nothing comes back, then it's not running.
  • "/etc/init.d/novacomd start"


  • Open
  • "sudo /opt/nova/bin/stop-novacomd"
  • "sudo /opt/nova/bin/start-novacomd"
  • Leave running while flashing the device

Note, older version of the SDK put novacomd in a different location and you would use this command: "sudo /opt/palm/nova/novacomd"

Attempting to install Novacom fails!

OSX 10.6 and Higher

This is due to a recent change in the way that launchctl handles LaunchDaemons, something that Novacomd is part of

  • Exit out of the Novacom installer, but do not exit the webOS Doctor itself
  • Find /Library/LaunchDaemons/
  • Rename com.palm.novacomd to com.palm.novacomd.plist
  • Open
  • "launchctl unload -w /Library/LaunchDaemons/com.palm.novacomd" (This should return that it was unable to unload. That is to be expected!)
  • "sudo launchctl load -w /Library/LaunchDaemons/com.palm.novacomd.plist"
  • You should be able to continue with the doctoring and will no longer need to manually run Novacomd

Complete filesystem creation

The following is for a 32GB TouchPad
(Instructions for how to create the filesystem on a 16BG Pre2 are on the Discussion page. Please note that they are still in testing and will be moved to the main part of this wiki page when testing is completed.)

lvm.static vgscan --ignorelockingfailure
lvm.static vgchange -ay --ignorelockingfailure
lvm.static vgremove store
lvm.static vgscan --ignorelockingfailure
lvm.static vgchange -ay --ignorelockingfailure
lvm.static vgcreate -s 8M store /dev/mmcblk0p14
lvm.static vgscan --ignorelockingfailure
lvm.static vgchange -ay --ignorelockingfailure
lvm.static lvcreate -l 71 -i 1 -M y --major 254 --minor 0 -n root store
lvm.static lvcreate -l 8 -i 1 -M y --major 254 --minor 1 -n var store
lvm.static lvcreate -l 2 -i 1 -M y --major 254 --minor 2 -n update store
lvm.static lvcreate -l 3 -i 1 -M y --major 254 --minor 3 -n log store
lvm.static lvcreate -l 32 -i 1 -M y --major 254 --minor 4 -n mojodb store
lvm.static lvcreate -l 17 -i 1 -M y --major 254 --minor 5 -n filecache store
lvm.static lvcreate -l 3523 -i 1 -M y --major 254 --minor 6 -n media store
lvm.static lvcreate -l 64 -i 1 -M y --major 254 --minor 7 -n swap store
lvm.static vgscan --ignorelockingfailure
lvm.static vgchange -ay --ignorelockingfailure
mkdosfs -f 1 -s 64 /dev/store/media

Then you need to doctor.