Patch Phone Show Call Duration in the Call Log

From WebOS Internals
Jump to navigation Jump to search

This page details ways to enable hidden functionality in on the palm pre. You will need root shell access to perform these changes. Follow these instructions at your own risk, if you make an error (or perhaps even if you do it correctly) you risk bricking your phone, voiding your warranty, etc. These instructions assume a working knowledge of unix. Also, note that these changes require rebooting the phone to take effect.

Show call duration in the call log

Sprint always customizes their phones to conceal call duration information. This avoids angry phone calls from confused customers who are surprised when their 1:01 phone call results in 2:00 minutes charged to their account. I can sympathize. However, I won't call complain, and I occasionally want to know how long a call was after the fact.

There is now a shell script for executing the commands below if you do not feel comfortable doing the steps below manually. See

There is a system preference phoneAppHideCallDuration which appears to control this, but it merely provides a default value. The phone app caches the value and saves it as a cookie. As an exercise, I'll show you how to set the preference as well.

To set the phoneAppHideCallDuration preference:

<source lang="text"> [user@linuxhost]$ ssh -p 222 palm-pre user@castle:~$ su root@castle:/home/user# luna-send -n 1 palm://com.palm.systemservice/setPreferences '{"phoneAppHideCallDuration": false}'

    • Message: serviceResponse Handling: 2, { "returnValue": true }


Here we've used luna-send to broadcast a message requesting the systemservice to set a preference (I believe you can actually specify multiple preferences at once, the payload format is a json hashtable). Unfortunately, that only sets the default, so to actually see the change we need to update a cookie stored in the phone app. We'll do that now:

<source lang="text"> root@castle:/home/user# cd /var/palm/data/ root@castle:/var/palm/data# sqlite3 cookies.db SQLite version 3.6.1 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> update Cookies set value = "%220%22" where domain_head = "" and domain_tail = "" and path = "/usr/palm/applications/" and "name" = "mojo_cookie_hidecalllogduration"; sqlite> .exit root@castle:/var/palm/data# exit user@castle:~$ exit Connection to palm-pre closed. </source>

This time we've used sqlite3 to update the cookies database directly. The primary key of the Cookies table (in the cookies database) is (domain_head, domain_tail, path, name), we specify the full key, and update the value. Note the value field is always percent-encoded and in this case represents the string "0" (including the quotes).

To see your changes, you can either reboot your phone or just restart the LunaSysMgr front-end.

  • To reboot: Hold the power key and turning it off or type shutdown -r in the shell.
  • To restart the system manager without rebooting (faster):
initctl stop LunaSysMgr
initctl start LunaSysMgr

Note: if you are typing in the sql by hand, take care you get it correct. If you make a typo and the where portion does not match any records you will not get any feedback. To verify that your update was successful run the following SQL after your issue the update: select * from Cookies where domain_tail = ""