<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.webos-internals.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PEEf</id>
	<title>WebOS Internals - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.webos-internals.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PEEf"/>
	<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/wiki/Special:Contributions/PEEf"/>
	<updated>2026-04-13T20:56:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9978</id>
		<title>Last Resort Emergency BootLoader Recovery</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9978"/>
		<updated>2010-05-19T17:35:48Z</updated>

		<summary type="html">&lt;p&gt;PEEf: /* OMAP boot Procedure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Recovery Mode==&lt;br /&gt;
&lt;br /&gt;
Typically, any damage to the operating system on the Palm Pre/Pre Plus can be recovered by booting into recovery mode. ([[How_To_Recover]])&lt;br /&gt;
&lt;br /&gt;
One situation which cannot be recovered so easily is the extremely unlikely event of corruption of the installed bootloader ([[bootie]]) stored on the [[Pre's flash disk]].&lt;br /&gt;
&lt;br /&gt;
If bootie on the flash disk has been damaged or corrupted in such a way that booting into recovery mode is not possible, the Pre is still not &amp;quot;bricked&amp;quot; as the OMAP3430 processor in the Pre provides for a mechanism to boot code from its USB interface.  At this time this operation has not been performed on a Pixi, and will not be the same as it has a different core.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NVRAM Tokens==&lt;br /&gt;
&lt;br /&gt;
If the NVRAM partition gets trashed too, the token area will be empty and the doctor will refuse to install. If you're in this situation you need to rebuild it. Here are a few of the minimal token sets to allow the doctor to start:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''' : you cant get all minimal token sets below with the showprops (Show Properties Application) app that is available [http://git.webos-internals.org/?p=applications/showprops.git HERE].&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
GSM Pre for O2 and Movistar: DMCARRIER=ROW, DMMODEL=castle, HWoRev=A, PN=180-10722-03, PRODoID=P100UEU&lt;br /&gt;
&lt;br /&gt;
GSM Pre Plus SFR: DMCARRIER=ROW, DMMODEL=P101UEU, HWoRev=A, KEYoBRD=w1 (AZERTY), PN=180-10773-01, PRODoID=P101UEU, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Sprint Pixi: DMCARRIER=Sprint, DMMODEL=P200EWW, HWoRev=A, KEYoBRD=z, PN=180-10714-03, PRODoID=P200EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Sprint Pre: DMCARRIER=Sprint, DMMODEL=P100EWW, HWoRev=A, KEYoBRD=z, PN=180-10642-05, PRODoID=P100EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Verizon Pixi Plus: DMCARRIER=Verizon, DMMODEL=P121EWW, HWoRev=A, KEYoBRD=z, PN=180-10714-01, PRODoID=P121EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Verizon Pre Plus: DMCARRIER=Verizon, DMMODEL=P101EWW, HWoRev=A, KEYoBRD=z, PN=180-10724-01, PRODoID=P101EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
If you want BlueTooth and Wifi to work, You may also want to set BToADDR=00:1D:FE:''xx:yy:zz'', WIFIoADDR=00:1D:FE:''uu:vv:ww'' and PalmSN=''serial''.  If you are unsure of your original MAC addresses, They can safely be any random number, the serial number is on the box and on a sticker inside the battery compartment.&lt;br /&gt;
&lt;br /&gt;
== Token Backup ==&lt;br /&gt;
&lt;br /&gt;
If you are a heavy experimenter, you should probably backup your tokens before you start experimenting, this way you can easily recover a future problem without as much hassle.  Also, there are tokens that control things like touchscreen calibration, so these cannot be easily obtained if they are lost!  Once booted, you can backup all your tokens by copying everything in /tmp/tokens.  Here are a list of the Tokens on an Average Pre: &lt;br /&gt;
 &lt;br /&gt;
 ACCELCAL       BToADDR        DMCLoAUTHPW    DMSETS         HWoRev         PN             ProdSN&lt;br /&gt;
 BATToCH        DMCARRIER      DMCLoNONCE     DMSVRoAUTHPW   KEYoBRD        PRODoID        WIFIoADDR&lt;br /&gt;
 BATToRSP       DMCLoAUTHNAME  DMMODEL        DMSVRoNONCE    ModemSN        PalmSN         installer&lt;br /&gt;
 MfgCode        SimLockDef&lt;br /&gt;
&lt;br /&gt;
The purpose of the &amp;quot;BATToCH&amp;quot;, &amp;quot;BATToRSP&amp;quot;, &amp;quot;DMCLoAUTHPW&amp;quot;, &amp;quot;DMCLoNONCE&amp;quot;, &amp;quot;DMSVRoAUTHPW&amp;quot;, &amp;quot;DMSVRoNONCE&amp;quot; tokens are as yet not fully understood.  They appear to be unused, as they're never visible inside any part of the code as strings, and completely removing them does not seem to change anything in the device behavior.&lt;br /&gt;
&lt;br /&gt;
The BATToCH/BATToRSP is likely a challenge/response crypto system used to authenticate the battery pack. This means that Palm could use the capability to lock out &amp;quot;fake&amp;quot; batteries should they ever want to. So far they haven't implemented any of this, as it would probably affect the Seidio aftermarket packs.&lt;br /&gt;
If Palm ever has a problem with fake Chinese packs finding their way into the market, they could implement the security to protect their customers.  Historically, There has been a problem with inferior separator materials used in fake batteries causing fires, which is a good reason to have a way secure it.  These fraudulent packs have been known to appear to be identical on the outside complete with OEM markings, so a fire caused one of these could really damage Palm's reputation should it occur.&lt;br /&gt;
&lt;br /&gt;
A best guess is that the &amp;quot;DM&amp;quot; stuff is used (or could be used) in OTA activation/provisioning.  Keep in mind, It's possible that you may not see these referenced in any code visible on the device, as they could be used by the AMSS (radio) firmware which has it's own ARM core and software.  The interface between the systems is the TelephonyInterfaceLayer, but AMSS could request the Tokens from it's (large) codebase and therefore you won't see it anywhere in the visible filesystem.  The AMSS handles battery charging and (obviously) a lot of what takes place during provisioning and activation.  If your AMSS is already activated, it may no longer need these, so that may explain why they can be omitted and not affect operation.&lt;br /&gt;
&lt;br /&gt;
In my case, the phone is an unlocked GSM device. There's no such thing as a device &amp;quot;activation&amp;quot;. This may explain why they're unused.&lt;br /&gt;
&lt;br /&gt;
The structure of these &amp;quot;mystery&amp;quot; tokens are as follows:&lt;br /&gt;
&lt;br /&gt;
 BATToCH       16 digits hex number&lt;br /&gt;
 BATToRSP      40 digits hex number&lt;br /&gt;
 DMSVRoNONCE   16 bytes in base64&lt;br /&gt;
 DMSVRoAUTHPW  a floating point number in ASCII format&lt;br /&gt;
 DMCLoNONCE    16 bytes in base64&lt;br /&gt;
 DMCLoAUTHPW   a floating point number in ASCII format&lt;br /&gt;
 DMCLoAUTHNAME an integer number (probably 32 bits) in ASCII format&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' I've built a group of perl scripts to rebuild the token area of the NVRAM from a backup, should anyone need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Token Editing ==&lt;br /&gt;
&lt;br /&gt;
Palm has provided a utility in WebOS for manipulation of tokens located at /sbin/tokens.&lt;br /&gt;
&lt;br /&gt;
Here is a Summary:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;root@palm-webos-device:/var/home/root# tokens -h&lt;br /&gt;
&lt;br /&gt;
tokens - used for listing and editing tokens&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
  --help                 Print this help output&lt;br /&gt;
  --list                 List all tokens in the system&lt;br /&gt;
  --remove &amp;lt;token&amp;gt;       Remove the given token from the system&lt;br /&gt;
  --mount                Mount the tokens into the filesystem&lt;br /&gt;
  --device &amp;lt;dev&amp;gt;         Use the specified device path&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OMAP boot Procedure ==&lt;br /&gt;
&lt;br /&gt;
First, ensure that the Linux SDK and novacom packages are installed, as you will need to run webOS Doctor as the final step in this process.&lt;br /&gt;
Second, ensure that you have a copy of the webOS doctor jar ready for your phone.&lt;br /&gt;
&lt;br /&gt;
Download: [http://markmail.org/download.xqy?id=l4qabusyxcqsslwn&amp;amp;number=1 omap3_usb.tar.bz2].&lt;br /&gt;
If you have not libusb 0.1.3 installed on your computer, install it. It is needed for the header file /usr/include/usb.h  &lt;br /&gt;
&lt;br /&gt;
Compile on Linux system with &amp;quot;make&amp;quot;.  Optionally install with &amp;quot;sudo cp omap3_usbload /usr/local/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now extract the bootie binary from a WebOS Doctor image: (note: webosdoctor file name will vary)&lt;br /&gt;
 &lt;br /&gt;
 mkdir doctor; cd doctor; unzip ../webosdoctor.jar; cd resources&lt;br /&gt;
 mkdir webOS; cd webOS; tar xvf ../webOS.tar; mkdir nova-cust-image-castle.rootfs; cd nova-cust-image-castle.rootfs&lt;br /&gt;
 tar xvzf ../nova-cust-image-castle.rootfs.tar.gz ./boot/boot.bin; cd boot&lt;br /&gt;
&lt;br /&gt;
Booting bootie over USB:&lt;br /&gt;
&lt;br /&gt;
Ensure USB is unplugged from the Pre, and remove the Pre's battery.&lt;br /&gt;
&lt;br /&gt;
On your Linux system, run:&lt;br /&gt;
&lt;br /&gt;
 sudo omap3_usbload boot.bin&lt;br /&gt;
&lt;br /&gt;
This should return:&lt;br /&gt;
&lt;br /&gt;
 TI OMAP3 USB boot ROM tool, version 0.1&lt;br /&gt;
 ......&lt;br /&gt;
&lt;br /&gt;
and a series of dots while it looks for an OMAP3 to send boot code to.&lt;br /&gt;
&lt;br /&gt;
Now, plug the pre into USB.&lt;br /&gt;
&lt;br /&gt;
If all works as it should, the usbload program should return:&lt;br /&gt;
&lt;br /&gt;
 found device!&lt;br /&gt;
 download ok&lt;br /&gt;
&lt;br /&gt;
And your Pre will now show a USB logo. (this is bootie's &amp;quot;Recovery mode&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Put the battery back in without unplugging the USB.&lt;br /&gt;
&lt;br /&gt;
Since you are now in USB recovery mode, you should be able to run the webOS doctor on the host Linux box.  Remember that the SDK novacom package must be installed for the webOS Doctor to work in Linux.&lt;br /&gt;
&lt;br /&gt;
One way to do this is to launch the doctor from the command line like:   &lt;br /&gt;
&lt;br /&gt;
 sudo java -jar webosdoctor.jar&lt;br /&gt;
&lt;br /&gt;
And follow the usual steps to recover your pre's operating system from here.&lt;br /&gt;
&lt;br /&gt;
== Alternative Recovery ==&lt;br /&gt;
&lt;br /&gt;
Another available option now that bootie is running is to send bootie a Linux image over USB and perform some kind of recovery work directly on the pre itself.  This is not recommended unless you are very familiar with linux systems administration.&lt;br /&gt;
&lt;br /&gt;
First you send bootie the boot image of the doctor's installer.  This can be extracted from the WebOS Doctor jar.&lt;br /&gt;
&lt;br /&gt;
 novacom boot mem:// &amp;lt; nova-installer-image-castle.uImage&lt;br /&gt;
&lt;br /&gt;
Wait 15 seconds for the system to boot then connect in to a shell on the running linux system with novaterm.  (you will see no on-screen indication that the device is booting linux, only a solid Palm logo)&lt;br /&gt;
&lt;br /&gt;
 novaterm&lt;br /&gt;
&lt;br /&gt;
You should get a shell prompt&lt;br /&gt;
&lt;br /&gt;
 root@palm-webos-device:/# &lt;br /&gt;
&lt;br /&gt;
Now find and activate the LVM disk voumes with the following two commands:&lt;br /&gt;
&lt;br /&gt;
 lvm.static vgscan --ignorelockingfailure&lt;br /&gt;
 lvm.static vgchange -ay --ignorelockingfailure&lt;br /&gt;
&lt;br /&gt;
Next, mount all disks&lt;br /&gt;
&lt;br /&gt;
 for N in root var media log update; do mkdir /mnt/$N; mount /dev/mapper/store-$N /mnt/$N; done&lt;br /&gt;
&lt;br /&gt;
When done with whatever you need to do on the system, shutting it down safely is a good idea&lt;br /&gt;
&lt;br /&gt;
 umount -a; tellbootie reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recovery using OS/X ==&lt;br /&gt;
&lt;br /&gt;
For a Mac, the process of running USB booting the OMAP may be much simpler.&lt;br /&gt;
&lt;br /&gt;
The MacOS X version of the SDK provides a pre-built executable /opt/nova/bin/cpuboot and a recovery image. You can simply run&lt;br /&gt;
&lt;br /&gt;
 /opt/nova/bin/cpuboot  -o -v -d usb -f /opt/nova/bin/recovery-castle.bin&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9977</id>
		<title>Last Resort Emergency BootLoader Recovery</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9977"/>
		<updated>2010-05-19T17:35:10Z</updated>

		<summary type="html">&lt;p&gt;PEEf: /* Token Backup */   Added Token Editing Section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Recovery Mode==&lt;br /&gt;
&lt;br /&gt;
Typically, any damage to the operating system on the Palm Pre/Pre Plus can be recovered by booting into recovery mode. ([[How_To_Recover]])&lt;br /&gt;
&lt;br /&gt;
One situation which cannot be recovered so easily is the extremely unlikely event of corruption of the installed bootloader ([[bootie]]) stored on the [[Pre's flash disk]].&lt;br /&gt;
&lt;br /&gt;
If bootie on the flash disk has been damaged or corrupted in such a way that booting into recovery mode is not possible, the Pre is still not &amp;quot;bricked&amp;quot; as the OMAP3430 processor in the Pre provides for a mechanism to boot code from its USB interface.  At this time this operation has not been performed on a Pixi, and will not be the same as it has a different core.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NVRAM Tokens==&lt;br /&gt;
&lt;br /&gt;
If the NVRAM partition gets trashed too, the token area will be empty and the doctor will refuse to install. If you're in this situation you need to rebuild it. Here are a few of the minimal token sets to allow the doctor to start:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''' : you cant get all minimal token sets below with the showprops (Show Properties Application) app that is available [http://git.webos-internals.org/?p=applications/showprops.git HERE].&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
GSM Pre for O2 and Movistar: DMCARRIER=ROW, DMMODEL=castle, HWoRev=A, PN=180-10722-03, PRODoID=P100UEU&lt;br /&gt;
&lt;br /&gt;
GSM Pre Plus SFR: DMCARRIER=ROW, DMMODEL=P101UEU, HWoRev=A, KEYoBRD=w1 (AZERTY), PN=180-10773-01, PRODoID=P101UEU, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Sprint Pixi: DMCARRIER=Sprint, DMMODEL=P200EWW, HWoRev=A, KEYoBRD=z, PN=180-10714-03, PRODoID=P200EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Sprint Pre: DMCARRIER=Sprint, DMMODEL=P100EWW, HWoRev=A, KEYoBRD=z, PN=180-10642-05, PRODoID=P100EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Verizon Pixi Plus: DMCARRIER=Verizon, DMMODEL=P121EWW, HWoRev=A, KEYoBRD=z, PN=180-10714-01, PRODoID=P121EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Verizon Pre Plus: DMCARRIER=Verizon, DMMODEL=P101EWW, HWoRev=A, KEYoBRD=z, PN=180-10724-01, PRODoID=P101EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
If you want BlueTooth and Wifi to work, You may also want to set BToADDR=00:1D:FE:''xx:yy:zz'', WIFIoADDR=00:1D:FE:''uu:vv:ww'' and PalmSN=''serial''.  If you are unsure of your original MAC addresses, They can safely be any random number, the serial number is on the box and on a sticker inside the battery compartment.&lt;br /&gt;
&lt;br /&gt;
== Token Backup ==&lt;br /&gt;
&lt;br /&gt;
If you are a heavy experimenter, you should probably backup your tokens before you start experimenting, this way you can easily recover a future problem without as much hassle.  Also, there are tokens that control things like touchscreen calibration, so these cannot be easily obtained if they are lost!  Once booted, you can backup all your tokens by copying everything in /tmp/tokens.  Here are a list of the Tokens on an Average Pre: &lt;br /&gt;
 &lt;br /&gt;
 ACCELCAL       BToADDR        DMCLoAUTHPW    DMSETS         HWoRev         PN             ProdSN&lt;br /&gt;
 BATToCH        DMCARRIER      DMCLoNONCE     DMSVRoAUTHPW   KEYoBRD        PRODoID        WIFIoADDR&lt;br /&gt;
 BATToRSP       DMCLoAUTHNAME  DMMODEL        DMSVRoNONCE    ModemSN        PalmSN         installer&lt;br /&gt;
 MfgCode        SimLockDef&lt;br /&gt;
&lt;br /&gt;
The purpose of the &amp;quot;BATToCH&amp;quot;, &amp;quot;BATToRSP&amp;quot;, &amp;quot;DMCLoAUTHPW&amp;quot;, &amp;quot;DMCLoNONCE&amp;quot;, &amp;quot;DMSVRoAUTHPW&amp;quot;, &amp;quot;DMSVRoNONCE&amp;quot; tokens are as yet not fully understood.  They appear to be unused, as they're never visible inside any part of the code as strings, and completely removing them does not seem to change anything in the device behavior.&lt;br /&gt;
&lt;br /&gt;
The BATToCH/BATToRSP is likely a challenge/response crypto system used to authenticate the battery pack. This means that Palm could use the capability to lock out &amp;quot;fake&amp;quot; batteries should they ever want to. So far they haven't implemented any of this, as it would probably affect the Seidio aftermarket packs.&lt;br /&gt;
If Palm ever has a problem with fake Chinese packs finding their way into the market, they could implement the security to protect their customers.  Historically, There has been a problem with inferior separator materials used in fake batteries causing fires, which is a good reason to have a way secure it.  These fraudulent packs have been known to appear to be identical on the outside complete with OEM markings, so a fire caused one of these could really damage Palm's reputation should it occur.&lt;br /&gt;
&lt;br /&gt;
A best guess is that the &amp;quot;DM&amp;quot; stuff is used (or could be used) in OTA activation/provisioning.  Keep in mind, It's possible that you may not see these referenced in any code visible on the device, as they could be used by the AMSS (radio) firmware which has it's own ARM core and software.  The interface between the systems is the TelephonyInterfaceLayer, but AMSS could request the Tokens from it's (large) codebase and therefore you won't see it anywhere in the visible filesystem.  The AMSS handles battery charging and (obviously) a lot of what takes place during provisioning and activation.  If your AMSS is already activated, it may no longer need these, so that may explain why they can be omitted and not affect operation.&lt;br /&gt;
&lt;br /&gt;
In my case, the phone is an unlocked GSM device. There's no such thing as a device &amp;quot;activation&amp;quot;. This may explain why they're unused.&lt;br /&gt;
&lt;br /&gt;
The structure of these &amp;quot;mystery&amp;quot; tokens are as follows:&lt;br /&gt;
&lt;br /&gt;
 BATToCH       16 digits hex number&lt;br /&gt;
 BATToRSP      40 digits hex number&lt;br /&gt;
 DMSVRoNONCE   16 bytes in base64&lt;br /&gt;
 DMSVRoAUTHPW  a floating point number in ASCII format&lt;br /&gt;
 DMCLoNONCE    16 bytes in base64&lt;br /&gt;
 DMCLoAUTHPW   a floating point number in ASCII format&lt;br /&gt;
 DMCLoAUTHNAME an integer number (probably 32 bits) in ASCII format&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' I've built a group of perl scripts to rebuild the token area of the NVRAM from a backup, should anyone need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Token Editing ==&lt;br /&gt;
&lt;br /&gt;
Palm has provided a utility in WebOS for manipulation of tokens located at /sbin/tokens.&lt;br /&gt;
&lt;br /&gt;
Here is a Summary:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;root@palm-webos-device:/var/home/root# tokens -h&lt;br /&gt;
&lt;br /&gt;
tokens - used for listing and editing tokens&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
  --help                 Print this help output&lt;br /&gt;
  --list                 List all tokens in the system&lt;br /&gt;
  --remove &amp;lt;token&amp;gt;       Remove the given token from the system&lt;br /&gt;
  --mount                Mount the tokens into the filesystem&lt;br /&gt;
  --device &amp;lt;dev&amp;gt;         Use the specified device path&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OMAP boot Procedure ==&lt;br /&gt;
&lt;br /&gt;
First, ensure that the Linux SDK and novacom packages are installed, as you will need to run webOS Doctor as the final step in this process.&lt;br /&gt;
Second, ensure that you have a copy of the webOS doctor jar ready for your phone.&lt;br /&gt;
&lt;br /&gt;
Download: [http://markmail.org/download.xqy?id=l4qabusyxcqsslwn&amp;amp;number=1 omap3_usb.tar.bz2].&lt;br /&gt;
If you have not libusb 0.1.3 installed on your computer, install it. It is needed for the header file /usr/include/usb.h  &lt;br /&gt;
&lt;br /&gt;
Compile on Linux system with &amp;quot;make&amp;quot;.  Optionally install with &amp;quot;sudo cp omap3_usbload /usr/local/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now extract the bootie binary from a WebOS Doctor image: (note: webosdoctor file name will vary)&lt;br /&gt;
 &lt;br /&gt;
 mkdir doctor; cd doctor; unzip ../webosdoctor.jar; cd resources&lt;br /&gt;
 mkdir webOS; cd webOS; tar xvf ../webOS.tar; mkdir nova-cust-image-castle.rootfs; cd nova-cust-image-castle.rootfs&lt;br /&gt;
 tar xvzf ../nova-cust-image-castle.rootfs.tar.gz ./boot/boot.bin; cd boot&lt;br /&gt;
&lt;br /&gt;
Booting bootie over USB:&lt;br /&gt;
&lt;br /&gt;
Ensure USB is unplugged from the Pre, and remove the Pre's battery.&lt;br /&gt;
&lt;br /&gt;
On your Linux system, run:&lt;br /&gt;
&lt;br /&gt;
 sudo omap3_usbload boot.bin&lt;br /&gt;
&lt;br /&gt;
This should return:&lt;br /&gt;
&lt;br /&gt;
 TI OMAP3 USB boot ROM tool, version 0.1&lt;br /&gt;
 ......&lt;br /&gt;
&lt;br /&gt;
and a series of dots while it looks for an OMAP3 to send boot code to.&lt;br /&gt;
&lt;br /&gt;
Now, plug the pre into USB.&lt;br /&gt;
&lt;br /&gt;
If all works as it should, the usbload program should return:&lt;br /&gt;
&lt;br /&gt;
 found device!&lt;br /&gt;
 download ok&lt;br /&gt;
&lt;br /&gt;
And your Pre will now show a USB logo. (this is bootie's &amp;quot;Recovery mode&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Put the battery back in without unplugging the USB.&lt;br /&gt;
&lt;br /&gt;
Since you are now in USB recovery mode, you should be able to run the webOS doctor on the host Linux box.  Remember that the SDK novacom package must be installed for the webOS Doctor to work in Linux.&lt;br /&gt;
&lt;br /&gt;
One way to do this is to launch the doctor from the command line like:   &lt;br /&gt;
&lt;br /&gt;
 sudo java -jar webosdoctor.jar&lt;br /&gt;
&lt;br /&gt;
And follow the usual steps to recover your pre's operating system from here.&lt;br /&gt;
&lt;br /&gt;
== Alternative Recovery ==&lt;br /&gt;
&lt;br /&gt;
Another available option now that bootie is running is to send bootie a Linux image over USB and perform some kind of recovery work directly on the pre itself.  This is not recommended unless you are very familiar with linux systems administration.&lt;br /&gt;
&lt;br /&gt;
First you send bootie the boot image of the doctor's installer.  This can be extracted from the WebOS Doctor jar.&lt;br /&gt;
&lt;br /&gt;
 novacom boot mem:// &amp;lt; nova-installer-image-castle.uImage&lt;br /&gt;
&lt;br /&gt;
Wait 15 seconds for the system to boot then connect in to a shell on the running linux system with novaterm.  (you will see no on-screen indication that the device is booting linux, only a solid Palm logo)&lt;br /&gt;
&lt;br /&gt;
 novaterm&lt;br /&gt;
&lt;br /&gt;
You should get a shell prompt&lt;br /&gt;
&lt;br /&gt;
 root@palm-webos-device:/# &lt;br /&gt;
&lt;br /&gt;
Now find and activate the LVM disk voumes with the following two commands:&lt;br /&gt;
&lt;br /&gt;
 lvm.static vgscan --ignorelockingfailure&lt;br /&gt;
 lvm.static vgchange -ay --ignorelockingfailure&lt;br /&gt;
&lt;br /&gt;
Next, mount all disks&lt;br /&gt;
&lt;br /&gt;
 for N in root var media log update; do mkdir /mnt/$N; mount /dev/mapper/store-$N /mnt/$N; done&lt;br /&gt;
&lt;br /&gt;
When done with whatever you need to do on the system, shutting it down safely is a good idea&lt;br /&gt;
&lt;br /&gt;
 umount -a; tellbootie reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recovery using OS/X ==&lt;br /&gt;
&lt;br /&gt;
For a Mac, the process of running USB booting the OMAP may be much simpler.&lt;br /&gt;
&lt;br /&gt;
The MacOS X version of the SDK provides a pre-built executable /opt/nova/bin/cpuboot and a recovery image. You can simply run&lt;br /&gt;
&lt;br /&gt;
 /opt/nova/bin/cpuboot  -o -v -d usb -f /opt/nova/bin/recovery-castle.bin&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=User_talk:IDG&amp;diff=9976</id>
		<title>User talk:IDG</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=User_talk:IDG&amp;diff=9976"/>
		<updated>2010-05-19T17:31:44Z</updated>

		<summary type="html">&lt;p&gt;PEEf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Awesome! Maybe include a link to your backup script?  I'll be happy to provide hosting if you don't have anything else handy.&lt;br /&gt;
&lt;br /&gt;
I wanted to upload the perl scripts to extract the token blob to a directory and build the token blob from a directory and one to update the token blob inside the NVRAM partition, but the wiki does not like perl scripts. I will upload them somewhere and provide links as soon as possibile. Yet, the format of the [[NVRAM]] area and the [[Tokens]] blob are very simple, so the code is trivial.&lt;br /&gt;
&lt;br /&gt;
There's also the &amp;quot;token&amp;quot; command that palm uses (/sbin/tokens):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;root@palm-webos-device:/var/home/root# tokens -h&lt;br /&gt;
&lt;br /&gt;
tokens - used for listing and editing tokens&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
  --help                 Print this help output&lt;br /&gt;
  --list                 List all tokens in the system&lt;br /&gt;
  --remove &amp;lt;token&amp;gt;       Remove the given token from the system&lt;br /&gt;
  --mount                Mount the tokens into the filesystem&lt;br /&gt;
  --device &amp;lt;dev&amp;gt;         Use the specified device path&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I guess I should probably add this to the Wiki as well.&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Talk:Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9962</id>
		<title>Talk:Last Resort Emergency BootLoader Recovery</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Talk:Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9962"/>
		<updated>2010-05-18T18:48:15Z</updated>

		<summary type="html">&lt;p&gt;PEEf: Added another Answer about tokens&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Question: I'm curious if any progress has been made doing a similar procedure with the Pixi.  I have a Pixi that will not boot and does not go into recovery mode using the standard hold volume up + insert USB cable.&lt;br /&gt;
&lt;br /&gt;
Peef: The Pixi has a Qualcomm MSM7627 core rather than the Texas Instruments OMAP3430 that's in the Pre.  My experience is that it's much easier to get information and tools from TI than it is from Qualcomm.  I'm sure there is similar functionality, but until someone discovers the tool for loading boot code over USB, this is not possible.  The only other way would be to crack it open and use JTAG, which is a whole other can of worms.  Historically Qualcomm is very secretive and will not even give out datasheets on things unless you are a bigshot carrier who has signed many NDA's and have their secret police following you around 24/7.  I recommend you sell it on ebay as a &amp;quot;parts only&amp;quot; phone.  Someone will want the LCD or other parts.&lt;br /&gt;
&lt;br /&gt;
-----------------------&lt;br /&gt;
Question: As far the NVRAM Tokens.  How does one write these token values?&lt;br /&gt;
&lt;br /&gt;
Answer: The tokens can be written by editing the castle.xml (pixie.xml for the Pixi) under resources/webOS under the &amp;quot;nvram&amp;quot; section.  Entries look like this as an example.&lt;br /&gt;
&lt;br /&gt;
Another Answer: The above will only work during restore (WebOS Doctor).  The tokens are &amp;quot;live&amp;quot; in /dev/tokens if you want to change them on the fly. -pEEf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Val name=&amp;quot;DMCARRIER&amp;quot; action=&amp;quot;overwrite&amp;quot; value=&amp;quot;Sprint&amp;quot;/&amp;gt;&lt;br /&gt;
-----------------------&lt;br /&gt;
Question: What is the PN (product number) for the Sprint Pixi?&lt;br /&gt;
&lt;br /&gt;
Answer: 180-10714-03&lt;br /&gt;
-----------------------&lt;br /&gt;
Question: Is the MfgCode token (8 hex digits) unique for each device?&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9961</id>
		<title>Last Resort Emergency BootLoader Recovery</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9961"/>
		<updated>2010-05-18T18:33:40Z</updated>

		<summary type="html">&lt;p&gt;PEEf: /* Token Backup */   Update possible use for the &amp;quot;mystery&amp;quot; tokens.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Recovery Mode==&lt;br /&gt;
&lt;br /&gt;
Typically, any damage to the operating system on the Palm Pre/Pre Plus can be recovered by booting into recovery mode. ([[How_To_Recover]])&lt;br /&gt;
&lt;br /&gt;
One situation which cannot be recovered so easily is the extremely unlikely event of corruption of the installed bootloader ([[bootie]]) stored on the [[Pre's flash disk]].&lt;br /&gt;
&lt;br /&gt;
If bootie on the flash disk has been damaged or corrupted in such a way that booting into recovery mode is not possible, the Pre is still not &amp;quot;bricked&amp;quot; as the OMAP3430 processor in the Pre provides for a mechanism to boot code from its USB interface.  At this time this operation has not been performed on a Pixi, and will not be the same as it has a different core.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NVRAM Tokens==&lt;br /&gt;
&lt;br /&gt;
If the NVRAM partition gets trashed too, the token area will be empty and the doctor will refuse to install. If you're in this situation you need to rebuild it. Here are a few of the minimal token sets to allow the doctor to start:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''' : you cant get all minimal token sets below with the showprops (Show Properties Application) app that is available [http://git.webos-internals.org/?p=applications/showprops.git HERE].&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
GSM Pre for O2 and Movistar: DMCARRIER=ROW, DMMODEL=castle, HWoRev=A, PN=180-10722-03, PRODoID=P100UEU&lt;br /&gt;
&lt;br /&gt;
GSM Pre Plus SFR: DMCARRIER=ROW, DMMODEL=P101UEU, HWoRev=A, KEYoBRD=w1 (AZERTY), PN=180-10773-01, PRODoID=P101UEU, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Sprint Pixi: DMCARRIER=Sprint, DMMODEL=P200EWW, HWoRev=A, KEYoBRD=z, PN=180-10714-03, PRODoID=P200EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Sprint Pre: DMCARRIER=Sprint, DMMODEL=P100EWW, HWoRev=A, KEYoBRD=z, PN=180-10642-05, PRODoID=P100EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Verizon Pixi Plus: DMCARRIER=Verizon, DMMODEL=P121EWW, HWoRev=A, KEYoBRD=z, PN=180-10714-01, PRODoID=P121EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Verizon Pre Plus: DMCARRIER=Verizon, DMMODEL=P101EWW, HWoRev=A, KEYoBRD=z, PN=180-10724-01, PRODoID=P101EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
If you want BlueTooth and Wifi to work, You may also want to set BToADDR=00:1D:FE:''xx:yy:zz'', WIFIoADDR=00:1D:FE:''uu:vv:ww'' and PalmSN=''serial''.  If you are unsure of your original MAC addresses, They can safely be any random number, the serial number is on the box and on a sticker inside the battery compartment.&lt;br /&gt;
&lt;br /&gt;
== Token Backup ==&lt;br /&gt;
&lt;br /&gt;
If you are a heavy experimenter, you should probably backup your tokens before you start experimenting, this way you can easily recover a future problem without as much hassle.  Also, there are tokens that control things like touchscreen calibration, so these cannot be easily obtained if they are lost!  Once booted, you can backup all your tokens by copying everything in /tmp/tokens.  Here are a list of the Tokens on an Average Pre: &lt;br /&gt;
 &lt;br /&gt;
 ACCELCAL       BToADDR        DMCLoAUTHPW    DMSETS         HWoRev         PN             ProdSN&lt;br /&gt;
 BATToCH        DMCARRIER      DMCLoNONCE     DMSVRoAUTHPW   KEYoBRD        PRODoID        WIFIoADDR&lt;br /&gt;
 BATToRSP       DMCLoAUTHNAME  DMMODEL        DMSVRoNONCE    ModemSN        PalmSN         installer&lt;br /&gt;
 MfgCode        SimLockDef&lt;br /&gt;
&lt;br /&gt;
The purpose of the &amp;quot;BATToCH&amp;quot;, &amp;quot;BATToRSP&amp;quot;, &amp;quot;DMCLoAUTHPW&amp;quot;, &amp;quot;DMCLoNONCE&amp;quot;, &amp;quot;DMSVRoAUTHPW&amp;quot;, &amp;quot;DMSVRoNONCE&amp;quot; tokens are as yet not fully understood.  They appear to be unused, as they're never visible inside any part of the code as strings, and completely removing them does not seem to change anything in the device behavior.&lt;br /&gt;
&lt;br /&gt;
The BATToCH/BATToRSP is likely a challenge/response crypto system used to authenticate the battery pack.  This means that Palm could use the capability to lock out &amp;quot;fake&amp;quot; batteries should they ever want to.  So far they haven't implemented any of this, as it would probably affect the Seidio aftermarket packs.  If Palm ever has a problem with fake Chinese packs finding their way into the market, they could implement the security to protect their customers.  Historically, There has been a problem with inferior separator materials used in fake batteries causing fires, which is a good reason to have a way secure it.  These fraudulent packs have been known to appear to be identical on the outside complete with OEM markings, so a fire caused one of these could really damage Palm's reputation should it occur.&lt;br /&gt;
&lt;br /&gt;
A best guess is that the &amp;quot;DM&amp;quot; stuff is used (or could be used) in OTA activation/provisioning.  Keep in mind, It's possible that you may not see these referenced in any code visible on the device, as they could be used by the AMSS (radio) firmware which has it's own ARM core and software.  The interface between the systems is the TelephonyInterfaceLayer, but AMSS could request the Tokens from it's (large) codebase and therefore you won't see it anywhere in the visible filesystem.  The AMSS handles battery charging and (obviously) a lot of what takes place during provisioning and activation.  If your AMSS is already activated, it may no longer need these, so that may explain why they can be omitted and not affect operation.&lt;br /&gt;
&lt;br /&gt;
The structure of these &amp;quot;mystery&amp;quot; tokens are as follows:&lt;br /&gt;
&lt;br /&gt;
 BATToCH       16 digits hex number&lt;br /&gt;
 BATToRSP      40 digits hex number&lt;br /&gt;
 DMSVRoNONCE   16 bytes in base64&lt;br /&gt;
 DMSVRoAUTHPW  a floating point number in ASCII format&lt;br /&gt;
 DMCLoNONCE    16 bytes in base64&lt;br /&gt;
 DMCLoAUTHPW   a floating point number in ASCII format&lt;br /&gt;
 DMCLoAUTHNAME an integer number (probably 32 bits) in ASCII format&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' I've built a group of perl scripts to rebuild the token area of the NVRAM from a backup, should anyone need it.&lt;br /&gt;
&lt;br /&gt;
== OMAP boot Procedure ==&lt;br /&gt;
&lt;br /&gt;
First, ensure that the Linux SDK and novacom packages are installed, as you will need to run webOS Doctor as the final step in this process.&lt;br /&gt;
Second, ensure that you have a copy of the webOS doctor jar ready for your phone.&lt;br /&gt;
&lt;br /&gt;
Download: [http://markmail.org/download.xqy?id=l4qabusyxcqsslwn&amp;amp;number=1 omap3_usb.tar.bz2].&lt;br /&gt;
If you have not libusb 0.1.3 installed on your computer, install it. It is needed for the header file /usr/include/usb.h  &lt;br /&gt;
&lt;br /&gt;
Compile on Linux system with &amp;quot;make&amp;quot;.  Optionally install with &amp;quot;sudo cp omap3_usbload /usr/local/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now extract the bootie binary from a WebOS Doctor image: (note: webosdoctor file name will vary)&lt;br /&gt;
 &lt;br /&gt;
 mkdir doctor; cd doctor; unzip ../webosdoctor.jar; cd resources&lt;br /&gt;
 mkdir webOS; cd webOS; tar xvf ../webOS.tar; mkdir nova-cust-image-castle.rootfs; cd nova-cust-image-castle.rootfs&lt;br /&gt;
 tar xvzf ../nova-cust-image-castle.rootfs.tar.gz ./boot/boot.bin; cd boot&lt;br /&gt;
&lt;br /&gt;
Booting bootie over USB:&lt;br /&gt;
&lt;br /&gt;
Ensure USB is unplugged from the Pre, and remove the Pre's battery.&lt;br /&gt;
&lt;br /&gt;
On your Linux system, run:&lt;br /&gt;
&lt;br /&gt;
 sudo omap3_usbload boot.bin&lt;br /&gt;
&lt;br /&gt;
This should return:&lt;br /&gt;
&lt;br /&gt;
 TI OMAP3 USB boot ROM tool, version 0.1&lt;br /&gt;
 ......&lt;br /&gt;
&lt;br /&gt;
and a series of dots while it looks for an OMAP3 to send boot code to.&lt;br /&gt;
&lt;br /&gt;
Now, plug the pre into USB.&lt;br /&gt;
&lt;br /&gt;
If all works as it should, the usbload program should return:&lt;br /&gt;
&lt;br /&gt;
 found device!&lt;br /&gt;
 download ok&lt;br /&gt;
&lt;br /&gt;
And your Pre will now show a USB logo. (this is bootie's &amp;quot;Recovery mode&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Put the battery back in without unplugging the USB.&lt;br /&gt;
&lt;br /&gt;
Since you are now in USB recovery mode, you should be able to run the webOS doctor on the host Linux box.  Remember that the SDK novacom package must be installed for the webOS Doctor to work in Linux.&lt;br /&gt;
&lt;br /&gt;
One way to do this is to launch the doctor from the command line like:   &lt;br /&gt;
&lt;br /&gt;
 sudo java -jar webosdoctor.jar&lt;br /&gt;
&lt;br /&gt;
And follow the usual steps to recover your pre's operating system from here.&lt;br /&gt;
&lt;br /&gt;
== Alternative Recovery ==&lt;br /&gt;
&lt;br /&gt;
Another available option now that bootie is running is to send bootie a Linux image over USB and perform some kind of recovery work directly on the pre itself.  This is not recommended unless you are very familiar with linux systems administration.&lt;br /&gt;
&lt;br /&gt;
First you send bootie the boot image of the doctor's installer.  This can be extracted from the WebOS Doctor jar.&lt;br /&gt;
&lt;br /&gt;
 novacom boot mem:// &amp;lt; nova-installer-image-castle.uImage&lt;br /&gt;
&lt;br /&gt;
Wait 15 seconds for the system to boot then connect in to a shell on the running linux system with novaterm.  (you will see no on-screen indication that the device is booting linux, only a solid Palm logo)&lt;br /&gt;
&lt;br /&gt;
 novaterm&lt;br /&gt;
&lt;br /&gt;
You should get a shell prompt&lt;br /&gt;
&lt;br /&gt;
 root@palm-webos-device:/# &lt;br /&gt;
&lt;br /&gt;
Now find and activate the LVM disk voumes with the following two commands:&lt;br /&gt;
&lt;br /&gt;
 lvm.static vgscan --ignorelockingfailure&lt;br /&gt;
 lvm.static vgchange -ay --ignorelockingfailure&lt;br /&gt;
&lt;br /&gt;
Next, mount all disks&lt;br /&gt;
&lt;br /&gt;
 for N in root var media log update; do mkdir /mnt/$N; mount /dev/mapper/store-$N /mnt/$N; done&lt;br /&gt;
&lt;br /&gt;
When done with whatever you need to do on the system, shutting it down safely is a good idea&lt;br /&gt;
&lt;br /&gt;
 umount -a; tellbootie reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recovery using OS/X ==&lt;br /&gt;
&lt;br /&gt;
For a Mac, the process of running USB booting the OMAP may be much simpler.&lt;br /&gt;
&lt;br /&gt;
The MacOS X version of the SDK provides a pre-built executable /opt/nova/bin/cpuboot and a recovery image. You can simply run&lt;br /&gt;
&lt;br /&gt;
 /opt/nova/bin/cpuboot  -o -v -d usb -f /opt/nova/bin/recovery-castle.bin&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=User_talk:IDG&amp;diff=9960</id>
		<title>User talk:IDG</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=User_talk:IDG&amp;diff=9960"/>
		<updated>2010-05-18T18:07:45Z</updated>

		<summary type="html">&lt;p&gt;PEEf: New page: Awesome! Maybe include a link to your backup script?  I'll be happy to provide hosting if you don't have anything else handy.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Awesome! Maybe include a link to your backup script?  I'll be happy to provide hosting if you don't have anything else handy.&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9935</id>
		<title>Last Resort Emergency BootLoader Recovery</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9935"/>
		<updated>2010-05-17T18:31:38Z</updated>

		<summary type="html">&lt;p&gt;PEEf: /* Token Backup */  Spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Recovery Mode==&lt;br /&gt;
&lt;br /&gt;
Typically, any damage to the operating system on the Palm Pre/Pre Plus can be recovered by booting into recovery mode. ([[How_To_Recover]])&lt;br /&gt;
&lt;br /&gt;
One situation which cannot be recovered so easily is the extremely unlikely event of corruption of the installed bootloader ([[bootie]]) stored on the [[Pre's flash disk]].&lt;br /&gt;
&lt;br /&gt;
If bootie on the flash disk has been damaged or corrupted in such a way that booting into recovery mode is not possible, the Pre is still not &amp;quot;bricked&amp;quot; as the OMAP3430 processor in the Pre provides for a mechanism to boot code from its USB interface.  At this time this operation has not been performed on a Pixi, and will not be the same as it has a different core.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NVRAM Tokens==&lt;br /&gt;
&lt;br /&gt;
If the NVRAM partition gets trashed too, the token area will be empty and the doctor will refuse to install. If you're in this situation you need to rebuild it. Here are a few of the minimal token sets to allow the doctor to start:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''' : you cant get all minimal token sets below with the showprops (Show Properties Application) app that is available [http://git.webos-internals.org/?p=applications/showprops.git HERE].&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
GSM Pre for O2 and Movistar: DMCARRIER=ROW, DMMODEL=castle, HWoRev=A, PN=180-10722-03, PRODoID=P100UEU&lt;br /&gt;
&lt;br /&gt;
GSM Pre Plus SFR: DMCARRIER=ROW, DMMODEL=P101UEU, HWoRev=A, KEYoBRD=w1 (AZERTY), PN=180-10773-01, PRODoID=P101UEU, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Sprint Pixi: DMCARRIER=Sprint, DMMODEL=P200EWW, HWoRev=A, KEYoBRD=z, PN=180-10714-03, PRODoID=P200EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Sprint Pre: DMCARRIER=Sprint, DMMODEL=P100EWW, HWoRev=A, KEYoBRD=z, PN=180-10642-05, PRODoID=P100EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Verizon Pixi Plus: DMCARRIER=Verizon, DMMODEL=P121EWW, HWoRev=A, KEYoBRD=z, PN=180-10714-01, PRODoID=P121EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
Verizon Pre Plus: DMCARRIER=Verizon, DMMODEL=P101EWW, HWoRev=A, KEYoBRD=z, PN=180-10724-01, PRODoID=P101EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
If you want BlueTooth and Wifi to work, You may also want to set BToADDR=00:1D:FE:''xx:yy:zz'', WIFIoADDR=00:1D:FE:''uu:vv:ww'' and PalmSN=''serial''.  If you are unsure of your original MAC addresses, They can safely be any random number, the serial number is on the box and on a sticker inside the battery compartment.&lt;br /&gt;
&lt;br /&gt;
== Token Backup ==&lt;br /&gt;
&lt;br /&gt;
If you are a heavy experimenter, you should probably backup your tokens before you start experimenting, this way you can easily recover a future problem without as much hassle.  Also, there are tokens that control things like touchscreen calibration, so these cannot be easily obtained if they are lost!  Once booted, you can backup all your tokens by copying everything in /tmp/tokens.  Here are a list of the Tokens on an Average Pre: &lt;br /&gt;
 &lt;br /&gt;
 ACCELCAL       BToADDR        DMCLoAUTHPW    DMSETS         HWoRev         PN             ProdSN&lt;br /&gt;
 BATToCH        DMCARRIER      DMCLoNONCE     DMSVRoAUTHPW   KEYoBRD        PRODoID        WIFIoADDR&lt;br /&gt;
 BATToRSP       DMCLoAUTHNAME  DMMODEL        DMSVRoNONCE    ModemSN        PalmSN         installer&lt;br /&gt;
&lt;br /&gt;
== OMAP boot Procedure ==&lt;br /&gt;
&lt;br /&gt;
First, ensure that the Linux SDK and novacom packages are installed, as you will need to run webOS Doctor as the final step in this process.&lt;br /&gt;
Second, ensure that you have a copy of the webOS doctor jar ready for your phone.&lt;br /&gt;
&lt;br /&gt;
Download: [http://markmail.org/download.xqy?id=l4qabusyxcqsslwn&amp;amp;number=1 omap3_usb.tar.bz2].&lt;br /&gt;
If you have not libusb 0.1.3 installed on your computer, install it. It is needed for the header file /usr/include/usb.h  &lt;br /&gt;
&lt;br /&gt;
Compile on Linux system with &amp;quot;make&amp;quot;.  Optionally install with &amp;quot;sudo cp omap3_usbload /usr/local/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now extract the bootie binary from a WebOS Doctor image: (note: webosdoctor file name will vary)&lt;br /&gt;
 &lt;br /&gt;
 mkdir doctor; cd doctor; unzip ../webosdoctor.jar; cd resources&lt;br /&gt;
 mkdir webOS; cd webOS; tar xvf ../webOS.tar; mkdir nova-cust-image-castle.rootfs; cd nova-cust-image-castle.rootfs&lt;br /&gt;
 tar xvzf ../nova-cust-image-castle.rootfs.tar.gz ./boot/boot.bin; cd boot&lt;br /&gt;
&lt;br /&gt;
Booting bootie over USB:&lt;br /&gt;
&lt;br /&gt;
Ensure USB is unplugged from the Pre, and remove the Pre's battery.&lt;br /&gt;
&lt;br /&gt;
On your Linux system, run:&lt;br /&gt;
&lt;br /&gt;
 sudo omap3_usbload boot.bin&lt;br /&gt;
&lt;br /&gt;
This should return:&lt;br /&gt;
&lt;br /&gt;
 TI OMAP3 USB boot ROM tool, version 0.1&lt;br /&gt;
 ......&lt;br /&gt;
&lt;br /&gt;
and a series of dots while it looks for an OMAP3 to send boot code to.&lt;br /&gt;
&lt;br /&gt;
Now, plug the pre into USB.&lt;br /&gt;
&lt;br /&gt;
If all works as it should, the usbload program should return:&lt;br /&gt;
&lt;br /&gt;
 found device!&lt;br /&gt;
 download ok&lt;br /&gt;
&lt;br /&gt;
And your Pre will now show a USB logo. (this is bootie's &amp;quot;Recovery mode&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Put the battery back in without unplugging the USB.&lt;br /&gt;
&lt;br /&gt;
Since you are now in USB recovery mode, you should be able to run the webOS doctor on the host Linux box.  Remember that the SDK novacom package must be installed for the webOS Doctor to work in Linux.&lt;br /&gt;
&lt;br /&gt;
One way to do this is to launch the doctor from the command line like:   &lt;br /&gt;
&lt;br /&gt;
 sudo java -jar webosdoctor.jar&lt;br /&gt;
&lt;br /&gt;
And follow the usual steps to recover your pre's operating system from here.&lt;br /&gt;
&lt;br /&gt;
== Alternative Recovery ==&lt;br /&gt;
&lt;br /&gt;
Another available option now that bootie is running is to send bootie a Linux image over USB and perform some kind of recovery work directly on the pre itself.  This is not recommended unless you are very familiar with linux systems administration.&lt;br /&gt;
&lt;br /&gt;
First you send bootie the boot image of the doctor's installer.  This can be extracted from the WebOS Doctor jar.&lt;br /&gt;
&lt;br /&gt;
 novacom boot mem:// &amp;lt; nova-installer-image-castle.uImage&lt;br /&gt;
&lt;br /&gt;
Wait 15 seconds for the system to boot then connect in to a shell on the running linux system with novaterm.  (you will see no on-screen indication that the device is booting linux, only a solid Palm logo)&lt;br /&gt;
&lt;br /&gt;
 novaterm&lt;br /&gt;
&lt;br /&gt;
You should get a shell prompt&lt;br /&gt;
&lt;br /&gt;
 root@palm-webos-device:/# &lt;br /&gt;
&lt;br /&gt;
Now find and activate the LVM disk voumes with the following two commands:&lt;br /&gt;
&lt;br /&gt;
 lvm.static vgscan --ignorelockingfailure&lt;br /&gt;
 lvm.static vgchange -ay --ignorelockingfailure&lt;br /&gt;
&lt;br /&gt;
Next, mount all disks&lt;br /&gt;
&lt;br /&gt;
 for N in root var media log update; do mkdir /mnt/$N; mount /dev/mapper/store-$N /mnt/$N; done&lt;br /&gt;
&lt;br /&gt;
When done with whatever you need to do on the system, shutting it down safely is a good idea&lt;br /&gt;
&lt;br /&gt;
 umount -a; tellbootie reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recovery using OS/X ==&lt;br /&gt;
&lt;br /&gt;
For a Mac, the process of running USB booting the OMAP may be much simpler.&lt;br /&gt;
&lt;br /&gt;
The MacOS X version of the SDK provides a pre-built executable /opt/nova/bin/cpuboot and a recovery image. You can simply run&lt;br /&gt;
&lt;br /&gt;
 /opt/nova/bin/cpuboot  -o -v -d usb -f /opt/nova/bin/recovery-castle.bin&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=User_talk:PEEf&amp;diff=9572</id>
		<title>User talk:PEEf</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=User_talk:PEEf&amp;diff=9572"/>
		<updated>2010-04-10T17:25:04Z</updated>

		<summary type="html">&lt;p&gt;PEEf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I saw your comment about the OMAP3 boot recovery not working with the Pixi.  With its Qualcomm MSM7627 I didn't expect it to work unfortunately, but am wondering if a similar tool exists that will work with the Pixi.  I have a Pixi which won't boot.  It doesn't even allow me to go into USB recovery mode using the standard hold volume up + insert USB cable technique.  Thanks.&lt;br /&gt;
&lt;br /&gt;
Peef: The Pixi has a Qualcomm MSM7627 core rather than the Texas Instruments OMAP3430 that's in the Pre. My experience is that it's much easier to get information and tools from TI than it is from Qualcomm. I'm sure there is similar functionality, but until someone discovers the tool for loading boot code over USB, this is not possible. The only other way would be to crack it open and use JTAG, which is a whole other can of worms. Historically Qualcomm is very secretive and will not even give out datasheets on things unless you are a bigshot carrier who has signed many NDA's and have their secret police following you around 24/7. I recommend you sell it on ebay as a &amp;quot;parts only&amp;quot; phone. Someone will want the LCD or other parts.&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Talk:Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9571</id>
		<title>Talk:Last Resort Emergency BootLoader Recovery</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Talk:Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9571"/>
		<updated>2010-04-10T17:19:45Z</updated>

		<summary type="html">&lt;p&gt;PEEf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm curious if any progress has been made doing a similar procedure with the Pixi.  I have a Pixi that will not boot and does not go into recovery mode using the standard hold volume up + insert USB cable.&lt;br /&gt;
&lt;br /&gt;
is there a method which could be done on windows???&lt;br /&gt;
&lt;br /&gt;
help please.&lt;br /&gt;
&lt;br /&gt;
Peef: The Pixi has a Qualcomm MSM7627 core rather than the Texas Instruments OMAP3430 that's in the Pre.  My experience is that it's much easier to get information and tools from TI than it is from Qualcomm.  I'm sure there is similar functionality, but until someone discovers the tool for loading boot code over USB, this is not possible.  The only other way would be to crack it open and use JTAG, which is a whole other can of worms.  Historically Qualcomm is very secretive and will not even give out datasheets on things unless you are a bigshot carrier who has signed many NDA's and have their secret police following you around 24/7.  I recommend you sell it on ebay as a &amp;quot;parts only&amp;quot; phone.  Someone will want the LCD or other parts.&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=WebOS_Internals_PDK&amp;diff=9564</id>
		<title>WebOS Internals PDK</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=WebOS_Internals_PDK&amp;diff=9564"/>
		<updated>2010-04-10T05:45:31Z</updated>

		<summary type="html">&lt;p&gt;PEEf: /* Prequisites */  Added another warning&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: SDL]]&lt;br /&gt;
Palm's binary sdk  the &amp;quot;Plugin Developer Kit&amp;quot; will not be available until March 2010.&lt;br /&gt;
&lt;br /&gt;
In the mean time, WebOS Internals has released a full &amp;quot;WIDK&amp;quot; (WebOS Internals Development Kit) for you using Scratchbox2.  &lt;br /&gt;
&lt;br /&gt;
We ''strongly'' urge the community to standardize on this WIDK until Palm releases theirs.   We believe that it uses the same underlying technologies, and that it will give you both a means to port games now, and a head-start to development against the official Palm PDK in the future.&lt;br /&gt;
&lt;br /&gt;
Scratchbox 2 is a cross-compilation engine, it can be used to create a highly flexible SDK.&lt;br /&gt;
&lt;br /&gt;
As installed below, the install process uses a script which extracts the required Palm provided files from a copy of webos doctor, and  downloads from other sources, and builds a complete compilation environment automatically which can compile SDL and openGLES apps for webOS.  &lt;br /&gt;
&lt;br /&gt;
SB2 ''itself'' is totally distribution neutral but the webOS cross-compile environment is designed and tested on Ubuntu 9.10 32 bit. (At least one user in #webos-internals reports complete success running the cross compile environment in Ubuntu 9.10 64 bit after installing curl via apt-get.) &lt;br /&gt;
&lt;br /&gt;
The webOS Internals team ''strongly suggest'' apt-get install into that environment only for this purpose. The same installation of Sun Virtualbox which hosts the Palm SDK emulator can host an Ubuntu 9.10 server with very little effort. &lt;br /&gt;
&lt;br /&gt;
==SB2 Homepage==&lt;br /&gt;
[http://www.freedesktop.org/wiki/Software/sbox2 http://www.freedesktop.org/wiki/Software/sbox2]pdk&lt;br /&gt;
&lt;br /&gt;
==License==&lt;br /&gt;
Scratchbox 2 is distributed under LGPL version 2.1, portions are under GPL version 2. Some minor stuff is under MIT style license.&lt;br /&gt;
&lt;br /&gt;
== Installation on Ubuntu for WebOS PDK cross compiling ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; clear:right; width:30%&amp;quot;&amp;gt;{{Ubuntu_VM_notes_for_Windows_users}}&amp;lt;/div&amp;gt;&lt;br /&gt;
===Prequisites===&lt;br /&gt;
Your Ubuntu installation will need the following installed.  If you do not have them, run the command after the package name. You can test if they are found by just typing the command name.  If it says command not found, you need to install it.&lt;br /&gt;
&lt;br /&gt;
'''''NOTICE: Palm removed the older WebOSdoctor versions 1.3.5 and 1.4.0 from their servers, so there is at present no way to get this toolchain fully functional unless you already have them.  The &amp;quot;make stage&amp;quot; command will generate a 404 error when it tries to download the doctor jar.  At some point the system will be updated to use the current 1.4.1.1 doctor and then this massage will be removed.''''' &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|'''git''' || sudo apt-get install git-core&lt;br /&gt;
|-&lt;br /&gt;
|'''gcc''' || sudo apt-get install build-essential&lt;br /&gt;
|-&lt;br /&gt;
|'''curl''' || sudo apt-get install curl&lt;br /&gt;
|-&lt;br /&gt;
|'''unzip'''|| sudo apt-get install unzip&lt;br /&gt;
|-&lt;br /&gt;
|'''autoconf'''|| sudo apt-get install autoconf&lt;br /&gt;
|-&lt;br /&gt;
|'''subversion'''|| sudo apt-get install subversion&lt;br /&gt;
|-&lt;br /&gt;
|'''libtool'''|| sudo apt-get install libtool&lt;br /&gt;
|-&lt;br /&gt;
|'''wget'''|| sudo apt-get install wget&lt;br /&gt;
|-&lt;br /&gt;
|'''pkg-config'''|| sudo apt-get install pkg-config&lt;br /&gt;
|-&lt;br /&gt;
|'''gettext'''|| sudo apt-get install gettext&lt;br /&gt;
|-&lt;br /&gt;
|'''fakeroot'''|| sudo apt-get install fakeroot&lt;br /&gt;
|-&lt;br /&gt;
|'''javac'''|| sudo apt-get install sun-java6-jdk&lt;br /&gt;
|-&lt;br /&gt;
|'''ant'''|| sudo apt-get install ant&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're uncertain at all, just cut and paste the following.  If they are already installed, they'll be skipped.  &lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install git-core build-essential curl unzip autoconf subversion libtool wget pkg-config gettext fakeroot sun-java6-jdk ant&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The ''make toolchain'' command and later steps will download approximately a half-gig of tools and sources from various locations.  Do not start this if you do not have time for a large download.  Additionally, if you already have downloaded a copy of the WebOS 1.3.5 doctor, you can reduce the download time by copying the doctor file into cross-compile/doctors/webosdoctorp100ewwsprint-1.3.5.jar .  This will cause the appropriate command to skip that download.  Note that codesourcery rate limts downloads and at a minimum this process will take 10 to 15 minutes irrespective of your connection speed. &lt;br /&gt;
&lt;br /&gt;
'''''NOTICE: Palm removed the older WebOSdoctor versions 1.3.5 and 1.4.0 from their servers, so there is at present no way to get this toolchain fully functional unless you already have them.  The &amp;quot;make stage&amp;quot; command will generate a 404 error when it tries to download the doctor jar.  At some point the system will be updated to use the current 1.4.1.1 doctor and then this massage will be removed.'''''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Start setup====&lt;br /&gt;
Create a preware folder, copy the cross-compile tools into it (if you have not installed git, apt-get install git-core), and use a make script to begin the set up of the compilation toolchain. &lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /srv/preware&lt;br /&gt;
 cd /srv/preware&lt;br /&gt;
 sudo chmod 777 .&lt;br /&gt;
 git clone git://git.webos-internals.org/preware/cross-compile.git&lt;br /&gt;
 cd cross-compile&lt;br /&gt;
 make toolchain&lt;br /&gt;
&lt;br /&gt;
Execute this command after 'git clone' if you want to use other head/branch then the master branch (doctor_14 in this example).&lt;br /&gt;
&lt;br /&gt;
 git checkout -b doctor_14 origin/doctor_14&lt;br /&gt;
&lt;br /&gt;
====Fix mmap errors====&lt;br /&gt;
The following commands appear redundant.  They are not.  The install this fixes your mmap config to fix an mmap: permission denied error, but we don't need the package itself.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install qemu-arm-static&lt;br /&gt;
 sudo apt-get remove qemu-arm-static&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;font-size:150%&amp;quot;&amp;gt;OR&amp;lt;/span&amp;gt; As a workaround, if this package is not available, &lt;br /&gt;
::: the following commands can be executed in a root shell (sudo -s) to fix the mmap configuration to enable qemu-arm to work.&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;vm.mmap_min_addr = 4096&amp;quot; &amp;gt; /etc/sysctl.d/mmap_min_addr.conf&lt;br /&gt;
 /etc/init.d/procps restart&lt;br /&gt;
&lt;br /&gt;
(note that the value should not be &amp;quot;0&amp;quot;. 4096 is chosen to avoid null pointer attacks.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Setup Scratchbox====&lt;br /&gt;
Now, use apt-get to setup scratchbox...&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install scratchbox2 qemu-kvm-extras&lt;br /&gt;
&lt;br /&gt;
...and set it up for compiling for webOS. &lt;br /&gt;
&lt;br /&gt;
 cd /srv/preware/cross-compile/toolchain/arm-2007q3/arm-none-linux-gnueabi/libc&lt;br /&gt;
 PATH=/srv/preware/cross-compile/toolchain/arm-2007q3/bin:${PATH} sb2-init -c /usr/bin/qemu-arm armv7 arm-none-linux-gnueabi-gcc&lt;br /&gt;
 cd /srv/preware/cross-compile&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 make stage&lt;br /&gt;
&lt;br /&gt;
Once this setup is complete, compiling sdl apps for webOS is very simple.&lt;br /&gt;
&lt;br /&gt;
==Errors during make stage (Feb 27 8:45 UTC)==&lt;br /&gt;
Confirmed by 2 people:&lt;br /&gt;
===Ecore===&lt;br /&gt;
*TRUE and FALSE are not defined&lt;br /&gt;
&lt;br /&gt;
Manually add the definition:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #ifndef TRUE&lt;br /&gt;
 # define TRUE 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 #ifndef FALSE&lt;br /&gt;
 # define FALSE 0&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sample build of [[Application:Doom]]==&lt;br /&gt;
&lt;br /&gt;
Now, go to [[Building DOOM with scratchbox2]] and follow the simple directions.&lt;br /&gt;
&lt;br /&gt;
==In Process Enhancements==&lt;br /&gt;
[[Extracting the PDK on Linux]]&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=WebOS_Internals_PDK&amp;diff=9563</id>
		<title>WebOS Internals PDK</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=WebOS_Internals_PDK&amp;diff=9563"/>
		<updated>2010-04-10T05:44:15Z</updated>

		<summary type="html">&lt;p&gt;PEEf: /* Prequisites */  Added warning that all is broken unless you have a 1.3.5/1.4.0 doctor as they are no longer available!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: SDL]]&lt;br /&gt;
Palm's binary sdk  the &amp;quot;Plugin Developer Kit&amp;quot; will not be available until March 2010.&lt;br /&gt;
&lt;br /&gt;
In the mean time, WebOS Internals has released a full &amp;quot;WIDK&amp;quot; (WebOS Internals Development Kit) for you using Scratchbox2.  &lt;br /&gt;
&lt;br /&gt;
We ''strongly'' urge the community to standardize on this WIDK until Palm releases theirs.   We believe that it uses the same underlying technologies, and that it will give you both a means to port games now, and a head-start to development against the official Palm PDK in the future.&lt;br /&gt;
&lt;br /&gt;
Scratchbox 2 is a cross-compilation engine, it can be used to create a highly flexible SDK.&lt;br /&gt;
&lt;br /&gt;
As installed below, the install process uses a script which extracts the required Palm provided files from a copy of webos doctor, and  downloads from other sources, and builds a complete compilation environment automatically which can compile SDL and openGLES apps for webOS.  &lt;br /&gt;
&lt;br /&gt;
SB2 ''itself'' is totally distribution neutral but the webOS cross-compile environment is designed and tested on Ubuntu 9.10 32 bit. (At least one user in #webos-internals reports complete success running the cross compile environment in Ubuntu 9.10 64 bit after installing curl via apt-get.) &lt;br /&gt;
&lt;br /&gt;
The webOS Internals team ''strongly suggest'' apt-get install into that environment only for this purpose. The same installation of Sun Virtualbox which hosts the Palm SDK emulator can host an Ubuntu 9.10 server with very little effort. &lt;br /&gt;
&lt;br /&gt;
==SB2 Homepage==&lt;br /&gt;
[http://www.freedesktop.org/wiki/Software/sbox2 http://www.freedesktop.org/wiki/Software/sbox2]pdk&lt;br /&gt;
&lt;br /&gt;
==License==&lt;br /&gt;
Scratchbox 2 is distributed under LGPL version 2.1, portions are under GPL version 2. Some minor stuff is under MIT style license.&lt;br /&gt;
&lt;br /&gt;
== Installation on Ubuntu for WebOS PDK cross compiling ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; clear:right; width:30%&amp;quot;&amp;gt;{{Ubuntu_VM_notes_for_Windows_users}}&amp;lt;/div&amp;gt;&lt;br /&gt;
===Prequisites===&lt;br /&gt;
Your Ubuntu installation will need the following installed.  If you do not have them, run the command after the package name. You can test if they are found by just typing the command name.  If it says command not found, you need to install it. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|'''git''' || sudo apt-get install git-core&lt;br /&gt;
|-&lt;br /&gt;
|'''gcc''' || sudo apt-get install build-essential&lt;br /&gt;
|-&lt;br /&gt;
|'''curl''' || sudo apt-get install curl&lt;br /&gt;
|-&lt;br /&gt;
|'''unzip'''|| sudo apt-get install unzip&lt;br /&gt;
|-&lt;br /&gt;
|'''autoconf'''|| sudo apt-get install autoconf&lt;br /&gt;
|-&lt;br /&gt;
|'''subversion'''|| sudo apt-get install subversion&lt;br /&gt;
|-&lt;br /&gt;
|'''libtool'''|| sudo apt-get install libtool&lt;br /&gt;
|-&lt;br /&gt;
|'''wget'''|| sudo apt-get install wget&lt;br /&gt;
|-&lt;br /&gt;
|'''pkg-config'''|| sudo apt-get install pkg-config&lt;br /&gt;
|-&lt;br /&gt;
|'''gettext'''|| sudo apt-get install gettext&lt;br /&gt;
|-&lt;br /&gt;
|'''fakeroot'''|| sudo apt-get install fakeroot&lt;br /&gt;
|-&lt;br /&gt;
|'''javac'''|| sudo apt-get install sun-java6-jdk&lt;br /&gt;
|-&lt;br /&gt;
|'''ant'''|| sudo apt-get install ant&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're uncertain at all, just cut and paste the following.  If they are already installed, they'll be skipped.  &lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install git-core build-essential curl unzip autoconf subversion libtool wget pkg-config gettext fakeroot sun-java6-jdk ant&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The ''make toolchain'' command and later steps will download approximately a half-gig of tools and sources from various locations.  Do not start this if you do not have time for a large download.  Additionally, if you already have downloaded a copy of the WebOS 1.3.5 doctor, you can reduce the download time by copying the doctor file into cross-compile/doctors/webosdoctorp100ewwsprint-1.3.5.jar .  This will cause the appropriate command to skip that download.  Note that codesourcery rate limts downloads and at a minimum this process will take 10 to 15 minutes irrespective of your connection speed. &lt;br /&gt;
&lt;br /&gt;
'''''NOTICE: Palm removed the older WebOSdoctor versions 1.3.5 and 1.4.0 from their servers, so there is at present no way to get this toolchain fully functional unless you already have them.  The &amp;quot;make stage&amp;quot; command will generate a 404 error when it tries to download the doctor jar.  At some point the system will be updated to use the current 1.4.1.1 doctor and then this massage will be removed.'''''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Start setup====&lt;br /&gt;
Create a preware folder, copy the cross-compile tools into it (if you have not installed git, apt-get install git-core), and use a make script to begin the set up of the compilation toolchain. &lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /srv/preware&lt;br /&gt;
 cd /srv/preware&lt;br /&gt;
 sudo chmod 777 .&lt;br /&gt;
 git clone git://git.webos-internals.org/preware/cross-compile.git&lt;br /&gt;
 cd cross-compile&lt;br /&gt;
 make toolchain&lt;br /&gt;
&lt;br /&gt;
Execute this command after 'git clone' if you want to use other head/branch then the master branch (doctor_14 in this example).&lt;br /&gt;
&lt;br /&gt;
 git checkout -b doctor_14 origin/doctor_14&lt;br /&gt;
&lt;br /&gt;
====Fix mmap errors====&lt;br /&gt;
The following commands appear redundant.  They are not.  The install this fixes your mmap config to fix an mmap: permission denied error, but we don't need the package itself.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install qemu-arm-static&lt;br /&gt;
 sudo apt-get remove qemu-arm-static&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;font-size:150%&amp;quot;&amp;gt;OR&amp;lt;/span&amp;gt; As a workaround, if this package is not available, &lt;br /&gt;
::: the following commands can be executed in a root shell (sudo -s) to fix the mmap configuration to enable qemu-arm to work.&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;vm.mmap_min_addr = 4096&amp;quot; &amp;gt; /etc/sysctl.d/mmap_min_addr.conf&lt;br /&gt;
 /etc/init.d/procps restart&lt;br /&gt;
&lt;br /&gt;
(note that the value should not be &amp;quot;0&amp;quot;. 4096 is chosen to avoid null pointer attacks.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Setup Scratchbox====&lt;br /&gt;
Now, use apt-get to setup scratchbox...&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install scratchbox2 qemu-kvm-extras&lt;br /&gt;
&lt;br /&gt;
...and set it up for compiling for webOS. &lt;br /&gt;
&lt;br /&gt;
 cd /srv/preware/cross-compile/toolchain/arm-2007q3/arm-none-linux-gnueabi/libc&lt;br /&gt;
 PATH=/srv/preware/cross-compile/toolchain/arm-2007q3/bin:${PATH} sb2-init -c /usr/bin/qemu-arm armv7 arm-none-linux-gnueabi-gcc&lt;br /&gt;
 cd /srv/preware/cross-compile&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 make stage&lt;br /&gt;
&lt;br /&gt;
Once this setup is complete, compiling sdl apps for webOS is very simple.&lt;br /&gt;
&lt;br /&gt;
==Errors during make stage (Feb 27 8:45 UTC)==&lt;br /&gt;
Confirmed by 2 people:&lt;br /&gt;
===Ecore===&lt;br /&gt;
*TRUE and FALSE are not defined&lt;br /&gt;
&lt;br /&gt;
Manually add the definition:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #ifndef TRUE&lt;br /&gt;
 # define TRUE 1&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
 #ifndef FALSE&lt;br /&gt;
 # define FALSE 0&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sample build of [[Application:Doom]]==&lt;br /&gt;
&lt;br /&gt;
Now, go to [[Building DOOM with scratchbox2]] and follow the simple directions.&lt;br /&gt;
&lt;br /&gt;
==In Process Enhancements==&lt;br /&gt;
[[Extracting the PDK on Linux]]&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=WebOS_Doctor_Versions&amp;diff=9562</id>
		<title>WebOS Doctor Versions</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=WebOS_Doctor_Versions&amp;diff=9562"/>
		<updated>2010-04-10T05:33:30Z</updated>

		<summary type="html">&lt;p&gt;PEEf: Added 2 latest Sprint MD5's and made dissappearance of older versions message bolder.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Download links ==&lt;br /&gt;
It seems the webOS Doctor jar files provided by Palm keep changing:&lt;br /&gt;
&lt;br /&gt;
'''''NOTE: Since March 18th 2010, the Palm servers are no longer hosting old WebOSDoctor versions via the links below. The current versions are still available.'''''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sprint ===&lt;br /&gt;
==== Pre ====&lt;br /&gt;
* version 1.2.1 http://palm.cdnetworks.net/rom/p121r0d10092009/sr1ntp121rod/webosdoctorp100ewwsprint.jar&lt;br /&gt;
* version 1.3.1 http://palm.cdnetworks.net/rom/pre/p131r0d11172009/sr1ntp131rod/webosdoctorp100ewwsprint.jar&lt;br /&gt;
* version 1.3.5 http://palm.cdnetworks.net/rom/pre/p135r0d12302009/sr1ntp135rod/webosdoctorp100ewwsprint.jar&lt;br /&gt;
* version 1.3.5.1 http://palm.cdnetworks.net/rom/pre/p1351r0d01082010/sr1ntp1351rod/webosdoctorp100ewwsprint.jar&lt;br /&gt;
* version 1.4.0 http://palm.cdnetworks.net/rom/pre/p14r0d02252010/sr1ntp140rod/webosdoctorp100ewwsprint.jar&lt;br /&gt;
* version 1.4.1.1 http://palm.cdnetworks.net/rom/pre/p1411r0d03312010/sr1ntp1411rod/webosdoctorp100ewwsprint.jar&lt;br /&gt;
&lt;br /&gt;
==== Pixi ====&lt;br /&gt;
* version 1.3.1 http://palm.cdnetworks.net/rom/pixi/px131r0d11172009/sr1ntp131rod/webosdoctorp200ewwsprint.jar&lt;br /&gt;
* version 1.3.2 http://palm.cdnetworks.net/rom/pixi/px132r0d12032009/sr1ntp132rod/webosdoctorp200ewwsprint.jar&lt;br /&gt;
* version 1.3.5 http://palm.cdnetworks.net/rom/pixi/px135r0d12302009/sr1ntp135rod/webosdoctorp200ewwsprint.jar&lt;br /&gt;
* version 1.3.5.1 http://palm.cdnetworks.net/rom/pixi/px1351r0d01082010/sr1ntp1351rod/webosdoctorp120ewwsprint.jar&lt;br /&gt;
* version 1.4.0 http://palm.cdnetworks.net/rom/pixi/px14r0d02252010/sr1ntp140rod/webosdoctorp200ewwsprint.jar&lt;br /&gt;
* version 1.4.1.1 http://palm.cdnetworks.net/rom/pixi/px1411r0d03312010/sr1ntp1411rod/webosdoctorp200ewwsprint.jar&lt;br /&gt;
''(Palm changed p200eww to p120eww in version 1.3.5.1)''&lt;br /&gt;
''(Palm changed p120eww back to p200eww in version 1.4.0)''&lt;br /&gt;
&lt;br /&gt;
=== Bell Mobility ===&lt;br /&gt;
==== Pre ====&lt;br /&gt;
* version 1.2.1 http://palm.cdnetworks.net/rom/p121r0d10092009/b11ep121rod/webosdoctorp100ewwbellmo.jar&lt;br /&gt;
* version 1.3.1 http://palm.cdnetworks.net/rom/pre/p131r0d11172009/b11ep131rod/webosdoctorp100ewwbellmo.jar&lt;br /&gt;
* version 1.3.5.1 http://palm.cdnetworks.net/rom/pre/p1351r0d01082010/b11ep1351rod/webosdoctorp100ewwbellmo.jar&lt;br /&gt;
* version 1.4.0 http://palm.cdnetworks.net/rom/pre/p14r0d02252010/b11ep140rod/webosdoctorp100ewwbellmo.jar&lt;br /&gt;
* version 1.4.1 http://palm.cdnetworks.net/rom/pre/p141r0d03312010/b11ep141rod/webosdoctorp100ewwbellmo.jar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== O2 Germany, UK and Ireland / Movistar Spain ===&lt;br /&gt;
==== Pre ====&lt;br /&gt;
* version 1.1.3 http://palm.cdnetworks.net/rom/p113r0d10122009/wr640xdfgy12z/webosdoctorp100eww-wr.jar&lt;br /&gt;
* version 1.3.1 http://palm.cdnetworks.net/rom/pre/p131r0d11172009/wrep131rod/webosdoctorp100ueu-wr.jar&lt;br /&gt;
* version 1.3.5.2 http://palm.cdnetworks.net/rom/pre/p1352r0d01182010/wrep1352rod/webosdoctorp100ueu-wr.jar&lt;br /&gt;
* version 1.4.0 http://palm.cdnetworks.net/rom/pre/p14r0d02252010/wrep140rod/webosdoctorp100ueu-wr.jar&lt;br /&gt;
* version 1.4.1 http://palm.cdnetworks.net/rom/pre/p141r0d03312010/eudep141rod/webosdoctorp100ueu-wr.jar&lt;br /&gt;
&lt;br /&gt;
=== Telcel GSM, Mexico ===&lt;br /&gt;
==== Pre ====&lt;br /&gt;
* version 1.2.5 http://palm.cdnetworks.net/rom/pre/p125r0d11252009/tce11p125rod/webosdoctorp100ewwtelcel.jar&lt;br /&gt;
* version 1.3.5.1 http://palm.cdnetworks.net/rom/pre/p1351r0d01082010/tce11p1351rod/webosdoctorp100ewwtelcel.jar&lt;br /&gt;
* version 1.4.0 http://palm.cdnetworks.net/rom/pre/p14r0d02252010/tce11p140rod/webosdoctorp100ewwtelcel.jar&lt;br /&gt;
&lt;br /&gt;
=== Verizon Wireless ===&lt;br /&gt;
==== Pre Plus ====&lt;br /&gt;
* version 1.3.5.1 http://palm.cdnetworks.net/rom/pre/p1351r0d01082010/ver1z0np1351rod/webosdoctorp101ewwverizonwireless.jar&lt;br /&gt;
* version 1.4.0 http://palm.cdnetworks.net/rom/pre/p14r0d02252010/ver1z0np140rod/webosdoctorp101ewwverizonwireless.jar&lt;br /&gt;
==== Pixi Plus ====&lt;br /&gt;
* version 1.3.5.1 http://palm.cdnetworks.net/rom/pixi/px1351r0d01082010/ver1z0np1351rod/webosdoctorp121ewwverizonwireless.jar&lt;br /&gt;
* version 1.4.0 http://palm.cdnetworks.net/rom/pixi/px14r0d02252010/ver1z0np140rod/webosdoctorp121ewwverizonwireless.jar&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
&lt;br /&gt;
Note that the webOS Doctor package comes with the following license:&lt;br /&gt;
&lt;br /&gt;
RESTRICTIONS: The Software is licensed for use only with the single Palm device you originally purchased, and you may not distribute or make the Software available over a network or for use with multiple devices. The Software and supporting documentation may be copied only as necessary for backup or archive purposes in support of your use of the Software.&lt;br /&gt;
&lt;br /&gt;
So we can't host different versions of it anywhere - the best we can do is record the md5sums of the versions we know about so that individuals can match this to the files they have for use with their Palm device.&lt;br /&gt;
&lt;br /&gt;
== MD5 sums ==&lt;br /&gt;
&lt;br /&gt;
Here is a list of the versions that we know about (with md5sums for each, and the date of release or when they were first spotted and recorded here):&lt;br /&gt;
&lt;br /&gt;
=== Sprint ===&lt;br /&gt;
&lt;br /&gt;
==== Pre ====&lt;br /&gt;
&lt;br /&gt;
 4b3e396f8b1f1c5d3388e3c298af0484  webosdoctorp100ewwsprint-1.0.2.jar (10 June 2009)&lt;br /&gt;
 0c8027b5a707eb0d02b1997d48021bd5  webosdoctorp100ewwsprint-1.0.3.jar (24 June 2009)  (changes in [[WebOS_Doctor_version_1.0.3]])&lt;br /&gt;
 32852c4b57d938e85f0fc819e57eacb7  webosdoctorp100ewwsprint-1.0.4.jar (9 July 2009) (changes in [[WebOS_Doctor_version_1.0.4]])&lt;br /&gt;
 fc602490fdd7b3be8c5f727349c6195f  webosdoctorp100ewwsprint-1.1.0.jar (24 July 2009) (changes in [[WebOS_Doctor_version_1.1.0]])&lt;br /&gt;
 3123efda0a40821bd03daf1dd11cf2e3  webosdoctorp100ewwsprint-1.2.0-0830.jar (4 Sep 2009 - accidentally released early) (changes in [[WebOS_Doctor_version_1.2.0-0830]])&lt;br /&gt;
 93c3f106b7a7e5ef572465dcb4488e1c  webosdoctorp100ewwsprint-1.2.0.jar (29 September 2009)&lt;br /&gt;
 e7600251e12e5b96f3143138ba61b9eb  [http://palm.cdnetworks.net/rom/p121r0d10092009/sr1ntp121rod/webosdoctorp100ewwsprint.jar webosdoctorp100ewwsprint-1.2.1.jar] (9 October 2009)&lt;br /&gt;
 8261682a25ac21bb2f3107ec5c50dc84  [http://palm.cdnetworks.net/rom/pre/p131r0d11172009/sr1ntp131rod/webosdoctorp100ewwsprint.jar webosdoctorp100ewwsprint_1.3.1.jar] (17 November 2009)&lt;br /&gt;
 4daef882c96461dc1c60cc907c4dfbf0  [http://palm.cdnetworks.net/rom/pre/p135r0d12302009/sr1ntp135rod/webosdoctorp100ewwsprint.jar webosdoctorp100ewwsprint_1.3.5.jar] (30 December 2009)&lt;br /&gt;
 14e3c4168030498b42370115b33ee278  [http://palm.cdnetworks.net/rom/pre/p1351r0d01082010/sr1ntp1351rod/webosdoctorp100ewwsprint.jar webosdoctorp100ewwsprint_1.3.5.1.jar] (3 January 2010)&lt;br /&gt;
 7aee384f4fdcc6189a027617efaac983  [http://palm.cdnetworks.net/rom/pre/p14r0d02252010/sr1ntp140rod/webosdoctorp100ewwsprint.jar webosdoctorp100ewwsprint_1.4.0.jar] (23 February 2010)&lt;br /&gt;
 5f736a8baf27a3ea4d525c30f871f2d2  [http://palm.cdnetworks.net/rom/pre/p1411r0d03312010/sr1ntp1411rod/webosdoctorp100ewwsprint.jar webosdoctorp100ewwsprint_1.4.1.1.jar] (25 May 2010)&lt;br /&gt;
&lt;br /&gt;
==== Pixi ====&lt;br /&gt;
&lt;br /&gt;
 1957476e6d9d221413285c6d5ab697d6  webosdoctorp200ewwsprint-1.2.9.1.jar (18 November 2009)&lt;br /&gt;
 063c2f66682dd246fa3bf518adae0f53  [http://palm.cdnetworks.net/rom/pixi/px131r0d11172009/sr1ntp131rod/webosdoctorp200ewwsprint.jar webosdoctorp200ewwsprint-1.3.1.jar] (17 November 2009)&lt;br /&gt;
 eb33e68b07ccad81847d96f546303880  [http://palm.cdnetworks.net/rom/pixi/px132r0d12032009/sr1ntp132rod/webosdoctorp200ewwsprint.jar webosdoctorp200ewwsprint-1.3.2.jar] (3 December 2009)&lt;br /&gt;
&lt;br /&gt;
=== Bell Mobility ===&lt;br /&gt;
&lt;br /&gt;
 ffd1bc50066d8f54d134b7aac194e3ec  webosdoctorp100ewwbellmo-1.1.0.jar (27 August 2009)&lt;br /&gt;
 c8f80b3cdbb9b96fd73bbb6062950a83  webosdoctorp100ewwbellmo-1.2.0.jar (29 September 2009)&lt;br /&gt;
 52f4a4cd9b182004a7060cfaa5be2c6f  [http://palm.cdnetworks.net/rom/p121r0d10092009/b11ep121rod/webosdoctorp100ewwbellmo.jar webosdoctorp100ewwbellmo-1.2.1.jar] (9 October 2009)&lt;br /&gt;
 c4202a32ca49a1c843f30b77515cac46  [http://palm.cdnetworks.net/rom/pre/p131r0d11172009/b11ep131rod/webosdoctorp100ewwbellmo.jar webosdoctorp100ewwbellmo-1.3.1.jar] (17 November 2009)&lt;br /&gt;
 646dd275690fcd7b3819ddddc488c2de  [http://palm.cdnetworks.net/rom/pre/p14r0d02252010/b11ep140rod/webosdoctorp100ewwbellmo.jar webosdoctorp100ewwbellmo-1.4.0.jar] (4 March 2010)&lt;br /&gt;
&lt;br /&gt;
=== O2 Germany, UK and Ireland / Movistar Spain ===&lt;br /&gt;
WR = World ready 1.0&lt;br /&gt;
&lt;br /&gt;
 bc29e1144823afc05a50dcdc2c84475d  [http://palm.cdnetworks.net/rom/p113r0d10122009/wr640xdfgy12z/webosdoctorp100eww-wr.jar webosdoctorp100eww-wr-1.1.3.jar] (12 October 2009)&lt;br /&gt;
 9bb8e7547996b5b62ce8742198a9d8bb  [http://palm.cdnetworks.net/rom/pre/p131r0d11172009/wrep131rod/webosdoctorp100ueu-wr.jar webosdoctorp100ueu-wr-1.3.1.jar] (17 November 2009)&lt;br /&gt;
 a3c7ae6d93409dea9f0461636f5c79c0  [http://palm.cdnetworks.net/rom/pre/p1352r0d01182010/wrep1352rod/webosdoctorp100ueu-wr.jar webosdoctorp100ueu-wr-1.3.5.2.jar] (19 January 2010)&lt;br /&gt;
 0593f3b94ec4050febacea14c8af7b10  [http://palm.cdnetworks.net/rom/pre/p14r0d02252010/wrep140rod/webosdoctorp100ueu-wr.jar webosdoctorp100ueu-wr-1.4.0.jar] (30 March 2010)&lt;br /&gt;
&lt;br /&gt;
=== Telcel GSM, Mexico ===&lt;br /&gt;
&lt;br /&gt;
 477f6c3d2ff1673aa9a9d1670aa5e88f  [http://palm.cdnetworks.net/rom/pre/p125r0d11252009/tce11p125rod/webosdoctorp100ewwtelcel.jar webosdoctorp100ewwtelcel-1.2.5.jar] (25 November 2009)&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
1.0.3 is the last version to contain PmModemFactory&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9560</id>
		<title>Last Resort Emergency BootLoader Recovery</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9560"/>
		<updated>2010-04-09T21:23:22Z</updated>

		<summary type="html">&lt;p&gt;PEEf: Added more info about Tokens, Improved formatting, Added Headers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Recovery Mode==&lt;br /&gt;
&lt;br /&gt;
Typically, any damage to the operating system on the Palm Pre/Pre Plus can be recovered by booting into recovery mode. ([[How_To_Recover]])&lt;br /&gt;
&lt;br /&gt;
One situation which cannot be recovered so easily is the extremely unlikely event of corruption of the installed bootloader ([[bootie]]) stored on the [[Pre's flash disk]].&lt;br /&gt;
&lt;br /&gt;
If bootie on the flash disk has been damaged or corrupted in such a way that booting into recovery mode is not possible, the Pre is still not &amp;quot;bricked&amp;quot; as the OMAP3430 processor in the Pre provides for a mechanism to boot code from its USB interface.  At this time this operation has not been performed on a Pixi, and will not be the same as it has a different core.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NVRAM Tokens==&lt;br /&gt;
&lt;br /&gt;
If the NVRAM partition gets trashed too, the token area will be empty and the doctor will refuse to install. If you're in this situation you need to rebuild it. Here are a few of the minimal token sets to allow the doctor to start:&lt;br /&gt;
&lt;br /&gt;
Sprint Pre: DMCARRIER=Sprint, DMMODEL=P100EWW, HWoRev=A, KEYoBRD=z, PN=180-10642-05, PRODoID=P100EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
GSM Pre: DMCARRIER=ROW, DMMODEL=castle, HWoRev=A, PN=180-10722-03, PRODoID=P100UEU&lt;br /&gt;
&lt;br /&gt;
Verizon Pre Plus: DMCARRIER=Verizon, DMMODEL=P101EWW, HWoRev=A, KEYoBRD=z, PN=180-10724-01, PRODoID=P101EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
If you want BlueTooth and Wifi to work, You may also want to set BToADDR=00:1D:FE:''xx:yy:zz'', WIFIoADDR=00:1D:FE:''uu:vv:ww'' and PalmSN=''serial''.  If you are unsure of your original MAC addresses, They can safely be any random number, the serial number is on the box and on a sticker inside the battery compartment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Token Backup ==&lt;br /&gt;
&lt;br /&gt;
If you are a heavy experimenter, you should probably backup your tokens before you start experimenting, this way you can easily recover a future problem without as much hassle.  Also, there are tokens that control thinks like touchscreen calibration, so these cannot be easily obtained if they are lost!  Once booted, you can backup all your tokens by copying everything in /tmp/tokens.  Here are a list of the Tokens on an Average Pre: &lt;br /&gt;
 &lt;br /&gt;
 ACCELCAL       BToADDR        DMCLoAUTHPW    DMSETS         HWoRev         PN             ProdSN&lt;br /&gt;
 BATToCH        DMCARRIER      DMCLoNONCE     DMSVRoAUTHPW   KEYoBRD        PRODoID        WIFIoADDR&lt;br /&gt;
 BATToRSP       DMCLoAUTHNAME  DMMODEL        DMSVRoNONCE    ModemSN        PalmSN         installer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OMAP boot Procedure ==&lt;br /&gt;
&lt;br /&gt;
First, ensure that the Linux SDK and novacom packages are installed, as you will need to run webOS Doctor as the final step in this process.&lt;br /&gt;
Second, ensure that you have a copy of the webOS doctor jar ready for your phone.&lt;br /&gt;
&lt;br /&gt;
Download: [http://markmail.org/download.xqy?id=l4qabusyxcqsslwn&amp;amp;number=1 omap3_usb.tar.bz2] &lt;br /&gt;
&lt;br /&gt;
Compile on Linux system with &amp;quot;make&amp;quot;.  Optionally install with &amp;quot;sudo cp omap3_usbload /usr/local/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now extract the bootie binary from a WebOS Doctor image: (note: webosdoctor file name will vary)&lt;br /&gt;
 &lt;br /&gt;
 mkdir doctor; cd doctor; unzip ../webosdoctor.jar; cd resources&lt;br /&gt;
 mkdir webOS; cd webOS; tar xvf ../webOS.tar; mkdir nova-cust-image-castle.rootfs; cd nova-cust-image-castle.rootfs&lt;br /&gt;
 tar xvzf ../nova-cust-image-castle.rootfs.tar.gz ./boot/boot.bin; cd boot&lt;br /&gt;
&lt;br /&gt;
Booting bootie over USB:&lt;br /&gt;
&lt;br /&gt;
Ensure USB is unplugged from the Pre, and remove the Pre's battery.&lt;br /&gt;
&lt;br /&gt;
On your Linux system, run:&lt;br /&gt;
&lt;br /&gt;
 sudo omap3_usbload boot.bin&lt;br /&gt;
&lt;br /&gt;
This should return:&lt;br /&gt;
&lt;br /&gt;
 TI OMAP3 USB boot ROM tool, version 0.1&lt;br /&gt;
 ......&lt;br /&gt;
&lt;br /&gt;
and a series of dots while it looks for an OMAP3 to send boot code to.&lt;br /&gt;
&lt;br /&gt;
Now, plug the pre into USB.&lt;br /&gt;
&lt;br /&gt;
If all works as it should, the usbload program should return:&lt;br /&gt;
&lt;br /&gt;
 found device!&lt;br /&gt;
 download ok&lt;br /&gt;
&lt;br /&gt;
And your Pre will now show a USB logo. (this is bootie's &amp;quot;Recovery mode&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Put the battery back in without unplugging the USB.&lt;br /&gt;
&lt;br /&gt;
Since you are now in USB recovery mode, you should be able to run the webOS doctor on the host Linux box.  Remember that the SDK novacom package must be installed for the webOS Doctor to work in Linux.&lt;br /&gt;
&lt;br /&gt;
One way to do this is to launch the doctor from the command line like:   &lt;br /&gt;
&lt;br /&gt;
 sudo java -jar webosdoctor.jar&lt;br /&gt;
&lt;br /&gt;
And follow the usual steps to recover your pre's operating system from here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alternative Recovery ==&lt;br /&gt;
&lt;br /&gt;
Another available option now that bootie is running is to send bootie a Linux image over USB and perform some kind of recovery work directly on the pre itself.  This is not recommended unless you are very familiar with linux systems administration.&lt;br /&gt;
&lt;br /&gt;
First you send bootie the boot image of the doctor's installer.  This can be extracted from the WebOS Doctor jar.&lt;br /&gt;
&lt;br /&gt;
 novacom boot mem:// &amp;lt; nova-installer-image-castle.uImage&lt;br /&gt;
&lt;br /&gt;
Wait 15 seconds for the system to boot then connect in to a shell on the running linux system with novaterm.  (you will see no on-screen indication that the device is booting linux, only a solid Palm logo)&lt;br /&gt;
&lt;br /&gt;
 novaterm&lt;br /&gt;
&lt;br /&gt;
You should get a shell prompt&lt;br /&gt;
&lt;br /&gt;
 root@palm-webos-device:/# &lt;br /&gt;
&lt;br /&gt;
Now find and activate the LVM disk voumes with the following two commands:&lt;br /&gt;
&lt;br /&gt;
 lvm.static vgscan --ignorelockingfailure&lt;br /&gt;
 lvm.static vgchange -ay --ignorelockingfailure&lt;br /&gt;
&lt;br /&gt;
Next, mount all disks&lt;br /&gt;
&lt;br /&gt;
 for N in root var media log update; do mkdir /mnt/$N; mount /dev/mapper/store-$N /mnt/$N; done&lt;br /&gt;
&lt;br /&gt;
When done with whatever you need to do on the system, shutting it down safely is a good idea&lt;br /&gt;
&lt;br /&gt;
 umount -a; tellbootie reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recovery using OS/X ==&lt;br /&gt;
&lt;br /&gt;
For a Mac, the process of running USB booting the OMAP may be much simpler.&lt;br /&gt;
&lt;br /&gt;
The MacOS X version of the SDK provides a pre-built executable /opt/nova/bin/cpuboot and a recovery image. You can simply run&lt;br /&gt;
&lt;br /&gt;
 /opt/nova/bin/cpuboot  -o -v -d usb -f /opt/nova/bin/recovery-castle.bin&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9559</id>
		<title>Last Resort Emergency BootLoader Recovery</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9559"/>
		<updated>2010-04-09T21:08:12Z</updated>

		<summary type="html">&lt;p&gt;PEEf: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Typically, any damage to the operating system on the Palm Pre/Pre Plus can be recovered by booting into recovery mode.&lt;br /&gt;
&lt;br /&gt;
One situation which cannot be recovered so easily is the extremely unlikely event of corruption of the installed bootloader ([[bootie]]) stored on the [[Pre's flash disk]].&lt;br /&gt;
&lt;br /&gt;
If bootie on the flash disk has been damaged or corrupted in such a way that booting into recovery mode is not possible, the Pre is still not &amp;quot;bricked&amp;quot; as the OMAP3430 processor in the Pre provides for a mechanism to boot code from its USB interface.  At this time it is not known how to perform this operation on a Pixi, as it has a different core.&lt;br /&gt;
&lt;br /&gt;
If the NVRAM partition gets trashed too, the token area will be empty and the doctor will refuse to install. If you're in this situation you need to rebuild it. Here are a few of the minimal token sets to allow the doctor to start:&lt;br /&gt;
&lt;br /&gt;
Sprint Pre: DMCARRIER=Sprint, DMMODEL=P100EWW, HWoRev=A, KEYoBRD=z, PN=180-10642-05, PRODoID=P100EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
GSM Pre: DMCARRIER=ROW, DMMODEL=castle, HWoRev=A, PN=180-10722-03, PRODoID=P100UEU&lt;br /&gt;
&lt;br /&gt;
Verizon Pre Plus: DMCARRIER=Verizon, DMMODEL=P101EWW, HWoRev=A, KEYoBRD=z, PN=180-10724-01, PRODoID=P101EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
If you want BlueTooth and Wifi to work, You may also want to set BToADDR=00:1D:FE:''xx:yy:zz'', WIFIoADDR=00:1D:FE:''uu:vv:ww'' and PalmSN=''serial''.  If you are unsure of your original MAC addresses, They can safely be any random number, the serial number is on the box and on a sticker inside the battery compartment.&lt;br /&gt;
&lt;br /&gt;
First, ensure that the Linux SDK and novacom packages are installed, as you will need to run webOS Doctor as the final step in this process.&lt;br /&gt;
Second, ensure that you have a copy of the webOS doctor jar ready for your phone.&lt;br /&gt;
&lt;br /&gt;
Download: [http://markmail.org/download.xqy?id=l4qabusyxcqsslwn&amp;amp;number=1 omap3_usb.tar.bz2] &lt;br /&gt;
&lt;br /&gt;
Compile on Linux system with &amp;quot;make&amp;quot;.  Optionally install with &amp;quot;sudo cp omap3_usbload /usr/local/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now extract the bootie binary from a WebOS Doctor image: (note: webosdoctor file name will vary)&lt;br /&gt;
 &lt;br /&gt;
 mkdir doctor; cd doctor; unzip ../webosdoctor.jar; cd resources&lt;br /&gt;
 mkdir webOS; cd webOS; tar xvf ../webOS.tar; mkdir nova-cust-image-castle.rootfs; cd nova-cust-image-castle.rootfs&lt;br /&gt;
 tar xvzf ../nova-cust-image-castle.rootfs.tar.gz ./boot/boot.bin; cd boot&lt;br /&gt;
&lt;br /&gt;
Booting bootie over USB:&lt;br /&gt;
&lt;br /&gt;
Ensure USB is unplugged from the Pre, and remove the Pre's battery.&lt;br /&gt;
&lt;br /&gt;
On your Linux system, run:&lt;br /&gt;
&lt;br /&gt;
 sudo omap3_usbload boot.bin&lt;br /&gt;
&lt;br /&gt;
This should return:&lt;br /&gt;
&lt;br /&gt;
 TI OMAP3 USB boot ROM tool, version 0.1&lt;br /&gt;
 ......&lt;br /&gt;
&lt;br /&gt;
and a series of dots while it looks for an OMAP3 to send boot code to.&lt;br /&gt;
&lt;br /&gt;
Now, plug the pre into USB.&lt;br /&gt;
&lt;br /&gt;
If all works as it should, the usbload program should return:&lt;br /&gt;
&lt;br /&gt;
 found device!&lt;br /&gt;
 download ok&lt;br /&gt;
&lt;br /&gt;
And your Pre will now show a USB logo. (this is bootie's &amp;quot;Recovery mode&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Put the battery back in without unplugging the USB.&lt;br /&gt;
&lt;br /&gt;
Since you are now in USB recovery mode, you should be able to run the webOS doctor on the host Linux box.  Remember that the SDK novacom package must be installed for the webOS Doctor to work in Linux.&lt;br /&gt;
&lt;br /&gt;
One way to do this is to launch the doctor from the command line like:   &lt;br /&gt;
&lt;br /&gt;
 sudo java -jar webosdoctor.jar&lt;br /&gt;
&lt;br /&gt;
And follow the usual steps to recover your pre's operating system from here.&lt;br /&gt;
&lt;br /&gt;
Alternatively..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another available option now that bootie is running is to send bootie a Linux image over USB and perform some kind of recovery work directly on the pre itself.  This is not recommended unless you are very familiar with linux systems administration.&lt;br /&gt;
&lt;br /&gt;
First you send bootie the boot image of the doctor's installer.  This can be extracted from the WebOS Doctor jar.&lt;br /&gt;
&lt;br /&gt;
 novacom boot mem:// &amp;lt; nova-installer-image-castle.uImage&lt;br /&gt;
&lt;br /&gt;
Wait 15 seconds for the system to boot then connect in to a shell on the running linux system with novaterm.  (you will see no on-screen indication that the device is booting linux, only a solid Palm logo)&lt;br /&gt;
&lt;br /&gt;
 novaterm&lt;br /&gt;
&lt;br /&gt;
You should get a shell prompt&lt;br /&gt;
&lt;br /&gt;
 root@palm-webos-device:/# &lt;br /&gt;
&lt;br /&gt;
Now find and activate the LVM disk voumes with the following two commands:&lt;br /&gt;
&lt;br /&gt;
 lvm.static vgscan --ignorelockingfailure&lt;br /&gt;
 lvm.static vgchange -ay --ignorelockingfailure&lt;br /&gt;
&lt;br /&gt;
Next, mount all disks&lt;br /&gt;
&lt;br /&gt;
 for N in root var media log update; do mkdir /mnt/$N; mount /dev/mapper/store-$N /mnt/$N; done&lt;br /&gt;
&lt;br /&gt;
When done with whatever you need to do on the system, shutting it down safely is a good idea&lt;br /&gt;
&lt;br /&gt;
 umount -a; tellbootie reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For a Mac, the process of running USB booting the OMAP may be much simpler.&lt;br /&gt;
&lt;br /&gt;
The MacOS X version of the SDK provides a pre-built executable /opt/nova/bin/cpuboot and a recovery image. You can simply run&lt;br /&gt;
&lt;br /&gt;
 /opt/nova/bin/cpuboot  -o -v -d usb -f /opt/nova/bin/recovery-castle.bin&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9558</id>
		<title>Last Resort Emergency BootLoader Recovery</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Last_Resort_Emergency_BootLoader_Recovery&amp;diff=9558"/>
		<updated>2010-04-09T21:04:37Z</updated>

		<summary type="html">&lt;p&gt;PEEf: added disclaimer about Pixi, added tokens for Sprint/Verizon models.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Typically, any damage to the operating system on the Palm Pre/Pre Plus can be recovered by booting into recovery mode.&lt;br /&gt;
&lt;br /&gt;
One situation which cannot be recovered so easily is the extremely unlikely event of corruption of the installed bootloader ([[bootie]]) stored on the [[Pre's flash disk]].&lt;br /&gt;
&lt;br /&gt;
If bootie on the flash disk has been damaged or corrupted in such a way that booting into recovery mode is not possible, the Pre is still not &amp;quot;bricked&amp;quot; as the OMAP3430 processor in the Pre provides for a mechanism to boot code from its USB interface.  At this time it is not known how to perform this operation on a Pixi, as it has a different core.&lt;br /&gt;
&lt;br /&gt;
If the NVRAM partition gets trashed too, the token area will be empty and the doctor will refuse to install. If you're in this situation you need to rebuild it. Here are a few of the minimal token sets to allow the doctor to start:&lt;br /&gt;
&lt;br /&gt;
Sprint Pre: DMCARRIER=Sprint, DMMODEL=P100EWW, HWoRev=A, KEYoBRD=z, PN=180-10642-05, PRODoID=P100EWW, installer=trenchcoat&lt;br /&gt;
GSM Pre: DMCARRIER=ROW, DMMODEL=castle, HWoRev=A, PN=180-10722-03, PRODoID=P100UEU&lt;br /&gt;
Verizon Pre Plus: DMCARRIER=Verizon, DMMODEL=P101EWW, HWoRev=A, KEYoBRD=z, PN=180-10724-01, PRODoID=P101EWW, installer=trenchcoat&lt;br /&gt;
&lt;br /&gt;
You may also want to set BToADDR=00:1D:FE:''xx:yy:zz'', WIFIoADDR=00:1D:FE:''uu:vv:ww'' and PalmSN=''serial''. The addresses can safely be any random number, the serial number is on the box and on a sticker inside the battery compartment.&lt;br /&gt;
&lt;br /&gt;
First, ensure that the Linux SDK and novacom packages are installed, as you will need to run webOS Doctor as the final step in this process.&lt;br /&gt;
Second, ensure that you have a copy of the webOS doctor jar ready for your phone.&lt;br /&gt;
&lt;br /&gt;
Download: [http://markmail.org/download.xqy?id=l4qabusyxcqsslwn&amp;amp;number=1 omap3_usb.tar.bz2] &lt;br /&gt;
&lt;br /&gt;
Compile on Linux system with &amp;quot;make&amp;quot;.  Optionally install with &amp;quot;sudo cp omap3_usbload /usr/local/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now extract the bootie binary from a WebOS Doctor image: (note: webosdoctor file name will vary)&lt;br /&gt;
 &lt;br /&gt;
 mkdir doctor; cd doctor; unzip ../webosdoctor.jar; cd resources&lt;br /&gt;
 mkdir webOS; cd webOS; tar xvf ../webOS.tar; mkdir nova-cust-image-castle.rootfs; cd nova-cust-image-castle.rootfs&lt;br /&gt;
 tar xvzf ../nova-cust-image-castle.rootfs.tar.gz ./boot/boot.bin; cd boot&lt;br /&gt;
&lt;br /&gt;
Booting bootie over USB:&lt;br /&gt;
&lt;br /&gt;
Ensure USB is unplugged from the Pre, and remove the Pre's battery.&lt;br /&gt;
&lt;br /&gt;
On your Linux system, run:&lt;br /&gt;
&lt;br /&gt;
 sudo omap3_usbload boot.bin&lt;br /&gt;
&lt;br /&gt;
This should return:&lt;br /&gt;
&lt;br /&gt;
 TI OMAP3 USB boot ROM tool, version 0.1&lt;br /&gt;
 ......&lt;br /&gt;
&lt;br /&gt;
and a series of dots while it looks for an OMAP3 to send boot code to.&lt;br /&gt;
&lt;br /&gt;
Now, plug the pre into USB.&lt;br /&gt;
&lt;br /&gt;
If all works as it should, the usbload program should return:&lt;br /&gt;
&lt;br /&gt;
 found device!&lt;br /&gt;
 download ok&lt;br /&gt;
&lt;br /&gt;
And your Pre will now show a USB logo. (this is bootie's &amp;quot;Recovery mode&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Put the battery back in without unplugging the USB.&lt;br /&gt;
&lt;br /&gt;
Since you are now in USB recovery mode, you should be able to run the webOS doctor on the host Linux box.  Remember that the SDK novacom package must be installed for the webOS Doctor to work in Linux.&lt;br /&gt;
&lt;br /&gt;
One way to do this is to launch the doctor from the command line like:   &lt;br /&gt;
&lt;br /&gt;
 sudo java -jar webosdoctor.jar&lt;br /&gt;
&lt;br /&gt;
And follow the usual steps to recover your pre's operating system from here.&lt;br /&gt;
&lt;br /&gt;
Alternatively..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another available option now that bootie is running is to send bootie a Linux image over USB and perform some kind of recovery work directly on the pre itself.  This is not recommended unless you are very familiar with linux systems administration.&lt;br /&gt;
&lt;br /&gt;
First you send bootie the boot image of the doctor's installer.  This can be extracted from the WebOS Doctor jar.&lt;br /&gt;
&lt;br /&gt;
 novacom boot mem:// &amp;lt; nova-installer-image-castle.uImage&lt;br /&gt;
&lt;br /&gt;
Wait 15 seconds for the system to boot then connect in to a shell on the running linux system with novaterm.  (you will see no on-screen indication that the device is booting linux, only a solid Palm logo)&lt;br /&gt;
&lt;br /&gt;
 novaterm&lt;br /&gt;
&lt;br /&gt;
You should get a shell prompt&lt;br /&gt;
&lt;br /&gt;
 root@palm-webos-device:/# &lt;br /&gt;
&lt;br /&gt;
Now find and activate the LVM disk voumes with the following two commands:&lt;br /&gt;
&lt;br /&gt;
 lvm.static vgscan --ignorelockingfailure&lt;br /&gt;
 lvm.static vgchange -ay --ignorelockingfailure&lt;br /&gt;
&lt;br /&gt;
Next, mount all disks&lt;br /&gt;
&lt;br /&gt;
 for N in root var media log update; do mkdir /mnt/$N; mount /dev/mapper/store-$N /mnt/$N; done&lt;br /&gt;
&lt;br /&gt;
When done with whatever you need to do on the system, shutting it down safely is a good idea&lt;br /&gt;
&lt;br /&gt;
 umount -a; tellbootie reboot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For a Mac, the process of running USB booting the OMAP may be much simpler.&lt;br /&gt;
&lt;br /&gt;
The MacOS X version of the SDK provides a pre-built executable /opt/nova/bin/cpuboot and a recovery image. You can simply run&lt;br /&gt;
&lt;br /&gt;
 /opt/nova/bin/cpuboot  -o -v -d usb -f /opt/nova/bin/recovery-castle.bin&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Talk:Patch_webOS_Radio_Power_Switch&amp;diff=4370</id>
		<title>Talk:Patch webOS Radio Power Switch</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Talk:Patch_webOS_Radio_Power_Switch&amp;diff=4370"/>
		<updated>2009-08-15T03:40:32Z</updated>

		<summary type="html">&lt;p&gt;PEEf: Answer Questions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;What does this get around? The Pre does support this feature by default. If you put the phone in Airplane mode, you can enable both WiFi and Bluetooth while having the transmitter off. This seems completely unnecessary?&lt;br /&gt;
&lt;br /&gt;
Peef writes: I sometimes want to turn off my radio when in a weak service area and stay on Wifi.  While I can do this by enabling airplane mode, then turning back on Wifi, it's a pain.  I also use it as a &amp;quot;reset&amp;quot; to get back EVDO when the phone drops to 1x because of spotty coverage.  &lt;br /&gt;
&lt;br /&gt;
I am trying to create a switch that toggles forced roaming, and I have tried to edit this patch so that it switches the forced roaming on and off, however to no avail. Any help with this from pEEf or HattCzech? It would be immensely appreciate as I have tried for 3+ days to get it to function. - paraplegicemu&lt;br /&gt;
&lt;br /&gt;
Peef writes: Already done, see this: http://www.webos-internals.org/wiki/Roam_Control&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_webOS_Bypassing_Activation&amp;diff=3700</id>
		<title>Patch webOS Bypassing Activation</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_webOS_Bypassing_Activation&amp;diff=3700"/>
		<updated>2009-08-03T17:05:49Z</updated>

		<summary type="html">&lt;p&gt;PEEf: /* Verified Working Procedure: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{template:patch}}&lt;br /&gt;
If you are outside of Sprint's service area in the United States and would like to still be able to use your Pre, you are required to possess a Palm profile.  The phone will not let you past the &amp;quot;create profile&amp;quot; screen because it cannot hit Palm's servers over the non-working EV-DO connection.&lt;br /&gt;
&lt;br /&gt;
This modification will allow you to enable WiFi and use that to create your Palm Profile.  The phone is otherwise unchanged and would still work if it was brought back into a Sprint service area.&lt;br /&gt;
&lt;br /&gt;
NOTE: You may need to use a Mac or Linux machine to do the file editing, otherwise the /dev folder will be empty and YOUR PHONE WILL NOT BOOT.&lt;br /&gt;
&lt;br /&gt;
= Verified Working Procedure:=&lt;br /&gt;
&lt;br /&gt;
'''Note: These instructions and patches were created for WebOSdoctor 1.0.2, so the locations of lines may be different on later versions.'''&lt;br /&gt;
&lt;br /&gt;
1. Download the [http://palm.cdnetworks.net/rom/pre_p100eww/webosdoctorp100ewwsprint.jar WebOS image].&lt;br /&gt;
&lt;br /&gt;
2. Rename this file to .zip, and extract it.&lt;br /&gt;
&lt;br /&gt;
3. Untar resources\webOS\nova-cust-image-castle.rootfs.tar.gz.&lt;br /&gt;
&lt;br /&gt;
4. Check to see that /dev has files in it after untarring. If it does not, try untarring as root.&lt;br /&gt;
&lt;br /&gt;
5. Open file /usr/palm/applications/com.palm.app.firstuse/app/controllers/app-assistant.js.&lt;br /&gt;
&lt;br /&gt;
6. Change the setUpFirstUse() function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
function setUpFirstUse () {&lt;br /&gt;
setupSimulator (); &lt;br /&gt;
isDevice = true; &lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. Apply the diff's to the following 2 files:&lt;br /&gt;
&lt;br /&gt;
command:&lt;br /&gt;
&lt;br /&gt;
 patch foo.js &amp;lt; patch&lt;br /&gt;
&lt;br /&gt;
files to patch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
/usr/palm/applications/com.palm.app.firstuse/app/controllers/firstuse-util.js&lt;br /&gt;
95a96&lt;br /&gt;
&amp;gt;                       {label: $L('Enable WiFi'), command: 'peef-hack-mode'},&lt;br /&gt;
105a107,108&lt;br /&gt;
&amp;gt;               } else if (value == &amp;quot;peef-hack-mode&amp;quot;) {&lt;br /&gt;
&amp;gt;                       AppAssistant.accountService.peefMode();&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
/usr/palm/applications/com.palm.app.firstuse/app/models/account-service.js&lt;br /&gt;
389a390,399&lt;br /&gt;
&amp;gt;       peefMode: function() {&lt;br /&gt;
&amp;gt;               return new Mojo.Service.Request(&amp;quot;palm://com.palm.applicationManager/open&amp;quot;, {&lt;br /&gt;
&amp;gt;                       parameters: {&lt;br /&gt;
&amp;gt;                               id: 'com.palm.app.wifi',&lt;br /&gt;
&amp;gt;                               params: {&lt;br /&gt;
&amp;gt;                               }&lt;br /&gt;
&amp;gt;                       }&lt;br /&gt;
&amp;gt;               });&lt;br /&gt;
&amp;gt;       },&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. Edit /usr/lib/ipkg/info/com.palm.app.firstuse.md5sums and add the correct md5 of app-assistant.js, account-service.js, and firstuse-util.js.&lt;br /&gt;
&lt;br /&gt;
 md5sum (file.js)&lt;br /&gt;
&lt;br /&gt;
9. Edit /md5sums file and add the correct md5 of app-assistant.js, account-service.js, and firstuse-util.js, and /usr/lib/ipkg/info/com.palm.app.firstuse.md5sums. (These two steps are not necessary, but if you don't do them, the flashing will fail.  The phone should still reboot and work as normally though.)&lt;br /&gt;
&lt;br /&gt;
10. Pack the nova-cust-image-castle.rootfs folder into nova-cust-image-castle.rootfs.tar.gz (make sure that the tar's root contains the root file system, and not a folder containing the root file system).&lt;br /&gt;
&lt;br /&gt;
 tar cvpf ../nova-cust-image-castle.rootfs.tar.gz ./&lt;br /&gt;
&lt;br /&gt;
11. Pack the webOS folder into webOS.tar.  Make sure that the root of the .tar contains the files in webOS and not a folder containing the files in webOS.&lt;br /&gt;
&lt;br /&gt;
 tar cvf ../webOS.tar ./&lt;br /&gt;
&lt;br /&gt;
12. Remove JARKEY.RSA and JARKEY.SF from \META-INF.&lt;br /&gt;
&lt;br /&gt;
13. Edit the MANIFEST.MF in \META-INF.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;Manifest-Version: 1.0&lt;br /&gt;
Created-By: 1.6.0_04 (Sun Microsystems Inc.)&lt;br /&gt;
Main-Class: com.palm.nova.installer.recoverytool.RecoveryTool&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. Pack the .jar back up. You can use zip to do this.  NOTE: If zipping it is resulting in an unusable jar file, make sure you have the JDK installed and use: &lt;br /&gt;
&lt;br /&gt;
 jar cvMf flasher.jar * #if you are in the folder containing resources, META-INF and com folders&lt;br /&gt;
&lt;br /&gt;
15. Hold the volume up button while plugging in USB cable.&lt;br /&gt;
&lt;br /&gt;
16. Flash it.&lt;br /&gt;
&lt;br /&gt;
17. Once you get to the &amp;quot;Create Palm Profile&amp;quot; screen, tap the little phone icon down in the lower right notification area.&lt;br /&gt;
&lt;br /&gt;
18. Choose the &amp;quot;Enable WiFi&amp;quot; menu item.&lt;br /&gt;
&lt;br /&gt;
19. When the WiFi control opens, enable WiFi and connect to your local WiFi network (must allow internet accesss).&lt;br /&gt;
&lt;br /&gt;
20. Close the WiFi panel and then proceed normally to create your new Palm Profile.  NOTE: If you find yourself unable to close the WiFi panel, remove the battery and reboot.  Your phone will still connect to the network.&lt;br /&gt;
&lt;br /&gt;
= Bypassing modem errors=&lt;br /&gt;
&lt;br /&gt;
If your CDMA modem somehow gets into a bad state, firstuse will still fail with generic error messages (loading the &amp;quot;error&amp;quot; scene when it fails to initialize the modem).  &lt;br /&gt;
&lt;br /&gt;
Apparently changing  (commenting out the isDevice line?)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
function setUpFirstUse () {&lt;br /&gt;
setupSimulator (); &lt;br /&gt;
// isDevice = true; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and changing both instances of &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
if (PalmSystem.version.match(&amp;quot;desktop&amp;quot;)) {&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
if (true) {&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will cause firstuse to use the same mechanism it does on the emulator and skip testing the CDMA modem.&lt;br /&gt;
&lt;br /&gt;
FIXME:  Would someone please validate this method and perhaps come up with a unified patch to solve both problems in fewer lines?&lt;br /&gt;
&lt;br /&gt;
= Credits=&lt;br /&gt;
Courtesy of pEEf.&lt;br /&gt;
Verified by Ajax.&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_webOS_Graphics&amp;diff=1861</id>
		<title>Patch webOS Graphics</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_webOS_Graphics&amp;diff=1861"/>
		<updated>2009-07-23T17:40:51Z</updated>

		<summary type="html">&lt;p&gt;PEEf: formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Post all of your custom/homemade images relating to the Pre here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= ultraBlack's Submissions=&lt;br /&gt;
&lt;br /&gt;
[[Image:Ultrablack-theme.png]]&lt;br /&gt;
&lt;br /&gt;
== Icons==&lt;br /&gt;
&lt;br /&gt;
=== [http://g.imagehost.org/dl/a727b6a00b71c151815b5fe87d6a77ee/0121/Tux.ico Tux]===&lt;br /&gt;
Preview: [[Image:Tux-icons.png]]&lt;br /&gt;
&lt;br /&gt;
=== [http://g.imagehost.org/dl/438f4729bf7116407c920d73c0af767d/0600/pre.ico Pre - Front]===&lt;br /&gt;
Preview: [[Image:Pre-front.png]]&lt;br /&gt;
&lt;br /&gt;
=== [http://g.imagehost.org/dl/eb3d52053bd34963c530fbe7e331fc07/0004/pre2.ico Pre - Side/Tilt]===&lt;br /&gt;
Preview: [[Image:Pre-sidetilt.png]]&lt;br /&gt;
&lt;br /&gt;
=== [http://g.imagehost.org/dl/eaf15ffaf7e1fa9c87a2cbda79e5e2a1/0994/Touchstone.ico Touchstone]===&lt;br /&gt;
Preview: [[Image:Pre-touchstone.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= JackieRipper's Submissions=&lt;br /&gt;
&lt;br /&gt;
== Tux - got root?==&lt;br /&gt;
&lt;br /&gt;
'''Info:''' To use these for a boot screen, see [[Boot_Themes | Boot Themes]].&lt;br /&gt;
&lt;br /&gt;
[[Image:Jackieripper-palm-logo.png]] &lt;br /&gt;
[[Image:Jackieripper-palm-logo-bright.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= pEEf's Submissions=&lt;br /&gt;
&lt;br /&gt;
== Tux and Blue Glow ==&lt;br /&gt;
&lt;br /&gt;
'''Info:''' To use these for a boot screen, see [[Boot_Themes | Boot Themes]].&lt;br /&gt;
&lt;br /&gt;
[[Image:PEEf-palm-logo.png]]&lt;br /&gt;
[[Image:PEEf-palm-logo-bright.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= [[User:Templarian|Templarian]]'s Submissions =&lt;br /&gt;
&lt;br /&gt;
== Palm Pre Icons (FamFamFam Silk Style) ==&lt;br /&gt;
[[Image:Pre.png]]&lt;br /&gt;
[[Image:Pre_add.png]]&lt;br /&gt;
[[Image:Pre_cancel.png]]&lt;br /&gt;
[[Image:Pre_delete.png]]&lt;br /&gt;
[[Image:Pre_go.png]]&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_webOS_Graphics&amp;diff=1857</id>
		<title>Patch webOS Graphics</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_webOS_Graphics&amp;diff=1857"/>
		<updated>2009-07-23T17:17:57Z</updated>

		<summary type="html">&lt;p&gt;PEEf: added my bootlogos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Post all of your custom/homemade images relating to the Pre here.&lt;br /&gt;
&lt;br /&gt;
= ultraBlack's Submissions=&lt;br /&gt;
&lt;br /&gt;
[[Image:Ultrablack-theme.png]]&lt;br /&gt;
&lt;br /&gt;
== Icons==&lt;br /&gt;
&lt;br /&gt;
=== [http://g.imagehost.org/dl/a727b6a00b71c151815b5fe87d6a77ee/0121/Tux.ico Tux]===&lt;br /&gt;
Preview: [[Image:Tux-icons.png]]&lt;br /&gt;
&lt;br /&gt;
=== [http://g.imagehost.org/dl/438f4729bf7116407c920d73c0af767d/0600/pre.ico Pre - Front]===&lt;br /&gt;
Preview: [[Image:Pre-front.png]]&lt;br /&gt;
&lt;br /&gt;
=== [http://g.imagehost.org/dl/eb3d52053bd34963c530fbe7e331fc07/0004/pre2.ico Pre - Side/Tilt]===&lt;br /&gt;
Preview: [[Image:Pre-sidetilt.png]]&lt;br /&gt;
&lt;br /&gt;
=== [http://g.imagehost.org/dl/eaf15ffaf7e1fa9c87a2cbda79e5e2a1/0994/Touchstone.ico Touchstone]===&lt;br /&gt;
Preview: [[Image:Pre-touchstone.png]]&lt;br /&gt;
&lt;br /&gt;
= JackieRipper's Submissions=&lt;br /&gt;
&lt;br /&gt;
== Tux - got root?==&lt;br /&gt;
&lt;br /&gt;
'''Info:''' To use these for a boot screen, see [[Boot_Themes | Boot Themes]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Jackieripper-palm-logo.png]] &lt;br /&gt;
[[Image:Jackieripper-palm-logo-bright.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= pEEf's Submissions=&lt;br /&gt;
&lt;br /&gt;
== Tux and Blue Glow ==&lt;br /&gt;
&lt;br /&gt;
'''Info:''' To use these for a boot screen, see [[Boot_Themes | Boot Themes]].&lt;br /&gt;
&lt;br /&gt;
[[Image:PEEf-palm-logo.png]]&lt;br /&gt;
[[Image:PEEf-palm-logo-bright.png]]&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=File:PEEf-palm-logo-bright.png&amp;diff=1856</id>
		<title>File:PEEf-palm-logo-bright.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=File:PEEf-palm-logo-bright.png&amp;diff=1856"/>
		<updated>2009-07-23T17:15:38Z</updated>

		<summary type="html">&lt;p&gt;PEEf: uploaded a new version of &amp;quot;Image:PEEf-palm-logo-bright.png&amp;quot;: Reverted to version as of 17:59, 20 July 2009&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://lunaware.com/bootlogo/palm-logo-bright.png&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=File:PEEf-palm-logo.png&amp;diff=1855</id>
		<title>File:PEEf-palm-logo.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=File:PEEf-palm-logo.png&amp;diff=1855"/>
		<updated>2009-07-23T17:15:20Z</updated>

		<summary type="html">&lt;p&gt;PEEf: uploaded a new version of &amp;quot;Image:PEEf-palm-logo.png&amp;quot;: Reverted to version as of 17:58, 20 July 2009&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://lunaware.com/bootlogo/palm-logo.png&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=File:PEEf-palm-logo.png&amp;diff=1854</id>
		<title>File:PEEf-palm-logo.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=File:PEEf-palm-logo.png&amp;diff=1854"/>
		<updated>2009-07-23T17:14:36Z</updated>

		<summary type="html">&lt;p&gt;PEEf: uploaded a new version of &amp;quot;Image:PEEf-palm-logo.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://lunaware.com/bootlogo/palm-logo.png&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=File:PEEf-palm-logo-bright.png&amp;diff=1853</id>
		<title>File:PEEf-palm-logo-bright.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=File:PEEf-palm-logo-bright.png&amp;diff=1853"/>
		<updated>2009-07-23T17:13:36Z</updated>

		<summary type="html">&lt;p&gt;PEEf: uploaded a new version of &amp;quot;Image:PEEf-palm-logo-bright.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://lunaware.com/bootlogo/palm-logo-bright.png&lt;/div&gt;</summary>
		<author><name>PEEf</name></author>
	</entry>
</feed>