<?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=Noir</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=Noir"/>
	<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/wiki/Special:Contributions/Noir"/>
	<updated>2026-04-15T08:09:48Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Launcher_Hide-Delete_The_NASCAR_App&amp;diff=1363</id>
		<title>Patch Launcher Hide-Delete The NASCAR App</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Launcher_Hide-Delete_The_NASCAR_App&amp;diff=1363"/>
		<updated>2009-07-21T16:14:59Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[rooting | Root your Pre.]]&lt;br /&gt;
[[adding-the-ipkg-repository | Enable the Optware Package Feed]] and install a backdoor.&lt;br /&gt;
&lt;br /&gt;
1. SSH in.&lt;br /&gt;
&lt;br /&gt;
2. Remount the file system as read/write:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== To '''HIDE''' the NASCAR app: ==&lt;br /&gt;
&lt;br /&gt;
3. Bring up the visual editor to edit the application info for the NASCAR app:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
vi /usr/palm/applications/com.handson.app.nascar/appinfo.json&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Press '''i''' to enter insert mode.&lt;br /&gt;
&lt;br /&gt;
5. After the '''&amp;lt;nowiki&amp;gt;&amp;quot;vendorurl&amp;quot;:&amp;quot;http://www.handson.com&amp;quot;&amp;lt;/nowiki&amp;gt;''' line, add another line that says this:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
&amp;quot;visible&amp;quot;: &amp;quot;false&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Press '''&amp;lt;ESC&amp;gt;''' to exit insert mode and go into command mode.&lt;br /&gt;
&lt;br /&gt;
6. Save and quit the file that you are editing:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
:wq&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. Remount the file system as read only:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. You may need to restart your Pre:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
reboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== To '''DELETE''' the NASCAR app: ==&lt;br /&gt;
3a. Back up the app first, in case you ever want it back.  We'll put the files into the USB drive so you can get to them if you want.&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
cp -R /usr/palm/applications/com.handson.app.nascar/ /media/internal/nascar-backup&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4a. Delete the app:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
ipkg remove com.handson.app.nascar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5a. Remount the file system as read only:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6a. You may need to restart your Pre:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
reboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== To '''DELETE''' the Sprint bookmark app: ==&lt;br /&gt;
I figure some people might want to delete the useless Sprint bookmark app (the useless one that says Sprint and takes you to FAQs or Videos) as well.  I just got this to work.  Unfortunately, since I deleted it, I don't have the exact instructions, but here's the general idea.&lt;br /&gt;
&lt;br /&gt;
/var/luna/launchpoints should have a file that is a few numbers in a row.  This is the actual bookmark.  (use vi to confirm it's the correct one).  Delete that.  Then remove the icon by doing ipkg remove com.palm.app.sprintportal similarly to above.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Launcher_Hide-Delete_The_NASCAR_App&amp;diff=1362</id>
		<title>Patch Launcher Hide-Delete The NASCAR App</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Launcher_Hide-Delete_The_NASCAR_App&amp;diff=1362"/>
		<updated>2009-07-21T16:12:51Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[rooting | Root your Pre.]]&lt;br /&gt;
[[adding-the-ipkg-repository | Enable the Optware Package Feed]] and install a backdoor.&lt;br /&gt;
&lt;br /&gt;
1. SSH in.&lt;br /&gt;
&lt;br /&gt;
2. Remount the file system as read/write:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== To '''HIDE''' the NASCAR app: ==&lt;br /&gt;
&lt;br /&gt;
3. Bring up the visual editor to edit the application info for the NASCAR app:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
vi /usr/palm/applications/com.handson.app.nascar/appinfo.json&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Press '''i''' to enter insert mode.&lt;br /&gt;
&lt;br /&gt;
5. After the '''&amp;lt;nowiki&amp;gt;&amp;quot;vendorurl&amp;quot;:&amp;quot;http://www.handson.com&amp;quot;&amp;lt;/nowiki&amp;gt;''' line, add another line that says this:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
&amp;quot;visible&amp;quot;: &amp;quot;false&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Press **&amp;lt;ESC&amp;gt;** to exit insert mode and go into command mode.&lt;br /&gt;
&lt;br /&gt;
6. Save and quit the file that you are editing:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
:wq&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. Remount the file system as read only:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. You may need to restart your Pre:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
reboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== To ''DELETE'' the NASCAR app: ==&lt;br /&gt;
3a. Back up the app first, in case you ever want it back.  We'll put the files into the USB drive so you can get to them if you want.&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
cp -R /usr/palm/applications/com.handson.app.nascar/ /media/internal/nascar-backup&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4a. Delete the app:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
ipkg remove com.handson.app.nascar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5a. Remount the file system as read only:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6a. You may need to restart your Pre:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
reboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== To '''DELETE''' the Sprint bookmark app: ==&lt;br /&gt;
I figure some people might want to delete the useless Sprint bookmark app (the useless one that says Sprint and takes you to FAQs or Videos) as well.  I just got this to work.  Unfortunately, since I deleted it, I don't have the exact instructions, but here's the general idea.&lt;br /&gt;
&lt;br /&gt;
/var/luna/launchpoints should have a file that is a few numbers in a row.  This is the actual bookmark.  (use vi to confirm it's the correct one).  Delete that.  Then remove the icon by doing ipkg remove com.palm.app.sprintportal similarly to above.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Launcher_Hide-Delete_The_NASCAR_App&amp;diff=1361</id>
		<title>Patch Launcher Hide-Delete The NASCAR App</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Launcher_Hide-Delete_The_NASCAR_App&amp;diff=1361"/>
		<updated>2009-07-21T16:12:23Z</updated>

		<summary type="html">&lt;p&gt;Noir: New page:  Root your Pre.  Enable the Optware Package Feed and install a backdoor.  1. SSH in.  2. Remount the file system as read/write: &amp;lt;source lang=te...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[rooting | Root your Pre.]]&lt;br /&gt;
[[adding-the-ipkg-repository | Enable the Optware Package Feed]] and install a backdoor.&lt;br /&gt;
&lt;br /&gt;
1. SSH in.&lt;br /&gt;
&lt;br /&gt;
2. Remount the file system as read/write:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== To '''HIDE''' the NASCAR app: ==&lt;br /&gt;
&lt;br /&gt;
3. Bring up the visual editor to edit the application info for the NASCAR app:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
vi /usr/palm/applications/com.handson.app.nascar/appinfo.json&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Press '''i''' to enter insert mode.&lt;br /&gt;
&lt;br /&gt;
5. After the '''&amp;lt;nowiki&amp;gt;&amp;quot;vendorurl&amp;quot;:&amp;quot;http://www.handson.com&amp;quot;&amp;lt;/nowiki&amp;gt;''' line, add another line that says this:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
&amp;quot;visible&amp;quot;: &amp;quot;false&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Press **&amp;lt;ESC&amp;gt;** to exit insert mode and go into command mode.&lt;br /&gt;
&lt;br /&gt;
6. Save and quit the file that you are editing:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
:wq&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. Remount the file system as read only:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. You may need to restart your Pre:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
reboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== To ''DELETE'' the NASCAR app: ==&lt;br /&gt;
3a. Back up the app first, in case you ever want it back.  We'll put the files into the USB drive so you can get to them if you want.&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
cp -R /usr/palm/applications/com.handson.app.nascar/ /media/internal/nascar-backup&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4a. Delete the app:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
ipkg remove com.handson.app.nascar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5a. Remount the file system as read only:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
6a. You may need to restart your Pre:&lt;br /&gt;
&amp;lt;source lang=text&amp;gt;&lt;br /&gt;
reboot&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== To '''DELETE''' the Sprint bookmark app:&lt;br /&gt;
I figure some people might want to delete the useless Sprint bookmark app (the useless one that says Sprint and takes you to FAQs or Videos) as well.  I just got this to work.  Unfortunately, since I deleted it, I don't have the exact instructions, but here's the general idea.&lt;br /&gt;
&lt;br /&gt;
/var/luna/launchpoints should have a file that is a few numbers in a row.  This is the actual bookmark.  (use vi to confirm it's the correct one).  Delete that.  Then remove the icon by doing ipkg remove com.palm.app.sprintportal similarly to above.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Help:Converting_Pages&amp;diff=1359</id>
		<title>Help:Converting Pages</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Help:Converting_Pages&amp;diff=1359"/>
		<updated>2009-07-21T16:10:38Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please help us convert [[Pages to be Transferred| pages from the old wiki]].&lt;br /&gt;
&lt;br /&gt;
Here are the steps to follow:&lt;br /&gt;
&lt;br /&gt;
# Go to edit on the old page, and copy the source code into your favorite editor.&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;[[[&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;[[&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;]]]&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;**&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;'''&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;{{&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;}}&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[code]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[/code]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Change headings to MediaWiki format: find all lines that start with + or ++ or +++ or ++++ , and edit them so that the line is enclosed in the same number of = signs. For example, &amp;lt;code&amp;gt;++ level 2 header&amp;lt;/code&amp;gt; becomes &amp;lt;code&amp;gt;== level 2 header ==&amp;lt;/code&amp;gt;&lt;br /&gt;
# Create a link to the new article on this wiki by editing a portal page or the article that you want to be the parent of the new article. For example, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Article Name|Link Text]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; yields [[Article Name|Link Text]]. Please name your pages in Title Case.&lt;br /&gt;
# Click on that link to bring up the edit page, and paste in the text from your editor.&lt;br /&gt;
# Perform any clean-up editing required. In particular, you may need to edit links to other pages.&lt;br /&gt;
# Save.&lt;br /&gt;
# Copy the URL of this new page.&lt;br /&gt;
# Go back to edit the old page, and add the following line at the top:&lt;br /&gt;
#: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[module Redirect destination=&amp;quot;&amp;quot;]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Paste the URL in between the quotes.&lt;br /&gt;
# Save.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Help:Converting_Pages&amp;diff=1358</id>
		<title>Help:Converting Pages</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Help:Converting_Pages&amp;diff=1358"/>
		<updated>2009-07-21T16:10:04Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please help us convert [[Pages to be Transferred| pages from the old wiki]].&lt;br /&gt;
&lt;br /&gt;
Here are the steps to follow:&lt;br /&gt;
&lt;br /&gt;
# Go to edit on the old page, and copy the source code into your favorite editor.&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;[[[&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;[[&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;]]]&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;**&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;'''&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;{{&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;}}&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;[[code]]&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;[[/code]]&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/source&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Change headings to MediaWiki format: find all lines that start with + or ++ or +++ or ++++ , and edit them so that the line is enclosed in the same number of = signs. For example, &amp;lt;code&amp;gt;++ level 2 header&amp;lt;/code&amp;gt; becomes &amp;lt;code&amp;gt;== level 2 header ==&amp;lt;/code&amp;gt;&lt;br /&gt;
# Create a link to the new article on this wiki by editing a portal page or the article that you want to be the parent of the new article. For example, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Article Name|Link Text]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; yields [[Article Name|Link Text]]. Please name your pages in Title Case.&lt;br /&gt;
# Click on that link to bring up the edit page, and paste in the text from your editor.&lt;br /&gt;
# Perform any clean-up editing required. In particular, you may need to edit links to other pages.&lt;br /&gt;
# Save.&lt;br /&gt;
# Copy the URL of this new page.&lt;br /&gt;
# Go back to edit the old page, and add the following line at the top:&lt;br /&gt;
#: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[module Redirect destination=&amp;quot;&amp;quot;]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Paste the URL in between the quotes.&lt;br /&gt;
# Save.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1357</id>
		<title>Patch Phone Show Call Duration in the Call Log</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1357"/>
		<updated>2009-07-21T15:40:36Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
==== Show call duration in the call log ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There is now a shell script for executing the commands below if you do not feel comfortable doing the steps below manually. See http://gitorious.org/webos-internals/modifications/commit/3b2e55a22e64b5302b5d45521ccf94fe28db3595&lt;br /&gt;
&lt;br /&gt;
There is a system preference &amp;lt;tt&amp;gt;phoneAppHideCallDuration&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
To set the &amp;lt;tt&amp;gt;phoneAppHideCallDuration&amp;lt;/tt&amp;gt; preference:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# luna-send -n 1 palm:''com.palm.systemservice/setPreferences '{&amp;quot;phoneAppHideCallDuration&amp;quot;: false}'&lt;br /&gt;
** Message: serviceResponse Handling: 2, { &amp;quot;returnValue&amp;quot;: true }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we've used &amp;lt;tt&amp;gt;luna-send&amp;lt;/tt&amp;gt; to broadcast a message requesting the &amp;lt;tt&amp;gt;systemservice&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/home/user# cd /var/palm/data/&lt;br /&gt;
root@castle:/var/palm/data# sqlite3 cookies.db&lt;br /&gt;
SQLite version 3.6.1&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt;  update Cookies set value = &amp;quot;%220%22&amp;quot; where domain_head = &amp;quot;.usr.palm.applications.com.palm.&amp;quot; and domain_tail = &amp;quot;app.phone&amp;quot; and path = &amp;quot;/usr/palm/applications/com.palm.app.phone&amp;quot; and &amp;quot;name&amp;quot; = &amp;quot;mojo_cookie_hidecalllogduration&amp;quot;;&lt;br /&gt;
sqlite&amp;gt; .exit&lt;br /&gt;
root@castle:/var/palm/data# exit&lt;br /&gt;
user@castle:~$ exit&lt;br /&gt;
Connection to palm-pre closed.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This time we've used &amp;lt;tt&amp;gt;sqlite3&amp;lt;/tt&amp;gt; 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 &amp;lt;tt&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/tt&amp;gt; (including the quotes). To see your changes, reboot your phone. I've been doing this by holding the power key and turning it off, though presumably a &amp;lt;tt&amp;gt;shutdown -r&amp;lt;/tt&amp;gt; would work as well (I have not tried it though).&lt;br /&gt;
&lt;br /&gt;
''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:'' &amp;lt;tt&amp;gt;select * from Cookies where domain_tail = &amp;quot;app.phone&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enable adding / removing pages in the Launcher app ====&lt;br /&gt;
&lt;br /&gt;
Please see this page for a tutorial: [[Add / Delete Pages in the Launcher]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I'm guessing this was disabled due to usability concerns. Especially with the limited number of apps available right now, there's not a huge need for multiple screens, and deleting a page would result in shifting around icons, which can be a frustrating experience. I'm guessing this will be enabled in the future (perhaps on an &amp;quot;advanced mode&amp;quot; switch, or through a different UI). This time the disabling is directly in the code, there are two bits of commented-out code which we simply need to uncomment. I have intentionally not included the file here out of respect for palm's intellectual property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# vi /usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have that file open, uncomment the two items in the &amp;lt;tt&amp;gt;items&amp;lt;/tt&amp;gt; array defined on line 30. Then scroll down to line 125 in the &amp;lt;tt&amp;gt;handleCommand&amp;lt;/tt&amp;gt; function and uncomment the two commented out cases in the switch statement. Save the file, and reboot. You should have two new menu options, &amp;quot;New Page&amp;quot; and &amp;quot;Delete Page&amp;quot;. It looks like the code will not let you delete your last page, but I wouldn't try it.&lt;br /&gt;
&lt;br /&gt;
Verified to run as written by optik678.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Help:Converting_Pages&amp;diff=1356</id>
		<title>Help:Converting Pages</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Help:Converting_Pages&amp;diff=1356"/>
		<updated>2009-07-21T15:39:36Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please help us convert [[Pages to be Transferred| pages from the old wiki]].&lt;br /&gt;
&lt;br /&gt;
Here are the steps to follow:&lt;br /&gt;
&lt;br /&gt;
# Go to edit on the old page, and copy the source code into your favorite editor.&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;[[[&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;[[&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;]]]&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;]]&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;**&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;'''&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;{{&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Replace all &amp;lt;code&amp;gt;}}&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Change headings to MediaWiki format: find all lines that start with + or ++ or +++ or ++++ , and edit them so that the line is enclosed in the same number of = signs. For example, &amp;lt;code&amp;gt;++ level 2 header&amp;lt;/code&amp;gt; becomes &amp;lt;code&amp;gt;== level 2 header ==&amp;lt;/code&amp;gt;&lt;br /&gt;
# Create a link to the new article on this wiki by editing a portal page or the article that you want to be the parent of the new article. For example, &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Article Name|Link Text]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; yields [[Article Name|Link Text]]. Please name your pages in Title Case.&lt;br /&gt;
# Click on that link to bring up the edit page, and paste in the text from your editor.&lt;br /&gt;
# Perform any clean-up editing required. In particular, you may need to edit links to other pages.&lt;br /&gt;
# Save.&lt;br /&gt;
# Copy the URL of this new page.&lt;br /&gt;
# Go back to edit the old page, and add the following line at the top:&lt;br /&gt;
#: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[module Redirect destination=&amp;quot;&amp;quot;]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Paste the URL in between the quotes.&lt;br /&gt;
# Save.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1355</id>
		<title>Patch Phone Show Call Duration in the Call Log</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1355"/>
		<updated>2009-07-21T15:38:11Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
==== Show call duration in the call log ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There is now a shell script for executing the commands below if you do not feel comfortable doing the steps below manually. See http:''gitorious.org/webos-internals/modifications/commit/3b2e55a22e64b5302b5d45521ccf94fe28db3595&lt;br /&gt;
&lt;br /&gt;
There is a system preference &amp;lt;tt&amp;gt;phoneAppHideCallDuration&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
To set the &amp;lt;tt&amp;gt;phoneAppHideCallDuration&amp;lt;/tt&amp;gt; preference:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# luna-send -n 1 palm:''com.palm.systemservice/setPreferences '{&amp;quot;phoneAppHideCallDuration&amp;quot;: false}'&lt;br /&gt;
** Message: serviceResponse Handling: 2, { &amp;quot;returnValue&amp;quot;: true }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we've used &amp;lt;tt&amp;gt;luna-send&amp;lt;/tt&amp;gt; to broadcast a message requesting the &amp;lt;tt&amp;gt;systemservice&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/home/user# cd /var/palm/data/&lt;br /&gt;
root@castle:/var/palm/data# sqlite3 cookies.db&lt;br /&gt;
SQLite version 3.6.1&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt;  update Cookies set value = &amp;quot;%220%22&amp;quot; where domain_head = &amp;quot;.usr.palm.applications.com.palm.&amp;quot; and domain_tail = &amp;quot;app.phone&amp;quot; and path = &amp;quot;/usr/palm/applications/com.palm.app.phone&amp;quot; and &amp;quot;name&amp;quot; = &amp;quot;mojo_cookie_hidecalllogduration&amp;quot;;&lt;br /&gt;
sqlite&amp;gt; .exit&lt;br /&gt;
root@castle:/var/palm/data# exit&lt;br /&gt;
user@castle:~$ exit&lt;br /&gt;
Connection to palm-pre closed.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This time we've used &amp;lt;tt&amp;gt;sqlite3&amp;lt;/tt&amp;gt; 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 &amp;lt;tt&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/tt&amp;gt; (including the quotes). To see your changes, reboot your phone. I've been doing this by holding the power key and turning it off, though presumably a &amp;lt;tt&amp;gt;shutdown -r&amp;lt;/tt&amp;gt; would work as well (I have not tried it though).&lt;br /&gt;
&lt;br /&gt;
''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:'' &amp;lt;tt&amp;gt;select * from Cookies where domain_tail = &amp;quot;app.phone&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enable adding / removing pages in the Launcher app ====&lt;br /&gt;
&lt;br /&gt;
Please see this page for a tutorial: [[Add / Delete Pages in the Launcher]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I'm guessing this was disabled due to usability concerns. Especially with the limited number of apps available right now, there's not a huge need for multiple screens, and deleting a page would result in shifting around icons, which can be a frustrating experience. I'm guessing this will be enabled in the future (perhaps on an &amp;quot;advanced mode&amp;quot; switch, or through a different UI). This time the disabling is directly in the code, there are two bits of commented-out code which we simply need to uncomment. I have intentionally not included the file here out of respect for palm's intellectual property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# vi /usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have that file open, uncomment the two items in the &amp;lt;tt&amp;gt;items&amp;lt;/tt&amp;gt; array defined on line 30. Then scroll down to line 125 in the &amp;lt;tt&amp;gt;handleCommand&amp;lt;/tt&amp;gt; function and uncomment the two commented out cases in the switch statement. Save the file, and reboot. You should have two new menu options, &amp;quot;New Page&amp;quot; and &amp;quot;Delete Page&amp;quot;. It looks like the code will not let you delete your last page, but I wouldn't try it.&lt;br /&gt;
&lt;br /&gt;
Verified to run as written by optik678.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1354</id>
		<title>Patch Phone Show Call Duration in the Call Log</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1354"/>
		<updated>2009-07-21T15:37:49Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
==== Show call duration in the call log ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There is now a shell script for executing the commands below if you do not feel comfortable doing the steps below manually. See http:''gitorious.org/webos-internals/modifications/commit/3b2e55a22e64b5302b5d45521ccf94fe28db3595&lt;br /&gt;
&lt;br /&gt;
There is a system preference &amp;lt;tt&amp;gt;phoneAppHideCallDuration&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
To set the &amp;lt;tt&amp;gt;phoneAppHideCallDuration&amp;lt;/tt&amp;gt; preference:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# luna-send -n 1 palm:''com.palm.systemservice/setPreferences '{&amp;quot;phoneAppHideCallDuration&amp;quot;: false}'&lt;br /&gt;
** Message: serviceResponse Handling: 2, { &amp;quot;returnValue&amp;quot;: true }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we've used &amp;lt;tt&amp;gt;luna-send&amp;lt;/tt&amp;gt; to broadcast a message requesting the &amp;lt;tt&amp;gt;systemservice&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/home/user# cd /var/palm/data/&lt;br /&gt;
root@castle:/var/palm/data# sqlite3 cookies.db&lt;br /&gt;
SQLite version 3.6.1&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt;  update Cookies set value = &amp;quot;%220%22&amp;quot; where domain_head = &amp;quot;.usr.palm.applications.com.palm.&amp;quot; and domain_tail = &amp;quot;app.phone&amp;quot; and path = &amp;quot;/usr/palm/applications/com.palm.app.phone&amp;quot; and &amp;quot;name&amp;quot; = &amp;quot;mojo_cookie_hidecalllogduration&amp;quot;;&lt;br /&gt;
sqlite&amp;gt; .exit&lt;br /&gt;
root@castle:/var/palm/data# exit&lt;br /&gt;
user@castle:~$ exit&lt;br /&gt;
Connection to palm-pre closed.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This time we've used &amp;lt;tt&amp;gt;sqlite3&amp;lt;/tt&amp;gt; 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 &amp;lt;tt&amp;gt;&amp;quot;0&amp;quot;&amp;lt;/tt&amp;gt; (including the quotes). To see your changes, reboot your phone. I've been doing this by holding the power key and turning it off, though presumably a &amp;lt;tt&amp;gt;shutdown -r&amp;lt;/tt&amp;gt; would work as well (I have not tried it though).&lt;br /&gt;
&lt;br /&gt;
''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:'' &amp;lt;tt&amp;gt;select * from Cookies where domain_tail = &amp;quot;app.phone&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enable adding / removing pages in the Launcher app ====&lt;br /&gt;
&lt;br /&gt;
Please see this page for a tutorial: [[Add / Delete Pages in the Launcher]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I'm guessing this was disabled due to usability concerns. Especially with the limited number of apps available right now, there's not a huge need for multiple screens, and deleting a page would result in shifting around icons, which can be a frustrating experience. I'm guessing this will be enabled in the future (perhaps on an &amp;quot;advanced mode&amp;quot; switch, or through a different UI). This time the disabling is directly in the code, there are two bits of commented-out code which we simply need to uncomment. I have intentionally not included the file here out of respect for palm's intellectual property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# vi /usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have that file open, uncomment the two items in the {{items}} array defined on line 30. Then scroll down to line 125 in the &amp;lt;tt&amp;gt;handleCommand&amp;lt;/tt&amp;gt; function and uncomment the two commented out cases in the switch statement. Save the file, and reboot. You should have two new menu options, &amp;quot;New Page&amp;quot; and &amp;quot;Delete Page&amp;quot;. It looks like the code will not let you delete your last page, but I wouldn't try it.&lt;br /&gt;
&lt;br /&gt;
Verified to run as written by optik678.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1353</id>
		<title>Patch Phone Show Call Duration in the Call Log</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1353"/>
		<updated>2009-07-21T15:37:07Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
==== Show call duration in the call log ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There is now a shell script for executing the commands below if you do not feel comfortable doing the steps below manually. See http:''gitorious.org/webos-internals/modifications/commit/3b2e55a22e64b5302b5d45521ccf94fe28db3595&lt;br /&gt;
&lt;br /&gt;
There is a system preference &amp;lt;tt&amp;gt;phoneAppHideCallDuration&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
To set the &amp;lt;tt&amp;gt;phoneAppHideCallDuration&amp;lt;/tt&amp;gt; preference:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# luna-send -n 1 palm:''com.palm.systemservice/setPreferences '{&amp;quot;phoneAppHideCallDuration&amp;quot;: false}'&lt;br /&gt;
** Message: serviceResponse Handling: 2, { &amp;quot;returnValue&amp;quot;: true }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here we've used &amp;lt;tt&amp;gt;luna-send&amp;lt;/tt&amp;gt; to broadcast a message requesting the &amp;lt;tt&amp;gt;systemservice&amp;lt;/tt&amp;gt; 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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/home/user# cd /var/palm/data/&lt;br /&gt;
root@castle:/var/palm/data# sqlite3 cookies.db&lt;br /&gt;
SQLite version 3.6.1&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt;  update Cookies set value = &amp;quot;%220%22&amp;quot; where domain_head = &amp;quot;.usr.palm.applications.com.palm.&amp;quot; and domain_tail = &amp;quot;app.phone&amp;quot; and path = &amp;quot;/usr/palm/applications/com.palm.app.phone&amp;quot; and &amp;quot;name&amp;quot; = &amp;quot;mojo_cookie_hidecalllogduration&amp;quot;;&lt;br /&gt;
sqlite&amp;gt; .exit&lt;br /&gt;
root@castle:/var/palm/data# exit&lt;br /&gt;
user@castle:~$ exit&lt;br /&gt;
Connection to palm-pre closed.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This time we've used &amp;lt;tt&amp;gt;sqlite3&amp;lt;/tt&amp;gt; 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 {{&amp;quot;0&amp;quot;}} (including the quotes). To see your changes, reboot your phone. I've been doing this by holding the power key and turning it off, though presumably a {{shutdown -r}} would work as well (I have not tried it though).&lt;br /&gt;
&lt;br /&gt;
''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:'' &amp;lt;tt&amp;gt;select * from Cookies where domain_tail = &amp;quot;app.phone&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enable adding / removing pages in the Launcher app ====&lt;br /&gt;
&lt;br /&gt;
Please see this page for a tutorial: [[Add / Delete Pages in the Launcher]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I'm guessing this was disabled due to usability concerns. Especially with the limited number of apps available right now, there's not a huge need for multiple screens, and deleting a page would result in shifting around icons, which can be a frustrating experience. I'm guessing this will be enabled in the future (perhaps on an &amp;quot;advanced mode&amp;quot; switch, or through a different UI). This time the disabling is directly in the code, there are two bits of commented-out code which we simply need to uncomment. I have intentionally not included the file here out of respect for palm's intellectual property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# vi /usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have that file open, uncomment the two items in the {{items}} array defined on line 30. Then scroll down to line 125 in the &amp;lt;tt&amp;gt;handleCommand&amp;lt;/tt&amp;gt; function and uncomment the two commented out cases in the switch statement. Save the file, and reboot. You should have two new menu options, &amp;quot;New Page&amp;quot; and &amp;quot;Delete Page&amp;quot;. It looks like the code will not let you delete your last page, but I wouldn't try it.&lt;br /&gt;
&lt;br /&gt;
Verified to run as written by optik678.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1352</id>
		<title>Patch Phone Show Call Duration in the Call Log</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1352"/>
		<updated>2009-07-21T15:35:40Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
==== Show call duration in the call log ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There is now a shell script for executing the commands below if you do not feel comfortable doing the steps below manually. See http:''gitorious.org/webos-internals/modifications/commit/3b2e55a22e64b5302b5d45521ccf94fe28db3595&lt;br /&gt;
&lt;br /&gt;
There is a system preference &amp;lt;tt&amp;gt;phoneAppHideCallDuration&amp;lt;/tt&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
To set the {{phoneAppHideCallDuration}} preference:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# luna-send -n 1 palm:''com.palm.systemservice/setPreferences '{&amp;quot;phoneAppHideCallDuration&amp;quot;: false}'&lt;br /&gt;
** Message: serviceResponse Handling: 2, { &amp;quot;returnValue&amp;quot;: true }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/home/user# cd /var/palm/data/&lt;br /&gt;
root@castle:/var/palm/data# sqlite3 cookies.db&lt;br /&gt;
SQLite version 3.6.1&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt;  update Cookies set value = &amp;quot;%220%22&amp;quot; where domain_head = &amp;quot;.usr.palm.applications.com.palm.&amp;quot; and domain_tail = &amp;quot;app.phone&amp;quot; and path = &amp;quot;/usr/palm/applications/com.palm.app.phone&amp;quot; and &amp;quot;name&amp;quot; = &amp;quot;mojo_cookie_hidecalllogduration&amp;quot;;&lt;br /&gt;
sqlite&amp;gt; .exit&lt;br /&gt;
root@castle:/var/palm/data# exit&lt;br /&gt;
user@castle:~$ exit&lt;br /&gt;
Connection to palm-pre closed.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 {{&amp;quot;0&amp;quot;}} (including the quotes). To see your changes, reboot your phone. I've been doing this by holding the power key and turning it off, though presumably a {{shutdown -r}} would work as well (I have not tried it though).&lt;br /&gt;
&lt;br /&gt;
''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 = &amp;quot;app.phone&amp;quot;}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enable adding / removing pages in the Launcher app ====&lt;br /&gt;
&lt;br /&gt;
Please see this page for a tutorial: [[Add / Delete Pages in the Launcher]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I'm guessing this was disabled due to usability concerns. Especially with the limited number of apps available right now, there's not a huge need for multiple screens, and deleting a page would result in shifting around icons, which can be a frustrating experience. I'm guessing this will be enabled in the future (perhaps on an &amp;quot;advanced mode&amp;quot; switch, or through a different UI). This time the disabling is directly in the code, there are two bits of commented-out code which we simply need to uncomment. I have intentionally not included the file here out of respect for palm's intellectual property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# vi /usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have that file open, uncomment the two items in the {{items}} array defined on line 30. Then scroll down to line 125 in the {{handleCommand}} function and uncomment the two commented out cases in the switch statement. Save the file, and reboot. You should have two new menu options, &amp;quot;New Page&amp;quot; and &amp;quot;Delete Page&amp;quot;. It looks like the code will not let you delete your last page, but I wouldn't try it.&lt;br /&gt;
&lt;br /&gt;
Verified to run as written by optik678.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1277</id>
		<title>Patch Phone Show Call Duration in the Call Log</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1277"/>
		<updated>2009-07-21T03:47:08Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
==== Show call duration in the call log ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There is now a shell script for executing the commands below if you do not feel comfortable doing the steps below manually. See http:''gitorious.org/webos-internals/modifications/commit/3b2e55a22e64b5302b5d45521ccf94fe28db3595&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
To set the {{phoneAppHideCallDuration}} preference:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# luna-send -n 1 palm:''com.palm.systemservice/setPreferences '{&amp;quot;phoneAppHideCallDuration&amp;quot;: false}'&lt;br /&gt;
** Message: serviceResponse Handling: 2, { &amp;quot;returnValue&amp;quot;: true }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/home/user# cd /var/palm/data/&lt;br /&gt;
root@castle:/var/palm/data# sqlite3 cookies.db&lt;br /&gt;
SQLite version 3.6.1&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt;  update Cookies set value = &amp;quot;%220%22&amp;quot; where domain_head = &amp;quot;.usr.palm.applications.com.palm.&amp;quot; and domain_tail = &amp;quot;app.phone&amp;quot; and path = &amp;quot;/usr/palm/applications/com.palm.app.phone&amp;quot; and &amp;quot;name&amp;quot; = &amp;quot;mojo_cookie_hidecalllogduration&amp;quot;;&lt;br /&gt;
sqlite&amp;gt; .exit&lt;br /&gt;
root@castle:/var/palm/data# exit&lt;br /&gt;
user@castle:~$ exit&lt;br /&gt;
Connection to palm-pre closed.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 {{&amp;quot;0&amp;quot;}} (including the quotes). To see your changes, reboot your phone. I've been doing this by holding the power key and turning it off, though presumably a {{shutdown -r}} would work as well (I have not tried it though).&lt;br /&gt;
&lt;br /&gt;
''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 = &amp;quot;app.phone&amp;quot;}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enable adding / removing pages in the Launcher app ====&lt;br /&gt;
&lt;br /&gt;
Please see this page for a tutorial: [[Add / Delete Pages in the Launcher]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I'm guessing this was disabled due to usability concerns. Especially with the limited number of apps available right now, there's not a huge need for multiple screens, and deleting a page would result in shifting around icons, which can be a frustrating experience. I'm guessing this will be enabled in the future (perhaps on an &amp;quot;advanced mode&amp;quot; switch, or through a different UI). This time the disabling is directly in the code, there are two bits of commented-out code which we simply need to uncomment. I have intentionally not included the file here out of respect for palm's intellectual property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# vi /usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have that file open, uncomment the two items in the {{items}} array defined on line 30. Then scroll down to line 125 in the {{handleCommand}} function and uncomment the two commented out cases in the switch statement. Save the file, and reboot. You should have two new menu options, &amp;quot;New Page&amp;quot; and &amp;quot;Delete Page&amp;quot;. It looks like the code will not let you delete your last page, but I wouldn't try it.&lt;br /&gt;
&lt;br /&gt;
Verified to run as written by optik678.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1276</id>
		<title>Patch Phone Show Call Duration in the Call Log</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1276"/>
		<updated>2009-07-21T03:46:46Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
==== Show call duration in the call log ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There is now a shell script for executing the commands below if you do not feel comfortable doing the steps below manually. See http:''gitorious.org/webos-internals/modifications/commit/3b2e55a22e64b5302b5d45521ccf94fe28db3595&lt;br /&gt;
&lt;br /&gt;
There is a system preference `monospace`phoneAppHideCallDuration`monospace` 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.&lt;br /&gt;
&lt;br /&gt;
To set the {{phoneAppHideCallDuration}} preference:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# luna-send -n 1 palm:''com.palm.systemservice/setPreferences '{&amp;quot;phoneAppHideCallDuration&amp;quot;: false}'&lt;br /&gt;
** Message: serviceResponse Handling: 2, { &amp;quot;returnValue&amp;quot;: true }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/home/user# cd /var/palm/data/&lt;br /&gt;
root@castle:/var/palm/data# sqlite3 cookies.db&lt;br /&gt;
SQLite version 3.6.1&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt;  update Cookies set value = &amp;quot;%220%22&amp;quot; where domain_head = &amp;quot;.usr.palm.applications.com.palm.&amp;quot; and domain_tail = &amp;quot;app.phone&amp;quot; and path = &amp;quot;/usr/palm/applications/com.palm.app.phone&amp;quot; and &amp;quot;name&amp;quot; = &amp;quot;mojo_cookie_hidecalllogduration&amp;quot;;&lt;br /&gt;
sqlite&amp;gt; .exit&lt;br /&gt;
root@castle:/var/palm/data# exit&lt;br /&gt;
user@castle:~$ exit&lt;br /&gt;
Connection to palm-pre closed.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 {{&amp;quot;0&amp;quot;}} (including the quotes). To see your changes, reboot your phone. I've been doing this by holding the power key and turning it off, though presumably a {{shutdown -r}} would work as well (I have not tried it though).&lt;br /&gt;
&lt;br /&gt;
''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 = &amp;quot;app.phone&amp;quot;}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enable adding / removing pages in the Launcher app ====&lt;br /&gt;
&lt;br /&gt;
Please see this page for a tutorial: [[Add / Delete Pages in the Launcher]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I'm guessing this was disabled due to usability concerns. Especially with the limited number of apps available right now, there's not a huge need for multiple screens, and deleting a page would result in shifting around icons, which can be a frustrating experience. I'm guessing this will be enabled in the future (perhaps on an &amp;quot;advanced mode&amp;quot; switch, or through a different UI). This time the disabling is directly in the code, there are two bits of commented-out code which we simply need to uncomment. I have intentionally not included the file here out of respect for palm's intellectual property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# vi /usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have that file open, uncomment the two items in the {{items}} array defined on line 30. Then scroll down to line 125 in the {{handleCommand}} function and uncomment the two commented out cases in the switch statement. Save the file, and reboot. You should have two new menu options, &amp;quot;New Page&amp;quot; and &amp;quot;Delete Page&amp;quot;. It looks like the code will not let you delete your last page, but I wouldn't try it.&lt;br /&gt;
&lt;br /&gt;
Verified to run as written by optik678.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1275</id>
		<title>Patch Phone Show Call Duration in the Call Log</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1275"/>
		<updated>2009-07-21T03:45:57Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
==== Show call duration in the call log ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There is now a shell script for executing the commands below if you do not feel comfortable doing the steps below manually. See http:''gitorious.org/webos-internals/modifications/commit/3b2e55a22e64b5302b5d45521ccf94fe28db3595&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
To set the {{phoneAppHideCallDuration}} preference:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# luna-send -n 1 palm:''com.palm.systemservice/setPreferences '{&amp;quot;phoneAppHideCallDuration&amp;quot;: false}'&lt;br /&gt;
** Message: serviceResponse Handling: 2, { &amp;quot;returnValue&amp;quot;: true }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/home/user# cd /var/palm/data/&lt;br /&gt;
root@castle:/var/palm/data# sqlite3 cookies.db&lt;br /&gt;
SQLite version 3.6.1&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt;  update Cookies set value = &amp;quot;%220%22&amp;quot; where domain_head = &amp;quot;.usr.palm.applications.com.palm.&amp;quot; and domain_tail = &amp;quot;app.phone&amp;quot; and path = &amp;quot;/usr/palm/applications/com.palm.app.phone&amp;quot; and &amp;quot;name&amp;quot; = &amp;quot;mojo_cookie_hidecalllogduration&amp;quot;;&lt;br /&gt;
sqlite&amp;gt; .exit&lt;br /&gt;
root@castle:/var/palm/data# exit&lt;br /&gt;
user@castle:~$ exit&lt;br /&gt;
Connection to palm-pre closed.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 {{&amp;quot;0&amp;quot;}} (including the quotes). To see your changes, reboot your phone. I've been doing this by holding the power key and turning it off, though presumably a {{shutdown -r}} would work as well (I have not tried it though).&lt;br /&gt;
&lt;br /&gt;
''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 = &amp;quot;app.phone&amp;quot;}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enable adding / removing pages in the Launcher app ====&lt;br /&gt;
&lt;br /&gt;
Please see this page for a tutorial: [[Add / Delete Pages in the Launcher]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I'm guessing this was disabled due to usability concerns. Especially with the limited number of apps available right now, there's not a huge need for multiple screens, and deleting a page would result in shifting around icons, which can be a frustrating experience. I'm guessing this will be enabled in the future (perhaps on an &amp;quot;advanced mode&amp;quot; switch, or through a different UI). This time the disabling is directly in the code, there are two bits of commented-out code which we simply need to uncomment. I have intentionally not included the file here out of respect for palm's intellectual property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# vi /usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have that file open, uncomment the two items in the {{items}} array defined on line 30. Then scroll down to line 125 in the {{handleCommand}} function and uncomment the two commented out cases in the switch statement. Save the file, and reboot. You should have two new menu options, &amp;quot;New Page&amp;quot; and &amp;quot;Delete Page&amp;quot;. It looks like the code will not let you delete your last page, but I wouldn't try it.&lt;br /&gt;
&lt;br /&gt;
Verified to run as written by optik678.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1274</id>
		<title>Patch Phone Show Call Duration in the Call Log</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1274"/>
		<updated>2009-07-21T03:31:29Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
==== Show call duration in the call log ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There is now a shell script for executing the commands below if you do not feel comfortable doing the steps below manually. See http:''gitorious.org/webos-internals/modifications/commit/3b2e55a22e64b5302b5d45521ccf94fe28db3595&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
To set the {{phoneAppHideCallDuration}} preference:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# luna-send -n 1 palm:''com.palm.systemservice/setPreferences '{&amp;quot;phoneAppHideCallDuration&amp;quot;: false}'&lt;br /&gt;
** Message: serviceResponse Handling: 2, { &amp;quot;returnValue&amp;quot;: true }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/home/user# cd /var/palm/data/&lt;br /&gt;
root@castle:/var/palm/data# sqlite3 cookies.db&lt;br /&gt;
SQLite version 3.6.1&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt;  update Cookies set value = &amp;quot;%220%22&amp;quot; where domain_head = &amp;quot;.usr.palm.applications.com.palm.&amp;quot; and domain_tail = &amp;quot;app.phone&amp;quot; and path = &amp;quot;/usr/palm/applications/com.palm.app.phone&amp;quot; and &amp;quot;name&amp;quot; = &amp;quot;mojo_cookie_hidecalllogduration&amp;quot;;&lt;br /&gt;
sqlite&amp;gt; .exit&lt;br /&gt;
root@castle:/var/palm/data# exit&lt;br /&gt;
user@castle:~$ exit&lt;br /&gt;
Connection to palm-pre closed.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 {{&amp;quot;0&amp;quot;}} (including the quotes). To see your changes, reboot your phone. I've been doing this by holding the power key and turning it off, though presumably a {{shutdown -r}} would work as well (I have not tried it though).&lt;br /&gt;
&lt;br /&gt;
''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 = &amp;quot;app.phone&amp;quot;}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enable adding / removing pages in the Launcher app ====&lt;br /&gt;
&lt;br /&gt;
Please see this page for a tutorial: [[Add / Delete Pages in the Launcher]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I'm guessing this was disabled due to usability concerns. Especially with the limited number of apps available right now, there's not a huge need for multiple screens, and deleting a page would result in shifting around icons, which can be a frustrating experience. I'm guessing this will be enabled in the future (perhaps on an &amp;quot;advanced mode&amp;quot; switch, or through a different UI). This time the disabling is directly in the code, there are two bits of commented-out code which we simply need to uncomment. I have intentionally not included the file here out of respect for palm's intellectual property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# vi /usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have that file open, uncomment the two items in the {{items}} array defined on line 30. Then scroll down to line 125 in the {{handleCommand}} function and uncomment the two commented out cases in the switch statement. Save the file, and reboot. You should have two new menu options, &amp;quot;New Page&amp;quot; and &amp;quot;Delete Page&amp;quot;. It looks like the code will not let you delete your last page, but I wouldn't try it.&lt;br /&gt;
&lt;br /&gt;
Verified to run as written by optik678.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1273</id>
		<title>Patch Phone Show Call Duration in the Call Log</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Patch_Phone_Show_Call_Duration_in_the_Call_Log&amp;diff=1273"/>
		<updated>2009-07-21T03:14:29Z</updated>

		<summary type="html">&lt;p&gt;Noir: New page: 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 ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
==== Show call duration in the call log ====&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
There is now a shell script for executing the commands below if you do not feel comfortable doing the steps below manually. See http:''gitorious.org/webos-internals/modifications/commit/3b2e55a22e64b5302b5d45521ccf94fe28db3595&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
To set the {{phoneAppHideCallDuration}} preference:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# luna-send -n 1 palm:''com.palm.systemservice/setPreferences '{&amp;quot;phoneAppHideCallDuration&amp;quot;: false}'&lt;br /&gt;
''' Message: serviceResponse Handling: 2, { &amp;quot;returnValue&amp;quot;: true }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/home/user# cd /var/palm/data/&lt;br /&gt;
root@castle:/var/palm/data# sqlite3 cookies.db&lt;br /&gt;
SQLite version 3.6.1&lt;br /&gt;
Enter &amp;quot;.help&amp;quot; for instructions&lt;br /&gt;
Enter SQL statements terminated with a &amp;quot;;&amp;quot;&lt;br /&gt;
sqlite&amp;gt;  update Cookies set value = &amp;quot;%220%22&amp;quot; where domain_head = &amp;quot;.usr.palm.applications.com.palm.&amp;quot; and domain_tail = &amp;quot;app.phone&amp;quot; and path = &amp;quot;/usr/palm/applications/com.palm.app.phone&amp;quot; and &amp;quot;name&amp;quot; = &amp;quot;mojo_cookie_hidecalllogduration&amp;quot;;&lt;br /&gt;
sqlite&amp;gt; .exit&lt;br /&gt;
root@castle:/var/palm/data# exit&lt;br /&gt;
user@castle:~$ exit&lt;br /&gt;
Connection to palm-pre closed.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 {{&amp;quot;0&amp;quot;}} (including the quotes). To see your changes, reboot your phone. I've been doing this by holding the power key and turning it off, though presumably a {{shutdown -r}} would work as well (I have not tried it though).&lt;br /&gt;
&lt;br /&gt;
''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 = &amp;quot;app.phone&amp;quot;}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Enable adding / removing pages in the Launcher app ====&lt;br /&gt;
&lt;br /&gt;
Please see this page for a tutorial: [[Add / Delete Pages in the Launcher]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I'm guessing this was disabled due to usability concerns. Especially with the limited number of apps available right now, there's not a huge need for multiple screens, and deleting a page would result in shifting around icons, which can be a frustrating experience. I'm guessing this will be enabled in the future (perhaps on an &amp;quot;advanced mode&amp;quot; switch, or through a different UI). This time the disabling is directly in the code, there are two bits of commented-out code which we simply need to uncomment. I have intentionally not included the file here out of respect for palm's intellectual property.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
[user@linuxhost]$ ssh -p 222 palm-pre&lt;br /&gt;
user@castle:~$ su&lt;br /&gt;
root@castle:/home/user# vi /usr/lib/luna/system/luna-applauncher/app/controllers/launcher-assistant.js&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have that file open, uncomment the two items in the {{items}} array defined on line 30. Then scroll down to line 125 in the {{handleCommand}} function and uncomment the two commented out cases in the switch statement. Save the file, and reboot. You should have two new menu options, &amp;quot;New Page&amp;quot; and &amp;quot;Delete Page&amp;quot;. It looks like the code will not let you delete your last page, but I wouldn't try it.&lt;br /&gt;
&lt;br /&gt;
Verified to run as written by optik678.&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Track_skipping_using_Volume_Up-Down_Buttons&amp;diff=1245</id>
		<title>Track skipping using Volume Up-Down Buttons</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Track_skipping_using_Volume_Up-Down_Buttons&amp;diff=1245"/>
		<updated>2009-07-21T01:35:27Z</updated>

		<summary type="html">&lt;p&gt;Noir: New page: == Preamble ==  You will need write permissions to the filesystem on your pre to apply this patch.  To get write persmissions execute:  &amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt; rootfs_open -w &amp;lt;/source&amp;gt;  To re...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Preamble ==&lt;br /&gt;
&lt;br /&gt;
You will need write permissions to the filesystem on your pre to apply this patch.&lt;br /&gt;
&lt;br /&gt;
To get write persmissions execute:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
rootfs_open -w&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To remount the filesystem as read-only:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
A headset with in-lined track skip buttons is nice, but when you're using headphones not created for a phone, or you're in a car with the phone connected to the vehicle's sound system, it's nice to be able to skip to the next or previous track with a simple button press. The Blackberry Curve ([[user FXDemolisher]]'s old phone) had this ability by holding down the volume up/down buttons for a second or so. The track would skip and the volume would be restored to normal. This patch aims to add the same functionality to the Pre.&lt;br /&gt;
&lt;br /&gt;
== Procedure ==&lt;br /&gt;
&lt;br /&gt;
This is one long patch that adds several sections to the following file:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
/usr/palm/applications/com.palm.app.musicplayer/app/controllers/localnowplaying-assistant.js&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
##red|Please back up this file before trying this patch.##&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
--- localnowplaying-assistant.js_2009-06-28	Sun Jun 28 17:02:12 2009&lt;br /&gt;
+++ localnowplaying-assistant.js	Sun Jun 28 19:28:29 2009 +++&lt;br /&gt;
@@ -21,6 +21,15 @@&lt;br /&gt;
 			if (title)&lt;br /&gt;
 				this.title = title;&lt;br /&gt;
 				&lt;br /&gt;
+			'' volume key track skip tracking vars&lt;br /&gt;
+			this.currentVolume = -1;&lt;br /&gt;
+			this.currentVolumeScenario = undefined;&lt;br /&gt;
+			this.currentVolumeSubscription = undefined;&lt;br /&gt;
+			this.volumeKeySubscription = undefined;&lt;br /&gt;
+			this.volumeKeyDownVolume = -1;&lt;br /&gt;
+			this.volumeKeyDownScenario = undefined;&lt;br /&gt;
+			this.volumeKeySkipTo = 'none';&lt;br /&gt;
+			this.volumeKeySkipTimer = undefined;&lt;br /&gt;
 		},&lt;br /&gt;
 		&lt;br /&gt;
 		setup: function() {&lt;br /&gt;
@@ -114,14 +123,101 @@&lt;br /&gt;
 			AppAssistant.addActiveScene (this);&lt;br /&gt;
 			this.refreshAppMenu();&lt;br /&gt;
 			&lt;br /&gt;
+			'' subscribe to volume key events&lt;br /&gt;
+			this.volumeKeySubscription = new Mojo.Service.Request(&lt;br /&gt;
+				'palm:''com.palm.keys/audio', &lt;br /&gt;
+				{&lt;br /&gt;
+					method: 'status',&lt;br /&gt;
+					parameters: {'subscribe': true},&lt;br /&gt;
+					onFailure: function() { Mojo.Log.error(&amp;quot;Could not subscribe to volume key events&amp;quot;); },&lt;br /&gt;
+					onSuccess: this.handleVolumeKeys.bind(this), &lt;br /&gt;
+				});&lt;br /&gt;
+				&lt;br /&gt;
+			'' subscribe to audio events - know what current volume is&lt;br /&gt;
+			this.currentVolumeSubscription = new Mojo.Service.Request(&lt;br /&gt;
+				'palm:''com.palm.audio/media',&lt;br /&gt;
+				{&lt;br /&gt;
+					method: 'status',&lt;br /&gt;
+					parameters: {'subscribe': true},&lt;br /&gt;
+					onFailure: function() { Mojo.Log.error(&amp;quot;could not subscribe to volume change events&amp;quot;); },&lt;br /&gt;
+					onSuccess: this.handleMediaNotifications.bind(this),&lt;br /&gt;
+				});&lt;br /&gt;
+			&lt;br /&gt;
 		},&lt;br /&gt;
 		&lt;br /&gt;
 		stopDragHandler: function(dragEvent) {&lt;br /&gt;
 			dragEvent.stop();&lt;br /&gt;
 		},&lt;br /&gt;
 		&lt;br /&gt;
-&lt;br /&gt;
-&lt;br /&gt;
+    		'' handlers for the volume keys, used to skip tracks&lt;br /&gt;
+		handleVolumeKeys: function(payload) {&lt;br /&gt;
+			'' down state, record direction if needed and set timer to skip the track&lt;br /&gt;
+			if(payload.state === 'down') {&lt;br /&gt;
+				'' ignore any presses if we are already tracking a down state                         &lt;br /&gt;
+			        if(this.volumeKeySkipTo != 'none') { return; } &lt;br /&gt;
+				&lt;br /&gt;
+				if(payload.key === 'volume_up') { this.volumeKeySkipTo = 'next'; }&lt;br /&gt;
+				else if (payload.key === 'volume_down') { this.volumeKeySkipTo = 'prev'; }&lt;br /&gt;
+				&lt;br /&gt;
+				'' track the volume when the user pressed the key so that we can return to it&lt;br /&gt;
+				this.volumeKeyDownVolume = this.currentVolume;&lt;br /&gt;
+				this.volumeKeyDownScenario = this.currentScenario;&lt;br /&gt;
+				&lt;br /&gt;
+				'' schedule the check to skip the track &lt;br /&gt;
+				this.volumeKeySkipTimer = this.controller.window.setTimeout(this.checkVolumeKeySkip.bind(this), 1200);&lt;br /&gt;
+			} &lt;br /&gt;
+			&lt;br /&gt;
+			'' up state, clear tracking variables&lt;br /&gt;
+			else {&lt;br /&gt;
+				this.volumeKeySkipTo = 'none';&lt;br /&gt;
+				this.volumeOnLastVolumeKeyPress = -1;&lt;br /&gt;
+				this.volumeKeyDownVolume = -1;&lt;br /&gt;
+				this.volumeKeyDownScenario = undefined;&lt;br /&gt;
+				&lt;br /&gt;
+				if(this.volumeKeySkipTimer) {&lt;br /&gt;
+					this.controller.window.clearTimeout(this.volumeKeySkipTimer);&lt;br /&gt;
+					this.volumeKeySkipTimer = undefined;&lt;br /&gt;
+				}&lt;br /&gt;
+			}&lt;br /&gt;
+		},&lt;br /&gt;
+		&lt;br /&gt;
+		'' check if we need to skip to next/prev track due to user holding down volume keys&lt;br /&gt;
+		checkVolumeKeySkip: function() {&lt;br /&gt;
+			if(this.volumeKeySkipTo === 'next') { this.nextSong(); }&lt;br /&gt;
+			else if (this.volumeKeySkipTo === 'prev') { this.prevSong(true); }&lt;br /&gt;
+			&lt;br /&gt;
+			this.volumeKeySkipTo = 'none';&lt;br /&gt;
+			&lt;br /&gt;
+			'' set up volume restore in after some time, &lt;br /&gt;
+			'' so that user has time to let go of the button&lt;br /&gt;
+			setTimeout(&amp;quot;assistant.restoreVolume('&amp;quot; + this.volumeKeyDownScenario + &amp;quot;', &amp;quot; + this.volumeKeyDownVolume +&amp;quot;)&amp;quot;, 1000);&lt;br /&gt;
+		},&lt;br /&gt;
+		&lt;br /&gt;
+		'' restore volume to the given scenario and level&lt;br /&gt;
+		restoreVolume: function (scenario, volume) {&lt;br /&gt;
+			&lt;br /&gt;
+			'' restore volume to the one when the user held down the button&lt;br /&gt;
+			if(volume &amp;gt;= 0) {&lt;br /&gt;
+				new Mojo.Service.Request('palm:''com.palm.audio/media',&lt;br /&gt;
+					{&lt;br /&gt;
+						method: 'setVolume',&lt;br /&gt;
+						parameters: {scenario: scenario, volume: volume},&lt;br /&gt;
+						onFailure: function() { Mojo.Log.error(&amp;quot;Could not restore volume&amp;quot;); }&lt;br /&gt;
+					});&lt;br /&gt;
+			}&lt;br /&gt;
+		},&lt;br /&gt;
+		&lt;br /&gt;
+		'' record current volume each time it changes&lt;br /&gt;
+		handleMediaNotifications: function(payload) {&lt;br /&gt;
+			if(!payload) { return; }&lt;br /&gt;
+			&lt;br /&gt;
+			if(payload.action == 'changed' &amp;amp;&amp;amp; payload.changed.length == 1 &amp;amp;&amp;amp; (payload.changed.indexOf('volume') != -1)) {&lt;br /&gt;
+				this.currentVolume = payload.volume;&lt;br /&gt;
+				this.currentScenario = payload.scenario;&lt;br /&gt;
+			}	&lt;br /&gt;
+		},&lt;br /&gt;
+		&lt;br /&gt;
+		&lt;br /&gt;
 		handleFlick: function(event){&lt;br /&gt;
 			event.stop();&lt;br /&gt;
 			&lt;br /&gt;
@@ -760,7 +856,15 @@&lt;br /&gt;
 			&lt;br /&gt;
 			AppAssistant.removeActiveScene(this);&lt;br /&gt;
 			&lt;br /&gt;
-&lt;br /&gt;
+			'' clean up subscription to volume keys&lt;br /&gt;
+			if(this.volumeKeySubscription) {&lt;br /&gt;
+				this.volumeKeySubscription.cancel();&lt;br /&gt;
+			}&lt;br /&gt;
+			&lt;br /&gt;
+			'' clean up subscription to volume level&lt;br /&gt;
+			if(this.currentVolumeSubscription) {&lt;br /&gt;
+				this.currentVolumeSubscription.cancel();&lt;br /&gt;
+			}&lt;br /&gt;
 		},&lt;br /&gt;
 		&lt;br /&gt;
 		deactivate: function(){&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
==== Track skip at start up issue ====&lt;br /&gt;
The first volume up/down press in the app causes the track to skip. I am not sure why, it may have to do with the amount of time it takes for the bar assistant to come up and does not give enough time for the volume key up event to propagate. ~ FXDemolisher&lt;br /&gt;
&lt;br /&gt;
==== Timeouts ====&lt;br /&gt;
There are two main timeout values in the code. One controls the amount of time the button has to be held down to skip:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
this.volumeKeySkipTimer = this.controller.window.setTimeout(this.checkVolumeKeySkip.bind(this), 1200);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The other controls the amount of time the user has to lift the finger off the key before the volume is restored to normal:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
setTimeout(&amp;quot;assistant.restoreVolume('&amp;quot; + this.volumeKeyDownScenario + &amp;quot;', &amp;quot; + this.volumeKeyDownVolume +&amp;quot;)&amp;quot;, 1000);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I kept the skip timeout at 1200 so that the volume doesn't have enough time to go too high when you are wearing headphones but is not short enough to cause random skips. The restore timeout is at 1000 and seems to work fine. If you shorten the second timeout the volume may not restore right since the user is still pressing the button when the setVolume call is made.&lt;br /&gt;
&lt;br /&gt;
 ~ FXDemolisher&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Hardware_Key_Track_Skip&amp;diff=1242</id>
		<title>Hardware Key Track Skip</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Hardware_Key_Track_Skip&amp;diff=1242"/>
		<updated>2009-07-21T01:28:49Z</updated>

		<summary type="html">&lt;p&gt;Noir: New page: If you use the included headphones, you can skip to the next track by pressing the microphone mute button twice. A solution is still needed for cases where there are no hardware keys on th...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you use the included headphones, you can skip to the next track by pressing the microphone mute button twice. A solution is still needed for cases where there are no hardware keys on the headphones you're using.&lt;br /&gt;
&lt;br /&gt;
(thanks to IRC user Cr4shOv3rid3 for this tip)&lt;br /&gt;
&lt;br /&gt;
=== Alternative: [[track-skipping-using-volume-up-down-buttons | Using Volume Up/Down Keys]] ===&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=HamachiVPN&amp;diff=1224</id>
		<title>HamachiVPN</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=HamachiVPN&amp;diff=1224"/>
		<updated>2009-07-21T01:15:38Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hamachi VPN for Palm Pre =&lt;br /&gt;
&lt;br /&gt;
This document assumes you're familiar with the Hamachi VPN, specifically the linux version.  It is geared towards a person wanting to &amp;quot;get it working&amp;quot; on the Pre.  If you're not familiar, there are endless Googlable web pages that describe running Hamachi on desktop linux systems you can use for reference.&lt;br /&gt;
&lt;br /&gt;
Become root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
sudo su&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make the filesystem writable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Download the hamachi binary to your pre via wget:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/share&lt;br /&gt;
wget http:''files.hamachi.cc/linux/nokia-770/hamachi-0.9.9.9-20-lnx-n770.tar.gz&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unpack the archive:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
tar zxvf hamachi-0.9.9.9-20-lnx-n770.tar.gz&lt;br /&gt;
cd hamachi-n770-0.9.9.9-20&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hamachi depends on libcrypto.so.0.9.7.  The Palm Pre has libcrypto.so.0.9.8 installed.  I made a symlink, and it worked.  So...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.0.9.7&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit the &amp;quot;install&amp;quot; script using your favorite editor (like vi) to change the installation locations.&lt;br /&gt;
Also fix line 7 or you'll get an error.&lt;br /&gt;
&lt;br /&gt;
I changed it to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
HAMACHI_DST=/opt/bin&lt;br /&gt;
TUNCFG_DST=/opt/sbin&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo Copying hamachi into $HAMACHI_DST ..&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then follow the instructions in the README under Quick Start, but basically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
./install&lt;br /&gt;
/opt/sbin/tuncfg&lt;br /&gt;
hamachi-init&lt;br /&gt;
hamachi start&lt;br /&gt;
hamachi login&lt;br /&gt;
hamachi set-nick &amp;lt;your nickname&amp;gt;&lt;br /&gt;
hamachi join &amp;lt;network&amp;gt;&lt;br /&gt;
hamachi go-online&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hint ==&lt;br /&gt;
&lt;br /&gt;
If you use Hamachi to connect to web services running on your machines at home or elsewhere, you might make your life easier by adding some entries to the /etc/hosts file.  Then you can access your servers by name instead of having to use the Hamachi 5.x.x.x IP addresses.&lt;br /&gt;
&lt;br /&gt;
A simple sample entry in /etc/hosts which would allow you to access your server &amp;quot;beaker&amp;quot; at 5.1.2.3 would be:&lt;br /&gt;
(Add your servers below the &amp;quot;castle&amp;quot; line.)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
127.0.0.1       localhost.localdomain           localhost&lt;br /&gt;
127.0.0.1 castle&lt;br /&gt;
5.1.2.3 beaker&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When done, make the filesystem read-only again:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ping Test ==&lt;br /&gt;
&lt;br /&gt;
When you've got hamachi up, you can try pinging one of your servers. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/var/home/root# ping beaker&lt;br /&gt;
PING beaker (5.1.2.3): 56 data bytes&lt;br /&gt;
64 bytes from 5.1.2.3: seq=0 ttl=128 time=5.493 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=1 ttl=128 time=32.257 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=2 ttl=128 time=56.976 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=3 ttl=128 time=74.249 ms&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sleep/Wake and Battery Impact ==&lt;br /&gt;
On first testing:&lt;br /&gt;
* When the device went to sleep, the VPN went down.&lt;br /&gt;
* When the device woke up, the VPN came back up and was pingable again.&lt;br /&gt;
&lt;br /&gt;
This morning, while at my workstation, and with the Pre idle in my pocket, I noticed my Pre was available/pingable on Hamachi.  I am not totally sure of what the long-term battery impact might be of running Hamachi on the Pre.  I'm not yet sure if it keeps the device &amp;quot;awake&amp;quot; all the time, which clearly would drain the battery.  I have push GMail IMAP going, so I assume there is some kind of connection either being periodically established or constantly maintained.  But I don't know enough about the networking aspects to determine at this time whether running Hamachi all the time will negatively impact the battery.  Feel free to message me if you learn anything.&lt;br /&gt;
&lt;br /&gt;
== Upstart script ==&lt;br /&gt;
This script will start Hamachi up after a reboot.&lt;br /&gt;
&lt;br /&gt;
Place the following script in /etc/event.d/hamachi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
description &amp;quot;Hamachi VPN for WebOS&amp;quot;&lt;br /&gt;
version 1.0&lt;br /&gt;
&lt;br /&gt;
# don't start until the WebOS finishes it's normal boot&lt;br /&gt;
# that way no delay is added to the GUI startup&lt;br /&gt;
start on stopped finish&lt;br /&gt;
stop on runlevel [!2]&lt;br /&gt;
&lt;br /&gt;
console output&lt;br /&gt;
&lt;br /&gt;
script&lt;br /&gt;
  /opt/bin/hamachi -c /var/home/root/.hamachi start 2&amp;gt;&amp;amp;1 /var/home/root/hamachi.log&lt;br /&gt;
end script&lt;br /&gt;
&lt;br /&gt;
pre-start script&lt;br /&gt;
  /opt/sbin/tuncfg&lt;br /&gt;
end script&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=HamachiVPN&amp;diff=1222</id>
		<title>HamachiVPN</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=HamachiVPN&amp;diff=1222"/>
		<updated>2009-07-21T01:14:22Z</updated>

		<summary type="html">&lt;p&gt;Noir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hamachi VPN for Palm Pre =&lt;br /&gt;
&lt;br /&gt;
This document assumes you're familiar with the Hamachi VPN, specifically the linux version.  It is geared towards a person wanting to &amp;quot;get it working&amp;quot; on the Pre.  If you're not familiar, there are endless Googlable web pages that describe running Hamachi on desktop linux systems you can use for reference.&lt;br /&gt;
&lt;br /&gt;
Become root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
sudo su&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make the filesystem writable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Download the hamachi binary to your pre via wget:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
cd /opt/share&lt;br /&gt;
wget http:''files.hamachi.cc/linux/nokia-770/hamachi-0.9.9.9-20-lnx-n770.tar.gz&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unpack the archive:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
tar zxvf hamachi-0.9.9.9-20-lnx-n770.tar.gz&lt;br /&gt;
cd hamachi-n770-0.9.9.9-20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hamachi depends on libcrypto.so.0.9.7.  The Palm Pre has libcrypto.so.0.9.8 installed.  I made a symlink, and it worked.  So...&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.0.9.7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit the &amp;quot;install&amp;quot; script using your favorite editor (like vi) to change the installation locations.&lt;br /&gt;
Also fix line 7 or you'll get an error.&lt;br /&gt;
&lt;br /&gt;
I changed it to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
HAMACHI_DST=/opt/bin&lt;br /&gt;
TUNCFG_DST=/opt/sbin&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo Copying hamachi into $HAMACHI_DST ..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then follow the instructions in the README under Quick Start, but basically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
./install&lt;br /&gt;
/opt/sbin/tuncfg&lt;br /&gt;
hamachi-init&lt;br /&gt;
hamachi start&lt;br /&gt;
hamachi login&lt;br /&gt;
hamachi set-nick &amp;lt;your nickname&amp;gt;&lt;br /&gt;
hamachi join &amp;lt;network&amp;gt;&lt;br /&gt;
hamachi go-online&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hint ==&lt;br /&gt;
&lt;br /&gt;
If you use Hamachi to connect to web services running on your machines at home or elsewhere, you might make your life easier by adding some entries to the /etc/hosts file.  Then you can access your servers by name instead of having to use the Hamachi 5.x.x.x IP addresses.&lt;br /&gt;
&lt;br /&gt;
A simple sample entry in /etc/hosts which would allow you to access your server &amp;quot;beaker&amp;quot; at 5.1.2.3 would be:&lt;br /&gt;
(Add your servers below the &amp;quot;castle&amp;quot; line.)&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
127.0.0.1       localhost.localdomain           localhost&lt;br /&gt;
127.0.0.1 castle&lt;br /&gt;
5.1.2.3 beaker&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When done, make the filesystem read-only again:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ping Test ==&lt;br /&gt;
&lt;br /&gt;
When you've got hamachi up, you can try pinging one of your servers. &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
root@castle:/var/home/root# ping beaker&lt;br /&gt;
PING beaker (5.1.2.3): 56 data bytes&lt;br /&gt;
64 bytes from 5.1.2.3: seq=0 ttl=128 time=5.493 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=1 ttl=128 time=32.257 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=2 ttl=128 time=56.976 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=3 ttl=128 time=74.249 ms&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sleep/Wake and Battery Impact ==&lt;br /&gt;
On first testing:&lt;br /&gt;
* When the device went to sleep, the VPN went down.&lt;br /&gt;
* When the device woke up, the VPN came back up and was pingable again.&lt;br /&gt;
&lt;br /&gt;
This morning, while at my workstation, and with the Pre idle in my pocket, I noticed my Pre was available/pingable on Hamachi.  I am not totally sure of what the long-term battery impact might be of running Hamachi on the Pre.  I'm not yet sure if it keeps the device &amp;quot;awake&amp;quot; all the time, which clearly would drain the battery.  I have push GMail IMAP going, so I assume there is some kind of connection either being periodically established or constantly maintained.  But I don't know enough about the networking aspects to determine at this time whether running Hamachi all the time will negatively impact the battery.  Feel free to message me if you learn anything.&lt;br /&gt;
&lt;br /&gt;
== Upstart script ==&lt;br /&gt;
This script will start Hamachi up after a reboot.&lt;br /&gt;
&lt;br /&gt;
Place the following script in /etc/event.d/hamachi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
description &amp;quot;Hamachi VPN for WebOS&amp;quot;&lt;br /&gt;
version 1.0&lt;br /&gt;
&lt;br /&gt;
# don't start until the WebOS finishes it's normal boot&lt;br /&gt;
# that way no delay is added to the GUI startup&lt;br /&gt;
start on stopped finish&lt;br /&gt;
stop on runlevel [!2]&lt;br /&gt;
&lt;br /&gt;
console output&lt;br /&gt;
&lt;br /&gt;
script&lt;br /&gt;
  /opt/bin/hamachi -c /var/home/root/.hamachi start 2&amp;gt;&amp;amp;1 /var/home/root/hamachi.log&lt;br /&gt;
end script&lt;br /&gt;
&lt;br /&gt;
pre-start script&lt;br /&gt;
  /opt/sbin/tuncfg&lt;br /&gt;
end script&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=HamachiVPN&amp;diff=1215</id>
		<title>HamachiVPN</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=HamachiVPN&amp;diff=1215"/>
		<updated>2009-07-21T01:10:44Z</updated>

		<summary type="html">&lt;p&gt;Noir: New page: = Hamachi VPN for Palm Pre =  This document assumes you're familiar with the Hamachi VPN, specifically the linux version.  It is geared towards a person wanting to &amp;quot;get it working&amp;quot; on the ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Hamachi VPN for Palm Pre =&lt;br /&gt;
&lt;br /&gt;
This document assumes you're familiar with the Hamachi VPN, specifically the linux version.  It is geared towards a person wanting to &amp;quot;get it working&amp;quot; on the Pre.  If you're not familiar, there are endless Googlable web pages that describe running Hamachi on desktop linux systems you can use for reference.&lt;br /&gt;
&lt;br /&gt;
Become root:&lt;br /&gt;
&lt;br /&gt;
[[code]]&lt;br /&gt;
sudo su&lt;br /&gt;
[[/code]]&lt;br /&gt;
&lt;br /&gt;
Make the filesystem writable:&lt;br /&gt;
&lt;br /&gt;
[[code]]&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
[[/code]]&lt;br /&gt;
&lt;br /&gt;
Download the hamachi binary to your pre via wget:&lt;br /&gt;
[[code]]&lt;br /&gt;
cd /opt/share&lt;br /&gt;
wget http:''files.hamachi.cc/linux/nokia-770/hamachi-0.9.9.9-20-lnx-n770.tar.gz&lt;br /&gt;
[[/code]]&lt;br /&gt;
&lt;br /&gt;
Unpack the archive:&lt;br /&gt;
[[code]]&lt;br /&gt;
tar zxvf hamachi-0.9.9.9-20-lnx-n770.tar.gz&lt;br /&gt;
cd hamachi-n770-0.9.9.9-20&lt;br /&gt;
[[/code]]&lt;br /&gt;
&lt;br /&gt;
Hamachi depends on libcrypto.so.0.9.7.  The Palm Pre has libcrypto.so.0.9.8 installed.  I made a symlink, and it worked.  So...&lt;br /&gt;
[[code]]&lt;br /&gt;
ln -s /usr/lib/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.0.9.7&lt;br /&gt;
[[/code]]&lt;br /&gt;
&lt;br /&gt;
Edit the &amp;quot;install&amp;quot; script using your favorite editor (like vi) to change the installation locations.&lt;br /&gt;
Also fix line 7 or you'll get an error.&lt;br /&gt;
&lt;br /&gt;
I changed it to:&lt;br /&gt;
&lt;br /&gt;
[[code]]&lt;br /&gt;
HAMACHI_DST=/opt/bin&lt;br /&gt;
TUNCFG_DST=/opt/sbin&lt;br /&gt;
&lt;br /&gt;
echo&lt;br /&gt;
echo Copying hamachi into $HAMACHI_DST ..&lt;br /&gt;
[[/code]]&lt;br /&gt;
&lt;br /&gt;
Then follow the instructions in the README under Quick Start, but basically:&lt;br /&gt;
&lt;br /&gt;
[[code]]&lt;br /&gt;
./install&lt;br /&gt;
/opt/sbin/tuncfg&lt;br /&gt;
hamachi-init&lt;br /&gt;
hamachi start&lt;br /&gt;
hamachi login&lt;br /&gt;
hamachi set-nick &amp;lt;your nickname&amp;gt;&lt;br /&gt;
hamachi join &amp;lt;network&amp;gt;&lt;br /&gt;
hamachi go-online&lt;br /&gt;
[[/code]]&lt;br /&gt;
&lt;br /&gt;
== Hint ==&lt;br /&gt;
&lt;br /&gt;
If you use Hamachi to connect to web services running on your machines at home or elsewhere, you might make your life easier by adding some entries to the /etc/hosts file.  Then you can access your servers by name instead of having to use the Hamachi 5.x.x.x IP addresses.&lt;br /&gt;
&lt;br /&gt;
A simple sample entry in /etc/hosts which would allow you to access your server &amp;quot;beaker&amp;quot; at 5.1.2.3 would be:&lt;br /&gt;
(Add your servers below the &amp;quot;castle&amp;quot; line.)&lt;br /&gt;
[[code]]&lt;br /&gt;
127.0.0.1       localhost.localdomain           localhost&lt;br /&gt;
127.0.0.1 castle&lt;br /&gt;
5.1.2.3 beaker&lt;br /&gt;
[[/code]]&lt;br /&gt;
&lt;br /&gt;
When done, make the filesystem read-only again:&lt;br /&gt;
[[code]]&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
[[/code]]&lt;br /&gt;
&lt;br /&gt;
== Ping Test ==&lt;br /&gt;
&lt;br /&gt;
When you've got hamachi up, you can try pinging one of your servers. &lt;br /&gt;
[[code]]&lt;br /&gt;
root@castle:/var/home/root# ping beaker&lt;br /&gt;
PING beaker (5.1.2.3): 56 data bytes&lt;br /&gt;
64 bytes from 5.1.2.3: seq=0 ttl=128 time=5.493 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=1 ttl=128 time=32.257 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=2 ttl=128 time=56.976 ms&lt;br /&gt;
64 bytes from 5.1.2.3: seq=3 ttl=128 time=74.249 ms&lt;br /&gt;
[[/code]]&lt;br /&gt;
&lt;br /&gt;
== Sleep/Wake and Battery Impact ==&lt;br /&gt;
On first testing:&lt;br /&gt;
* When the device went to sleep, the VPN went down.&lt;br /&gt;
* When the device woke up, the VPN came back up and was pingable again.&lt;br /&gt;
&lt;br /&gt;
This morning, while at my workstation, and with the Pre idle in my pocket, I noticed my Pre was available/pingable on Hamachi.  I am not totally sure of what the long-term battery impact might be of running Hamachi on the Pre.  I'm not yet sure if it keeps the device &amp;quot;awake&amp;quot; all the time, which clearly would drain the battery.  I have push GMail IMAP going, so I assume there is some kind of connection either being periodically established or constantly maintained.  But I don't know enough about the networking aspects to determine at this time whether running Hamachi all the time will negatively impact the battery.  Feel free to message me if you learn anything.&lt;br /&gt;
&lt;br /&gt;
== Upstart script ==&lt;br /&gt;
This script will start Hamachi up after a reboot.&lt;br /&gt;
&lt;br /&gt;
Place the following script in /etc/event.d/hamachi&lt;br /&gt;
&lt;br /&gt;
[[code]]&lt;br /&gt;
description &amp;quot;Hamachi VPN for WebOS&amp;quot;&lt;br /&gt;
version 1.0&lt;br /&gt;
&lt;br /&gt;
# don't start until the WebOS finishes it's normal boot&lt;br /&gt;
# that way no delay is added to the GUI startup&lt;br /&gt;
start on stopped finish&lt;br /&gt;
stop on runlevel [!2]&lt;br /&gt;
&lt;br /&gt;
console output&lt;br /&gt;
&lt;br /&gt;
script&lt;br /&gt;
  /opt/bin/hamachi -c /var/home/root/.hamachi start 2&amp;gt;&amp;amp;1 /var/home/root/hamachi.log&lt;br /&gt;
end script&lt;br /&gt;
&lt;br /&gt;
pre-start script&lt;br /&gt;
  /opt/sbin/tuncfg&lt;br /&gt;
end script&lt;br /&gt;
[[/code]]&lt;/div&gt;</summary>
		<author><name>Noir</name></author>
	</entry>
</feed>