ModemFW Flash

From WebOS Internals
Jump to: navigation, search

DANGER - The Veer is brickable. Do not attempt this on a Veer.

Flashing Modem Firmware

To force flash the phone modem in WebOS you need to use PmModemUpdater.

Why you might need to Flash Modem Firmware

Flashing modem firmware comes in handy if your phone is stuck in phone offline mode and will not connect to a cell signal due to modem firmware corruption. Generally caused by phone being powered down in the middle of "Full Erase" or WebOS Doctor. The phone modem firmware version becomes unknown preventing WebOS Doctor to automatically flash it during operation. To check if your phone modem is unknown type ##radio# (##72346#) in phone app and it should give you your modem firmware version otherwise say unknown.

Your modem firmware might be unknown if you are receiving the following error on a phone that is stuck in First Use without activation.

The error will loop First Use card with this message:

"Phone Error

Your phone is experiencing an error that cannot be resolved.

Visit www.palm.com for help."

Note: a bad flex cable can display similar symptoms to corrupted modem firmware - specifically, intermittent data problems or WebOS Doctor failing at 64% and showing "Error Updating Modem Firmware!!" in the command window. If you don't have the unknown phone modem type, or if the steps on this page don't fix your problem, consider replacing the flex cable.

What You Need First

Before you Force Flash your modem's firmware because it is stuck offline, you should try turning airplane mode on and off, reseting the phone, running WebOS Doctor, and any other safer/easier idea you may have. As flashing modem firmware can potentially harm your modem. Considering this is the message that appears when you run the PmModemUpdater command Warning!

Warning!  Please make sure you have a healthy battery or using a power supply before you do your update
Warning!  You can potentially trashed your modem firmware if system lost the power in the middle of updating firmware
Warning!  To Stop it now, ctrl+c

In all cases you will need Linux access[1]to you phone's shell; you can use novacom, novaterm, or ssh but do not use WebOS Quick Install command line for this. If your phone is stuck on first use run Meta-Doctor[2] to bypass activation and enable developer mode so you can gain Linux access.

How To Do It

<Note these steps are written for an original Sprint Palm Pre you need to adapt for your device>
Step 1 -
First you need to download the WebOS Doctor [3] version that you need. DO NOT USE ANY OTHER DOCTOR THAT IS NOT DESIGNED FOR YOUR PHONE.

Step 2 -
You need to acquire the modem Firmware image from the Jar file do this with the following:

       a. You need to extract the jar file using your favorite archiver program WinRar[4] works fine for windows usres. 
b. Resource directory includes the file webOS.tar you will need to extract this as well.
c. Within webOS.tar you will find two other .tar files you need to transfer castlecdmafw.tar
(Alternatively castleumtsfw.tar for GSM or whatever castle***fw.tar that applys to you as these file names might
differ from each doctor) to your phone's media root directory (connect phone as USB Drive and transfer it to main area not in a folder) d. Eject phone to leave USB drive mode

Step 3 -
Make sure you have plenty of battery and your phone is plugged in to either a computer, wall or touchstone to ensure you will not lose power during flashing.

Step 4 -
You will need to place the castle***fw.tar file that we extracted in step 2 to your phone's /tmp directory to do this use the following command: (this is when you start using your Linux access to phone)
<Note: Replace castle***fw.tar with the file name that applies to you>

mv /media/internal/castle***fw.tar /tmp

Step 5 -
This is when you run the flashing process and remember this may damage your phone's modem if you lose power or flash the wrong FW.
If you are SSHing in please make sure your connection is solid however I would suggest using Novacom[5] or Novaterm[6] via USB (requires WebOS SDK[7] to be installed)
<Note: Replace castle***fw.tar with the file name that applies to you.>
Just wait patiently for two minutes or so for it to complete. Kind of fun to watch and never racking!

PmModemUpdater -f </tmp/castle***fw.tar


If the -f switch above doesn't work: Try:

PmModemUpdater -m -e -o </tmp/castle***fw.tar

and then after that:

PmModemUpdater -f </tmp/castle***fw.tar

When Completed

When you have successfully completed all the steps your phone will magically leave Phone Offline mode and your out put should look like the following.

Successful out put:

root@palm-webos-device:# PmModemUpdater -f </tmp/castlecdma_evt1_fw.tar
$ Modem is powered-on 
Warning!  Please make sure you have a healthy battery or using a power supply before you do your update
Warning!  You can potentially trashed your modem firmware if system lost the power in the middle of updating firmware
Warning!  To Stop it now, ctrl+c

PmModemUpdater Version 5.2.0.8  Dec. 2009 @Palm Inc

$ Creating temp file
$ Processing file ....
(00625/61644287) powerd (stop) running, process 1246
(00625/65214843) powerd (stop) pre-stop, (main) process 1246
(00625/66618652) powerd (stop) stopping, process 1246
(00625/87431640) powerd (stop) killed, process 1246
(00625/88835449) powerd (stop) post-stop
(00625/89903564) powerd (stop) waiting
$ PowerD Stopped successfully!
(00625/121245117) PmWanDaemon (stop) running, process 1187
(00625/122862548) PmWanDaemon (stop) pre-stop, (main) process 1187
(00625/123991699) PmWanDaemon (stop) stopping, process 1187
(00625/128294677) PmWanDaemon (stop) killed, process 1187
(00625/658842773) PmWanDaemon (stop) post-stop
(00625/660490722) PmWanDaemon (stop) waiting
$ PmWanDaemon Stopped successfully!
(00625/687590332) TelephonyInterfaceLayer (stop) running, process 1269
(00625/690001220) TelephonyInterfaceLayer (stop) pre-stop, (main) process 1269
(00625/691923828) TelephonyInterfaceLayer (stop) stopping, process 1269
(00625/694731445) TelephonyInterfaceLayer (stop) killed, process 1269
(00625/712675781) TelephonyInterfaceLayer (stop) post-stop
(00625/713682861) TelephonyInterfaceLayer (stop) waiting
$ TIL Stopped successfully!
** Message: serviceResponse Handling: 2, {"returnValue":true}
Pass-through disabled
$ Passthrough Disabled!.
$ Disable handshaking in ROM
$ Resetting the modem before flashing.....
 01
$ Probing modem.............
DiagListen has problem
ExtendedBuildID cmd code != BUILD_ID_F
*************************************************
*   	Modem In Download  MODE             *
*************************************************
* Current OEMSBL       = CC-CDMA-OEMSBL       
$ Packge FW Version (535) | Modem FW Version(0)
$ Trying to communicate with the modem in DOWNLOAD mode......
*************************************************
*          UMTS Modem   Infomation          *
*************************************************
$ Current OEMSBL       = CC-CDMA-OEMSBL       
**************************************************
$ Start flashing the modem...................... 
$ Flashing  ARMPRG    in  Progress   ......   Done! 
$ Waiting for USB port to settle down.....
$ Comparing partitions   ...... 
$ ****************************************************************
$ ***** BOOTLOADER FLASHING IN PROGRESS! DO NOT LOSE POWER! *****
$ Flashing Bootloader1  Progress   ......   Done! 
$ Flashing Bootloader2  Progress   ......   Done! 
$ Flashing Bootloader3  Progress   ......   Done! 
$ *****              BOOTLOADER FLASHING DONE!          *****
$ Flashing AMSS         Progress   ......   Done! 
$ Resetting modem ...............!
$ Flashing done!Please wait while resetting the modem..... 01
-----------------------------------------------------
$ Firmware Flashing Time: 2 Minutes: 10 Seconds
-----------------------------------------------------
$ Host is re-enumerating the USB......01
$ Waiting for USB port to settle down.....
$ Probing modem.............
*************************************************
*   	Modem Firmware Info                 *
*************************************************
* COMP DATE     = May 14 201015:33:2505/14/2010      
* REL  DATE     = 05/14/2010      
* HW VERSION    = A20700E1    
* MOB MODEL     = AC    
* RADIO TYPE    = CDMA   
* PRL VERSION    =60671
* PRI CRC        =0x264A
* EX BUILD ID   = CC1.6(535)     
*************************************************
$ DVT3 or later device found, no need to config charging!
$ Finished detecting Modem!
$ Restore the NV items to the modem ...............
$ PALM Standard NV Item file not found!
$ NV restore Success!
$ Enable handshaking in ROM  Enable handshaking in ROM 
$ Please wait while restoring TIL/WAN.....
(00782/228728027) powerd (start) waiting
(00782/230253906) powerd (start) starting
(00782/231413574) powerd (start) pre-start, process 2278
(00782/257994384) powerd (start) spawned, process 2281
(00782/259154052) powerd (start) post-start, (main) process 2281
(00782/261046142) powerd (start) running, process 2281
$ powerd Restored successfully!
(00782/336577148) TelephonyInterfaceLayer (start) waiting
(00782/338255615) TelephonyInterfaceLayer (start) starting
(00782/339445800) TelephonyInterfaceLayer (start) pre-start
(00782/340880126) TelephonyInterfaceLayer (start) spawned, process 2285
(00782/342192382) TelephonyInterfaceLayer (start) post-start, (main) process 2285
(00782/349852294) TelephonyInterfaceLayer (start) running, process 2285
$ TIL Restored successfully!
(00784/428892822) PmWanDaemon (start) waiting
(00784/430662841) PmWanDaemon (start) starting
(00784/431883544) PmWanDaemon (start) pre-start
(00784/433165283) PmWanDaemon (start) spawned, process 2313
(00784/434416503) PmWanDaemon (start) post-start, (main) process 2313
(00784/435698242) PmWanDaemon (start) running, process 2313
$ PmWanDaemon Restored successfully!
$ Your device is ready for use.


Thanks sconix for finding this for rebel sim cards and GuyFromNam pointing out that it can be used for flashing fresh modem firm ware