<?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=Morphis</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=Morphis"/>
	<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/wiki/Special:Contributions/Morphis"/>
	<updated>2026-04-16T11:08:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Debug-Testpads&amp;diff=12275</id>
		<title>Debug-Testpads</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Debug-Testpads&amp;diff=12275"/>
		<updated>2010-12-07T21:10:49Z</updated>

		<summary type="html">&lt;p&gt;Morphis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
On the backside of the pre device are some testpads. Currently it is unknown which testpad is used for what. This page will describe the research process and the finals results for finding the for serial and jtag relevant pads.&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Debug-Testpads&amp;diff=12274</id>
		<title>Debug-Testpads</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Debug-Testpads&amp;diff=12274"/>
		<updated>2010-12-07T21:10:27Z</updated>

		<summary type="html">&lt;p&gt;Morphis: Created page with '= Debug Testpads =  On the backside of the pre device are some testpads. Currently it is unknown which testpad is used for what. This page will describe the research process and …'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Debug Testpads =&lt;br /&gt;
&lt;br /&gt;
On the backside of the pre device are some testpads. Currently it is unknown which testpad is used for what. This page will describe the research process and the finals results for finding the for serial and jtag relevant pads.&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Portal:Hardware&amp;diff=12273</id>
		<title>Portal:Hardware</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Portal:Hardware&amp;diff=12273"/>
		<updated>2010-12-07T21:09:06Z</updated>

		<summary type="html">&lt;p&gt;Morphis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__notoc__&lt;br /&gt;
{{portal-header|&lt;br /&gt;
Just list everything related to the hardware. &amp;lt;br&amp;gt;&lt;br /&gt;
Title pages: '''Hardware [description]'''&lt;br /&gt;
}}&lt;br /&gt;
'''[[:Category:Hardware|All pages in Category:Hardware]]'''&lt;br /&gt;
&lt;br /&gt;
* [[External Battery Pack]]&lt;br /&gt;
* [[A2dp]]&lt;br /&gt;
* [[Accelerometer]]&lt;br /&gt;
* [[Ambient Light Sensor]]&lt;br /&gt;
* [[Bluetooth Research]]&lt;br /&gt;
* [[GPS]]&lt;br /&gt;
* [[Hardware]]&lt;br /&gt;
* [[Hardware issues]]&lt;br /&gt;
* [[IR Proximity Sensor]]&lt;br /&gt;
* [[Controlling LEDs from the Shell|LEDS: Control from the shell]]&lt;br /&gt;
* [[More on Leds|LEDS: More information]] &lt;br /&gt;
* [[OMAP vibration device|OMAP vibration device]] &lt;br /&gt;
* [[Torch/Flash|Torch/Flash]] &lt;br /&gt;
* [[USB]]&lt;br /&gt;
* [[WLAN|WLAN / WIFI]]&lt;br /&gt;
* [[Touchscreen]]&lt;br /&gt;
* [[Temperature Sensor]]&lt;br /&gt;
* [[Camera]]&lt;br /&gt;
* [[Battery]]&lt;br /&gt;
* [[PalmPre2HardwareAndDriversInformations| Hardware and drivers used in the palm-pre 2, and how different it is from the palm-pre]]&lt;br /&gt;
* [[Debug-Testpads]]&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=PalmPre2HardwareAndDriversInformations&amp;diff=12058</id>
		<title>PalmPre2HardwareAndDriversInformations</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=PalmPre2HardwareAndDriversInformations&amp;diff=12058"/>
		<updated>2010-11-14T09:46:22Z</updated>

		<summary type="html">&lt;p&gt;Morphis: Add informations about the modem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The palm-pre 2 is now out.&lt;br /&gt;
This page goal is to find out what exact chip,interfaces,drivers are used on the palm-pre 2.&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
=== Modem ===&lt;br /&gt;
&lt;br /&gt;
Modem is exactly the same as in the Pre and Pre Plus devices. The modem protocol is the same too. What Palm changes between Pre/Pre Plus and Pre 2 is the software which drives the modem. But in the end the new log files style helps me (morphis) to get more informations about the protocol to finish the implementation of msmcomm (http://git.freesmartphone.org/?p=msmcomm.git;a=summary).&lt;br /&gt;
&lt;br /&gt;
== Dumps ==&lt;br /&gt;
&lt;br /&gt;
=== ls /dev ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@roadrunner:/dev# ls -l&lt;br /&gt;
crw-rw----    1 root     root     247,   0 Nov 13 18:17 DspBridge&lt;br /&gt;
lrwxrwxrwx    1 root     root           13 Nov 13 18:17 MAKEDEV -&amp;gt; /sbin/MAKEDEV&lt;br /&gt;
lrwxrwxrwx    1 root     root            4 Nov 13 18:17 XOR -&amp;gt; null&lt;br /&gt;
crw-rw----    1 root     root      10,  62 Nov 13 18:17 btuart&lt;br /&gt;
drwxr-xr-x    3 root     root           60 Nov 13 18:17 bus&lt;br /&gt;
drwxr-xr-x    6 root     root          120 Nov 13 18:18 cgroup&lt;br /&gt;
drwxr-xr-x   44 root     root            0 Nov 13 18:17 cgroups&lt;br /&gt;
crw-------    1 root     root       5,   1 Nov 13 18:17 console&lt;br /&gt;
lrwxrwxrwx    1 root     root           11 Nov 13 18:17 core -&amp;gt; /proc/kcore&lt;br /&gt;
c---------    1 root     root     249,   0 Nov 13 18:18 discsock&lt;br /&gt;
drwxr-xr-x    5 root     root          100 Nov 13 18:17 disk&lt;br /&gt;
lrwxrwxrwx    1 root     root            3 Nov 13 18:17 fb -&amp;gt; fb0&lt;br /&gt;
crw-rw----    1 root     video     29,   0 Nov 13 18:17 fb0&lt;br /&gt;
crw-rw----    1 root     video     29,   1 Nov 13 18:17 fb1&lt;br /&gt;
lrwxrwxrwx    1 root     root           13 Nov 13 18:17 fd -&amp;gt; /proc/self/fd&lt;br /&gt;
prw-r--r--    1 root     root            0 Nov 13 18:17 fifo.1&lt;br /&gt;
prw-r--r--    1 root     root            0 Nov 13 18:17 fifo.2&lt;br /&gt;
crw-rw-rw-    1 root     root       1,   7 Nov 13 18:17 full&lt;br /&gt;
crw-rw-rw-    1 root     root      10, 229 Nov 13 18:17 fuse&lt;br /&gt;
drwxr-xr-x    2 root     root           40 Nov 13 18:17 gadget&lt;br /&gt;
lrwxrwxrwx    1 root     root            7 Nov 13 18:17 gps -&amp;gt; ttyACM2&lt;br /&gt;
prw-r--r--    1 root     root            0 Nov 13 18:17 grfifo.1&lt;br /&gt;
prw-r--r--    1 root     root            0 Nov 13 18:17 grfifo.2&lt;br /&gt;
crw-r--r--    1 root     root       1,   5 Nov 13 18:17 heap&lt;br /&gt;
crw-rw----    1 root     root      89,   1 Nov 13 18:17 i2c-1&lt;br /&gt;
crw-rw----    1 root     root      89,   2 Nov 13 18:17 i2c-2&lt;br /&gt;
crw-rw----    1 root     root      89,   3 Nov 13 18:17 i2c-3&lt;br /&gt;
prw-------    1 root     root            0 Nov 13 18:17 initctl&lt;br /&gt;
drwxr-xr-x    2 root     root          300 Nov 13 18:17 input&lt;br /&gt;
crw-r-----    1 root     kmem       1,   2 Nov 13 18:17 kmem&lt;br /&gt;
crw-rw----    1 root     root       1,  11 Nov 13 18:17 kmsg&lt;br /&gt;
srw-rw-rw-    1 root     root            0 Nov 13 18:17 log&lt;br /&gt;
drwxr-xr-x    2 root     root           40 Nov 13 18:17 logdir&lt;br /&gt;
drwxr-xr-x    2 root     root           60 Nov 13 18:17 loop&lt;br /&gt;
brw-r-----    1 root     disk       7,   0 Nov 13 18:17 loop0&lt;br /&gt;
brw-r-----    1 root     disk       7,   1 Nov 13 18:17 loop1&lt;br /&gt;
brw-r-----    1 root     disk       7,   2 Nov 13 18:17 loop2&lt;br /&gt;
brw-r-----    1 root     disk       7,   3 Nov 13 18:17 loop3&lt;br /&gt;
brw-r-----    1 root     disk       7,   4 Nov 13 18:17 loop4&lt;br /&gt;
brw-r-----    1 root     disk       7,   5 Nov 13 18:17 loop5&lt;br /&gt;
brw-r-----    1 root     disk       7,   6 Nov 13 18:17 loop6&lt;br /&gt;
brw-r-----    1 root     disk       7,   7 Nov 13 18:17 loop7&lt;br /&gt;
crw-rw----    1 root     lp        10,  57 Nov 13 18:17 lp8501&lt;br /&gt;
drwxr-xr-x    2 root     root          220 Nov 13 18:17 mapper&lt;br /&gt;
crw-r-----    1 root     kmem       1,   1 Nov 13 18:17 mem&lt;br /&gt;
crw-rw----    1 root     root     253,   0 Nov 13 18:17 memnotify&lt;br /&gt;
brw-r-----    1 root     disk     179,   0 Nov 13 18:17 mmcblk0&lt;br /&gt;
brw-r-----    1 root     disk     179,   1 Nov 13 18:17 mmcblk0p1&lt;br /&gt;
brw-r-----    1 root     disk     179,   2 Nov 13 18:17 mmcblk0p2&lt;br /&gt;
brw-r-----    1 root     disk     179,   3 Nov 13 18:17 mmcblk0p3&lt;br /&gt;
lrwxrwxrwx    1 root     root            7 Nov 13 18:17 modem0 -&amp;gt; ttyACM0&lt;br /&gt;
lrwxrwxrwx    1 root     root            7 Nov 13 18:17 modemdiag -&amp;gt; ttyACM1&lt;br /&gt;
crw-rw----    1 root     root      10,  61 Nov 13 18:17 modemuart&lt;br /&gt;
crw-rw----    1 root     root      10,  60 Nov 13 18:17 nduid&lt;br /&gt;
drwxr-xr-x    2 root     root           60 Nov 13 18:17 net&lt;br /&gt;
crw-rw----    1 root     root      10,  56 Nov 13 18:17 novacom_ep0&lt;br /&gt;
crw-rw----    1 root     root      10,  55 Nov 13 18:17 novacom_ep_in&lt;br /&gt;
crw-rw----    1 root     root      10,  54 Nov 13 18:17 novacom_ep_out&lt;br /&gt;
crw-rw-rw-    1 root     root       1,   3 Nov 13 18:17 null&lt;br /&gt;
crw-rw----    1 root     root     250,   0 Nov 13 18:17 ondemandtcl0&lt;br /&gt;
lrwxrwxrwx    1 root     root            6 Nov 13 18:17 par8501 -&amp;gt; lp8501&lt;br /&gt;
prw-r--r--    1 root     root            0 Nov 13 18:17 pm_server_in&lt;br /&gt;
prw-r--r--    1 root     root            0 Nov 13 18:17 pm_server_out&lt;br /&gt;
crw-------    1 root     root     108,   0 Nov 13 18:17 ppp&lt;br /&gt;
crw-rw-rw-    1 root     tty        5,   2 Nov 13 19:07 ptmx&lt;br /&gt;
drwxr-xr-x    2 root     root            0 Jan  1  1970 pts&lt;br /&gt;
crw-rw-rw-    1 root     root     248,   0 Nov 13 18:17 pvrsrvkm&lt;br /&gt;
lrwxrwxrwx    1 root     root            4 Nov 13 18:17 ram -&amp;gt; ram1&lt;br /&gt;
brw-r-----    1 root     disk       1,   0 Nov 13 18:17 ram0&lt;br /&gt;
brw-r-----    1 root     disk       1,   1 Nov 13 18:17 ram1&lt;br /&gt;
brw-r-----    1 root     disk       1,   2 Nov 13 18:17 ram2&lt;br /&gt;
brw-r-----    1 root     disk       1,   3 Nov 13 18:17 ram3&lt;br /&gt;
lrwxrwxrwx    1 root     root            4 Nov 13 18:17 ramdisk -&amp;gt; ram0&lt;br /&gt;
crw-rw-rw-    1 root     root       1,   8 Nov 13 18:17 random&lt;br /&gt;
lrwxrwxrwx    1 root     root            4 Nov 13 18:17 rtc -&amp;gt; rtc0&lt;br /&gt;
crw-rw----    1 root     root     254,   0 Nov 13 18:17 rtc0&lt;br /&gt;
drwxrwxrwt    2 root     root          280 Nov 13 18:18 shm&lt;br /&gt;
drwxr-xr-x    2 root     root          180 Nov 13 18:17 snd&lt;br /&gt;
lrwxrwxrwx    1 root     root           24 Nov 13 18:17 sndstat -&amp;gt; /proc/asound/oss/sndstat&lt;br /&gt;
lrwxrwxrwx    1 root     root           15 Nov 13 18:17 stderr -&amp;gt; /proc/self/fd/2&lt;br /&gt;
lrwxrwxrwx    1 root     root           15 Nov 13 18:17 stdin -&amp;gt; /proc/self/fd/0&lt;br /&gt;
lrwxrwxrwx    1 root     root           15 Nov 13 18:17 stdout -&amp;gt; /proc/self/fd/1&lt;br /&gt;
drwx------    2 root     root          200 Nov 13 18:17 store&lt;br /&gt;
lrwxrwxrwx    1 root     root           11 Nov 13 18:17 tokens -&amp;gt; /tmp/tokens&lt;br /&gt;
crw-rw----    1 root     root      10,  59 Nov 13 18:17 touchscreen&lt;br /&gt;
drwxr-xr-x    2 root     root           80 Nov 13 18:17 tts&lt;br /&gt;
crw-rw-rw-    1 root     tty        5,   0 Nov 13 18:17 tty&lt;br /&gt;
crw--w----    1 root     tty        4,   0 Nov 13 18:17 tty0&lt;br /&gt;
crw--w----    1 root     tty        4,   1 Nov 13 18:17 tty1&lt;br /&gt;
crw--w----    1 root     tty        4,   2 Nov 13 18:17 tty2&lt;br /&gt;
crw--w----    1 root     tty        4,   3 Nov 13 18:17 tty3&lt;br /&gt;
crw--w----    1 root     tty        4,   4 Nov 13 18:17 tty4&lt;br /&gt;
crw--w----    1 root     tty        4,   5 Nov 13 18:17 tty5&lt;br /&gt;
crw--w----    1 root     tty        4,   6 Nov 13 18:17 tty6&lt;br /&gt;
crw--w----    1 root     tty        4,   7 Nov 13 18:17 tty7&lt;br /&gt;
crw-rw----    1 root     dialout  166,   0 Nov 13 18:20 ttyACM0&lt;br /&gt;
crw-rw----    1 root     dialout  166,   1 Nov 13 18:17 ttyACM1&lt;br /&gt;
crw-rw----    1 root     dialout  166,   2 Nov 13 18:17 ttyACM2&lt;br /&gt;
crw-rw----    1 root     dialout    4,  66 Nov 13 18:17 ttyS2&lt;br /&gt;
crw-rw----    1 root     dialout    4,  67 Nov 13 18:17 ttyS3&lt;br /&gt;
crw-rw-rw-    1 root     root       1,   9 Nov 13 18:17 urandom&lt;br /&gt;
crw-rw----    1 root     root     251,   0 Nov 13 18:17 usbdev1.1_ep00&lt;br /&gt;
crw-rw----    1 root     root     251,   1 Nov 13 18:17 usbdev1.1_ep81&lt;br /&gt;
crw-rw----    1 root     root     251,   2 Nov 13 18:17 usbdev1.2_ep00&lt;br /&gt;
crw-rw----    1 root     root     251,   5 Nov 13 18:17 usbdev1.2_ep02&lt;br /&gt;
crw-rw----    1 root     root     251,   7 Nov 13 18:17 usbdev1.2_ep04&lt;br /&gt;
crw-rw----    1 root     root     251,   9 Nov 13 18:17 usbdev1.2_ep06&lt;br /&gt;
crw-rw----    1 root     root     251,   3 Nov 13 18:17 usbdev1.2_ep81&lt;br /&gt;
crw-rw----    1 root     root     251,   4 Nov 13 18:17 usbdev1.2_ep82&lt;br /&gt;
crw-rw----    1 root     root     251,   6 Nov 13 18:17 usbdev1.2_ep84&lt;br /&gt;
crw-rw----    1 root     root     251,   8 Nov 13 18:17 usbdev1.2_ep86&lt;br /&gt;
crw-rw----    1 root     root     252,   0 Nov 13 18:17 usbmon0&lt;br /&gt;
crw-rw----    1 root     root     252,   1 Nov 13 18:17 usbmon1&lt;br /&gt;
crw-rw----    1 root     tty        7,   0 Nov 13 18:17 vcs&lt;br /&gt;
crw-rw----    1 root     tty        7,   1 Nov 13 18:17 vcs1&lt;br /&gt;
crw-rw----    1 root     tty        7, 128 Nov 13 18:17 vcsa&lt;br /&gt;
crw-rw----    1 root     tty        7, 129 Nov 13 18:17 vcsa1&lt;br /&gt;
lrwxrwxrwx    1 root     root            6 Nov 13 18:17 video -&amp;gt; video0&lt;br /&gt;
crw-rw----    1 root     video     81,   0 Nov 13 18:17 video0&lt;br /&gt;
crw-rw----    1 root     video     81,   1 Nov 13 18:17 video1&lt;br /&gt;
crw-rw----    1 root     video     81,   2 Nov 13 18:17 video2&lt;br /&gt;
crw-rw----    1 root     root      10,  63 Nov 13 18:17 vtmdrv&lt;br /&gt;
crw-rw----    1 root     root      10, 130 Nov 13 18:17 watchdog&lt;br /&gt;
crw-rw-rw-    1 root     root       1,   5 Nov 13 18:17 zero&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ls /dev/input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@roadrunner:/dev/input# ls -l&lt;br /&gt;
lrwxrwxrwx    1 root     root            6 Nov 13 18:17 accelerometer0 -&amp;gt; event5&lt;br /&gt;
crw-r-----    1 root     root      13,  64 Nov 13 18:17 event0&lt;br /&gt;
crw-r-----    1 root     root      13,  65 Nov 13 18:17 event1&lt;br /&gt;
crw-r-----    1 root     root      13,  66 Nov 13 18:17 event2&lt;br /&gt;
crw-r-----    1 root     root      13,  67 Nov 13 18:17 event3&lt;br /&gt;
crw-r-----    1 root     root      13,  68 Nov 13 18:17 event4&lt;br /&gt;
crw-r-----    1 root     root      13,  69 Nov 13 18:17 event5&lt;br /&gt;
lrwxrwxrwx    1 root     root            6 Nov 13 18:17 keypad0 -&amp;gt; event2&lt;br /&gt;
lrwxrwxrwx    1 root     root            6 Nov 13 18:17 keypad1 -&amp;gt; event1&lt;br /&gt;
lrwxrwxrwx    1 root     root            6 Nov 13 18:17 keypad2 -&amp;gt; event0&lt;br /&gt;
lrwxrwxrwx    1 root     root            6 Nov 13 18:17 light0 -&amp;gt; event4&lt;br /&gt;
lrwxrwxrwx    1 root     root            6 Nov 13 18:17 proximity0 -&amp;gt; event3&lt;br /&gt;
crw-------    1 root     root      10, 223 Nov 13 18:17 uinput&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dmesg ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[    0.000000] Initializing cgroup subsys cpu&lt;br /&gt;
[    0.000000] Linux version 2.6.24-palm-joplin-3430 (na@na) (gcc version 4.3.3 (Sourcery G++ 4.3-234) ) #1 48&lt;br /&gt;
[    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=00c5387f&lt;br /&gt;
[    0.000000] Machine: Sirloin OMAP3630 board&lt;br /&gt;
[    0.000000] Memory policy: ECC disabled, Data cache writeback&lt;br /&gt;
[    0.000000] On node 0 totalpages: 128512&lt;br /&gt;
[    0.000000]   DMA zone: 1004 pages used for memmap&lt;br /&gt;
[    0.000000]   DMA zone: 0 pages reserved&lt;br /&gt;
[    0.000000]   DMA zone: 127508 pages, LIFO batch:31&lt;br /&gt;
[    0.000000]   Normal zone: 0 pages used for memmap&lt;br /&gt;
[    0.000000]   Movable zone: 0 pages used for memmap&lt;br /&gt;
[    0.000000] BUG: map for 0x50000000 at 0xe0000000 can not be mapped using pages, ignoring.&lt;br /&gt;
[    0.000000] omap_revision is 0x3630133c, patching legacy revision to 0x34304332&lt;br /&gt;
[    0.000000] OMAP3630ES1.1&lt;br /&gt;
[    0.000000] SRAM: Mapped pa 0x40200000 to va 0xd7000000 size: 0x100000&lt;br /&gt;
[    0.000000] CPU0: D VIPT write-back cache&lt;br /&gt;
[    0.000000] CPU0: cache: 768 bytes, associativity 1, 8 byte lines, 64 sets&lt;br /&gt;
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 127508&lt;br /&gt;
[    0.000000] Kernel command line: root=/dev/mmcblk0p2 rootwait ro fb=0x9f600000 fbcon=disable console=tty1 nduid=[elided] klog=0x9ff00000 klog_len=0x100000  boardtype=castle-roadrunner-pvt dsp_base=0x9f900000 dsp_len=0x600000 HousingA=glass lastboot=reboot&lt;br /&gt;
[    0.000000] OMAP: Initializing Shared Resource Framework&lt;br /&gt;
[    0.000000] GPMC revision 5.0&lt;br /&gt;
[    0.000000] IRQ: Found an INTC at 0xd8200000 (revision 4.0) with 96 interrupts&lt;br /&gt;
[    0.000000] Total of 96 interrupts on 1 active controller&lt;br /&gt;
[    0.000000] OMAP34xx GPIO hardware version 2.5&lt;br /&gt;
[    0.000000] PID hash table entries: 2048 (order: 11, 8192 bytes)&lt;br /&gt;
[    0.000000] Console: colour dummy device 80x30&lt;br /&gt;
[    0.000000] console [tty1] enabled&lt;br /&gt;
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)&lt;br /&gt;
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)&lt;br /&gt;
[    0.060000] Memory: 502MB = 502MB total&lt;br /&gt;
[    0.060000] Memory: 504320KB available (4384K code, 565K data, 172K init)&lt;br /&gt;
[    0.060000] SLUB: Genslabs=11, HWalign=32, Order=0-1, MinObjects=4, CPUs=1, Nodes=1&lt;br /&gt;
[    0.060000] Calibrating delay loop... 249.03 BogoMIPS (lpj=1245184)&lt;br /&gt;
[    0.300000] Mount-cache hash table entries: 512&lt;br /&gt;
[    0.300000] Initializing cgroup subsys ns&lt;br /&gt;
[    0.300000] Initializing cgroup subsys cpuacct&lt;br /&gt;
[    0.300000] CPU: Testing write buffer coherency: ok&lt;br /&gt;
[    0.300000] net_namespace: 64 bytes&lt;br /&gt;
[    0.310000] NET: Registered protocol family 16&lt;br /&gt;
[    0.320000] OMAP Clock subsystem initializing.&lt;br /&gt;
[    0.320000] System clock speed: 26000000, mpu speed: 250000000, l3_speed: 100000000&lt;br /&gt;
[    0.320000] OMAP DMA hardware revision 5.0&lt;br /&gt;
[    0.380000] OMAP: Display hardware version 2.0&lt;br /&gt;
[    0.390000] klog_init: entry&lt;br /&gt;
[    0.390000] klog_init: phys buffer is at 0x9ff00000&lt;br /&gt;
[    0.390000] klog_init: virt address is bf800000&lt;br /&gt;
[    0.390000] klog_init: magic 0x6b6c6f67 version 0x1&lt;br /&gt;
[    0.390000] found klog, len 1048576, using buffer number 3&lt;br /&gt;
[    0.400000] i2c_omap i2c_omap.1: bus 1 rev4.0 at 400 kHz&lt;br /&gt;
[    0.400000] i2c_omap i2c_omap.2: bus 2 rev4.0 at 100 kHz&lt;br /&gt;
[    0.400000] i2c_omap i2c_omap.3: bus 3 rev4.0 at 400 kHz&lt;br /&gt;
[    0.400000] TWL4030: TRY attach Slave TWL4030-ID0 on Adapter OMAP I2C adapter [1]&lt;br /&gt;
[    0.400000] TWL4030: TRY attach Slave TWL4030-ID1 on Adapter OMAP I2C adapter [1]&lt;br /&gt;
[    0.400000] TWL4030: TRY attach Slave TWL4030-ID2 on Adapter OMAP I2C adapter [1]&lt;br /&gt;
[    0.400000] TWL4030: TRY attach Slave TWL4030-ID3 on Adapter OMAP I2C adapter [1]&lt;br /&gt;
[    0.410000] OMAP: Programming TWL sleep/wake scripts...&lt;br /&gt;
[    0.410000] TWL4030 Power Companion Active&lt;br /&gt;
[    0.410000] TWL4030: Driver registration complete.&lt;br /&gt;
[    0.420000] twl4030_usb: Device ATTACHED: Cold plugging&lt;br /&gt;
[    0.420000] twl4030_phy_suspend: irq_disable=0&lt;br /&gt;
[    0.420000] check_musb_idle: can't get otg_state&lt;br /&gt;
[    0.420000] phy_suspend: enter&lt;br /&gt;
[    0.420000] twl4030_phy_resume: mode=1&lt;br /&gt;
[    0.430000] charger_detector: schudule detection (not ready)&lt;br /&gt;
[    0.430000] Initialized TWL4030 USB module&lt;br /&gt;
[    0.430000] SCSI subsystem initialized&lt;br /&gt;
[    0.440000] usbcore: registered new interface driver usbfs&lt;br /&gt;
[    0.440000] usbcore: registered new interface driver hub&lt;br /&gt;
[    0.440000] usbcore: registered new device driver usb&lt;br /&gt;
[    0.440000] musb_hdrc: version 6.0/dbg, musb-dma, peripheral, debug=1&lt;br /&gt;
[    0.440000] HS USB OTG: revision 0x40, sysconfig 0x2014, sysstatus 0x1, intrfsel 0x1, simenable  0x0&lt;br /&gt;
[    0.440000] musb_hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine (X), bulk split (X), HB-ISO Rx (X), HB-ISO Tx (X), SoftConn)&lt;br /&gt;
[    0.440000] musb_hdrc: MHDRC RTL version 1.800 &lt;br /&gt;
[    0.440000] musb_hdrc: setup fifo_mode 4&lt;br /&gt;
[    0.440000] musb_hdrc: 29/31 max ep, 15424/16384 memory&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 0shared, max 64&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 1tx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 1rx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 2tx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 2rx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 3tx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 3rx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 4tx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 4rx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 5tx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 5rx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 6tx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 6rx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 7tx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 7rx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 8tx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 8rx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 9tx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 9rx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 10tx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 10rx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 11tx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 11rx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 12tx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 12rx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 13tx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 13rx, max 512&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 14shared, max 1024&lt;br /&gt;
[    0.440000] musb_hdrc: hw_ep 15shared, max 1024&lt;br /&gt;
[    0.440000] musb_hdrc: USB Peripheral mode controller at bf904000 using DMA, IRQ 92&lt;br /&gt;
[    0.440000] musb_init_controller 2088: PERIPHERAL mode, status 0, dev98&lt;br /&gt;
[    0.440000] Registered /proc/driver/musb_hdrc&lt;br /&gt;
[    0.480000] NET: Registered protocol family 2&lt;br /&gt;
[    0.490000] Time: 32k_counter clocksource has been installed.&lt;br /&gt;
[    0.490000] Switched to high resolution mode on CPU 0&lt;br /&gt;
[    0.570000] IP route cache hash table entries: 4096 (order: 2, 16384 bytes)&lt;br /&gt;
[    0.570000] TCP established hash table entries: 16384 (order: 5, 131072 bytes)&lt;br /&gt;
[    0.570000] TCP bind hash table entries: 16384 (order: 4, 65536 bytes)&lt;br /&gt;
[    0.570000] TCP: Hash tables configured (established 16384 bind 16384)&lt;br /&gt;
[    0.570000] TCP reno registered&lt;br /&gt;
[    0.600000] SmartReflex Driver: Initializing&lt;br /&gt;
[    0.600000] SmartReflex Driver: Using EFUSED nvalues&lt;br /&gt;
[    0.600000] SmartReflex Driver: Initialized&lt;br /&gt;
[    0.600000] OMAP 3430 Power Management subsystem initializing.&lt;br /&gt;
[    0.600000] OMAP: Setting up clocks.&lt;br /&gt;
[    0.600000] OMAP: Change MPU speed: 250 =&amp;gt; 1000 MHz&lt;br /&gt;
[    0.600000] SR1: OPP5: initiate calibration (initial vsel 62)&lt;br /&gt;
[    0.600000] SR1: OPP5: calibrated to 49. add margin.&lt;br /&gt;
[    0.600000] SR1: OPP5: update vsel 0 =&amp;gt; 52&lt;br /&gt;
[    0.600000] OMAP: ARM/DSP clock at 1000/430 MHz.&lt;br /&gt;
[    0.600000] BogoMIPS: 996.14 @1000000 KHz&lt;br /&gt;
[    0.600000] OMAP: Change CORE speed: 100 =&amp;gt; 200 MHz&lt;br /&gt;
[    0.620000] SR2: OPP3: initiate calibration (initial vsel 43)&lt;br /&gt;
[    0.620000] SR2: OPP3: update vsel 0 =&amp;gt; 29&lt;br /&gt;
[    0.650000] OMAP CPU idle driver initializing.&lt;br /&gt;
[    0.650000] create_proc_entry succeeded&lt;br /&gt;
[    0.650000] Initialize power support module&lt;br /&gt;
[    0.650000] OMAP3: PM: Sirloin target registered successfully.&lt;br /&gt;
[    0.650000] TWL4030: Setting up LDOs.&lt;br /&gt;
[    0.660000] input: headset as /class/input/input0&lt;br /&gt;
[    0.660000] Invalid Console Name&lt;br /&gt;
[    0.660000] UART: Invalid console parameter.&lt;br /&gt;
[    0.660000] VFS: Disk quotas dquot_6.5.1&lt;br /&gt;
[    0.660000] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)&lt;br /&gt;
[    0.660000] fuse init (API version 7.9)&lt;br /&gt;
[    0.660000] io scheduler noop registered&lt;br /&gt;
[    0.660000] io scheduler anticipatory registered&lt;br /&gt;
[    0.660000] io scheduler deadline registered&lt;br /&gt;
[    0.660000] io scheduler cfq registered (default)&lt;br /&gt;
[    0.660000] OMAP LCD controller initialized&lt;br /&gt;
[    0.660000] omap24xxfb: Options &amp;quot;&amp;lt;NULL&amp;gt;&amp;quot;&lt;br /&gt;
[    0.660000] omap24xxfb: fb0 frame buffer device &lt;br /&gt;
[    0.660000] omap24xxfb: display mode 320x480x32 hsync 30kHz vsync 61Hz&lt;br /&gt;
[    0.710000] lcd panel ID: 10 81 3&lt;br /&gt;
[    0.710000] LCD panel initialized&lt;br /&gt;
[    0.740000] Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled&lt;br /&gt;
[    0.740000] serial8250.0: ttyS0 at MMIO 0x4806a000 mem 0xd806a000 (irq = 72) is a ST16654&lt;br /&gt;
[    0.740000] serial8250.0: ttyS1 at MMIO 0x4806c000 mem 0xd806c000 (irq = 73) is a ST16654&lt;br /&gt;
[    0.740000] serial8250.0: ttyS2 at MMIO 0x49020000 mem 0xd9020000 (irq = 74) is a ST16654&lt;br /&gt;
[    0.740000] RAMDISK driver initialized: 4 RAM disks of 32768K size 1024 blocksize&lt;br /&gt;
[    0.740000] loop: module loaded&lt;br /&gt;
[    0.740000] Vibrator driver initialized...&lt;br /&gt;
[    0.740000] USERPINS: Configuring irq for gpio=176&lt;br /&gt;
[    0.740000] hsuart1: grap dma chain 5&lt;br /&gt;
[    0.740000] omap_hsuart: creating 'btuart' device on UART 1&lt;br /&gt;
[    0.740000] Trying to free nonexistent resource &amp;lt;000000004806c000-000000004806c01f&amp;gt;&lt;br /&gt;
[    0.740000] hsuart0: grap dma chain 8&lt;br /&gt;
[    0.740000] omap_hsuart: creating 'modemuart' device on UART 0&lt;br /&gt;
[    0.740000] Trying to free nonexistent resource &amp;lt;000000004806a000-000000004806a01f&amp;gt;&lt;br /&gt;
[    0.740000] mdm_act: initializing driver.&lt;br /&gt;
[    0.740000] mdm_act: AWM=157, MWA=152, MWU=155  Timeout 250ms, Uart Port 0. Acm dev (0x0)&lt;br /&gt;
[    0.740000] digest size 20&lt;br /&gt;
[    0.740000] nduid: [elided]&lt;br /&gt;
[    0.750000] PPP generic driver version 2.4.2&lt;br /&gt;
[    0.750000] tun: Universal TUN/TAP device driver, 1.6&lt;br /&gt;
[    0.750000] tun: (C) 1999-2004 Max Krasnyansky &amp;lt;maxk@qualcomm.com&amp;gt;&lt;br /&gt;
[    0.750000] Linux video capture interface: v2.00&lt;br /&gt;
[    0.750000] omap24xxvout: registered device video2 [v4l2]&lt;br /&gt;
[    0.950000] omap34xx-isp: found revision=f0&lt;br /&gt;
[    0.950000] omap34xx-isp: registered v4l2 interface: name=smia 1.0&lt;br /&gt;
[    0.950000] omap34xx-isp: registered v4l2 device: type=1 minor=0&lt;br /&gt;
[    0.950000] omap34xx-isp: registered v4l2 device: type=128 minor=1&lt;br /&gt;
[    0.970000] vx6953: found silicon id 8 nvm v1 (cut-3.0)&lt;br /&gt;
[    0.990000] i2c /dev entries driver&lt;br /&gt;
[    0.990000] charger_detector: schudule detection&lt;br /&gt;
[    0.990000] Driver 'sd' needs updating - please use bus_type methods&lt;br /&gt;
[    0.990000] ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver&lt;br /&gt;
[    0.990000] ohci-omap ohci-omap.0: OMAP OHCI&lt;br /&gt;
[    0.990000] ohci-omap ohci-omap.0: new USB bus registered, assigned bus number 1&lt;br /&gt;
[    0.990000] ohci-omap ohci-omap.0: irq 76, io mem 0x48064400&lt;br /&gt;
[    1.070000] usb_detect_quirks: disable autosuspend for hub! udev=bbff8000&lt;br /&gt;
[    1.070000] usb usb1: configuration #1 chosen from 1 choice&lt;br /&gt;
[    1.070000] hub 1-0:1.0: USB hub found&lt;br /&gt;
[    1.070000] hub 1-0:1.0: 3 ports detected&lt;br /&gt;
[    1.180000] usbcore: registered new interface driver cdc_acm&lt;br /&gt;
[    1.180000] cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters&lt;br /&gt;
[    1.180000] g_rockhopper gadget: serial_number=[elided]&lt;br /&gt;
[    1.180000] mass_storage_function_add&lt;br /&gt;
[    1.180000] gadget_event: enable storage events&lt;br /&gt;
[    1.180000] g_rockhopper gadget: Number of LUNs=1&lt;br /&gt;
[    1.180000] g_rockhopper gadget: mass storage function is added&lt;br /&gt;
[    1.180000] g_rockhopper gadget: Rockhopper Gadget, version: Cinco de Mayo 2009&lt;br /&gt;
[    1.180000] g_rockhopper gadget: g_rockhopper ready&lt;br /&gt;
[    1.210000] input: gpio-keys as /class/input/input1&lt;br /&gt;
[    1.230000] musb_stage2_irq 813: SUSPEND (b_idle) devctl 99 power e0&lt;br /&gt;
[    1.240000] gpio-keys: volume up button released&lt;br /&gt;
[    1.240000] gpio-keys: volume down button released&lt;br /&gt;
[    1.240000] gpio-keys: push to talk button released&lt;br /&gt;
[    1.240000] gpio-keys: power button released&lt;br /&gt;
[    1.240000] gpio-keys: core navi button released&lt;br /&gt;
[    1.240000] MAXIM7359 keyboard driver&lt;br /&gt;
[    1.240000] input: maxim_keypad as /class/input/input2&lt;br /&gt;
[    1.300000] input: hsdl9100_proximity as /class/input/input3&lt;br /&gt;
[    1.330000] hsdl9100_proximity: Proximity Sensor driver initialized....&lt;br /&gt;
[    1.330000] input: temt6200_light as /class/input/input4&lt;br /&gt;
[    1.360000] i2c_omap i2c_omap.3: No Acknowledgement&lt;br /&gt;
[    1.360000] i2c_omap i2c_omap.3: No Acknowledgement&lt;br /&gt;
[    1.360000] i2c_omap i2c_omap.3: No Acknowledgement&lt;br /&gt;
[    1.360000] input: kxsd9_accelerometer as /class/input/input5&lt;br /&gt;
[    1.390000] musb_stage0_irq 661: BUS RESET as b_idle&lt;br /&gt;
[    1.390000] gadget_event: source=bus mA=100&lt;br /&gt;
[    1.390000] twl4030_rtc twl4030_rtc: rtc core: registered twl4030_rtc as rtc0&lt;br /&gt;
[    1.390000] Driver for 1-wire Dallas network protocol.&lt;br /&gt;
[    1.390000] OMAP_HDQ: OMAP HDQ Hardware Revision 0.5. Clock shutdown timeout: 100ms&lt;br /&gt;
[    1.390000] OMAP Watchdog Timer Rev 0x31: initial timeout 60 sec&lt;br /&gt;
[    1.390000] device-mapper: uevent: version 1.0.3&lt;br /&gt;
[    1.390000] device-mapper: ioctl: 4.12.0-ioctl (2007-10-02) initialised: dm-devel@redhat.com&lt;br /&gt;
[    1.390000] hsmmc-omap hsmmc-omap.1: initialized&lt;br /&gt;
[    1.390000] hsmmc-omap hsmmc-omap.2: initialized&lt;br /&gt;
[    1.390000] Registered led device: kbd_bl_led_right&lt;br /&gt;
[    1.390000] Registered led device: kbd_bl_led_center&lt;br /&gt;
[    1.390000] Registered led device: kbd_bl_led_left&lt;br /&gt;
[    1.390000] TI TPS6105x LED driver&lt;br /&gt;
[    1.390000] Registered led device: core_navi_center&lt;br /&gt;
[    1.390000] Registered led device: core_navi_left&lt;br /&gt;
[    1.390000] Registered led device: core_navi_right&lt;br /&gt;
[    1.390000] usbcore: registered new interface driver usbhid&lt;br /&gt;
[    1.390000] drivers/hid/usbhid/hid-core.c: v2.6:USB HID core driver&lt;br /&gt;
[    1.400000] Advanced Linux Sound Architecture Driver Version 1.0.15 (Tue Nov 20 19:16:42 2007 UTC).&lt;br /&gt;
[    1.400000] audio support initialized (twl4030-i2s (mcbsp2))&lt;br /&gt;
[    1.400000] audio support initialized (btsco (mcbsp3))&lt;br /&gt;
[    1.400000] ALSA device list:&lt;br /&gt;
[    1.400000]   #0: twl4030-i2s (mcbsp2)&lt;br /&gt;
[    1.400000]   #1: btsco (mcbsp3)&lt;br /&gt;
[    1.400000] GACT probability NOT on&lt;br /&gt;
[    1.400000] Mirror/redirect action on&lt;br /&gt;
[    1.400000] u32 classifier&lt;br /&gt;
[    1.400000]     Performance counters on&lt;br /&gt;
[    1.400000]     input device check on &lt;br /&gt;
[    1.400000]     Actions configured &lt;br /&gt;
[    1.400000] Netfilter messages via NETLINK v0.30.&lt;br /&gt;
[    1.400000] nf_conntrack version 0.5.0 (8192 buckets, 32768 max)&lt;br /&gt;
[    1.400000] ip_tables: (C) 2000-2006 Netfilter Core Team&lt;br /&gt;
[    1.400000] arp_tables: (C) 2002 David S. Miller&lt;br /&gt;
[    1.400000] TCP bic registered&lt;br /&gt;
[    1.400000] TCP cubic registered&lt;br /&gt;
[    1.400000] TCP westwood registered&lt;br /&gt;
[    1.400000] TCP htcp registered&lt;br /&gt;
[    1.400000] TCP veno registered&lt;br /&gt;
[    1.400000] TCP illinois registered&lt;br /&gt;
[    1.400000] NET: Registered protocol family 1&lt;br /&gt;
[    1.400000] NET: Registered protocol family 17&lt;br /&gt;
[    1.400000] NET: Registered protocol family 15&lt;br /&gt;
[    1.400000] Bridge firewalling registered&lt;br /&gt;
[    1.400000] RPC: Registered udp transport module.&lt;br /&gt;
[    1.400000] RPC: Registered tcp transport module.&lt;br /&gt;
[    1.400000] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3&lt;br /&gt;
[    1.400000] OMAP cpufreq driver initializing.&lt;br /&gt;
[    1.400000] SR1: OPP1: initiate calibration (initial vsel 33)&lt;br /&gt;
[    1.430000] SR1: OPP1: update vsel 0 =&amp;gt; 22&lt;br /&gt;
[    1.440000] registered taskstats version 1&lt;br /&gt;
[    1.440000] twl4030_rtc twl4030_rtc: setting system clock to 2010-11-13 17:17:43 UTC (1289668663)&lt;br /&gt;
[    1.440000] timechange: time was changed.&lt;br /&gt;
[    1.440000] cpuidle: using governor menu&lt;br /&gt;
[    1.440000] Waiting for root device /dev/mmcblk0p2...&lt;br /&gt;
[    1.510000] musb_stage0_irq 661: BUS RESET as b_peripheral&lt;br /&gt;
[    1.510000] gadget_event: source=bus mA=100 (no change)&lt;br /&gt;
[    1.600000] mmc1: new high speed MMC card at address 0001: &lt;br /&gt;
[    1.600000] mmcblk0: mmc1:0001 SEM16G 15552512KiB &lt;br /&gt;
[    1.600000]  mmcblk0: p1 p2 p3&lt;br /&gt;
[    1.660000] g_rockhopper gadget: high speed config #1: ROCKHOPPER&lt;br /&gt;
[    1.660000] gadget_event: schedule host_connected&lt;br /&gt;
[    1.660000] musb_hdrc periph: enabled ep1in for bulk IN, dma, maxpacket 512&lt;br /&gt;
[    1.660000] musb_hdrc periph: enabled ep1out for bulk OUT, dma, maxpacket 512&lt;br /&gt;
[    1.660000] g_rockhopper gadget: mass_storage ready&lt;br /&gt;
[    1.660000] gadget_event: host_connected=1&lt;br /&gt;
[    1.660000] charger_detector: cancel detection&lt;br /&gt;
[    1.680000] kjournald starting.  Commit interval 5 seconds&lt;br /&gt;
[    1.680000] EXT3-fs: mounted filesystem with ordered data mode.&lt;br /&gt;
[    1.680000] VFS: Mounted root (ext3 filesystem) readonly.&lt;br /&gt;
[    1.680000] Freeing init memory: 172K&lt;br /&gt;
[    1.970000] mdm_act: 4294937493: modem wakeup timeout&lt;br /&gt;
[    2.000000] charger_detector: pullup not detected (&amp;gt; 510ms)&lt;br /&gt;
[    2.000000] gadget_event: source=bus mA=500&lt;br /&gt;
[    2.110000] kjournald starting.  Commit interval 5 seconds&lt;br /&gt;
[    2.110000] EXT3-fs: mounted filesystem with ordered data mode.&lt;br /&gt;
[    2.510000] ------------------Rsense = 20&lt;br /&gt;
[    2.540000] ------------------Full40 = 3786&lt;br /&gt;
[    2.970000] mdm_act: 4294937593: modem wakeup timeout&lt;br /&gt;
[    3.970000] mdm_act: 4294937693: modem wakeup timeout&lt;br /&gt;
[    3.980000] /etc/init.d/mountall.sh: vgscan/vgchange done&lt;br /&gt;
[    4.410000] /etc/init.d/mountall.sh: fsck of /var done&lt;br /&gt;
[    4.420000] kjournald starting.  Commit interval 5 seconds&lt;br /&gt;
[    4.420000] EXT3 FS on dm-1, internal journal&lt;br /&gt;
[    4.420000] EXT3-fs: mounted filesystem with writeback data mode.&lt;br /&gt;
[    4.420000] /etc/init.d/mountall.sh: /var mounted&lt;br /&gt;
[    4.450000] timechange: time was changed.&lt;br /&gt;
[    4.460000] /usr/sbin/clock_from_var.sh: set clock from time_saver: Sat Nov 13 18:17:46 CET 2010&lt;br /&gt;
[    4.770000] /etc/init.d/mountall.sh: wiping done&lt;br /&gt;
[    4.790000] kjournald starting.  Commit interval 5 seconds&lt;br /&gt;
[    4.790000] EXT3 FS on dm-4, internal journal&lt;br /&gt;
[    4.790000] EXT3-fs: mounted filesystem with ordered data mode.&lt;br /&gt;
[    4.790000] kjournald starting.  Commit interval 5 seconds&lt;br /&gt;
[    4.800000] EXT3 FS on dm-5, internal journal&lt;br /&gt;
[    4.800000] EXT3-fs: mounted filesystem with ordered data mode.&lt;br /&gt;
[    4.800000] kjournald starting.  Commit interval 5 seconds&lt;br /&gt;
[    4.800000] EXT3 FS on dm-3, internal journal&lt;br /&gt;
[    4.800000] EXT3-fs: mounted filesystem with ordered data mode.&lt;br /&gt;
[    4.820000] /etc/init.d/mountall.sh: rest mounted&lt;br /&gt;
[    4.850000] /etc/init.d/mountall.sh: filesystem checking done&lt;br /&gt;
[    4.970000] mdm_act: 4294937793: modem wakeup timeout&lt;br /&gt;
[    4.980000] /etc/init.d/mountall.sh: setup_cryptofs done&lt;br /&gt;
[    5.060000] /etc/init.d/mountall.sh: done reporting fsck results&lt;br /&gt;
[    5.070000] EXT3 FS on dm-0, internal journal&lt;br /&gt;
[    5.080000] EXT3 FS on mmcblk0p2, internal journal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Tokens&amp;diff=10002</id>
		<title>Tokens</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Tokens&amp;diff=10002"/>
		<updated>2010-05-21T14:34:45Z</updated>

		<summary type="html">&lt;p&gt;Morphis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Tokens area contains a number of entries. Each entry has the following format:&lt;br /&gt;
&lt;br /&gt;
 Magic:      0x4e4b4f54 'TOKN'&lt;br /&gt;
 Version:    0x00000001&lt;br /&gt;
 Length:     0x???????? Length of the data area&lt;br /&gt;
 Generation: 0x00000001&lt;br /&gt;
 CRC:        0x???????? CRC of the full entry treating the 4 CRC bytes as zeroes&lt;br /&gt;
 Name:       up to 16 bytes, zero padded name of the token&lt;br /&gt;
 Data:       'lenght' bytes, plus zero padding up to the next 4 bytes boundary&lt;br /&gt;
&lt;br /&gt;
The CRC polynomial is 0xedb88320.&lt;br /&gt;
&lt;br /&gt;
In the freesmartphone.org git repository [http://git.freesmartphone.org/?p=utilities.git;a=tree;f=palmpre/read_tokens;h=e84d2cbbc1baf0656287c67abfdf971946291a35;hb=HEAD] you will find a little utility which reads all tokens and outputs a key/value file.&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Pre_Touchscreen&amp;diff=9725</id>
		<title>Pre Touchscreen</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Pre_Touchscreen&amp;diff=9725"/>
		<updated>2010-04-30T17:27:56Z</updated>

		<summary type="html">&lt;p&gt;Morphis: Change style and add minor informations to ts_frame struct&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Intro==&lt;br /&gt;
&lt;br /&gt;
This is a research page on the pre touchscreen -- how to examine what it does, how it works, etc.&lt;br /&gt;
&lt;br /&gt;
==Screen format==&lt;br /&gt;
The screen is devided in 70 (7x10) fields + 7 fields for the gesture area&lt;br /&gt;
&lt;br /&gt;
==Dataformat==&lt;br /&gt;
&lt;br /&gt;
The dataset has 167 byte and is structured like the following struct:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt; &lt;br /&gt;
struct ts_frame {&lt;br /&gt;
    uint16_t frame_start; // constant:&lt;br /&gt;
    uint16_t field[77];   // contains the intensity of the 7*11 fields&lt;br /&gt;
    uint16_t frame_end;   // frame end indicator; always 0xffff&lt;br /&gt;
    uint8_t seq_nr1;      // incremented if seq_nr0 = scanrate&lt;br /&gt;
    uint16_t seq_nr2;     // incremeted if seq_nr1 = 255&lt;br /&gt;
    uint8_t unknown[4];   // timestap?&lt;br /&gt;
    uint8_t seq_nr0;      // incremented: from 0 to scanrate&lt;br /&gt;
    uint8_t null_value;   // \0&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Touchscreen&amp;diff=8390</id>
		<title>Touchscreen</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Touchscreen&amp;diff=8390"/>
		<updated>2010-01-15T17:40:41Z</updated>

		<summary type="html">&lt;p&gt;Morphis: first information; andoird driver, chipset etc.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Touchscreen =&lt;br /&gt;
&lt;br /&gt;
== Cypress CY8MRLN chipset ==&lt;br /&gt;
&lt;br /&gt;
They are using the CY8MRLN chipset from Cypress in the Palm Pre which is connected over SPI to the core. The CY8MRLN provides some quite interesting features already included in the driver provided by the kernel source:&lt;br /&gt;
&lt;br /&gt;
* Wake-on-touch (configurable from userspace through ioctl's; see include/linux/spi/cy8mrln.h)&lt;br /&gt;
* firmware loading (the CY8MRLN provide's a [[http://en.wikipedia.org/wiki/PSoC|PSoC]])&lt;br /&gt;
* touchscreen data is forwarded from kernel to usermode interface on /dev/touchscreen&lt;br /&gt;
&lt;br /&gt;
== dump data from touchscreen ==&lt;br /&gt;
There are some userland tools from palm in /usr/bin which helps you to dump the data ariving on /dev/touchscreen.&lt;br /&gt;
&lt;br /&gt;
== ts-lib implementation ==&lt;br /&gt;
For using the touchscreen with a different os like SHR or FSO we have to implement a plugin for ts-lib which decodes the data from the touchscreen ariving through /dev/touchscreen. Palm uses therefore there own implementaton /usr/bin/hidd which also provides plugin for other input system like the keyboard or the system buttons. &lt;br /&gt;
&lt;br /&gt;
Current problem with the ts-lib plugin is that the structure of the data arriving on /dev/touchsreen is not known. There is another driver for a different touchscreen chipset for android available on the cypress homepage (http://www.cypress.com/?rID=40085) which includes decoding of data from the touchscreen chipset. I assume that the data from the chipset used in the Palm Pre is nearly the same.&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Portal:Hardware&amp;diff=8388</id>
		<title>Portal:Hardware</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Portal:Hardware&amp;diff=8388"/>
		<updated>2010-01-15T17:23:52Z</updated>

		<summary type="html">&lt;p&gt;Morphis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__notoc__&lt;br /&gt;
{{portal-header|&lt;br /&gt;
Just list everything related to the hardware. &amp;lt;br&amp;gt;&lt;br /&gt;
Title pages: '''Hardware [description]'''&lt;br /&gt;
}}&lt;br /&gt;
'''[[:Category:Hardware|All pages in Category:Hardware]]'''&lt;br /&gt;
&lt;br /&gt;
* [[External Battery Pack]]&lt;br /&gt;
* [[A2dp]]&lt;br /&gt;
* [[Accelerometer]]&lt;br /&gt;
* [[Ambient Light Sensor]]&lt;br /&gt;
* [[Bluetooth Research]]&lt;br /&gt;
* [[GPS]]&lt;br /&gt;
* [[Hardware]]&lt;br /&gt;
* [[Hardware issues]]&lt;br /&gt;
* [[IR Proximity Sensor]]&lt;br /&gt;
* [[Controlling LEDs from the Shell|LEDS: Control from the shell]]&lt;br /&gt;
* [[More on Leds|LEDS: More information]] &lt;br /&gt;
* [[OMAP vibration device|OMAP vibration device]] &lt;br /&gt;
* [[Torch/Flash|Torch/Flash]] &lt;br /&gt;
* [[USB]]&lt;br /&gt;
* [[WLAN|WLAN / WIFI]]&lt;br /&gt;
* [[Touchscreen]]&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Boot_Chain&amp;diff=7783</id>
		<title>Boot Chain</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Boot_Chain&amp;diff=7783"/>
		<updated>2009-12-14T07:42:33Z</updated>

		<summary type="html">&lt;p&gt;Morphis: offset informations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== boot/boot.bin==&lt;br /&gt;
'''Load Address''': 0x40200000&lt;br /&gt;
&lt;br /&gt;
This does some minimal hardware initialization, then loads the &amp;quot;real&amp;quot; bootloader and executes it. The &amp;quot;real&amp;quot; bootloader is tacked onto the end of boot.bin as a gzip. The offset of the &amp;quot;real&amp;quot; bootloader is different for every version. Table below will give you the right offset&lt;br /&gt;
(If your version is not listed, then search with &amp;quot;hexdump -C boot-castle.bin | less&amp;quot; for the byte sequence &amp;quot;1f 8b&amp;quot; (the gzip format identifier)).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:left;border:1px solid #d4d4d4;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr style=&amp;quot;background-color:#F1F1F1;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;td style=&amp;quot;border-bottom:1px solid #d4d4d4;border-right:1px solid #d4d4d4;&amp;quot;&amp;gt;Version&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td style=&amp;quot;border-bottom:1px solid #d4d4d4;&amp;quot;&amp;gt;Offset&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td style=&amp;quot;border-right:1px solid #d4d4d4;border-bottom:1px solid #d4d4d4;&amp;quot;&amp;gt;unknown&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td style=&amp;quot;border-bottom:1px solid #d4d4d4;&amp;quot;&amp;gt;0x19D0 (thanks roxfan)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
 &amp;lt;td style=&amp;quot;border-right:1px solid #d4d4d4;border-bottom:1px solid #d4d4d4;&amp;quot;&amp;gt;1.3.1 (O2)&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;td style=&amp;quot;border-bottom:1px solid #d4d4d4;&amp;quot;&amp;gt;0x19f0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;real&amp;quot; bootloader ([[bootie]])==&lt;br /&gt;
'''Load Address''': 0x82000000&lt;br /&gt;
&lt;br /&gt;
This looks a _lot_ like iBoot from the iPhoneOS devices, but others say that this is based off u-boot, so I will assume that is true and that iBoot is also based off of it. It even seems to have some of the u-boot commands, such as &amp;quot;printenv&amp;quot;, &amp;quot;run&amp;quot;, &amp;quot;setenv&amp;quot;, &amp;quot;getenv&amp;quot;, etc. I am currently looking into how to communicate with it as you can with iBoot.&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7774</id>
		<title>Research Pre Boot Process</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7774"/>
		<updated>2009-12-11T18:47:51Z</updated>

		<summary type="html">&lt;p&gt;Morphis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bootloader &amp;amp; kernel startup ==&lt;br /&gt;
&lt;br /&gt;
When the pre is starting it loads the boot.bin image into ram. This is the booloader bootie which loads the linux kernel. The Linux kernel is loaded with the following cmdline (which is build out of the env vars from bootie):&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p2 rootwait ro fb=0x8f600000 fbcon=disable console=tty1 nduid=ea413b0b980b26d75c6658199d532472049644ae klog=0x8ff00000 klog_len=0x100000  boardtype=castle-dvt3 dsp_base=0x8f900000 dsp_len=0x600000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using the nova-installer-image-castle.uImage image bootie hands over the following cmdline to the kernel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
root=/dev/ram0 ramdisk=32768 ro fb=0x8f600000 fbcon=disable console=tty1 nduid=ea413b0b980b26d75c6658199d532472049644ae klog=0x8ff00000 klog_len=0x100000  boardtype=castle-dvt3 dsp_base=0x8f900000 dsp_len=0x600000 lastboot=recover&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nova-installer-image-castle.uImage image uses a initrd an not an initramfs. Somehow bootie detects if the kernel which is loaded has an initrd build in. If yes, then bootie changes the cmdline for the kernel to the env var bootargs-ramdisk. &lt;br /&gt;
&lt;br /&gt;
You can even boot a kernel from your local host with novacom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
cat uImage-kexecboot-2.6.24-r50-palmpre.bin | novaterm boot mem://&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
novacom loads the kernel into ram and then boots it. The kernel is loaded with the same cmdline as mentioned above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
On startup /dev/root is mounted as rootfs. Then /sbin/init is called which mounts /dev/mapper/store-root as the new rootfs. Finally the init script on /dev/root calls the init script in /sbin /dev/mapper/store-root.&lt;br /&gt;
&lt;br /&gt;
The init script on /dev/mapper/store-root starts upstart or the miniboot.sh script in /etc.&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
When upstart is starting it executes a script called usbctrl whichs load the right usb driver and configuration for novacom or usbnetworking. Depending which machine is used the g_composite driver is loaded with a different product id.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
if [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv7l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8002 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8004 || true&lt;br /&gt;
                fi&lt;br /&gt;
        elif [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv6l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                fi&lt;br /&gt;
            else&lt;br /&gt;
                /sbin/modprobe -q g_composite || true&lt;br /&gt;
    fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Is the g_composite driver is build in the kernel the script changes the configuration of the gadget driver through a sysfs entry.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
  echo 2 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
else&lt;br /&gt;
  echo 1 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7773</id>
		<title>Research Pre Boot Process</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7773"/>
		<updated>2009-12-11T18:40:58Z</updated>

		<summary type="html">&lt;p&gt;Morphis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bootloader &amp;amp; kernel startup ==&lt;br /&gt;
&lt;br /&gt;
When the pre is starting it loads the boot.bin image into ram. This is the booloader bootie which loads the linux kernel. The Linux kernel is loaded with the following cmdline (which is build out of the env vars from bootie):&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p2 rootwait ro fb=0x8f600000 fbcon=disable console=tty1 nduid=ea413b0b980b26d75c6658199d532472049644ae klog=0x8ff00000 klog_len=0x100000  boardtype=castle-dvt3 dsp_base=0x8f900000 dsp_len=0x600000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using the nova-installer-image-castle.uImage image bootie hands over the following cmdline to the kernel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
root=/dev/ram0 ramdisk=32768 ro fb=0x8f600000 fbcon=disable console=tty1 nduid=ea413b0b980b26d75c6658199d532472049644ae klog=0x8ff00000 klog_len=0x100000  boardtype=castle-dvt3 dsp_base=0x8f900000 dsp_len=0x600000 lastboot=recover&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nova-installer-image-castle.uImage image uses a initrd an not an initramfs.&lt;br /&gt;
&lt;br /&gt;
You can even boot a kernel from your local host with novacom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
cat uImage-kexecboot-2.6.24-r50-palmpre.bin | novaterm boot mem://&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
novacom loads the kernel into ram and then boots it. The kernel is loaded with the same cmdline as mentioned above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
On startup /dev/root is mounted as rootfs. Then /sbin/init is called which mounts /dev/mapper/store-root as the new rootfs. Finally the init script on /dev/root calls the init script in /sbin /dev/mapper/store-root.&lt;br /&gt;
&lt;br /&gt;
The init script on /dev/mapper/store-root starts upstart or the miniboot.sh script in /etc.&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
When upstart is starting it executes a script called usbctrl whichs load the right usb driver and configuration for novacom or usbnetworking. Depending which machine is used the g_composite driver is loaded with a different product id.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
if [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv7l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8002 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8004 || true&lt;br /&gt;
                fi&lt;br /&gt;
        elif [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv6l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                fi&lt;br /&gt;
            else&lt;br /&gt;
                /sbin/modprobe -q g_composite || true&lt;br /&gt;
    fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Is the g_composite driver is build in the kernel the script changes the configuration of the gadget driver through a sysfs entry.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
  echo 2 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
else&lt;br /&gt;
  echo 1 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7772</id>
		<title>Research Pre Boot Process</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7772"/>
		<updated>2009-12-11T18:37:58Z</updated>

		<summary type="html">&lt;p&gt;Morphis: different cmdline with nova-installer image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bootloader &amp;amp; kernel startup ==&lt;br /&gt;
&lt;br /&gt;
When the pre is starting it loads the boot.bin image into ram. This is the booloader bootie which loads the linux kernel. The Linux kernel is loaded with the following cmdline (which is build out of the env vars from bootie):&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p2 rootwait ro fb=0x8f600000 fbcon=disable console=tty1 nduid=ea413b0b980b26d75c6658199d532472049644ae klog=0x8ff00000 klog_len=0x100000  boardtype=castle-dvt3 dsp_base=0x8f900000 dsp_len=0x600000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using the nova-installer-image-castle.uImage image bootie hands over the following cmdline to the kernel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
root=/dev/ram0 ramdisk=32768 ro fb=0x8f600000 fbcon=disable console=tty1 nduid=ea413b0b980b26d75c6658199d532472049644ae klog=0x8ff00000 klog_len=0x100000  boardtype=castle-dvt3 dsp_base=0x8f900000 dsp_len=0x600000 lastboot=recover&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can even boot a kernel from your local host with novacom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
cat uImage-kexecboot-2.6.24-r50-palmpre.bin | novaterm boot mem://&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
novacom loads the kernel into ram and then boots it. The kernel is loaded with the same cmdline as mentioned above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
On startup /dev/root is mounted as rootfs. Then /sbin/init is called which mounts /dev/mapper/store-root as the new rootfs. Finally the init script on /dev/root calls the init script in /sbin /dev/mapper/store-root.&lt;br /&gt;
&lt;br /&gt;
The init script on /dev/mapper/store-root starts upstart or the miniboot.sh script in /etc.&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
When upstart is starting it executes a script called usbctrl whichs load the right usb driver and configuration for novacom or usbnetworking. Depending which machine is used the g_composite driver is loaded with a different product id.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
if [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv7l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8002 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8004 || true&lt;br /&gt;
                fi&lt;br /&gt;
        elif [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv6l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                fi&lt;br /&gt;
            else&lt;br /&gt;
                /sbin/modprobe -q g_composite || true&lt;br /&gt;
    fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Is the g_composite driver is build in the kernel the script changes the configuration of the gadget driver through a sysfs entry.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
  echo 2 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
else&lt;br /&gt;
  echo 1 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7761</id>
		<title>Research Pre Boot Process</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7761"/>
		<updated>2009-12-09T20:20:15Z</updated>

		<summary type="html">&lt;p&gt;Morphis: note about cmdline when booting a kernel with novacom&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bootloader &amp;amp; kernel startup ==&lt;br /&gt;
&lt;br /&gt;
When the pre is starting it loads the boot.bin image into ram. This is the booloader bootie which loads the linux kernel. The Linux kernel is loaded with the following cmdline (which is build out of the env vars from bootie):&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p2 rootwait ro fb=0x8f600000 fbcon=disable console=tty1 nduid=ea413b0b980b26d75c6658199d532472049644ae klog=0x8ff00000 klog_len=0x100000  boardtype=castle-dvt3 dsp_base=0x8f900000 dsp_len=0x600000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can even boot a kernel from your local host with novacom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
cat uImage-kexecboot-2.6.24-r50-palmpre.bin | novaterm boot mem://&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
novacom loads the kernel into ram and then boots it. The kernel is loaded with the same cmdline as mentioned above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
On startup /dev/root is mounted as rootfs. Then /sbin/init is called which mounts /dev/mapper/store-root as the new rootfs. Finally the init script on /dev/root calls the init script in /sbin /dev/mapper/store-root.&lt;br /&gt;
&lt;br /&gt;
The init script on /dev/mapper/store-root starts upstart or the miniboot.sh script in /etc.&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
When upstart is starting it executes a script called usbctrl whichs load the right usb driver and configuration for novacom or usbnetworking. Depending which machine is used the g_composite driver is loaded with a different product id.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
if [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv7l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8002 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8004 || true&lt;br /&gt;
                fi&lt;br /&gt;
        elif [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv6l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                fi&lt;br /&gt;
            else&lt;br /&gt;
                /sbin/modprobe -q g_composite || true&lt;br /&gt;
    fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Is the g_composite driver is build in the kernel the script changes the configuration of the gadget driver through a sysfs entry.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
  echo 2 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
else&lt;br /&gt;
  echo 1 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7760</id>
		<title>Research Pre Boot Process</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7760"/>
		<updated>2009-12-09T20:07:32Z</updated>

		<summary type="html">&lt;p&gt;Morphis: style correctness&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bootloader &amp;amp; kernel startup ==&lt;br /&gt;
&lt;br /&gt;
When the pre is starting it loads the boot.bin image into ram. This is the booloader bootie which loads the linux kernel. The Linux kernel is loaded with the following cmdline (which is build out of the env vars from bootie):&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p2 rootwait ro fb=0x8f600000 fbcon=disable console=tty1 nduid=ea413b0b980b26d75c6658199d532472049644ae klog=0x8ff00000 klog_len=0x100000  boardtype=castle-dvt3 dsp_base=0x8f900000 dsp_len=0x600000&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can even boot a kernel from your local host with novacom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
cat uImage-kexecboot-2.6.24-r50-palmpre.bin | novaterm boot mem://&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
novacom loads the kernel into ram and then boots it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
On startup /dev/root is mounted as rootfs. Then /sbin/init is called which mounts /dev/mapper/store-root as the new rootfs. Finally the init script on /dev/root calls the init script in /sbin /dev/mapper/store-root.&lt;br /&gt;
&lt;br /&gt;
The init script on /dev/mapper/store-root starts upstart or the miniboot.sh script in /etc.&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
When upstart is starting it executes a script called usbctrl whichs load the right usb driver and configuration for novacom or usbnetworking. Depending which machine is used the g_composite driver is loaded with a different product id.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
if [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv7l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8002 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8004 || true&lt;br /&gt;
                fi&lt;br /&gt;
        elif [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv6l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                fi&lt;br /&gt;
            else&lt;br /&gt;
                /sbin/modprobe -q g_composite || true&lt;br /&gt;
    fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Is the g_composite driver is build in the kernel the script changes the configuration of the gadget driver through a sysfs entry.&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
  echo 2 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
else&lt;br /&gt;
  echo 1 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7759</id>
		<title>Research Pre Boot Process</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7759"/>
		<updated>2009-12-09T20:06:37Z</updated>

		<summary type="html">&lt;p&gt;Morphis: booting your a kernel with novacom&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bootloader &amp;amp; kernel startup ==&lt;br /&gt;
&lt;br /&gt;
When the pre is starting it loads the boot.bin image into ram. This is the booloader bootie which loads the linux kernel. The Linux kernel is loaded with the following cmdline (which is build out of the env vars from bootie):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p2 rootwait ro fb=0x8f600000 fbcon=disable console=tty1 nduid=ea413b0b980b26d75c6658199d532472049644ae klog=0x8ff00000 klog_len=0x100000  boardtype=castle-dvt3 dsp_base=0x8f900000 dsp_len=0x600000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can even boot a kernel from your local host with novacom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# cat uImage-kexecboot-2.6.24-r50-palmpre.bin | novaterm boot mem://&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
novacom loads the kernel into ram and then boots it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
On startup /dev/root is mounted as rootfs. Then /sbin/init is called which mounts /dev/mapper/store-root as the new rootfs. Finally the init script on /dev/root calls the init script in /sbin /dev/mapper/store-root.&lt;br /&gt;
&lt;br /&gt;
The init script on /dev/mapper/store-root starts upstart or the miniboot.sh script in /etc.&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
When upstart is starting it executes a script called usbctrl whichs load the right usb driver and configuration for novacom or usbnetworking. Depending which machine is used the g_composite driver is loaded with a different product id.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv7l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8002 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8004 || true&lt;br /&gt;
                fi&lt;br /&gt;
        elif [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv6l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                fi&lt;br /&gt;
            else&lt;br /&gt;
                /sbin/modprobe -q g_composite || true&lt;br /&gt;
    fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Is the g_composite driver is build in the kernel the script changes the configuration of the gadget driver through a sysfs entry.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
  echo 2 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
else&lt;br /&gt;
  echo 1 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7750</id>
		<title>Research Pre Boot Process</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7750"/>
		<updated>2009-12-08T20:36:13Z</updated>

		<summary type="html">&lt;p&gt;Morphis: add informations about initial boot process (bootloader &amp;amp; kernel startup)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Bootloader &amp;amp; kernel startup ==&lt;br /&gt;
&lt;br /&gt;
When the pre is starting it loads the boot.bin image into ram. This is the booloader bootie which loads the linux kernel. The Linux kernel is loaded with the following cmdline (which is build out of the env vars from bootie):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p2 rootwait ro fb=0x8f600000 fbcon=disable console=tty1 nduid=ea413b0b980b26d75c6658199d532472049644ae klog=0x8ff00000 klog_len=0x100000  boardtype=castle-dvt3 dsp_base=0x8f900000 dsp_len=0x600000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
On startup /dev/root is mounted as rootfs. Then /sbin/init is called which mounts /dev/mapper/store-root as the new rootfs. Finally the init script on /dev/root calls the init script in /sbin /dev/mapper/store-root.&lt;br /&gt;
&lt;br /&gt;
The init script on /dev/mapper/store-root starts upstart or the miniboot.sh script in /etc.&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
When upstart is starting it executes a script called usbctrl whichs load the right usb driver and configuration for novacom or usbnetworking. Depending which machine is used the g_composite driver is loaded with a different product id.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv7l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8002 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8004 || true&lt;br /&gt;
                fi&lt;br /&gt;
        elif [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv6l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                fi&lt;br /&gt;
            else&lt;br /&gt;
                /sbin/modprobe -q g_composite || true&lt;br /&gt;
    fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Is the g_composite driver is build in the kernel the script changes the configuration of the gadget driver through a sysfs entry.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
  echo 2 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
else&lt;br /&gt;
  echo 1 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7493</id>
		<title>Research Pre Boot Process</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7493"/>
		<updated>2009-11-28T14:03:00Z</updated>

		<summary type="html">&lt;p&gt;Morphis: g_composite driver is build in the kernel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
On startup /dev/root is mounted as rootfs. Then /sbin/init is called which mounts /dev/mapper/store-root as the new rootfs. Finally the init script on /dev/root calls the init script in /sbin /dev/mapper/store-root.&lt;br /&gt;
&lt;br /&gt;
The init script on /dev/mapper/store-root starts upstart or the miniboot.sh script in /etc.&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
When upstart is starting it executes a script called usbctrl whichs load the right usb driver and configuration for novacom or usbnetworking. Depending which machine is used the g_composite driver is loaded with a different product id.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv7l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8002 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8004 || true&lt;br /&gt;
                fi&lt;br /&gt;
        elif [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv6l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                fi&lt;br /&gt;
            else&lt;br /&gt;
                /sbin/modprobe -q g_composite || true&lt;br /&gt;
    fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Is the g_composite driver is build in the kernel the script changes the configuration of the gadget driver through a sysfs entry.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
  echo 5 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
  echo 2 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
else&lt;br /&gt;
  echo 1 &amp;gt; /sys/class/usb_gadget/config_num&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7492</id>
		<title>Research Pre Boot Process</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Research_Pre_Boot_Process&amp;diff=7492"/>
		<updated>2009-11-28T14:00:12Z</updated>

		<summary type="html">&lt;p&gt;Morphis: Add some initial informations about the boot process&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
On startup /dev/root is mounted as rootfs. Then /sbin/init is called which mounts /dev/mapper/store-root as the new rootfs. Finally the init script on /dev/root calls the init script in /sbin /dev/mapper/store-root.&lt;br /&gt;
&lt;br /&gt;
The init script on /dev/mapper/store-root starts upstart or the miniboot.sh script in /etc.&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
When upstart is starting it executes a script called usbctrl whichs load the right usb driver and configuration for novacom or usbnetworking. Depending which machine is used the g_composite driver is loaded with a different product id.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv7l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x101 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8002 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8004 || true&lt;br /&gt;
                fi&lt;br /&gt;
        elif [[ &amp;quot;$machineType&amp;quot; == &amp;quot;armv6l&amp;quot; ]];then&lt;br /&gt;
                if [[ -e /var/gadget/usbnet_enabled &amp;amp;&amp;amp; -e /var/gadget/novacom_enabled ]]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/usbnet_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x103 || true&lt;br /&gt;
                elif [ -e /var/gadget/novacom_enabled ]; then&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                else&lt;br /&gt;
                        /sbin/modprobe -q g_composite product=0x8012 || true&lt;br /&gt;
                fi&lt;br /&gt;
            else&lt;br /&gt;
                /sbin/modprobe -q g_composite || true&lt;br /&gt;
    fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Portal:Research&amp;diff=7491</id>
		<title>Portal:Research</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Portal:Research&amp;diff=7491"/>
		<updated>2009-11-28T13:54:24Z</updated>

		<summary type="html">&lt;p&gt;Morphis: Add entry for boot-process research page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__notoc__&lt;br /&gt;
{{portal-header|&lt;br /&gt;
The Research Portal is for bleeding edge things being done with the device. &lt;br /&gt;
&lt;br /&gt;
Title all pages: '''Research [description]''' or '''Reference [description]'''&lt;br /&gt;
}}&lt;br /&gt;
{{portal-two-columns&lt;br /&gt;
|column1=&lt;br /&gt;
===Research:===&lt;br /&gt;
&lt;br /&gt;
* [[Applications Bundled on the Pre]]&lt;br /&gt;
* [[Application_Framework|Application Framework]]&lt;br /&gt;
* [[Blocking Updates]]&lt;br /&gt;
* [[New Bluetooth|BlueZ (Replacing Palm Bluetooth)]]&lt;br /&gt;
* [[Boot_Chain|Boot Chain]]&lt;br /&gt;
* [[Bootie]]&lt;br /&gt;
* [[ClassicFilesystem]]&lt;br /&gt;
* [[Decrypt SSL (trusted man-in-the-middle technique)|Decrypt SSL (trusted man-in-the-middle technique)]]&lt;br /&gt;
* [[FirstUse Application Functionality]]&lt;br /&gt;
* [[Fonts available on board the Pre]]&lt;br /&gt;
* [[Gstreamer]]&lt;br /&gt;
* [[Hidd]]&lt;br /&gt;
* [[Introspecting_Dbus|Introspecting Dbus]]&lt;br /&gt;
* [[Key Codes|Key Codes]] &lt;br /&gt;
* [[Pre Specific Hash Codes|Pre Specific Hash Codes]] &lt;br /&gt;
* [[Pictures from Self-Test|Pictures from Self-Test]] &lt;br /&gt;
* [[Restore Debug Log|Restore Debug Log]] &lt;br /&gt;
* [[Reverse_Engineering_WebOS_Doctor|Reverse Engineering WebOS Doctor]]&lt;br /&gt;
* [[Rooted Pre Issues|Rooted Pre Issues]] &lt;br /&gt;
* [[Research_Securing_Pre|Securing your Pre]]&lt;br /&gt;
* [[Running Processes|Running Processes]] &lt;br /&gt;
* [[Symlink Applications|Symlink Applications]] &lt;br /&gt;
* [[System Sounds|System Sounds]] &lt;br /&gt;
* [[TestApps|TestApps]] &lt;br /&gt;
* [[Update Service Trace|Update Service Trace]] &lt;br /&gt;
* [[Tidbits|Tidbits]] &lt;br /&gt;
* [[VideoRecording]]&lt;br /&gt;
* [[WebOS Exploration - Various Information|WebOS Exploration - Various Information]] &lt;br /&gt;
* [[Research_Pre_GSM_Modem | Pre GSM modem device informations]]&lt;br /&gt;
* [[Research_Pre_GSM_Modem_Protocol | Pre GSM modem protocol informations]]&lt;br /&gt;
* [[Research_Pre_Audio | Audio routing and setup on the Pre]]&lt;br /&gt;
* [[Research_mpt | MSM modem passthru mode ]]&lt;br /&gt;
* [[Research_Pre_Boot_Process | Boot process]]&lt;br /&gt;
&lt;br /&gt;
|column2=&lt;br /&gt;
===Reference===&lt;br /&gt;
* [[Packaging Standards|Packaging Standards]]&lt;br /&gt;
* [[webkit_transform|Webkit Transform]]- a powerful set of commands for manipulating elements.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=WLAN&amp;diff=7192</id>
		<title>WLAN</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=WLAN&amp;diff=7192"/>
		<updated>2009-11-16T19:22:32Z</updated>

		<summary type="html">&lt;p&gt;Morphis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= WLAN / WIFI=&lt;br /&gt;
&lt;br /&gt;
== Marvell 88W8686 chipset (connected over SDIO) ==&lt;br /&gt;
&lt;br /&gt;
* http://i.cmpnet.com/eetimes/eedesign/2009/image5_060709.jpg&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Information about a Linux Kernel module ===&lt;br /&gt;
 modinfo sd8xxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 filename:       /lib/modules/2.6.24-palm-joplin-3430/kernel/net/wifi/sd8xxx.ko&lt;br /&gt;
 license:        GPL&lt;br /&gt;
 author:         Marvell International Ltd.&lt;br /&gt;
 description:    M-WLAN Driver&lt;br /&gt;
 srcversion:     533BB7E5866E52F63B9ACCB&lt;br /&gt;
 depends:&lt;br /&gt;
 vermagic:       2.6.24-palm-joplin-3430 mod_unload ARMv7&lt;br /&gt;
 parm:           param_sd_slot_selector:int&lt;br /&gt;
 parm:           param_sdio_bus_width:int&lt;br /&gt;
 parm:           param_use_sdio_irq:int&lt;br /&gt;
 parm:           helper_name:charp&lt;br /&gt;
 parm:           fw_name:charp&lt;br /&gt;
 parm:           mfgmode:int&lt;br /&gt;
&lt;br /&gt;
The sd8xxx driver is open source (although it requires proprietary firmware) and available under the GPL.&lt;br /&gt;
But why is it not on palm's open source packages site? Where is the source?&lt;br /&gt;
Didn't find it under http://opensource.palm.com/1.1.3/index.html&lt;br /&gt;
&lt;br /&gt;
The original Marvell GPL sources are published in this download:  http://www.marvell.com/drivers/driverDisplay.do?driverId=203 however the palm modifications to these sources do not appear to be published (morphis: wrote an email to Palm to get their modifications if they have some)&lt;br /&gt;
&lt;br /&gt;
=== Exploring the /proc/net/wlan=== &lt;br /&gt;
 cat /proc/net/wlan/info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 driver_name = &amp;quot;wlan&amp;quot;&lt;br /&gt;
 driver_version = sd8686-9.15.14-26409.p62-(FP4)&lt;br /&gt;
 InterfaceName=&amp;quot;eth0&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Exploring Kernel configuration ===&lt;br /&gt;
 cat /boot/config-2.6.24-palm-joplin-3430&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
 #&lt;br /&gt;
 # Wireless LAN&lt;br /&gt;
 #&lt;br /&gt;
 # CONFIG_WLAN_PRE80211 is not set&lt;br /&gt;
 CONFIG_WLAN_80211=y&lt;br /&gt;
 # CONFIG_LIBERTAS is not set&lt;br /&gt;
 # CONFIG_USB_ZD1201 is not set&lt;br /&gt;
 # CONFIG_HOSTAP is not set&lt;br /&gt;
 [...]&lt;br /&gt;
&lt;br /&gt;
CONFIG_LIBERTAS is not set ???&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==libertas==&lt;br /&gt;
* http://wireless.kernel.org/en/users/Drivers/libertas&lt;br /&gt;
* http://lists.infradead.org/pipermail/libertas-dev/&lt;br /&gt;
Why don't they use libertas ???&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
&lt;br /&gt;
 md5sum /lib/firmware/*.bin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 2a4d8f4df198ce949c350df5674f4ac6  /lib/firmware/helper_sd.bin&lt;br /&gt;
 83006642f0ae4d6e9af89f6c852327c2  /lib/firmware/mfg_sd8686.bin&lt;br /&gt;
 261d6ed255f2cc9f5bad014b2234b8cd  /lib/firmware/sd8686.bin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Firmware from: http://www.marvell.com/drivers/driverDisplay.do?driverId=203&lt;br /&gt;
&lt;br /&gt;
 md5sum FwImage/*.bin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 2a4d8f4df198ce949c350df5674f4ac6  FwImage/helper_sd.bin&lt;br /&gt;
 3025de2a1ed575fd691958d7da341d8b  FwImage/sd8686.bin&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Research_Pre_GSM_Modem_Protocol&amp;diff=7104</id>
		<title>Research Pre GSM Modem Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Research_Pre_GSM_Modem_Protocol&amp;diff=7104"/>
		<updated>2009-11-11T21:03:26Z</updated>

		<summary type="html">&lt;p&gt;Morphis: Add more information about the frame header and first implementation of the protocol&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here we are collecting informations about the modem protocol. At the moment all the research is done on the european UMTS version of the Palm Pre. The CDMA version is likely to be pretty similar to the UMTS variant with regards to the protocol.&lt;br /&gt;
&lt;br /&gt;
What we are doing to get used to the protocol is to strace the different applications that talk to the modem and log everything that goes over /dev/modemuart to the actual modem. From this wire protocol traces we are working backwards to the actual protocol and packet format.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
&lt;br /&gt;
There is a first implementation of the protocol. You can find it at:&lt;br /&gt;
* http://git.freesmartphone.org/?p=msmcomm.git;a=summary&lt;br /&gt;
&lt;br /&gt;
Be careful: Nothing is in a usable state! It's a first implementation to play around with the protocol.&lt;br /&gt;
&lt;br /&gt;
=== Packet Start ===&lt;br /&gt;
&lt;br /&gt;
A new packet starts with: '''0xFA''' (This may be an address instead as rfc1662 uses only one flag for frame separation). &lt;br /&gt;
&lt;br /&gt;
As we found out that the CRC is calculated even over the flag '''0xFA''' and with assuming that the basic for the protocol is HDLC we can say that 0xFA is not the starting flag of the frame. It should be an adress if we have a real implemenation of HDLC that follows the rfc.&lt;br /&gt;
&lt;br /&gt;
=== Packet End ===&lt;br /&gt;
&lt;br /&gt;
A packet ends with: '''0x7E'''&lt;br /&gt;
&lt;br /&gt;
=== Escaping ===&lt;br /&gt;
&lt;br /&gt;
For the packet end marker there is an escaping sequence inside the packet. It is used '''0x7D 0x5E''' instead. Therefore '''0x7D''' is escaped as '''0x7D  0x5D''' as well.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
Header consists of 3 bytes. The first byte seems to be an adress or something like that, cause it's everytime the same byte '''0xFA'''. &lt;br /&gt;
&lt;br /&gt;
The second byte contains the type of the frame. It's stored in the lower for bytes ('''header[1] &amp;gt;&amp;gt; 4''') There are six types. &lt;br /&gt;
* 1: Sync Message&lt;br /&gt;
* 2: Sync Response Message&lt;br /&gt;
* 3: Configuration Message&lt;br /&gt;
* 4: Configuration Response message&lt;br /&gt;
* 5: Acknowledge Message&lt;br /&gt;
* 6: Data Message&lt;br /&gt;
&lt;br /&gt;
The third byte contains the sequence and acknowledge number (look at the HCI Transport specification to find out how this two numbers are used in the protocol)&lt;br /&gt;
* sequence number: '''header[2] &amp;gt;&amp;gt; 4'''&lt;br /&gt;
* acknowledge number: '''header[2] &amp;amp; 0xf'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Payload ===&lt;br /&gt;
&lt;br /&gt;
No informations about the payload format have been gathered yet.&lt;br /&gt;
&lt;br /&gt;
=== Checksum ===&lt;br /&gt;
&lt;br /&gt;
The last two bytes before the packet ending marker are a CRC16-FCS checksum. (See rfc1662 for polynom and table)&lt;br /&gt;
&lt;br /&gt;
=== Similarity to RFC1662 ===&lt;br /&gt;
&lt;br /&gt;
The usage of CRC-16-FCS but even more the frame boundary packet as well as the escaping for it looks similar to what we found about this protocol. Even a grep -i HDLC over the binary firmware image reports the usage of PPP and HDLC as communication protocol format. So we can be almost sureley that HDLC+PPP is used.&lt;br /&gt;
&lt;br /&gt;
http://tools.ietf.org/html/rfc1662&lt;br /&gt;
&lt;br /&gt;
=== Similarity to Bluetooth HCI ===&lt;br /&gt;
&lt;br /&gt;
The protocol on the lower level has many similarities with the HCI Link Layer protocol used in Bluetooth for Serial transports.&lt;br /&gt;
&lt;br /&gt;
http://www.bluetooth.com/NR/rdonlyres/24C24181-5B5D-4566-BB4F-D4C302910B9D/1766/Volume4_SPEC.pdf&lt;br /&gt;
&lt;br /&gt;
=== Identified byte sequences ===&lt;br /&gt;
* Sync Message: 0xfa 0x10 0x0&lt;br /&gt;
* Sync Response Message: 0xfa 0x30 0x0&lt;br /&gt;
* Configuration Message: 0xfa 0x30 0x00 0x1&lt;br /&gt;
* Empty Configuration Message: 0xfa 0x40 0x0&lt;br /&gt;
* Configuration Response Message: 0xfa 0x40 0x0&lt;br /&gt;
* Acknowledge Message: 0xfa 0x50 0x0&lt;br /&gt;
* SIM PIN on startup is sent with: 0xfa 0x60 0xe3 0x0f 0x0e 0x00 0x13 0x00 0x00 0x00 0x00 &amp;lt;4 ASCII digits&amp;gt; 0x00 0x00 0x00 0x00 0x00&lt;br /&gt;
* SIM PIN acknowledgement from modem: 0xfa 0x50 0x0f&lt;br /&gt;
&lt;br /&gt;
=== GPS ===&lt;br /&gt;
The [[GPS]] receiver is part of the modem in Palm Pre and all data received and sent related to location goes over the same port using the same frame coding as GSM.  GPS functionality can not be enabled (at least not using the Palm-provided drivers) until modem radio is enabled and seemingly until the modem successfully registers to the network.&lt;br /&gt;
&lt;br /&gt;
Tracing the data sent over /dev/modemuart the following hostnames can be seen being sent from the OS to the modem chip:&lt;br /&gt;
xtra1.gpsonextra.net, xtra2.gpsonextra.net, xtra3.gpsonextra.net&lt;br /&gt;
&lt;br /&gt;
They point to the RX Network's company website (rxnetwork.ca) that claims to provide better geolocation by combining GPS, wifi signals, GSM CellID and live reports downloaded over GPRS.  The modem downloads the following files:&lt;br /&gt;
http://xtra1.gpsonextra.net/xtra.bin, http://xtra2.gpsonextra.net/xtra.bin, http://xtra3.gpsonextra.net/xtra.bin&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Research_Pre_GSM_Modem_Protocol&amp;diff=6645</id>
		<title>Research Pre GSM Modem Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Research_Pre_GSM_Modem_Protocol&amp;diff=6645"/>
		<updated>2009-10-24T09:30:50Z</updated>

		<summary type="html">&lt;p&gt;Morphis: Add HDLC+PPP usage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here we are collecting informations about the modem protocol. At the moment all the research is don on the european UMTS version of the Palm Pre. The CDM version is likely to be pretty similar to the UMTS variant with regards to the protocol.&lt;br /&gt;
&lt;br /&gt;
What we are doing to get used to the protocol is to strace the different applications that talk to the modem and log everything that goes over /dev/modemuart to the actual modem. From this wire protocol traces we are working backwards to the actual protocol and packet format.&lt;br /&gt;
&lt;br /&gt;
=== Packet Start ===&lt;br /&gt;
&lt;br /&gt;
A new packet starts with: '''0xFA''' (This may be an address instead as rfc1662 uses only one flag for frame separation). &lt;br /&gt;
&lt;br /&gt;
As we found out that the CRC is calculated even over the flag '''0xFA''' and with assuming that the basic for the protocol is HDLC we can say that 0xFA is not the starting flag of the frame. It should be an adress if we have a real implemenation of HDLC that follows the rfc.&lt;br /&gt;
&lt;br /&gt;
=== Packet End ===&lt;br /&gt;
&lt;br /&gt;
A packet ends with: '''0x7E'''&lt;br /&gt;
&lt;br /&gt;
=== Escaping ===&lt;br /&gt;
&lt;br /&gt;
For the packet end marker there is an escaping sequence inside the packet. It is used '''0x7D 0x5E''' instead. Therefor '''0x7D''' is escaped as '''0x7D  0x5D''' as well.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
No informations about the header format have been gathered yet.&lt;br /&gt;
&lt;br /&gt;
=== Payload ===&lt;br /&gt;
&lt;br /&gt;
No informations about the payload format have been gathered yet.&lt;br /&gt;
&lt;br /&gt;
=== Checksum ===&lt;br /&gt;
&lt;br /&gt;
The last two bytes before the packet ending marker are a CRC16-FCS checksum. (See rfc1662 for polynom and table)&lt;br /&gt;
&lt;br /&gt;
=== Similarity to RFC1662 ===&lt;br /&gt;
&lt;br /&gt;
The usage of CRC-16-FCS but even more the frame boundary packet as well as the escaping for it looks similar to what we found about this protocol. Even a grep -i HDLC over the binary firmware image reports the usage of PPP and HDLC as communication protocol format. So we can be almost sureley that HDLC+PPP is used.&lt;br /&gt;
&lt;br /&gt;
http://tools.ietf.org/html/rfc1662&lt;br /&gt;
&lt;br /&gt;
=== Identified byte sequences ===&lt;br /&gt;
* Sync Message: 0xfa 0x10 0x0&lt;br /&gt;
* Sync Response Message: 0xfa 0x30 0x0&lt;br /&gt;
* Configuration Message: 0xfa 0x30 0x00 0x1&lt;br /&gt;
* Empty Configuration Message: 0xfa 0x40 0x0&lt;br /&gt;
* Configuration Response Message: 0xfa 0x40 0x0&lt;br /&gt;
* Acknowledge Message: 0xfa 0x50 0x0&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Research_Pre_GSM_Modem_Protocol&amp;diff=6611</id>
		<title>Research Pre GSM Modem Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Research_Pre_GSM_Modem_Protocol&amp;diff=6611"/>
		<updated>2009-10-21T18:25:55Z</updated>

		<summary type="html">&lt;p&gt;Morphis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here we are collecting informations about the modem protocol. At the moment all the research is don on the european UMTS version of the Palm Pre. The CDM version is likely to be pretty similar to the UMTS variant with regards to the protocol.&lt;br /&gt;
&lt;br /&gt;
What we are doing to get used to the protocol is to strace the different applications that talk to the modem and log everything that goes over /dev/modemuart to the actual modem. From this wire protocol traces we are working backwards to the actual protocol and packet format.&lt;br /&gt;
&lt;br /&gt;
=== Packet Start ===&lt;br /&gt;
&lt;br /&gt;
A new packet starts with: '''0xFA''' (This may be an address instead as rfc1662 uses only one flag for frame separation). &lt;br /&gt;
&lt;br /&gt;
As we found out that the CRC is calculated even over the flag '''0xFA''' and with assuming that the basic for the protocol is HDLC we can say that 0xFA is not the starting flag of the frame. It should be an adress if we have a real implemenation of HDLC that follows the rfc.&lt;br /&gt;
&lt;br /&gt;
=== Packet End ===&lt;br /&gt;
&lt;br /&gt;
A packet ends with: '''0x7E'''&lt;br /&gt;
&lt;br /&gt;
=== Escaping ===&lt;br /&gt;
&lt;br /&gt;
For the packet end marker there is an escaping sequence inside the packet. It is used '''0x7D 0x5E''' instead. Therefor '''0x7D''' is escaped as '''0x7D  0x5D''' as well.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
No informations about the header format have been gathered yet.&lt;br /&gt;
&lt;br /&gt;
=== Payload ===&lt;br /&gt;
&lt;br /&gt;
No informations about the payload format have been gathered yet.&lt;br /&gt;
&lt;br /&gt;
=== Checksum ===&lt;br /&gt;
&lt;br /&gt;
The last two bytes before the packet ending marker are a CRC16-FCS checksum. (See rfc1662 for polynom and table)&lt;br /&gt;
&lt;br /&gt;
=== Similarity to RFC1662 ===&lt;br /&gt;
&lt;br /&gt;
The usage of CRC-16-FCS but even more the frame boundary packet as well as the escaping for it looks similar to what we found about this protocol.&lt;br /&gt;
&lt;br /&gt;
http://tools.ietf.org/html/rfc1662&lt;br /&gt;
&lt;br /&gt;
=== Identified byte sequences ===&lt;br /&gt;
* Sync Message: 0xfa 0x10 0x0&lt;br /&gt;
* Sync Response Message: 0xfa 0x30 0x0&lt;br /&gt;
* Configuration Message: 0xfa 0x30 0x00 0x1&lt;br /&gt;
* Empty Configuration Message: 0xfa 0x40 0x0&lt;br /&gt;
* Configuration Response Message: 0xfa 0x40 0x0&lt;br /&gt;
* Acknowledge Message: 0xfa 0x50 0x0&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Research_Pre_GSM_Modem_Protocol&amp;diff=6609</id>
		<title>Research Pre GSM Modem Protocol</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Research_Pre_GSM_Modem_Protocol&amp;diff=6609"/>
		<updated>2009-10-21T18:12:39Z</updated>

		<summary type="html">&lt;p&gt;Morphis: Add assume about 0xfa as non-starting-flag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here we are collecting informations about the modem protocol. At the moment all the research is don on the european UMTS version of the Palm Pre. The CDM version is likely to be pretty similar to the UMTS variant with regards to the protocol.&lt;br /&gt;
&lt;br /&gt;
What we are doing to get used to the protocol is to strace the different applications that talk to the modem and log everything that goes over /dev/modemuart to the actual modem. From this wire protocol traces we are working backwards to the actual protocol and packet format.&lt;br /&gt;
&lt;br /&gt;
=== Packet Start ===&lt;br /&gt;
&lt;br /&gt;
A new packet starts with: '''0xFA''' (This may be an address instead as rfc1662 uses only one flag for frame separation). &lt;br /&gt;
&lt;br /&gt;
As we found out that the CRC is calculated even over the flag '''0xFA''' and with assuming that the basic for the protocol is HDLC we can say that 0xFA is not the starting flag of the frame. It should be an adress if we have a real implemenation of HDLC that follows the rfc.&lt;br /&gt;
&lt;br /&gt;
=== Packet End ===&lt;br /&gt;
&lt;br /&gt;
A packet ends with: '''0x7E'''&lt;br /&gt;
&lt;br /&gt;
=== Escaping ===&lt;br /&gt;
&lt;br /&gt;
For the packet end marker there is an escaping sequence inside the packet. It is used '''0x7D 0x5E''' instead. Therefor '''0x7D''' is escaped as '''0x7D  0x5D''' as well.&lt;br /&gt;
&lt;br /&gt;
=== Header ===&lt;br /&gt;
&lt;br /&gt;
No informations about the header format have been gathered yet.&lt;br /&gt;
&lt;br /&gt;
=== Payload ===&lt;br /&gt;
&lt;br /&gt;
No informations about the payload format have been gathered yet.&lt;br /&gt;
&lt;br /&gt;
=== Checksum ===&lt;br /&gt;
&lt;br /&gt;
The last two bytes before the packet ending marker are a CRC16-FCS checksum. (See rfc1662 for polynom and table)&lt;br /&gt;
&lt;br /&gt;
=== Similarity to RFC1662 ===&lt;br /&gt;
&lt;br /&gt;
The usage of CRC-16-FCS but even more the frame boundary packet as well as the escaping for it looks similar to what we found about this protocol.&lt;br /&gt;
&lt;br /&gt;
http://tools.ietf.org/html/rfc1662&lt;/div&gt;</summary>
		<author><name>Morphis</name></author>
	</entry>
</feed>