Bypassing Palm Pre’s Sprint Activation

Update: This whole process has been automated and “idiot-proofed” by Rod Whitby on his blog.

Last week, I went to pick up a Palm Pre sans a Sprint contract. The Sprint sales person had no problem selling me a $550 Palm Pre, but it was up to me to “Activate” the device. Sadly, I couldn’t find good step by step instructions on how to do this. The best I could find, still was very confusing because it never explained why I was doing the things it was asking me to do.

So here’s a step-by-step tutorial on how to bypass Sprint’s activation for a Palm Pre. Hopefully you can use the webOS Internals tutorial and this to bypass activation. This will enable you to develop apps or use the Palm Pre as a wifi/bt device. Note, you will need to be comfortable with linux command line, tools, and editing files.

First, the goal of this “hack” is to bypass the Sprint Activation but also to enable WiFi so you can create a profile on palm.com without service. We are going to be basically hacking an additional menu item which then brings up the WiFi preferences pane.

  1. Download the WebOS image here.
  2. Unzip the image to a directory say ~/pre, rename the .jar to .zip if you need to. Remember to move the original file out of ~/pre so you can start over. Also we do not want to include this when we finally rebuild the image.
  3. in ~/pre/resources make a new directory webOS/. This lets us untar webOS in a clean directory and rebuild the image easily. directory structure is important when rebuilding the image
  4. move ~/pre/resources/webOS.tar to webOS/
  5. cd ~/pre/resources/webOS and untar webOS.tar. Delete webOS.tar (so that we don’t include the original file when rebuilding the image)
  6. in ~/pre/resources/webOS make a new directory called nova/
  7. move ~/pre/resources/webOS/nova-cust-image-castle.rootfs.tar.gz into nova/.
  8. cd ~/pre/resources/webOS/nova/ and as root untar nova-cust-image-castle.rootfs.tar.gz doing this as root is important!. Delete nova-cust-image-castle.rootfs.tar.gz
  9. If all went well you should now have the webOS image unpacked in ~/pre/resources/webOS/nova. You should also have files in ~/pre/resources/webOS/nova/dev. If you didn’t sudo or missed some steps, you’re doing it wrong. Start over now.
  10. all directories are now relative to ~/pre/resources/webOS/nova/. First, lets bypass the activation app. Edit: usr/palm/applications/com.palm.app.firstuse/app/controllers/app-assistant.js and replace the body of the setUpFirstUse() function
    function setUpFirstUse () {
      setupSimulator(); 
      isDevice = true; 
    }
    
  11. Next, we have to patch the First Use app to bring up the WiFi pref panel. You’re going to need to know a little bit of javascript here, but if you pay attention it should be easy. Edit the file usr/palm/applications/com.palm.app.firstuse/app/controllers/firstuse-util.js. Find the function tapHandler, and change the following block of code:
    var labels = [{label: $L('Emergency call'), command: 'emergency-call'},
          {label: $L('Cancel'), command: 'cancel'}
          ];
    

    to

    var labels = [{label: $L('Emergency call'), command: 'emergency-call'},
          {label: $L('Enable WiFi'), command: 'peef-hack-mode'},
          {label: $L('Cancel'), command: 'cancel'}
          ];
    
  12. In the same file find the function popupChoose and add another else/if branch to the following block (obviously don’t comment out code):
       if(value == "emergency-call") {
          // code commented out for my safety, don't comment out! 
        } else if (value == "customer-care") {
          // code commented out for my safety, don't comment out
        }
    

    to

       if(value == "emergency-call") {
          // code commented out for my safety, don't comment out
        } else if (value == "customer-care") {
          // code commented out for my safety, don't comment out
        } else if (value == "peef-hack-mode") {
          AppAssistant.accountService.peefMode();
        }
    
  13. Next we need to add the function peefMode() to handle our request. In usr/palm/applications/com.palm.app.firstuse/app/models/account-service.js, add the following block of code immediately after the Class.create line (near the top):
    peefMode: function() {
      return new Mojo.Service.Request("palm://com.palm.applicationManager/open", {
        parameters: {
          id: 'com.palm.app.wifi',
          params: {}
        }
      });
    },
    
  14. Now we’re done adding functions we just need to make sure our image is valid. This means correcting the md5′s of the files we touched. This means take the md5 of usr/palm/applications/com.palm.app.firstuse/app/controllers/app-assistant.js, usr/palm/applications/com.palm.app.firstuse/app/controllers/firstuse-util.js, usr/palm/applications/com.palm.app.firstuse/app/models/account-service.js. In OS X that means running md5 usr/palm/applications/com.palm.app.firstuse/app/controllers/app-assistant.js. This will give you a 32 character hash of the file.
  15. Edit usr/lib/ipkg/info/com.palm.app.firstuse.md5sums and replace your new md5′s the 3 files above.
  16. Now we just need to rebuild the image. If you’ve followed my steps above, in ~/pre/resources/webOS/nova run sudo tar cvpzf ../nova-cust-image-castle.rootfs.tar.gz ./
  17. In ~/pre/resources/webOS delete nova/ (rm -rf nova). Now tar up this directory run tar cvf ../webOS.tar ./
  18. In ~/pre/resources delete webOS/ (rm -rf webOS).
  19. Almost done… in ~/pre/META-INF delete JARKEY.*
  20. In ~/pre/META-INF edit MANIFEST.MF and only leave the top 2 lines (ie remove all the SHA-1 hashes in the file)
  21. Now, in ~/pre recreated the image by running jar cvMf webosdoctorp100ewwsprint.jar * (some claim you can just use zip, but I’m not sure about this.)
  22. Now start the firmware flasher by running java -jar webosdoctorp100ewwsprint.jar, follow the steps up until it asks you to plug in the device.
  23. With the device OFF, hold the Volume Up key and plug the device into the machine. Your firmware should start flashing. If your device fails to reboot, just reboot it forcefully by removing the battery.
  24. After booting up, it should be on the “Create Palm Profile” screen. Now we use what we’ve hacked into the image. Tap the phone icon in the corner and you should have an “Enable WiFi” option in the menu! Connect your Pre to a WiFi and now you should be able to create a Palm Profile. (If you can’t exit the WiFi Preference screen after connecting just remove the battery again. You should connect to via WiFi after reboot.)

Whew, if you’ve done everything right you should have a Palm Pre device to develop apps on. Contract free of course.

|  
  • Qiller

    In case somebody uses these instructions, don’t forget step 15.5: update md5 sums in ~/pre/resources/webOS/nova/md5sums for all 4 changed files, app-assistant.js, firstuse-util.js, account-service.js and usr/lib/ipkg/info/com.palm.app.firstuse.md5sums.

    When changing .js files md5′s, make sure you change the ones from firstuse app, not some other app.

  • Van

    Does this work with the new WebOS Update?

  • Wayne

    I just updated the Pre that I bypassed. I’m not sure if this works with webOS 1.2 out of the box but at the very least you can use the older webOS image and the update after the fact.

    If I had to guess it, I would guess that it will still work with webOS 1.2 since the instructions have worked since webOS 1.0.2.

  • Denan

    Hi

    I love your blog.
    My question is when you untar the image (i used both winzip & Powerarchiver) it asks for a replacment (one file over another) so how to aviod this
    Pleesse reply me urgently.

  • Naser

    Hi Guys,

    Is there other way that not using Linux.

    I have WinXP.

    Please advice.

    Naser

  • Julian Siezieniewski

    i meak it on the web os 1.3.1 german and there is wifi and phone do not see the sim card :(

  • Max

    Do you know if the same steps will work on a Bell Palm Pre from Canada?

    Also, I’m running on a WinXP desktop, do I absolutly need a friend who has a Linux OS to do this for me or can I try these steps on my WinXP cpu?

  • Pingback: quick help - TreoCentral.com

  • Pingback: correcting md5 - TreoCentral.com

  • Pingback: Stuck - PreCentral Forums

  • Syed Rizwan

    I have tried this whole process at least 10 times, everything works fine and i see the option of “Enable Wifi’ but when i select nothing happens and i don’t get any window to select WiFi.
    I even tried to create few other functions and called those all works but not the “Wifi”. I’m using 1.3.1 GSM.

  • Nick

    Hi

    I’ve done this numerous times with the O2 release and it comes rom verification errors after the webOS doctor has been recovering the OS for about 5 minutes.

    Would it be possible to put up your working binary?

  • exodus

    Can someone just post a download to a reimaged .jar it would be nice.

  • LEDGIS

    i’d like to know something, im running linux but i cant find the “webOS image” file, are both the webOS doctor and image the same thing just renamed because im just confused…im running a flashed palm pre that was acciedently hard reset and im back to the activation screen i just dont want to pay my local flasher 30$ to bypass and reflash ..the phone still makes calls through cricket im just in need of bypassing the activation screen to go back to normal use…now im not sure if bypassing the activation screen will cause any problems to my flash …if so please inform me before i do anything stuipid’R (I KNOW ITS NOT A WORD BUT “YEAH”)

    on other hands the pre works like a marvel on the cricket wireless carrier i have some new nationwide thing going on with the help of sprint and cricket..im really happy with the “IPHONE KILLER” LMFAO…

    N E ways id really like some help
    reply here or to my email

    bullet213@live.com

    “haha,funny i know,i was 14 when i made my first email get over it”

  • LEDGIS

    ohh and please someone post a like to the webOS image file id like to move things to a faster pace

  • Alesana

    Here is my problem:

    I’m getting an error when I untar nova-cust-image-castle.rootfs.tar.gz file. Sometime I see /dev files, sometime not, but I have the error each time. It ask me to overwrite some files too, don’t really know why.

    What do you mean by UNTAR AS ROOT?

    I tried it on Windows 7 and Linux Utunbu with the same result.

    There’s also few differences between what you show and what I see in my files.

    Exemple:

    Yours:
    var labels = [{label: $L(‘Emergency call’), command:

    Mine:
    labels = [{label: $L(‘Emergency call’), command:

    I need help please …

  • al

    please help me with palm pre im in the profile screen in your page the image link is not found i have windows 7 and dont know if the webos doctor is what i need. and what program do i use to edit the osimage. or if im wrong on all of the above please correct me.

    please help

  • treshonne

    Hi. um im no computer guy…. i have absolutly no idea wat ny of this means. maby i can jus send my fone to u!!!!!!. i would appreciate dat. trea. thanx

  • Hank

    you can use meta-doctor too!