Hey folks!
As evidenced by my post count, I'm a complete newbie with this device. Backstory: 2 years ago, our company moved into an office previously occupied by a games company, and in the process discovered they'd left an impressive amount of electronics behind. Amongst a bunch of old phones, I found a Palm Pre 2 in its original soft case. I knew these phones were a reasonably big deal in their day, so I put it on my junk pile to figure out. I of course ran into many well-known issues, including the SSL limitations and HP making the software hard to get, so I left it to gather dust. Earlier today, I rediscovered it, and set myself a challenge - either get it working, or throw it out. And I actually managed it! I had to piece together a LOT of threads and wiki pages to figure it out. So, for all who might discover their own and want to make it work with Google as of this year, here's a compiled list of links and steps for how I managed it, excluding a lot of dead ends and steps that are no longer applicable. I really hope this guide will help someone out. If I've done something the hard way, then please correct me.

Assumptions:
  • The Pre 2 is blank. You have never used it before, no backups, no personal data on it, no Palm Profile, nada
  • You're familiar with the Linux command line
  • You have access to an x86_64 Ubuntu machine with Java installed (tested with OpenJDK 1.8). This is equally doable on MacOS or Windows; adapt as necessary
  • You have a GSM SIM card suitable for the phone (either right network if it's SIM-locked, or any working SIM if it's unlocked)


The Software
One thing that confused me far more than it should have is the various bits of software floating around. Here's a quick list of the ones I'm aware of and what you need them for:
  • SDK - Software Development Kit. Only really needed if you're planning to write your own apps for the device
  • Novacom - USB communication driver. Generally used with the SDK but absolutely essential for everything here
  • webOS Doctor - factory-reset and recovery, includes the webOS image
  • WebOS Quick Install - a.k.a. WOQI. Friendly, open-source GUI for installing packages (and dependencies) to a Pre over USB from a connected computer
  • Preware - Quick Install equivalent that runs directly on the device
  • devicetool - Small utility written by a forum member that bypasses activation requirements now the Palm/HP servers are gone


Overview of what I did:
  1. update webOS
  2. bypass activation
  3. fix SSL
  4. add OAuth2 support


Step 1: Update webOS

There's a good chance the Pre 2 you're holding is on an older version of webOS - as best I can tell, there are 3 major versions, 2.0.1, 2.1.0 and 2.2.4. To find out, after starting the phone up, go to Device Info.

Best to go with latest & greatest. As automatic updates are no longer available, either web or OTA, the best way to get the phone updated is via Palm's WebOS Doctor software.

Step 1.1: Obtain the Palm Software

As is extensively documented, HP have broken DNS records needed to access the Palm software CDN. The actual files are still there, as of the time of this post; you need to add some entries to your system's /etc/hosts file to bypass the broken DNS - you can't just access directly by IP address, because the Host header is required. There is a way to do this with curl, but the /etc/hosts approach is easy enough.

Step 1.1.1: Modify your Hosts file

Use the following two links:
https://webos-internals.org/wiki/Web...t_webOS_Doctor
https://webos-internals.org/wiki/Web...get_webOS_SDKs
Might as well do them both at the same time!

Step 1.1.2: Download Novacom and webOS Doctor
Novacom was one of the harder things to find a working link for, and what caused me to give up 2 years ago. Eventually I found it here: https://cdn.downloads.palm.com/sdkdo...0.80_amd64.deb

webOS Doctor is specific to your phone. The first 5 characters of the serial number determine the market and factory SIM lock state. Search for those characters on this page and download the relevant webOS Doctor version: https://webos-internals.org/wiki/WebOS_Doctor_Versions I recommend downloading all versions you can get your hands on; if something goes badly wrong, it gives you a better chance of rolling back to a working point, and we don't know how long these links are going to continue to work.

Step 1.1.3: Install Novacom
The Novacom .deb package can be installed in the standard Ubuntu/Debian manner through DPKG:
Code:
sudo dpkg -i path/to/palm-novacom_1.0.80_amd64.deb
sudo apt install -f #This resolves the dependency on libusb
NB: Novacom was developed when Ubuntu still used upstart as a service manager. Modern Ubuntu, from 16.04 onwards, uses systemd instead. As such, out of the box, there is no convenient init script or service definition to run Novacom in the background (it uses a client-server architecture with an always-running daemon, not unlike ADB). I just ran the daemon from a terminal as needed.

Step 1.2: Update to 2.2.4
I have no idea if it was necessary, but I updated in a linear manner - 2.0.1 -> 2.1.0 -> 2.2.4. This ensures low-level firmware gets updated in a predictable manner.

Step 1.2.1: Install a SIM card
The phone's default setup wizard assumes the presence of a SIM card. I'm not sure if devicetool can get around this; I discovered it after this point. Note that the phone takes a mini-SIM, where most devices in 2020 take a micro-SIM or smaller. It's possible to wedge a micro-SIM in the slot temporarily if you don't possess an adapter. With the SIM in place, power on the phone.

Step 1.2.2: Start Novacom
In a separate terminal, simply run
Code:
sudo /opt/Palm/novacom/novacomd
It needs to be run as root to access the USB device at a low level; a warning message will be output if run as a standard user. Fortunately, everything else can be run as a standard user as it all communicates with Novacom.

Step 1.2.3: Connect the phone
Connect the phone with a micro-USB cable to your computer. When prompted by the phone, select Just Charge. This should expose a USB device to the computer, which can be seen with lsusb.

Step 1.2.4: Run webOS Doctor
webOS Doctor does exactly what its introductory screen says - it completely wipes the phone, with minimal confirmation from the user. Don't click Next thinking 'let's see what it does' because it will! An update cycle takes about 10 minutes. A lot of verbose messages can be seen from the command line and are more helpful than the progress bar in the application.
Code:
java -jar path/to//webosdoctorp102ueuna-wr.jar
Follow the prompts and click Next. After the 'Connect Your Device' screen, clicking Next will immediately reboot the phone into its recovery mode and start a reflash of the firmware. Don't disconnect it. Watch the messages on the terminal for progress. Be patient; it seems to stall around the Modem stage. After a few minutes, it should continue. After about 10 minutes, the program should finish and the phone will boot into its new OS.

Step 1.2.5: Enable Developer Mode
NB: This may not be necessary if devicetool can get around this step.
When the phone boots, you'll be presented with two unskippable options to create or login to a Palm Profile. Well, all the Palm Profile stuff is now gone, so it's impossible to go further officially. However, there's a debug option hidden away. At the bottom of the screen, tap the Phone icon to get the dialler up, delete the '911' that's there by default, then dial in '#*3386633#' ('#*DEVMODE#') then Dial. A new screen will appear offering to turn on Developer Mode. Toggle it, then allow the phone to reboot. You'll be able to access the home screen on the next boot.
If necessary, repeat Step 1.2.4 until the phone is installed with webOS 2.2.4.

Step 1.2.6: Set the clock
At least on my phone, it didn't pick up NTP or GSM time. This is particularly noticeable because webOS Doctor resets the clock back to the time of the image. Since certificate validity is dependent on system time being correct, make sure you set the clock correctly at this point.

Step 2: Bypass Activation
The phone expects a Palm Profile account to be present for anything useful to happen. Ergo, we need a Profile in place in some form or another. Fortunately, Grabber5.0 has us covered: https://pivotce.com/2015/12/13/the-u...tivation-tool/.

Step 2.1: Boot the phone into recovery mode
Sort of like an Android device, some system-level modifications can only be made from Recovery mode. The devicetool helpfully detects whether the phone is ready and provides instructions if it isn't. Simply:
  1. Remove the battery and disconnect the USB cable from the device.
  2. While holding the 'volume up' button, attach the USB cable to the device.
  3. Continue to hold the 'volume up' button and insert the battery.
  4. You should see a USB symbol on the screen. If not, repeat steps 1-3.


Step 2.2: Run devicetool
Code:
java -jar path/to/devicetool.jar
It's non-interactive and just does the whole thing automatically. When finished, the phone will reboot, and under Accounts, you'll find an HP webOS Account, under a 'Dr Skipped Firstuse'. You'll need to just ignore this, as the phone essentially won't work without it

At this point, all the phone's features (that still work with the modern web) become available. Next is getting it working with modern Google services.

Step 3: Fix SSL
A lot of problems (and forum threads!) revolve around SSL problems. When HP pulled support for the Pre and webOS in general, SSL root certificates eventually expired. This, as you might imagine, causes all manner of problems. In addition, webOOS only supports SSL using SHA1-hashed certificates by default, which Google has pushed hard to eliminate, so upgrading to support SHA256 is also needed.

Step 3.1: Get WOQI
Get the latest .jar from here: https://github.com/NotAlexNoyle/webo...stall/releases
WOQI, together with Novacom, will allow you to manage homebrew software on the Pre. Run it just like any other .jar:
Code:
java path/to/WebOS-Quick-Install.jar
It should detect the Pre immediately. If it prompts to install Novacom, then novacomd isn't running (see 1.2.2). Once it's running and the phone is connected, click the Device: dropdown and it should refresh with 'Palm Pre 2'

Step 3.2: Update root certs
Click the third button on the right side of the application (under the + and - buttons) to download the available package list from Preware. Under the Applications tab, search for 'cert'. Install frantid's Root Certs Update package.

Step 3.3: Update the system SSL
https://github.com/tgaillar/OpenSSL-Updater/wiki
Whilst this requires subscribing to the Alpha feed on Preware, I found what I view to be a simpler approach that works just as well, and also has the advantage that you're not subscribed to the Alpha channel which has lots of disclaimers around it that it may break things without warning.
  1. Download the .ipkg from here: http://preware.net/alpha/apps/armv7/....8-6_armv7.ipk
  2. In WOQI, click +
  3. Find the .ipkg you just downloaded
  4. Click Install


This is exactly the same package that Preware would download from the Alpha channel, with the notable difference that it's being explicitly installed. I see no problem with doing it this way, as it seems like other Alpha channel software won't accidentally mess up your phone without you realising it. If there's a specific reason for not allowing this approach, I apologise, but please let me know why.

Once the phone reboots, you should have support for SHA256 certificates. We're nearly there.

Step 4: Add OAuth2 Support
All modern web services, especially Google, use OAuth2 instead of usernames and passwords these days. On the one hand, it allows quite granular access to specific groups of APIs, so rogue applications can't trash your entire account. On the other, it requires an entirely different auth system that the Pre was never designed for. Massive thank you to frantid for writing the patch to handle this!
Step 4.1: Patch the Accounts system
  1. Obtain the patch from here: https://forums.webosnation.com/webos...ml#post3005312 - I used google_oauth2_224_1-14.zip, matching the OS version on my Pre.
  2. Extract the .zip
  3. Install the .patch with WOQI


Step 4.2: Add your account
  1. Open Accounts
  2. Click Add Account
  3. Choose Google
  4. Enter your username and password

At this point, you'll be notified that extra setup is needed for OAuth2 before Contacts and Calendar will work. However, email works differently.

Step 4.3: Get OAuth2 Token
  1. Click Change log-in settings
  2. Click OAuth2. A new window will open.
  3. Click Request Token
  4. The browser will open. Log into your Google account, using 2FA where applicable (side note, if you're not using 2FA, please enable it!)
  5. You will now be taken back to the OAuth2 settings. If it's worked, underneath your email address, there will be the token details showing an expiry date of 1 hour from now.

The token will automatically refresh in the background, or you can force it manually by clicking the Refresh Token button.

Step 4.4: Email
As best I can tell, the built-in Email client cannot use the OAuth2 token and must instead be set up for standard IMAPS access using an application-specific password.
  1. Go to https://myaccount.google.com
  2. Click Security
  3. Click Application-Specific Passwords
  4. Give it a name and click Generate
  5. Open Email on the phone. You'll see a notfication to check your login. Click this.
  6. Click Change login details
  7. For the password, enter the ASP you just generated


If I've not missed any details, then finally you should have a Palm Pre 2 with working Google services!

Thanks to:
  • frantid
  • Grabber5.0
  • Preemptive
  • Thibaud
  • Jason Robitaille
  • Everyone else who wrote or contributed to threads or wiki pages


Again, I hope this step by step hopes someone else avoid the dead ends that I ran into, and is valid as of the time of posting. Many of the guides I was reading are years old by now, and sometimes it was difficult to know what was still relevant.

Thanks to everyone who's keeping the Pre alive!