Difference between revisions of "How to get the Android distribution"

From IGEP - ISEE Wiki

Jump to: navigation, search
(Build Android Froyo from sources)
m (Pre-built images for impatients)
 
(47 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 +
__TOC__
 +
{{Message/Information Message|message= New [http://labs.isee.biz/index.php/How_to_get_the_Android_4.0_%28Ice_Cream_Sandwich%29_distribution Android 4 (ICS)] is available}}
 
= How to get the Android distribution  =
 
= How to get the Android distribution  =
  
Line 41: Line 43:
 
*Android website ( http://www.android.com/ )
 
*Android website ( http://www.android.com/ )
 
*Android developer website ( http://developer.android.com )
 
*Android developer website ( http://developer.android.com )
 +
*Android NDK, for native development ( http://developer.android.com/sdk/ndk/index.html )
 
*Rowboat project website ( http://code.google.com/p/rowboat )
 
*Rowboat project website ( http://code.google.com/p/rowboat )
  
Line 54: Line 57:
  
 
In Ubuntu Linux you will do:
 
In Ubuntu Linux you will do:
 +
 +
<pre>
 +
sudo dpkg-reconfigure dash
 +
</pre>
 +
 +
You need to answer 'no' when asked if you want to install 'dash' as /bin/sh.
 +
 +
 +
To get the repo for java5 add these lines to your /etc/apt/sources.list
 +
<pre>
 +
deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse
 +
deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
 +
</pre>
 +
 
<pre>
 
<pre>
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev libreadline5-dev
+
$ sudo apt-get install sun-java5-jdk git-core gnupg expect flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev libreadline5-dev realpath coreutils
 
</pre>
 
</pre>
 +
 +
Then use command
 +
<pre>
 +
sudo update-java-alternatives -s java-1.5.0-sun
 +
</pre>
 +
 +
to switch your default Java machine to version 1.5.
  
 
*You might also want Valgrind, a tool that will help you find memory leaks, stack corruption, array bounds overflows, etc.
 
*You might also want Valgrind, a tool that will help you find memory leaks, stack corruption, array bounds overflows, etc.
Line 69: Line 93:
 
$ chmod a+x ~/bin/repo
 
$ chmod a+x ~/bin/repo
 
$ export PATH=$PATH:~/bin
 
$ export PATH=$PATH:~/bin
 +
</pre>
 +
 +
'''NOTE:''' If you are developing on a machine not using English as default language, you should probably run following command to ensure correct functionality of tools and scripts:
 +
<pre>
 +
$ export LANG=C
 
</pre>
 
</pre>
  
 
== Android Froyo 2.2 Platform ==
 
== Android Froyo 2.2 Platform ==
  
=== Pre-built images for impatients ===
+
=== Pre-built images for impatients ===
  
 
<span style="color: rgb(255, 0, 0);">
 
<span style="color: rgb(255, 0, 0);">
 
This software is distributed in the hope that it will be useful, but '''WITHOUT ANY WARRANTY'''; without even the implied warranty of '''MERCHANTABILITY''' or '''FITNESS FOR A PARTICULAR PURPOSE''''.
 
This software is distributed in the hope that it will be useful, but '''WITHOUT ANY WARRANTY'''; without even the implied warranty of '''MERCHANTABILITY''' or '''FITNESS FOR A PARTICULAR PURPOSE''''.
 
</span>  
 
</span>  
 +
 +
 +
{{Message/Broken Links}}
 +
  
 
{| border="1" class="simple"
 
{| border="1" class="simple"
Line 89: Line 122:
 
|-
 
|-
 
| &nbsp;Android 2.2 (Froyo) for <span style="color: rgb(255, 0, 0);">DM3730&nbsp;</span>  
 
| &nbsp;Android 2.2 (Froyo) for <span style="color: rgb(255, 0, 0);">DM3730&nbsp;</span>  
| &nbsp;[http://downloads.igep.es/binaries/x-loader/v1.4.4-1/x-load-1.4.4-1.igep0020-sdcard.bin.ift x-load-1.4.4-1]&nbsp;  
+
| &nbsp;[http://downloads.isee.biz/pub/SW_Releases/binaries/x-loader/v1.4.4-1/x-load-1.4.4-1.igep0020-sdcard.bin.ift x-load-1.4.4-1]&nbsp;  
| &nbsp;[http://downloads.igep.es/binaries/u-boot-arm/v2010.06-1/u-boot-arm-2010.06-1.igep0020.bin u-boot-2010.06-1]&nbsp;  
+
| &nbsp;[http://labs.isee.biz/index.php/U-Boot_2010.06-y_series u-boot-2010.06-1]&nbsp;  
| &nbsp;[http://downloads.igep.es/android/froyo-2.2/uImage-android-2.6.32.bin uImage-2.6.32.bin]&nbsp;  
+
| &nbsp;[http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/uImage-android-2.6.32.bin uImage-2.6.32.bin]&nbsp;  
| &nbsp;[http://downloads.igep.es/android/froyo-2.2/android-dm3730-froyo-2.2-20110223161010.tar.bz2 dm3730-2.2]&nbsp;  
+
| &nbsp;[http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/android-dm3730-froyo-2.2-20110223161010.tar.bz2 dm3730-2.2]&nbsp;  
 
| http://developer.android.com/sdk/android-2.2.html  
 
| http://developer.android.com/sdk/android-2.2.html  
 
| <br>
 
| <br>
 
|-
 
|-
 
| &nbsp;Android 2.2 (Froyo) for <span style="color: rgb(255, 0, 0);">OMAP3530&nbsp;</span>  
 
| &nbsp;Android 2.2 (Froyo) for <span style="color: rgb(255, 0, 0);">OMAP3530&nbsp;</span>  
| &nbsp;N/A
+
| &nbsp;[http://downloads.isee.biz/pub/SW_Releases/binaries/x-loader/v1.4.4-1/x-load-1.4.4-1.igep0020-sdcard.bin.ift x-load-1.4.4-1]&nbsp;
| &nbsp;N/A
+
| &nbsp;[http://labs.isee.biz/index.php/U-Boot_2010.06-y_series u-boot-2010.06-1]&nbsp;
| &nbsp;N/A
+
| &nbsp;[http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/uImage-android-2.6.32.bin uImage-2.6.32.bin]&nbsp;
| &nbsp;N/A
+
| &nbsp;[http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/android-om3530-froyo-2.2-20110224115610.tar.bz2 om3530-2.2]&nbsp;
 
| http://developer.android.com/sdk/android-2.2.html
 
| http://developer.android.com/sdk/android-2.2.html
 
|}
 
|}
Line 106: Line 139:
 
boot.scr files:  
 
boot.scr files:  
  
*dvi: [http://downloads.igep.es/android/froyo-2.2/boot-dvi.scr 1280x720]  
+
*dvi: [http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/boot-dvi.scr 1280x720]  
*lcd: [http://downloads.igep.es/android/froyo-2.2/boot-lcd-70.scr Seiko 7.0 inch WVGA (800 x RGB x 480) TFT with Touch-Panel]  
+
*lcd: [http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/boot-lcd-70.scr Seiko 7.0 inch WVGA (800 x RGB x 480) TFT with Touch-Panel]  
*lcd: [http://downloads.igep.es/android/froyo-2.2/boot-lcd-43.scr Powertip 4.3 inch (480 x RGB x 272) TFT with Touch-Panel]
+
*lcd: [http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/boot-lcd-43.scr Powertip 4.3 inch (480 x RGB x 272) TFT with Touch-Panel]
 +
 
 +
If you want to hook up a HDMI TFT monitor (tv for example), modify the parameter&nbsp;omapfb.mode in the *.scr file to&nbsp;omapfb.mode=dvi:hd720-32@50, with the parameter 32 is the colo mode (16, 24 or 32 bits) and the parameter 50 is the frequency (50 or 60 Hz), both for the monitor used.
  
 
'''Quick steps: create a bootable sdcard'''  
 
'''Quick steps: create a bootable sdcard'''  
  
  $ wget http://downloads.igep.es/binaries/x-loader/v1.4.4-1/x-load-1.4.4-1.igep0020-sdcard.bin.ift
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/binaries/x-loader/v1.4.4-1/x-load-1.4.4-1.igep0020-sdcard.bin.ift
  $ wget http://downloads.igep.es/binaries/u-boot-arm/v2010.06-1/u-boot-arm-2010.06-1.igep0020.bin
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/binaries/u-boot-arm/v2010.06-1/u-boot-arm-2010.06-1.igep0020.bin
  $ wget http://downloads.igep.es/android/froyo-2.2/uImage-android-2.6.32.bin
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/uImage-android-2.6.32.bin
  $ wget http://downloads.igep.es/android/froyo-2.2/android-dm3730-froyo-2.2-20110223161010.tar.bz2
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/android-dm3730-froyo-2.2-20110223161010.tar.bz2
  $ wget http://downloads.igep.es/files/media-samples.tar.gz
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/files/media-samples.tar.gz
 
  $ tar xzf media-samples.tar.gz
 
  $ tar xzf media-samples.tar.gz
  
 
Download one of  
 
Download one of  
  
  $ wget http://downloads.igep.es/android/froyo-2.2/boot-dvi.scr
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/boot-dvi.scr
  $ wget http://downloads.igep.es/android/froyo-2.2/boot-lcd-70.scr
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/boot-lcd-70.scr
  $ wget http://downloads.igep.es/android/froyo-2.2/boot-lcd-43.scr
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/boot-lcd-43.scr
  
 
and rename to boot.scr  
 
and rename to boot.scr  
Line 129: Line 164:
 
  $ mv &lt;boot.scr file&gt; boot.scr
 
  $ mv &lt;boot.scr file&gt; boot.scr
  
Make the sd card  
+
Make the sd card:
  
  $ wget http://downloads.igep.es/android/froyo-2.2/mkmmc-android.sh
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/mkmmc-android.sh
 
  $ chmod a+x mkmmc-android.sh
 
  $ chmod a+x mkmmc-android.sh
 
  $ sudo ./mkmmc-android.sh &lt;device&gt; x-load-1.4.4-1.igep0020-sdcard.bin.ift u-boot-arm-2010.06-1.igep0020.bin uImage-android-2.6.32.bin boot.scr android-dm3730-froyo-2.2-20110223161010.tar.bz2 media-samples
 
  $ sudo ./mkmmc-android.sh &lt;device&gt; x-load-1.4.4-1.igep0020-sdcard.bin.ift u-boot-arm-2010.06-1.igep0020.bin uImage-android-2.6.32.bin boot.scr android-dm3730-froyo-2.2-20110223161010.tar.bz2 media-samples
 +
 +
The device name here (&lt;device&gt;) is actually the SDCard in your /dev/ folder. Try removing and inserting the card, and then type command ''dmesg'' in terminal in order to figure out which device name to use (/dev/sdb in this example).
 +
 +
Sample output of ''dmesg'' command:
 +
<pre>[  111.583965] sd 3:0:0:0: [sdb] 990976 512-byte hardware sectors (507 MB)
 +
 +
[  111.587140] sd 3:0:0:0: [sdb] Write Protect is off
 +
 +
[  111.587144] sd 3:0:0:0: [sdb] Mode Sense: 03 00 00 00
 +
 +
[  111.587146] sd 3:0:0:0: [sdb] Assuming drive cache: write through
 +
 +
[  111.591499] sd 3:0:0:0: [sdb] 990976 512-byte hardware sectors (507 MB)
 +
 +
[  111.595692] sd 3:0:0:0: [sdb] Write Protect is off
 +
 +
[  111.595697] sd 3:0:0:0: [sdb] Mode Sense: 03 00 00 00
 +
 +
[  111.595699] sd 3:0:0:0: [sdb] Assuming drive cache: write through
 +
 +
[  111.595721]  sdb: sdb1</pre>
 +
 +
<div>Note that the numbers are just a timestamp, and that this is the last few lines of the ''dmesg'' command output (you will more likely be in the same situation, given that the last peripheral hooked up to your machine wille be the SD Card).&nbsp;</div>
  
 
=== Enhancements ===
 
=== Enhancements ===
Line 144: Line 202:
 
*RECOMMENDED at least a class 6 SD card  
 
*RECOMMENDED at least a class 6 SD card  
 
*RTC doesn't work. Board cannot save time between reboots.  
 
*RTC doesn't work. Board cannot save time between reboots.  
*ADB doesn't work. Connecting board to a PC shows nothing in lsusb at all.
+
*ADB doesn't work over USB. Connecting board to a PC shows nothing in lsusb at all. ADB works over ethernet. Refer to 'adb connect' command.
 
*4x4 keyboard doesn't work  
 
*4x4 keyboard doesn't work  
*Powertip 4.3 inch (480 x RGB x 272) TFT with Touch-Panel (not tested yet) (2011-02-24 Tested, works fine. Display is connected through expansion board. Both display and touch pad function normally.)
 
 
*Ethernet + Wifi do not work together, the problem is in the android network "stack". In rowboat froyo an wired ethernet component was copied from (guessing) android-x86 and this is conflicting with the wifi part. This is also mentioned on the android-x86 mailinglist as being an issue.So is not a kernel/ wifi driver issue but entirely an android stack issue.  
 
*Ethernet + Wifi do not work together, the problem is in the android network "stack". In rowboat froyo an wired ethernet component was copied from (guessing) android-x86 and this is conflicting with the wifi part. This is also mentioned on the android-x86 mailinglist as being an issue.So is not a kernel/ wifi driver issue but entirely an android stack issue.  
 
**If you want to use wifi, it seems that it cannot connect to a wifi ap but if you boot the second time it is ok, to use wifi do the following:  
 
**If you want to use wifi, it seems that it cannot connect to a wifi ap but if you boot the second time it is ok, to use wifi do the following:  
Line 160: Line 217:
 
=== Build Android Froyo from sources ===
 
=== Build Android Froyo from sources ===
  
 +
==== Get the latest source ====
 
Run repo init to bring down the latest version of Repo with all its most recent bug fixes. You must specify a URL for the manifest:
 
Run repo init to bring down the latest version of Repo with all its most recent bug fixes. You must specify a URL for the manifest:
  
Line 170: Line 228:
 
  $ repo sync
 
  $ repo sync
  
'''Before continue apply these patches'''[[#Annex:_patches |(click here)]]
+
==== Apply IGEP v2 patches ====
 +
<span style="color: rgb(255, 0, 0);">
 +
Attention '''BEFORE''' continue you must apply all patches described [[#Annex:_patches |here]] '''Also''' copy the the [[#Annex:_libertas.rc |libertas init script]] and move it to device/ti/igepv2/libertas/rc.libertas
 +
</span>
  
 +
==== Download WIFI kernel modules ====
 
Download libertas modules and move to device/ti/igepv2/libertas/
 
Download libertas modules and move to device/ti/igepv2/libertas/
 
   
 
   
 
  $ mkdir device/ti/igepv2/libertas/
 
  $ mkdir device/ti/igepv2/libertas/
  $ wget http://downloads.igep.es/android/froyo-2.2/libertas.ko
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/libertas.ko
  $ wget http://downloads.igep.es/android/froyo-2.2/libertas_sdio.ko
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/libertas_sdio.ko
  $ mv sd8686*bin device/ti/igepv2/libertas/
+
  $ mv libertas.ko device/ti/igepv2/libertas/
 +
$ mv libertas_sdio.ko device/ti/igepv2/libertas/
  
 
and download libertas firmware and move to device/ti/igepv2/firmware/
 
and download libertas firmware and move to device/ti/igepv2/firmware/
  
 
  $ mkdir device/ti/igepv2/firmware/
 
  $ mkdir device/ti/igepv2/firmware/
  $ wget http://downloads.igep.es/android/froyo-2.2/sd8686.bin
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/sd8686.bin
  $ wget http://downloads.igep.es/android/froyo-2.2/sd8686_helper.bin
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/sd8686_helper.bin
 
  $ mv sd8686*bin device/ti/igepv2/firmware/
 
  $ mv sd8686*bin device/ti/igepv2/firmware/
  
 +
==== Download TI DVSDK package ====
 
Download the TI DVSDK package to the external/ti-dsp folder manually from the table in webpage http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_4_00/latest/index_FDS.html. Registration might be needed.
 
Download the TI DVSDK package to the external/ti-dsp folder manually from the table in webpage http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_4_00/latest/index_FDS.html. Registration might be needed.
 
* For DM37xx platform, download dvsdk_dm3730-evm_4_01_00_09_setuplinux package;
 
* For DM37xx platform, download dvsdk_dm3730-evm_4_01_00_09_setuplinux package;
Line 192: Line 256:
 
  $ cp <dvsdk package> external/ti-dsp
 
  $ cp <dvsdk package> external/ti-dsp
  
 +
The next step is running the TI DVSDK installation script. Since the script relies on English application output you need to set the language to English (only on non-english development hosts):
 +
 +
$ export LANG=C
 +
 +
Now run the get-tidsp.sh script
 +
 +
$ external/ti-dsp/./get_tidsp.sh
 +
 +
==== Download enhanced IGEP v2 kernel ====
 
Current kernel version works but there is an updated kernel in IGEP repositories, so it's recommended use this version, to do this add the linux-omap-2.6 IGEP repository and switch to linux-android-2.6.32.y branch.
 
Current kernel version works but there is an updated kernel in IGEP repositories, so it's recommended use this version, to do this add the linux-omap-2.6 IGEP repository and switch to linux-android-2.6.32.y branch.
 
  $ cd kernel
 
  $ cd kernel
 
  $ git remote add igep git://git.igep.es/pub/scm/linux-omap-2.6.git
 
  $ git remote add igep git://git.igep.es/pub/scm/linux-omap-2.6.git
 
  $ git fetch igep
 
  $ git fetch igep
  $ git checkout igep/linux-android-2.6.32.y -b linux-android-2.6.32.y
+
  $ git checkout igep/linux-2.6.32.y-android -b linux-2.6.32.y-android
 
  $ cd ..
 
  $ cd ..
  
 +
==== Build the sources ====
 
Now you're ready for build, do
 
Now you're ready for build, do
  
Line 211: Line 285:
 
*OMAPES=5.x, for DM37x
 
*OMAPES=5.x, for DM37x
  
 +
==== Create rootfs tarball ====
 
Next step is create a tarball containing the rootfs
 
Next step is create a tarball containing the rootfs
  
Line 218: Line 293:
 
  $ sudo build/tools/mktarball.sh out/host/linux-x86/bin/fs_get_stats froyo-rootfs . rootfs froyo-rootfs.tar.bz2
 
  $ sudo build/tools/mktarball.sh out/host/linux-x86/bin/fs_get_stats froyo-rootfs . rootfs froyo-rootfs.tar.bz2
  
 +
==== Create Android SD card ====
 
Create a SD card
 
Create a SD card
  
  $ wget http://downloads.igep.es/binaries/x-loader/v1.4.4-1/x-load-1.4.4-1.igep0020-sdcard.bin.ift
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/binaries/x-loader/v1.4.4-1/x-load-1.4.4-1.igep0020-sdcard.bin.ift
  $ wget http://downloads.igep.es/binaries/u-boot-arm/v2010.06-1/u-boot-arm-2010.06-1.igep0020.bin
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/binaries/u-boot-arm/v2010.06-1/u-boot-arm-2010.06-1.igep0020.bin
  
 
Create ONE of these scripts (boot.source)
 
Create ONE of these scripts (boot.source)
Line 258: Line 334:
 
download some media samples
 
download some media samples
  
  $ wget http://downloads.igep.es/files/media-samples.tar.gz
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/files/media-samples.tar.gz
 
  $ tar xzf media-samples.tar.gz
 
  $ tar xzf media-samples.tar.gz
  
finally create the sdcard with the mkmmc-android.sh script
+
finally create the sdcard with the mkmmc-android.sh script (See pre built images for impatients to learn how to create the SD card).
 
   
 
   
  $ wget http://downloads.igep.es/android/froyo-2.2/mkmmc-android.sh
+
  $ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/mkmmc-android.sh
 
  $ chmod a+x mkmmc-android.sh
 
  $ chmod a+x mkmmc-android.sh
 
  $ sudo ./mkmmc-android.sh <device> x-load-1.4.4-1.igep0020-sdcard.bin.ift u-boot-arm-2010.06-1.igep0020.bin kernel/arch/arm/boot/uImage boot.scr froyo-rootfs.tar.bz2 media-samples
 
  $ sudo ./mkmmc-android.sh <device> x-load-1.4.4-1.igep0020-sdcard.bin.ift u-boot-arm-2010.06-1.igep0020.bin kernel/arch/arm/boot/uImage boot.scr froyo-rootfs.tar.bz2 media-samples
  
'''Warning:''' Provide the right device name after the script name when you invoke the script. If you get this wrong it can wipe your HDD.
+
'''Warning:''' Provide the right device name after the script name when you invoke the script. If you get this wrong it can wipe your HDD. (See pre built images for impatients to learn how to figure out the device name).
  
 
=== Annex: patches ===
 
=== Annex: patches ===
 +
 +
Save blocks of code below instructions correspondingly as files patch1, patch2, patch3
 +
 +
then do:
 +
 +
This needs to be reviewed as patch below is wrong!
 +
<pre>
 +
cd device/ti/igepv2
 +
patch -b < ../../../patch1
 +
cd ../../..
 +
</pre>
 +
 +
<pre>
 +
cd external/wpa_supplicant
 +
patch -b < ../../patch2
 +
cd ../..
 +
</pre>
 +
 +
<pre>
 +
cd hardware/libhardware_legacy/wifi
 +
patch -b < ../../../patch3
 +
cd ../../..
 +
</pre>
  
 
==== Project device/ti/igepv2/ ====
 
==== Project device/ti/igepv2/ ====
 
<pre>
 
<pre>
project device/ti/igepv2/
 
 
diff --git a/AndroidBoard.mk b/AndroidBoard.mk
 
diff --git a/AndroidBoard.mk b/AndroidBoard.mk
index bd28495..01b7385 100644
+
index bd28495..580a46b 100644
 
--- a/AndroidBoard.mk
 
--- a/AndroidBoard.mk
 
+++ b/AndroidBoard.mk
 
+++ b/AndroidBoard.mk
@@ -27,6 +27,36 @@ PRODUCT_COPY_FILES += \
+
@@ -11,8 +11,13 @@ $(file): $(TARGET_PREBUILT_KERNEL) | $(ACP)
 +
 +
ifeq ($(TARGET_PROVIDES_INIT_RC),true)
 +
file := $(TARGET_ROOT_OUT)/init.rc
 +
-$(file): $(LOCAL_PATH)/init.rc | $(ACP)
 +
+ifeq ($(OMAPES),5.x)
 +
+$(file): $(LOCAL_PATH)/init.rc.dm37x | $(ACP)
 +
$(transform-prebuilt-to-target)
 +
+else
 +
+$(file): $(LOCAL_PATH)/init.rc.omap35x | $(ACP)
 +
+ $(transform-prebuilt-to-target)
 +
+endif
 +
ALL_PREBUILT += $(file)
 +
endif
 +
 +
@@ -27,6 +32,36 @@ PRODUCT_COPY_FILES += \
 
  PRODUCT_COPY_FILES += \
 
  PRODUCT_COPY_FILES += \
 
  $(LOCAL_PATH)/vold.fstab:system/etc/vold.fstab
 
  $(LOCAL_PATH)/vold.fstab:system/etc/vold.fstab
Line 340: Line 453:
 
+# dhcpcd-run-hooks uses these options.
 
+# dhcpcd-run-hooks uses these options.
 
+option subnet_mask, routers, domain_name_servers
 
+option subnet_mask, routers, domain_name_servers
diff --git a/init.rc b/init.rc
+
diff --git a/init.rc.dm37x b/init.rc.dm37x
old mode 100644
+
new file mode 100755
new mode 100755
+
index 0000000..fecd861
index 57bf9bc..fecd861
+
--- /dev/null
--- a/init.rc
+
+++ b/init.rc.dm37x
+++ b/init.rc
+
@@ -0,0 +1,429 @@
@@ -1,5 +1,3 @@
+
+# Add our initlogo
-# IGEPv2 development init.rc
+
+#on early-init
-
+
+#    symlink /initlogo.rle.bak /initlogo.rle
# Add our initlogo
+
+
#on early-init
+
+on init
#    symlink /initlogo.rle.bak /initlogo.rle
+
+
@@ -124,13 +122,24 @@ loglevel 3
+
+sysclktz 0
    chmod 0777 /dev/video2
+
+
    chmod 0777 /dev/omap-resizer
+
+loglevel 3
+
+
 +
+# setup the global environment
 +
+    export PATH /sbin:/system/sbin:/system/bin:/system/xbin
 +
+    export LD_LIBRARY_PATH /system/lib
 +
+    export ANDROID_BOOTLOGO 1
 +
+    export ANDROID_ROOT /system
 +
+    export ANDROID_ASSETS /system/app
 +
+    export ANDROID_DATA /data
 +
+    export EXTERNAL_STORAGE /mnt/sdcard
 +
+    export ASEC_MOUNTPOINT /mnt/asec
 +
+    export BOOTCLASSPATH /system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar
 +
+
 +
+# Backward compatibility
 +
+    symlink /system/etc /etc
 +
+    symlink /sys/kernel/debug /d
 +
+
 +
+# create mountpoints
 +
+    mkdir /mnt 0775 root system
 +
+    mkdir /mnt/sdcard 0000 system system
 +
+
 +
+# Create cgroup mount point for cpu accounting
 +
+    mkdir /acct
 +
+    mount cgroup none /acct cpuacct
 +
+    mkdir /acct/uid
 +
+
 +
+# Backwards Compat - XXX: Going away in G*
 +
+    symlink /mnt/sdcard /sdcard
 +
+
 +
+    mkdir /system
 +
+    mkdir /data 0771 system system
 +
+    mkdir /cache 0770 system cache
 +
+    mkdir /config 0500 root root
 +
+
 +
+    # Directory for putting things only root should see.
 +
+    mkdir /mnt/secure 0700 root root
 +
+
 +
+    # Directory for staging bindmounts
 +
+    mkdir /mnt/secure/staging 0700 root root
 +
+
 +
+    # Directory-target for where the secure container
 +
+    # imagefile directory will be bind-mounted
 +
+    mkdir /mnt/secure/asec  0700 root root
 +
+
 +
+    # Secure container public mount points.
 +
+    mkdir /mnt/asec  0700 root system
 +
+    mount tmpfs tmpfs /mnt/asec mode=0755,gid=1000
 +
+
 +
+##    mount rootfs rootfs / ro remount
 +
+
 +
+    write /proc/sys/kernel/panic_on_oops 1
 +
+    write /proc/sys/kernel/hung_task_timeout_secs 0
 +
+    write /proc/cpu/alignment 4
 +
+    write /proc/sys/kernel/sched_latency_ns 10000000
 +
+    write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000
 +
+    write /proc/sys/kernel/sched_compat_yield 1
 +
+    write /proc/sys/kernel/sched_child_runs_first 0
 +
+
 +
+# Create cgroup mount points for process groups
 +
+    mkdir /dev/cpuctl
 +
+    mount cgroup none /dev/cpuctl cpu
 +
+    chown system system /dev/cpuctl
 +
+    chown system system /dev/cpuctl/tasks
 +
+    chmod 0777 /dev/cpuctl/tasks
 +
+    write /dev/cpuctl/cpu.shares 1024
 +
+
 +
+    mkdir /dev/cpuctl/fg_boost
 +
+    chown system system /dev/cpuctl/fg_boost/tasks
 +
+    chmod 0777 /dev/cpuctl/fg_boost/tasks
 +
+    write /dev/cpuctl/fg_boost/cpu.shares 1024
 +
+
 +
+    mkdir /dev/cpuctl/bg_non_interactive
 +
+    chown system system /dev/cpuctl/bg_non_interactive/tasks
 +
+    chmod 0777 /dev/cpuctl/bg_non_interactive/tasks
 +
+    # 5.0 %
 +
+    write /dev/cpuctl/bg_non_interactive/cpu.shares 52
 +
+
 +
+    chown system system /data
 +
+    chmod 0771 /data
 +
+
 +
+    # Create dump dir and collect dumps.
 +
+    # Do this before we mount cache so eventually we can use cache for
 +
+    # storing dumps on platforms which do not have a dedicated dump partition.
 +
 +
+    mkdir /data/dontpanic
 +
+    chown root log /data/dontpanic
 +
+   chmod 0750 /data/dontpanic
 +
+
 +
+    # Collect apanic data, free resources and re-arm trigger
 +
+    copy /proc/apanic_console /data/dontpanic/apanic_console
 +
+    chown root log /data/dontpanic/apanic_console
 +
+    chmod 0640 /data/dontpanic/apanic_console
 +
+
 +
+    copy /proc/apanic_threads /data/dontpanic/apanic_threads
 +
+    chown root log /data/dontpanic/apanic_threads
 +
+    chmod 0640 /data/dontpanic/apanic_threads
 +
+
 +
+    write /proc/apanic_console 1
 +
+
 +
+    # Same reason as /data above
 +
+    chown system cache /cache
 +
+    chmod 0770 /cache
 +
+
 +
+    # This may have been created by the recovery system with odd permissions
 +
+    chown system cache /cache/recovery
 +
+    chmod 0770 /cache/recovery
 +
+
 +
+    #change permissions on vmallocinfo so we can grab it from bugreports
 +
+    chown root log /proc/vmallocinfo
 +
+    chmod 0440 /proc/vmallocinfo
 +
+
 +
+# change permissions for Overlay
 +
+    chmod 0777 /dev/video1
 +
+    chmod 0777 /dev/video2
 +
+    chmod 0777 /dev/omap-resizer
 +
+
 
+# loading dsp modules
 
+# loading dsp modules
 
+    insmod /system/ti-dsp/cmemk.ko "phys_start=0x84700000 phys_end=0x85900000 allowOverlap=1 useHeapIfPoolUnavailable=1"
 
+    insmod /system/ti-dsp/cmemk.ko "phys_start=0x84700000 phys_end=0x85900000 allowOverlap=1 useHeapIfPoolUnavailable=1"
Line 362: Line 589:
 
+    insmod /system/ti-dsp/sdmak.ko
 
+    insmod /system/ti-dsp/sdmak.ko
 
+
 
+
# create basic filesystem structure
+
+# create basic filesystem structure
-    mkdir /system/etc/wifi 0770 system wifi
+
+    mkdir /system/etc/wifi 0770 wifi wifi
 +
+    chmod 0770 /system/etc/wifi
 +
+    chmod 0666 /system/etc/wifi/wpa_supplicant.conf
 +
+    chown wifi wifi /system/etc/wifi
 +
+    #wpa_supplicant control socket for android wifi.c (android private socket)
 +
+    mkdir /data/misc/wifi 0770 wifi wifi
 +
+    mkdir /data/misc/wifi/sockets 0770 wifi wifi
 +
+    chmod 0770 /data/misc/wifi
 +
+    chmod 0660 /data/misc/wifi/wpa_supplicant.conf
 +
+    chown wifi wifi /data/misc/wifi
 +
+    chown wifi wifi /data/misc/wifi/wpa_supplicant.conf
 +
+
 +
+    mkdir /data/misc 01771 system misc
 +
+    mkdir /data/misc/bluetoothd 0770 bluetooth bluetooth
 +
+    mkdir /data/misc/bluetooth 0770 system system
 +
+    mkdir /data/misc/keystore 0700 keystore keystore
 +
+    mkdir /data/misc/vpn 0770 system system
 +
+    mkdir /data/misc/systemkeys 0700 system system
 +
+    mkdir /data/misc/vpn/profiles 0770 system system
 +
+
 +
+    mkdir /data/local 0771 shell shell
 +
+    mkdir /data/local/tmp 0771 shell shell
 +
+    mkdir /data/data 0771 system system
 +
+    mkdir /data/app-private 0771 system system
 +
+   mkdir /data/app 0771 system system
 +
+    mkdir /data/property 0700 root root
 +
+    mkdir /data/misc/dhcp 0770 system dhcp
 +
+    chown system dhcp /data/misc/dhcp
 +
+
 +
+    # create dalvik-cache and double-check the perms
 +
+    mkdir /data/dalvik-cache 0771 system system
 +
+    chown system system /data/dalvik-cache
 +
+    chmod 0771 /data/dalvik-cache
 +
+
 +
+    # make sure the keychar files have correct permissions
 +
+    chmod 0644 /system/usr/keychars/qwerty.kcm.bin
 +
+    chmod 0644 /system/usr/keychars/qwerty2.kcm.bin
 +
+
 +
+    # create the lost+found directories, so as to enforce our permissions
 +
+    mkdir /data/lost+found 0770
 +
+    mkdir /cache/lost+found 0770
 +
+
 +
+    # double check the perms, in case lost+found already exists, and set owner
 +
+    chown root root /data/lost+found
 +
+    chmod 0770 /data/lost+found
 +
+    chown root root /cache/lost+found
 +
+    chmod 0770 /cache/lost+found
 +
+
 +
+on boot
 +
+# basic network init
 +
+    ifup lo
 +
+    hostname localhost
 +
+    domainname localdomain
 +
+
 +
+# set RLIMIT_NICE to allow priorities from 19 to -20
 +
+    setrlimit 13 40 40
 +
+
 +
+# No battery hardware present
 +
+    setprop hw.nobattery true
 +
+    setprop hw.nophone true
 +
+
 +
+# Use USB keyboard layout
 +
+    setprop hw.keylayout usbkbd
 +
+    setprop hw.keycharmap usbkbd
 +
+
 +
+# Disable powermanagement
 +
+    setprop hw.nopm    true
 +
+
 +
+# Define the oom_adj values for the classes of processes that can be
 +
+# killed by the kernel.  These are used in ActivityManagerService.
 +
+    setprop ro.FOREGROUND_APP_ADJ 0
 +
+    setprop ro.VISIBLE_APP_ADJ 1
 +
+    setprop ro.SECONDARY_SERVER_ADJ 2
 +
+    setprop ro.BACKUP_APP_ADJ 2
 +
+    setprop ro.HOME_APP_ADJ 4
 +
+    setprop ro.HIDDEN_APP_MIN_ADJ 7
 +
+    setprop ro.CONTENT_PROVIDER_ADJ 14
 +
+    setprop ro.EMPTY_APP_ADJ 15
 +
+
 +
+# Define the memory thresholds at which the above process classes will
 +
+# be killed.  These numbers are in pages (4k).
 +
+    setprop ro.FOREGROUND_APP_MEM 1536
 +
+    setprop ro.VISIBLE_APP_MEM 2048
 +
+    setprop ro.SECONDARY_SERVER_MEM 4096
 +
+    setprop ro.BACKUP_APP_MEM 4096
 +
+    setprop ro.HOME_APP_MEM 4096
 +
+    setprop ro.HIDDEN_APP_MEM 5120
 +
+    setprop ro.CONTENT_PROVIDER_MEM 5632
 +
+    setprop ro.EMPTY_APP_MEM 6144
 +
+
 +
+# Write value must be consistent with the above properties.
 +
+# Note that the driver only supports 6 slots, so we have HOME_APP at the
 +
+# same memory level as services.
 +
+    write /sys/module/lowmemorykiller/parameters/adj 0,1,2,7,14,15
 +
+
 +
+    write /proc/sys/vm/overcommit_memory 1
 +
+    write /proc/sys/vm/min_free_order_shift 4
 +
+    write /sys/module/lowmemorykiller/parameters/minfree 1536,2048,4096,5120,5632,6144
 +
+
 +
+    # Set init its forked children's oom_adj.
 +
+    write /proc/1/oom_adj -16
 +
+
 +
+    # Tweak background writeout
 +
+    write /proc/sys/vm/dirty_expire_centisecs 200
 +
+    write /proc/sys/vm/dirty_background_ratio  5
 +
+
 +
+    # Permissions for System Server and daemons.
 +
+    chown radio system /sys/android_power/state
 +
+    chown radio system /sys/android_power/request_state
 +
+    chown radio system /sys/android_power/acquire_full_wake_lock
 +
+    chown radio system /sys/android_power/acquire_partial_wake_lock
 +
+    chown radio system /sys/android_power/release_wake_lock
 +
+    chown radio system /sys/power/state
 +
+    chown radio system /sys/power/wake_lock
 +
+    chown radio system /sys/power/wake_unlock
 +
+    chmod 0660 /sys/power/state
 +
+    chmod 0660 /sys/power/wake_lock
 +
+    chmod 0660 /sys/power/wake_unlock
 +
+    chown system system /sys/class/timed_output/vibrator/enable
 +
+    chown system system /sys/class/leds/keyboard-backlight/brightness
 +
+    chown system system /sys/class/leds/lcd-backlight/brightness
 +
+    chown system system /sys/class/leds/button-backlight/brightness
 +
+    chown system system /sys/class/leds/jogball-backlight/brightness
 +
+    chown system system /sys/class/leds/red/brightness
 +
+    chown system system /sys/class/leds/green/brightness
 +
+    chown system system /sys/class/leds/blue/brightness
 +
+    chown system system /sys/class/leds/red/device/grpfreq
 +
+    chown system system /sys/class/leds/red/device/grppwm
 +
+    chown system system /sys/class/leds/red/device/blink
 +
+    chown system system /sys/class/leds/red/brightness
 +
+    chown system system /sys/class/leds/green/brightness
 +
+    chown system system /sys/class/leds/blue/brightness
 +
+    chown system system /sys/class/leds/red/device/grpfreq
 +
+    chown system system /sys/class/leds/red/device/grppwm
 +
+    chown system system /sys/class/leds/red/device/blink
 +
+    chown system system /sys/class/timed_output/vibrator/enable
 +
+    chown system system /sys/module/sco/parameters/disable_esco
 +
+    chown system system /sys/kernel/ipv4/tcp_wmem_min
 +
+    chown system system /sys/kernel/ipv4/tcp_wmem_def
 +
+    chown system system /sys/kernel/ipv4/tcp_wmem_max
 +
+    chown system system /sys/kernel/ipv4/tcp_rmem_min
 +
+    chown system system /sys/kernel/ipv4/tcp_rmem_def
 +
+    chown system system /sys/kernel/ipv4/tcp_rmem_max
 +
+    chown root radio /proc/cmdline
 +
+
 +
+# Define TCP buffer sizes for various networks
 +
+#  ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
 +
+    setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208
 +
+    setprop net.tcp.buffersize.wifi    4095,87380,110208,4096,16384,110208
 +
+    setprop net.tcp.buffersize.umts    4094,87380,110208,4096,16384,110208
 +
+    setprop net.tcp.buffersize.edge    4093,26280,35040,4096,16384,35040
 +
+    setprop net.tcp.buffersize.gprs    4092,8760,11680,4096,8760,11680
 +
+
 +
+    setprop wifi.interface wlan0
 +
+
 +
+    class_start default
 +
+
 +
+## Daemon processes to be run by init.
 +
+##
 +
+service console /system/bin/sh
 +
+    console
 +
+
 +
+# start PowerVR
 +
+service pvr /system/bin/sgx/rc.pvr start
 +
+    oneshot
 +
+
 +
+# start wifi
 +
+service libertas /system/bin/libertas/rc.libertas start
 +
+    oneshot
 +
+
 +
+# adbd is controlled by the persist.service.adb.enable system property
 +
+service adbd /sbin/adbd
 +
+    disabled
 +
+
 +
+# adbd on at boot in emulator
 +
+on property:ro.kernel.qemu=1
 +
+    start adbd
 +
+
 +
+on property:persist.service.adb.enable=1
 +
+    start adbd
 +
+
 +
+on property:persist.service.adb.enable=0
 +
+    stop adbd
 +
+
 +
+service servicemanager /system/bin/servicemanager
 +
+    user system
 +
+    critical
 +
+    onrestart restart zygote
 +
+    onrestart restart media
 +
+
 +
+service vold /system/bin/vold
 +
+    socket vold stream 0660 root mount
 +
+    ioprio be 2
 +
+
 +
+service netd /system/bin/netd
 +
+    socket netd stream 0660 root system
 +
+
 +
+service debuggerd /system/bin/debuggerd
 +
+
 +
+service ril-daemon /system/bin/rild
 +
+    socket rild stream 660 root radio
 +
+    socket rild-debug stream 660 radio system
 +
+    user root
 +
+    group radio cache inet misc audio
 +
+
 +
+service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
 +
+    socket zygote stream 666
 +
+    onrestart write /sys/android_power/request_state wake
 +
+    onrestart write /sys/power/state on
 +
+    onrestart restart media
 +
+
 +
+service media /system/bin/mediaserver
 +
+    user root
 +
+    group system audio camera graphics inet net_bt net_bt_admin net_raw sdcard_rw
 +
+    ioprio rt 4
 +
+
 +
+service bootanim /system/bin/bootanimation
 +
+    user graphics
 +
+    group graphics
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service dbus /system/bin/dbus-daemon --system --nofork
 +
+    socket dbus stream 660 bluetooth bluetooth
 +
+    user bluetooth
 +
+    group bluetooth net_bt_admin
 +
+
 +
+service wpa_supplicant /system/bin/wpa_supplicant -dd -Dwext -iwlan0 -c/system/etc/wifi/wpa_supplicant.conf
 +
+    socket wpa_wlan0 dgram 660 wifi wifi
 +
+    group system wifi inet
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service bluetoothd /system/bin/bluetoothd -n
 +
+    socket bluetooth stream 660 bluetooth bluetooth
 +
+    socket dbus_bluetooth stream 660 bluetooth bluetooth
 +
+    # init.rc does not yet support applying capabilities, so run as root and
 +
+    # let bluetoothd drop uid to bluetooth with the right linux capabilities
 +
+    group bluetooth net_bt_admin misc
 +
+    disabled
 +
+
 +
+service hfag /system/bin/sdptool add --channel=10 HFAG
 +
+    user bluetooth
 +
+    group bluetooth net_bt_admin
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service hsag /system/bin/sdptool add --channel=11 HSAG
 +
+    user bluetooth
 +
+    group bluetooth net_bt_admin
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service opush /system/bin/sdptool add --channel=12 OPUSH
 +
+    user bluetooth
 +
+    group bluetooth net_bt_admin
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service pbap /system/bin/sdptool add --channel=19 PBAP
 +
+    user bluetooth
 +
+    group bluetooth net_bt_admin
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service installd /system/bin/installd
 +
+    socket installd stream 600 system system
 +
+
 +
+service flash_recovery /system/etc/install-recovery.sh
 +
+    oneshot
 +
+
 +
+service racoon /system/bin/racoon
 +
+    socket racoon stream 600 system system
 +
+    # racoon will setuid to vpn after getting necessary resources.
 +
+    group net_admin
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service mtpd /system/bin/mtpd
 +
+    socket mtpd stream 600 system system
 +
+    user vpn
 +
+    group vpn net_admin net_raw
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service keystore /system/bin/keystore /data/misc/keystore
 +
+    user keystore
 +
+    group keystore
 +
+    socket keystore stream 666
 +
+
 +
+service dumpstate /system/bin/dumpstate -s
 +
+    socket dumpstate stream 0660 shell log
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service dhcpcd /system/bin/dhcpcd -o domain_name_servers -ABKL
 +
+    disabled
 +
+    oneshot
 +
diff --git a/init.rc.omap35x b/init.rc.omap35x
 +
new file mode 100755
 +
index 0000000..d321f68
 +
--- /dev/null
 +
+++ b/init.rc.omap35x
 +
@@ -0,0 +1,429 @@
 +
+# Add our initlogo
 +
+#on early-init
 +
+#    symlink /initlogo.rle.bak /initlogo.rle
 +
+
 +
+on init
 +
+
 +
+sysclktz 0
 +
+
 +
+loglevel 3
 +
+
 +
+# setup the global environment
 +
+    export PATH /sbin:/system/sbin:/system/bin:/system/xbin
 +
+    export LD_LIBRARY_PATH /system/lib
 +
+    export ANDROID_BOOTLOGO 1
 +
+    export ANDROID_ROOT /system
 +
+    export ANDROID_ASSETS /system/app
 +
+    export ANDROID_DATA /data
 +
+    export EXTERNAL_STORAGE /mnt/sdcard
 +
+    export ASEC_MOUNTPOINT /mnt/asec
 +
+    export BOOTCLASSPATH /system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar
 +
+
 +
+# Backward compatibility
 +
+    symlink /system/etc /etc
 +
+    symlink /sys/kernel/debug /d
 +
+
 +
+# create mountpoints
 +
+    mkdir /mnt 0775 root system
 +
+    mkdir /mnt/sdcard 0000 system system
 +
+
 +
+# Create cgroup mount point for cpu accounting
 +
+    mkdir /acct
 +
+    mount cgroup none /acct cpuacct
 +
+    mkdir /acct/uid
 +
+
 +
+# Backwards Compat - XXX: Going away in G*
 +
+    symlink /mnt/sdcard /sdcard
 +
+
 +
+    mkdir /system
 +
+    mkdir /data 0771 system system
 +
+    mkdir /cache 0770 system cache
 +
+    mkdir /config 0500 root root
 +
+
 +
+    # Directory for putting things only root should see.
 +
+    mkdir /mnt/secure 0700 root root
 +
+
 +
+    # Directory for staging bindmounts
 +
+    mkdir /mnt/secure/staging 0700 root root
 +
+
 +
+    # Directory-target for where the secure container
 +
+    # imagefile directory will be bind-mounted
 +
+    mkdir /mnt/secure/asec  0700 root root
 +
+
 +
+    # Secure container public mount points.
 +
+    mkdir /mnt/asec  0700 root system
 +
+    mount tmpfs tmpfs /mnt/asec mode=0755,gid=1000
 +
+
 +
+##    mount rootfs rootfs / ro remount
 +
+
 +
+    write /proc/sys/kernel/panic_on_oops 1
 +
+    write /proc/sys/kernel/hung_task_timeout_secs 0
 +
+    write /proc/cpu/alignment 4
 +
+    write /proc/sys/kernel/sched_latency_ns 10000000
 +
+    write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000
 +
+    write /proc/sys/kernel/sched_compat_yield 1
 +
+    write /proc/sys/kernel/sched_child_runs_first 0
 +
+
 +
+# Create cgroup mount points for process groups
 +
+    mkdir /dev/cpuctl
 +
+    mount cgroup none /dev/cpuctl cpu
 +
+    chown system system /dev/cpuctl
 +
+    chown system system /dev/cpuctl/tasks
 +
+    chmod 0777 /dev/cpuctl/tasks
 +
+    write /dev/cpuctl/cpu.shares 1024
 +
+
 +
+    mkdir /dev/cpuctl/fg_boost
 +
+    chown system system /dev/cpuctl/fg_boost/tasks
 +
+    chmod 0777 /dev/cpuctl/fg_boost/tasks
 +
+    write /dev/cpuctl/fg_boost/cpu.shares 1024
 +
+
 +
+    mkdir /dev/cpuctl/bg_non_interactive
 +
+    chown system system /dev/cpuctl/bg_non_interactive/tasks
 +
+    chmod 0777 /dev/cpuctl/bg_non_interactive/tasks
 +
+    # 5.0 %
 +
+    write /dev/cpuctl/bg_non_interactive/cpu.shares 52
 +
+
 +
+    chown system system /data
 +
+    chmod 0771 /data
 +
+
 +
+    # Create dump dir and collect dumps.
 +
+    # Do this before we mount cache so eventually we can use cache for
 +
+    # storing dumps on platforms which do not have a dedicated dump partition.
 +
 +
+    mkdir /data/dontpanic
 +
+    chown root log /data/dontpanic
 +
+    chmod 0750 /data/dontpanic
 +
+
 +
+    # Collect apanic data, free resources and re-arm trigger
 +
+    copy /proc/apanic_console /data/dontpanic/apanic_console
 +
+    chown root log /data/dontpanic/apanic_console
 +
+    chmod 0640 /data/dontpanic/apanic_console
 +
+
 +
+    copy /proc/apanic_threads /data/dontpanic/apanic_threads
 +
+    chown root log /data/dontpanic/apanic_threads
 +
+    chmod 0640 /data/dontpanic/apanic_threads
 +
+
 +
+    write /proc/apanic_console 1
 +
+
 +
+    # Same reason as /data above
 +
+    chown system cache /cache
 +
+    chmod 0770 /cache
 +
+
 +
+    # This may have been created by the recovery system with odd permissions
 +
+    chown system cache /cache/recovery
 +
+    chmod 0770 /cache/recovery
 +
+
 +
+    #change permissions on vmallocinfo so we can grab it from bugreports
 +
+    chown root log /proc/vmallocinfo
 +
+    chmod 0440 /proc/vmallocinfo
 +
+
 +
+# change permissions for Overlay
 +
+    chmod 0777 /dev/video1
 +
+    chmod 0777 /dev/video2
 +
+    chmod 0777 /dev/omap-resizer
 +
+
 +
+# loading dsp modules
 +
+    insmod /system/ti-dsp/cmemk.ko "phys_start=0x86b00000 phys_end=0x87200000 allowOverlap=1 useHeapIfPoolUnavailable=1"
 +
+    insmod /system/ti-dsp/dsplinkk.ko
 +
+    insmod /system/ti-dsp/lpm_omap3530.ko
 +
+    insmod /system/ti-dsp/sdmak.ko
 +
+
 +
+# create basic filesystem structure
 
+    mkdir /system/etc/wifi 0770 wifi wifi
 
+    mkdir /system/etc/wifi 0770 wifi wifi
    chmod 0770 /system/etc/wifi
+
+    chmod 0770 /system/etc/wifi
-   chown system wifi /system/etc/wifi
+
+   chmod 0666 /system/etc/wifi/wpa_supplicant.conf
    chmod 0666 /system/etc/wifi/wpa_supplicant.conf
 
-    #chown wifi wifi /system/etc/wifi/wpa_supplicant.conf
 
-    chown system wifi /system/etc/wifi/wpa_supplicant.conf
 
 
+    chown wifi wifi /system/etc/wifi
 
+    chown wifi wifi /system/etc/wifi
 
+    #wpa_supplicant control socket for android wifi.c (android private socket)
 
+    #wpa_supplicant control socket for android wifi.c (android private socket)
Line 378: Line 1,036:
 
+    chown wifi wifi /data/misc/wifi
 
+    chown wifi wifi /data/misc/wifi
 
+    chown wifi wifi /data/misc/wifi/wpa_supplicant.conf
 
+    chown wifi wifi /data/misc/wifi/wpa_supplicant.conf
+
+
    mkdir /data/misc 01771 system misc
+
+    mkdir /data/misc 01771 system misc
    mkdir /data/misc/bluetoothd 0770 bluetooth bluetooth
+
+    mkdir /data/misc/bluetoothd 0770 bluetooth bluetooth
@@ -140,31 +149,14 @@ loglevel 3
+
+   mkdir /data/misc/bluetooth 0770 system system
    mkdir /data/misc/systemkeys 0700 system system
+
+   mkdir /data/misc/keystore 0700 keystore keystore
    mkdir /data/misc/vpn/profiles 0770 system system
+
+   mkdir /data/misc/vpn 0770 system system
+
+   mkdir /data/misc/systemkeys 0700 system system
-    # wpa_supplicant socket
+
+   mkdir /data/misc/vpn/profiles 0770 system system
-   mkdir /data/system/wpa_supplicant 0771 system wifi
+
+
-    chmod 0771 /data/system/wpa_supplicant
+
+   mkdir /data/local 0771 shell shell
-    chown system wifi /data/system/wpa_supplicant
+
+    mkdir /data/local/tmp 0771 shell shell
-
+
+    mkdir /data/data 0771 system system
-   mkdir /data/system/wpa_supplicant/sta 0771 system wifi
+
+    mkdir /data/app-private 0771 system system
-    chmod 0771 /data/system/wpa_supplicant/sta
+
+    mkdir /data/app 0771 system system
-    chown system wifi /data/system/wpa_supplicant/sta
+
+    mkdir /data/property 0700 root root
-
 
-    # give system access to wpa_supplicant.conf for backup and restore
 
-   mkdir /data/misc/wifi 0770 system wifi
 
-    chown system wifi /data/misc/wifi
 
-   mkdir /data/misc/wifi/sockets 0770 system wifi
 
-    chmod 0770 /data/misc/wifi
 
-   chmod 0660 /data/misc/wifi/wpa_supplicant.conf
 
-    chown system wifi /data/misc/wifi/wpa_supplicant.conf
 
-
 
    mkdir /data/local 0771 shell shell
 
    mkdir /data/local/tmp 0771 shell shell
 
    mkdir /data/data 0771 system system
 
    mkdir /data/app-private 0771 system system
 
    mkdir /data/app 0771 system system
 
    mkdir /data/property 0700 root root
 
-    mkdir /data/misc/dhcp 0770 dhcp dhcp
 
-    chown dhcp dhcp /data/misc/dhcp
 
 
+    mkdir /data/misc/dhcp 0770 system dhcp
 
+    mkdir /data/misc/dhcp 0770 system dhcp
 
+    chown system dhcp /data/misc/dhcp
 
+    chown system dhcp /data/misc/dhcp
+
+
    # create dalvik-cache and double-check the perms
+
+    # create dalvik-cache and double-check the perms
    mkdir /data/dalvik-cache 0771 system system
+
+    mkdir /data/dalvik-cache 0771 system system
@@ -290,6 +282,8 @@ on boot
+
+    chown system system /data/dalvik-cache
    setprop net.tcp.buffersize.edge    4093,26280,35040,4096,16384,35040
+
+    chmod 0771 /data/dalvik-cache
    setprop net.tcp.buffersize.gprs    4092,8760,11680,4096,8760,11680
+
+
+
+    # make sure the keychar files have correct permissions
 +
+    chmod 0644 /system/usr/keychars/qwerty.kcm.bin
 +
+    chmod 0644 /system/usr/keychars/qwerty2.kcm.bin
 +
+
 +
+    # create the lost+found directories, so as to enforce our permissions
 +
+    mkdir /data/lost+found 0770
 +
+    mkdir /cache/lost+found 0770
 +
+
 +
+    # double check the perms, in case lost+found already exists, and set owner
 +
+    chown root root /data/lost+found
 +
+    chmod 0770 /data/lost+found
 +
+    chown root root /cache/lost+found
 +
+    chmod 0770 /cache/lost+found
 +
+
 +
+on boot
 +
+# basic network init
 +
+    ifup lo
 +
+    hostname localhost
 +
+    domainname localdomain
 +
+
 +
+# set RLIMIT_NICE to allow priorities from 19 to -20
 +
+    setrlimit 13 40 40
 +
+
 +
+# No battery hardware present
 +
+    setprop hw.nobattery true
 +
+    setprop hw.nophone true
 +
+
 +
+# Use USB keyboard layout
 +
+    setprop hw.keylayout usbkbd
 +
+    setprop hw.keycharmap usbkbd
 +
+
 +
+# Disable powermanagement
 +
+    setprop hw.nopm    true
 +
+
 +
+# Define the oom_adj values for the classes of processes that can be
 +
+# killed by the kernel.  These are used in ActivityManagerService.
 +
+    setprop ro.FOREGROUND_APP_ADJ 0
 +
+    setprop ro.VISIBLE_APP_ADJ 1
 +
+    setprop ro.SECONDARY_SERVER_ADJ 2
 +
+    setprop ro.BACKUP_APP_ADJ 2
 +
+    setprop ro.HOME_APP_ADJ 4
 +
+    setprop ro.HIDDEN_APP_MIN_ADJ 7
 +
+    setprop ro.CONTENT_PROVIDER_ADJ 14
 +
+    setprop ro.EMPTY_APP_ADJ 15
 +
+
 +
+# Define the memory thresholds at which the above process classes will
 +
+# be killed.  These numbers are in pages (4k).
 +
+    setprop ro.FOREGROUND_APP_MEM 1536
 +
+    setprop ro.VISIBLE_APP_MEM 2048
 +
+    setprop ro.SECONDARY_SERVER_MEM 4096
 +
+    setprop ro.BACKUP_APP_MEM 4096
 +
+    setprop ro.HOME_APP_MEM 4096
 +
+    setprop ro.HIDDEN_APP_MEM 5120
 +
+    setprop ro.CONTENT_PROVIDER_MEM 5632
 +
+    setprop ro.EMPTY_APP_MEM 6144
 +
+
 +
+# Write value must be consistent with the above properties.
 +
+# Note that the driver only supports 6 slots, so we have HOME_APP at the
 +
+# same memory level as services.
 +
+    write /sys/module/lowmemorykiller/parameters/adj 0,1,2,7,14,15
 +
+
 +
+    write /proc/sys/vm/overcommit_memory 1
 +
+    write /proc/sys/vm/min_free_order_shift 4
 +
+    write /sys/module/lowmemorykiller/parameters/minfree 1536,2048,4096,5120,5632,6144
 +
+
 +
+    # Set init its forked children's oom_adj.
 +
+    write /proc/1/oom_adj -16
 +
+
 +
+    # Tweak background writeout
 +
+    write /proc/sys/vm/dirty_expire_centisecs 200
 +
+    write /proc/sys/vm/dirty_background_ratio  5
 +
+
 +
+    # Permissions for System Server and daemons.
 +
+    chown radio system /sys/android_power/state
 +
+    chown radio system /sys/android_power/request_state
 +
+    chown radio system /sys/android_power/acquire_full_wake_lock
 +
+    chown radio system /sys/android_power/acquire_partial_wake_lock
 +
+    chown radio system /sys/android_power/release_wake_lock
 +
+    chown radio system /sys/power/state
 +
+    chown radio system /sys/power/wake_lock
 +
+    chown radio system /sys/power/wake_unlock
 +
+    chmod 0660 /sys/power/state
 +
+    chmod 0660 /sys/power/wake_lock
 +
+    chmod 0660 /sys/power/wake_unlock
 +
+    chown system system /sys/class/timed_output/vibrator/enable
 +
+    chown system system /sys/class/leds/keyboard-backlight/brightness
 +
+    chown system system /sys/class/leds/lcd-backlight/brightness
 +
+    chown system system /sys/class/leds/button-backlight/brightness
 +
+    chown system system /sys/class/leds/jogball-backlight/brightness
 +
+    chown system system /sys/class/leds/red/brightness
 +
+    chown system system /sys/class/leds/green/brightness
 +
+    chown system system /sys/class/leds/blue/brightness
 +
+    chown system system /sys/class/leds/red/device/grpfreq
 +
+    chown system system /sys/class/leds/red/device/grppwm
 +
+    chown system system /sys/class/leds/red/device/blink
 +
+    chown system system /sys/class/leds/red/brightness
 +
+    chown system system /sys/class/leds/green/brightness
 +
+    chown system system /sys/class/leds/blue/brightness
 +
+    chown system system /sys/class/leds/red/device/grpfreq
 +
+    chown system system /sys/class/leds/red/device/grppwm
 +
+    chown system system /sys/class/leds/red/device/blink
 +
+    chown system system /sys/class/timed_output/vibrator/enable
 +
+    chown system system /sys/module/sco/parameters/disable_esco
 +
+    chown system system /sys/kernel/ipv4/tcp_wmem_min
 +
+    chown system system /sys/kernel/ipv4/tcp_wmem_def
 +
+    chown system system /sys/kernel/ipv4/tcp_wmem_max
 +
+    chown system system /sys/kernel/ipv4/tcp_rmem_min
 +
+    chown system system /sys/kernel/ipv4/tcp_rmem_def
 +
+    chown system system /sys/kernel/ipv4/tcp_rmem_max
 +
+    chown root radio /proc/cmdline
 +
+
 +
+# Define TCP buffer sizes for various networks
 +
+#  ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
 +
+    setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208
 +
+    setprop net.tcp.buffersize.wifi    4095,87380,110208,4096,16384,110208
 +
+    setprop net.tcp.buffersize.umts    4094,87380,110208,4096,16384,110208
 +
+    setprop net.tcp.buffersize.edge    4093,26280,35040,4096,16384,35040
 +
+    setprop net.tcp.buffersize.gprs    4092,8760,11680,4096,8760,11680
 +
+
 
+    setprop wifi.interface wlan0
 
+    setprop wifi.interface wlan0
 
+
 
+
    class_start default
+
+    class_start default
+
+
## Daemon processes to be run by init.
+
+## Daemon processes to be run by init.
@@ -297,8 +291,13 @@ on boot
+
+##
service console /system/bin/sh
+
+service console /system/bin/sh
    console
+
+    console
+
+
-# Start PowerVR SGX DDK
 
 
+# start PowerVR
 
+# start PowerVR
service pvr /system/bin/sgx/rc.pvr start
+
+service pvr /system/bin/sgx/rc.pvr start
 
+    oneshot
 
+    oneshot
 
+
 
+
Line 436: Line 1,194:
 
+service libertas /system/bin/libertas/rc.libertas start
 
+service libertas /system/bin/libertas/rc.libertas start
 
+    oneshot
 
+    oneshot
+
+
# adbd is controlled by the persist.service.adb.enable system property
+
+# adbd is controlled by the persist.service.adb.enable system property
service adbd /sbin/adbd
+
+service adbd /sbin/adbd
@@ -342,8 +341,8 @@ service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-sys
+
+    disabled
    onrestart restart media
+
+
+
+# adbd on at boot in emulator
service media /system/bin/mediaserver
+
+on property:ro.kernel.qemu=1
-    user media
+
+    start adbd
-    group system audio camera graphics inet net_bt net_bt_admin net_raw
+
+
 +
+on property:persist.service.adb.enable=1
 +
+    start adbd
 +
+
 +
+on property:persist.service.adb.enable=0
 +
+    stop adbd
 +
+
 +
+service servicemanager /system/bin/servicemanager
 +
+    user system
 +
+    critical
 +
+    onrestart restart zygote
 +
+    onrestart restart media
 +
+
 +
+service vold /system/bin/vold
 +
+    socket vold stream 0660 root mount
 +
+    ioprio be 2
 +
+
 +
+service netd /system/bin/netd
 +
+    socket netd stream 0660 root system
 +
+
 +
+service debuggerd /system/bin/debuggerd
 +
+
 +
+service ril-daemon /system/bin/rild
 +
+    socket rild stream 660 root radio
 +
+    socket rild-debug stream 660 radio system
 +
+    user root
 +
+    group radio cache inet misc audio
 +
+
 +
+service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
 +
+    socket zygote stream 666
 +
+    onrestart write /sys/android_power/request_state wake
 +
+    onrestart write /sys/power/state on
 +
+    onrestart restart media
 +
+
 +
+service media /system/bin/mediaserver
 
+    user root
 
+    user root
 
+    group system audio camera graphics inet net_bt net_bt_admin net_raw sdcard_rw
 
+    group system audio camera graphics inet net_bt net_bt_admin net_raw sdcard_rw
    ioprio rt 4
+
+    ioprio rt 4
+
+
service bootanim /system/bin/bootanimation
+
+service bootanim /system/bin/bootanimation
@@ -357,12 +356,11 @@ service dbus /system/bin/dbus-daemon --system --nofork
+
+   user graphics
    user bluetooth
+
+    group graphics
    group bluetooth net_bt_admin
+
+    disabled
+
+    oneshot
-#service wpa_supplicant /system/bin/wpa_supplicant -Dwext -dd -iwlan0 -c /system/etc/wifi/wpa_supplicant.conf
+
+
-#   #socket wpa_wlan0 dgram 660 system wifi
+
+service dbus /system/bin/dbus-daemon --system --nofork
-#   #user system
+
+   socket dbus stream 660 bluetooth bluetooth
-#   group system wifi inet
+
+   user bluetooth
-#    disabled
+
+   group bluetooth net_bt_admin
-#    oneshot
+
+
 
+service wpa_supplicant /system/bin/wpa_supplicant -dd -Dwext -iwlan0 -c/system/etc/wifi/wpa_supplicant.conf
 
+service wpa_supplicant /system/bin/wpa_supplicant -dd -Dwext -iwlan0 -c/system/etc/wifi/wpa_supplicant.conf
 
+    socket wpa_wlan0 dgram 660 wifi wifi
 
+    socket wpa_wlan0 dgram 660 wifi wifi
Line 465: Line 1,257:
 
+    disabled
 
+    disabled
 
+    oneshot
 
+    oneshot
+
+
service bluetoothd /system/bin/bluetoothd -n
+
+service bluetoothd /system/bin/bluetoothd -n
    socket bluetooth stream 660 bluetooth bluetooth
+
+    socket bluetooth stream 660 bluetooth bluetooth
 +
+    socket dbus_bluetooth stream 660 bluetooth bluetooth
 +
+    # init.rc does not yet support applying capabilities, so run as root and
 +
+    # let bluetoothd drop uid to bluetooth with the right linux capabilities
 +
+    group bluetooth net_bt_admin misc
 +
+    disabled
 +
+
 +
+service hfag /system/bin/sdptool add --channel=10 HFAG
 +
+    user bluetooth
 +
+    group bluetooth net_bt_admin
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service hsag /system/bin/sdptool add --channel=11 HSAG
 +
+    user bluetooth
 +
+    group bluetooth net_bt_admin
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service opush /system/bin/sdptool add --channel=12 OPUSH
 +
+    user bluetooth
 +
+    group bluetooth net_bt_admin
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service pbap /system/bin/sdptool add --channel=19 PBAP
 +
+    user bluetooth
 +
+    group bluetooth net_bt_admin
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service installd /system/bin/installd
 +
+    socket installd stream 600 system system
 +
+
 +
+service flash_recovery /system/etc/install-recovery.sh
 +
+    oneshot
 +
+
 +
+service racoon /system/bin/racoon
 +
+    socket racoon stream 600 system system
 +
+    # racoon will setuid to vpn after getting necessary resources.
 +
+    group net_admin
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service mtpd /system/bin/mtpd
 +
+    socket mtpd stream 600 system system
 +
+    user vpn
 +
+    group vpn net_admin net_raw
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service keystore /system/bin/keystore /data/misc/keystore
 +
+    user keystore
 +
+    group keystore
 +
+    socket keystore stream 666
 +
+
 +
+service dumpstate /system/bin/dumpstate -s
 +
+    socket dumpstate stream 0660 shell log
 +
+    disabled
 +
+    oneshot
 +
+
 +
+service dhcpcd /system/bin/dhcpcd -o domain_name_servers -ABKL
 +
+    disabled
 +
+    oneshot
 +
diff --git a/libertas/rc.libertas b/libertas/rc.libertas
 +
new file mode 100755
 +
index 0000000..bd03076
 +
--- /dev/null
 +
+++ b/libertas/rc.libertas
 +
@@ -0,0 +1,45 @@
 +
+#!/system/bin/sh
 +
+
 +
+load_libertas()
 +
+{
 +
+ insmod /system/lib/modules/libertas.ko
 +
+ #insmod /system/lib/modules/libertas_sdio.ko
 +
+ # Let WiFi part know that the driver is already loaded
 +
+ setprop wlan.driver.status ok
 +
+
 +
+ echo "Loaded Libertas WiFi modules"
 +
+
 +
+ return 0;
 +
+}
 +
+
 +
+unload_libertas()
 +
+{
 +
+ if rmmod libertas; then :; else return 1; fi
 +
+ #if rmmod libertas_sdio; then :; else return 1; fi
 +
+
 +
+ echo "Unloaded Libertas WiFi modules."
 +
+ return 0;
 +
+}
 +
+
 +
+# Deal with the type of invocation we get.
 +
+#
 +
+case "$1" in
 +
+"start")
 +
+ load_libertas
 +
+ ;;
 +
+stop)
 +
+ if ! unload_libertas; then
 +
+ echo "Couldn't unload modules" >&2;
 +
+ fi
 +
+ ;;
 +
+reload|restart)
 +
+ if unload_libertas; then
 +
+ load_libertas
 +
+ else
 +
+ echo "Couldn't unload modules" >&2;
 +
+ fi
 +
+ ;;
 +
+*)
 +
+ echo "$0: unknown argument $1." >&2;
 +
+ ;;
 +
+esac
 
diff --git a/vold.fstab b/vold.fstab
 
diff --git a/vold.fstab b/vold.fstab
 
index fc83907..b58f21f 100644
 
index fc83907..b58f21f 100644
Line 475: Line 1,381:
 
-dev_mount sdcard /mnt/sdcard auto /devices/platform/mmci-omap-hs.0/mmc_host/mmc0
 
-dev_mount sdcard /mnt/sdcard auto /devices/platform/mmci-omap-hs.0/mmc_host/mmc0
 
+dev_mount sdcard /mnt/sdcard 3 /devices/platform/mmci-omap-hs.0/mmc_host/mmc0
 
+dev_mount sdcard /mnt/sdcard 3 /devices/platform/mmci-omap-hs.0/mmc_host/mmc0
  diff --git a/dhcpcd.conf b/dhcpcd.conf
+
   
new file mode 100644
 
index 0000000..54006c7
 
--- /dev/null
 
+++ b/dhcpcd.conf
 
@@ -0,0 +1,6 @@
 
+# dhcpcd configuration for Android Wi-Fi interface
 
+# See dhcpcd.conf(5) for details.
 
+
 
+interface wlan0
 
+# dhcpcd-run-hooks uses these options.
 
+option subnet_mask, routers, domain_name_servers
 
 
diff --git a/wpa_supplicant.conf b/wpa_supplicant.conf
 
diff --git a/wpa_supplicant.conf b/wpa_supplicant.conf
 
new file mode 100644
 
new file mode 100644
Line 503: Line 1,398:
 
==== Project external/wpa_supplicant/ ====
 
==== Project external/wpa_supplicant/ ====
 
<pre>
 
<pre>
project external/wpa_supplicant/
 
 
diff --git a/os_unix.c b/os_unix.c
 
diff --git a/os_unix.c b/os_unix.c
 
index 8498b15..7b1b929 100644
 
index 8498b15..7b1b929 100644
Line 539: Line 1,433:
 
</pre>
 
</pre>
  
== Android Eclair 2.1 Platform ==
+
=== Annex: rc.libertas ===
 
 
=== Pre-built images for impatients ===
 
 
 
<span style="color: rgb(255, 0, 0);">
 
This software is distributed in the hope that it will be useful, but '''WITHOUT ANY WARRANTY'''; without even the implied warranty of '''MERCHANTABILITY''' or '''FITNESS FOR A PARTICULAR PURPOSE''''.
 
</span>
 
 
 
{| border=1 class="simple"
 
!'''Release'''
 
!'''Kernel'''
 
!'''Rootfs'''
 
!'''Platform'''
 
|-
 
|  Android 2.1 (Eclair)
 
|  [http://downloads.igep.es/android/eclair-2.x/v2.1R1/uImage-2.6.29-igep0020-20100407145010.bin 2.6.29-igep0020]
 
|  [http://downloads.igep.es/android/eclair-2.x/v2.1R1/android-image-eclair-2.1-update1-20100407145010.tar.bz2 2.1 Update 1]
 
|  http://developer.android.com/sdk/android-2.1.html
 
|}
 
 
 
=== Build Android Eclair from sources ===
 
 
 
Run repo init to bring down the latest version of Repo with all its most recent bug fixes. You must specify a URL for the manifest:
 
<pre>
 
$ mkdir android
 
$ cd android
 
$ repo init -u git://gitorious.org/rowboat/manifest.git -m < manifest name >
 
</pre>
 
where manifest name is:
 
 
 
*rowboat-eclair.xml - for eclair version of rowboat
 
*rowboat-eclair-dsp.xml - for eclair version of rowboat with DSP support
 
  
To pull down files to your working directory from the repositories as specified in the default manifest, run
+
Save the following block to device/ti/igepv2/libertas/rc.libertas
<pre>
 
$ repo sync
 
</pre>
 
  
If you want eclair with DSP support you need to download and place codec_engine_2_24_01.tar.gz under the external/ti-dsp folder. Codec Engine is available [http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent/CE/ce_2_24/index.html here]. Note you may need to have an account on software-dl.ti.com
 
 
Now build for your target product, do
 
<pre>
 
$ make TARGET_PRODUCT=igepv2 -j8
 
</pre>
 
for rowboat-eclair or
 
 
<pre>
 
<pre>
$ make TARGET_PRODUCT=igepv2 BUILD_WITH_GST=true dvsdk -j8
+
#!/system/bin/sh
</pre>
 
for rowboat-eclair-dsp
 
  
Next step is create a tarball containing the rootfs
+
load_libertas()
<pre>
+
{
$ cd out/target/product/igepv2
+
insmod /system/lib/modules/libertas.ko
$ mkdir android-rootfs
+
#insmod /system/lib/modules/libertas_sdio.ko
$ cp -r root/* android-rootfs
+
# Let WiFi part know that the driver is already loaded
$ cp -r system android-rootfs
+
setprop wlan.driver.status ok
$ sudo ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android-rootfs . rootfs rootfs.tar.bz2
 
$ cd ../../../../
 
</pre>
 
The next step is build the Linux kernel for your board.
 
<pre>
 
$ export PATH=${PWD}/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:$PATH
 
$ cd kernel/
 
$ make ARCH=arm igep0020_android_defconfig
 
$ make ARCH=arm CROSS_COMPILE=arm-eabi- uImage -j8
 
$ cd ..
 
</pre>
 
Now, you're ready to install and run your new android image.
 
  
=== Installing and Using the Result on a NFS-mounted root filesystem ===
+
echo "Loaded Libertas WiFi modules"
  
With factory seetings, the board will attempt to mount its root filesystem from the server as /srv/nfs/<distro>/<project>/<machine>, where
+
return 0;
 +
}
  
<pre>
+
unload_libertas()
***<distro> where distro is <your distro>
+
{
***<project> where project is <your project>
+
if rmmod libertas; then :; else return 1; fi
***<machine> where machine is <your machine>
+
#if rmmod libertas_sdio; then :; else return 1; fi
</pre>
 
Create the directory structure and extract the root file system to the NFS server
 
  
<pre>
+
echo "Unloaded Libertas WiFi modules."
$ sudo mkdir -p /srv/nfs/android/android-image-eclair/igep0020
+
return 0;
$ pushd /srv/nfs/android/android-image-eclair/igep0020
+
}
$ sudo tar jxf rootfs.tar.bz2
 
$ popd
 
</pre>
 
After this the only configuration that needs to be added is an entry for your target root directory to your /etc/exports file, for instance like this:
 
  
<pre>
+
# Deal with the type of invocation we get.
# Poky image rootfs
+
#
/srv/nfs/android/android-image-eclair/igep0020      *(rw,no_root_squash,no_subtree_check,sync)
+
case "$1" in
 +
"start")
 +
load_libertas
 +
;;
 +
stop)
 +
if ! unload_libertas; then
 +
echo "Couldn't unload modules" >&2;
 +
fi
 +
;;
 +
reload|restart)
 +
if unload_libertas; then
 +
load_libertas
 +
else
 +
echo "Couldn't unload modules" >&2;
 +
fi
 +
;;
 +
*)
 +
echo "$0: unknown argument $1." >&2;
 +
;;
 +
esac
 
</pre>
 
</pre>
After modifying the /etc/exports file you will make sure the NFS system is notified about the change, for instance by issuing the command:
 
  
<pre>
+
--- That's all folks ---
$ sudo exportfs -a
 
</pre>
 
The target also can get its kernel image from your tftp server. Similar to the NFS root filesystem, the target system will attempt to get its kernel image from the server as /srv/tftp/<distro>/<project>/<machine>. Follow next steps to configure your board and run the your new image.
 
 
 
Create the directory structure and copy the kernel image to the TFTP server, refer to [[The Linux kernel]] for build your own image.
 
 
 
<pre>
 
$ mkdir -p /srv/tftp/android/android-image-eclair/igep0020
 
$ cp kernel/arch/arm/boot/uImage /srv/tftp/android/android-image-eclair/igep0020
 
</pre>
 
Then, connect your development board as explained in IGEP v2 Software SDK Manual
 
 
 
Next, power up your board and stop u-boot's autoboot by pressing a key.
 
 
 
Now, it's time to change the U-Boot environment.
 
 
 
<pre>
 
U-Boot> setenv distro android
 
U-Boot> setenv project android-image-eclair
 
U-Boot> setenv bootargs-base mem=512M androidboot.console=ttyS2 console=tty0 console=ttyS2,115200n8 init=/init rootwait omap-dss.def_disp=dvi omapfb.video_mode=720x480MR-16@60
 
</pre>
 
If you want to set as default boot option, you can also save your new environment
 
  
<pre>
 
U-Boot> saveenv
 
</pre>
 
The last step is run the boot command.
 
  
<pre>
+
= See also =
U-Boot> run nfs-boot
+
*[[How to get the Ubuntu distribution]]
</pre>
+
*[[How to get the Linaro distribution]]
 
+
*[[How to get the Angstrom distribution]]
=== Links and resources ===
+
*[[How to get the Meego distribution]]
* [http://atstechlab.wordpress.com/2010/09/05/android-on-your-igepv2-in-14-steps/ Android on your IGEPv2 in 14 steps]
+
*[[How to get the Poky Linux distribution]]
 
 
--- That's all folks ---
 
  
 
[[Category:Software distributions|Android]]
 
[[Category:Software distributions|Android]]

Latest revision as of 10:07, 31 December 2013

Information.jpg New Android 4 (ICS) is available

How to get the Android distribution

Android-logo.png
Android is a software stack for mobile devices that includes an operating system, middleware and key applications, that uses a modified version of the Linux kernel. It was initially developed by Android Inc., a firm later purchased by Google, and lately by the Open Handset Alliance. It allows developers to write managed code in the Java language, controlling the device via Google-developed Java libraries.

Rowboat project provides Android on OMAP35xx and DM37xx platforms and enables key processor hardware features (ARM plus NEON, DSP, 2D/3D Accelerated Graphics and others). Key differentiators among many others:

  • Active and open development of a quality Android port.
  • Focused on a stable, well tested and benchmarked Android port for OMAP35xx and DM37xx.
  • Graphics and Multimedia performance optimizations.

Overview of How-To

This How-To is meant to be a starting point for people to learn build and run Android images for IGEP v2 devices as quickly and easily as possible.

Feedback and Contributing

At any point, if you see a mistake you can contribute to this How-To.

How to get involved

The Rowboat project

There are many ways to get involved with the Rowboat project.

Become a Rowboat user

  • Try out Rowboat Android - either pre-built or from source
  • Give us feedback via IRC #rowboat or the Rowboat mailing list (rowboat@googlegroups.com)
  • If you find an issue or bug, file a project issue

Share your Rowboat knowledge

  • Add Wiki articles or edit existing topics
  • Share your knowledge on #rowboat or rowboat@googlegroups.com

Submit code

  • Send your patches to the mailing list, rowboat@googlegroups.com

References

Android Platform Setup Environment

Ubuntu Linux (32-bit x86) To set up your Linux development environment, make sure you have the following:

Required Packages:

  • Git 1.5.4 or newer and the GNU Privacy Guard.
  • JDK 5.0, update 12 or higher. Java 6 is not supported, because of incompatibilities with @Override.
  • flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl.

In Ubuntu Linux you will do:

sudo dpkg-reconfigure dash

You need to answer 'no' when asked if you want to install 'dash' as /bin/sh.


To get the repo for java5 add these lines to your /etc/apt/sources.list

deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
$ sudo apt-get install sun-java5-jdk git-core gnupg expect flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev libreadline5-dev realpath coreutils

Then use command

sudo update-java-alternatives -s java-1.5.0-sun

to switch your default Java machine to version 1.5.

  • You might also want Valgrind, a tool that will help you find memory leaks, stack corruption, array bounds overflows, etc.
$ sudo apt-get install valgrind

Once you installed the requirements, you will create a working directory and download the repo tool.

$ mkdir ~/bin
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
$ export PATH=$PATH:~/bin

NOTE: If you are developing on a machine not using English as default language, you should probably run following command to ensure correct functionality of tools and scripts:

$ export LANG=C

Android Froyo 2.2 Platform

Pre-built images for impatients

This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE'.


Warning icon.png A user reported that this page might contain some broken, wrong or missing links to external pages.

Thank you for your patience as it is being fixed.


Release x-loader u-boot Kernel Rootfs Platform
 Android 2.2 (Froyo) for DM3730   x-load-1.4.4-1   u-boot-2010.06-1   uImage-2.6.32.bin   dm3730-2.2  http://developer.android.com/sdk/android-2.2.html
 Android 2.2 (Froyo) for OMAP3530   x-load-1.4.4-1   u-boot-2010.06-1   uImage-2.6.32.bin   om3530-2.2  http://developer.android.com/sdk/android-2.2.html

boot.scr files:

If you want to hook up a HDMI TFT monitor (tv for example), modify the parameter omapfb.mode in the *.scr file to omapfb.mode=dvi:hd720-32@50, with the parameter 32 is the colo mode (16, 24 or 32 bits) and the parameter 50 is the frequency (50 or 60 Hz), both for the monitor used.

Quick steps: create a bootable sdcard

$ wget http://downloads.isee.biz/pub/SW_Releases/binaries/x-loader/v1.4.4-1/x-load-1.4.4-1.igep0020-sdcard.bin.ift
$ wget http://downloads.isee.biz/pub/SW_Releases/binaries/u-boot-arm/v2010.06-1/u-boot-arm-2010.06-1.igep0020.bin
$ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/uImage-android-2.6.32.bin
$ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/android-dm3730-froyo-2.2-20110223161010.tar.bz2
$ wget http://downloads.isee.biz/pub/SW_Releases/files/media-samples.tar.gz
$ tar xzf media-samples.tar.gz

Download one of

$ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/boot-dvi.scr
$ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/boot-lcd-70.scr
$ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/boot-lcd-43.scr

and rename to boot.scr

$ mv <boot.scr file> boot.scr

Make the sd card:

$ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/mkmmc-android.sh
$ chmod a+x mkmmc-android.sh
$ sudo ./mkmmc-android.sh <device> x-load-1.4.4-1.igep0020-sdcard.bin.ift u-boot-arm-2010.06-1.igep0020.bin uImage-android-2.6.32.bin boot.scr android-dm3730-froyo-2.2-20110223161010.tar.bz2 media-samples

The device name here (<device>) is actually the SDCard in your /dev/ folder. Try removing and inserting the card, and then type command dmesg in terminal in order to figure out which device name to use (/dev/sdb in this example).

Sample output of dmesg command:

[  111.583965] sd 3:0:0:0: [sdb] 990976 512-byte hardware sectors (507 MB)

[  111.587140] sd 3:0:0:0: [sdb] Write Protect is off

[  111.587144] sd 3:0:0:0: [sdb] Mode Sense: 03 00 00 00

[  111.587146] sd 3:0:0:0: [sdb] Assuming drive cache: write through

[  111.591499] sd 3:0:0:0: [sdb] 990976 512-byte hardware sectors (507 MB)

[  111.595692] sd 3:0:0:0: [sdb] Write Protect is off

[  111.595697] sd 3:0:0:0: [sdb] Mode Sense: 03 00 00 00

[  111.595699] sd 3:0:0:0: [sdb] Assuming drive cache: write through

[  111.595721]  sdb: sdb1
Note that the numbers are just a timestamp, and that this is the last few lines of the dmesg command output (you will more likely be in the same situation, given that the last peripheral hooked up to your machine wille be the SD Card). 

Enhancements

Known issues

  • RECOMMENDED at least a class 6 SD card
  • RTC doesn't work. Board cannot save time between reboots.
  • ADB doesn't work over USB. Connecting board to a PC shows nothing in lsusb at all. ADB works over ethernet. Refer to 'adb connect' command.
  • 4x4 keyboard doesn't work
  • Ethernet + Wifi do not work together, the problem is in the android network "stack". In rowboat froyo an wired ethernet component was copied from (guessing) android-x86 and this is conflicting with the wifi part. This is also mentioned on the android-x86 mailinglist as being an issue.So is not a kernel/ wifi driver issue but entirely an android stack issue.
    • If you want to use wifi, it seems that it cannot connect to a wifi ap but if you boot the second time it is ok, to use wifi do the following:
      • step 1: Turn off ethernet: Settings -> Ethernet configuration -> Turn off ethernet
      • step 2: reboot
      • step 3: Turn on wifi: Settings -> Wireless & networks -> Wi-Fi settings -> Turn on Wi-Fi
    • If you want to use ethernet
      • step 1: Turn off wifi: Settings -> Wireless & networks -> Wi-Fi settings -> Turn off Wi-Fi
      • step 2: reboot
      • step 3: Turn on ethernet: Settings -> Ethernet configuration -> Turn on ethernet
  • Bluetooth not supported yet

Build Android Froyo from sources

Get the latest source

Run repo init to bring down the latest version of Repo with all its most recent bug fixes. You must specify a URL for the manifest:

$ mkdir froyo
$ cd froyo
$ repo init -u git://gitorious.org/rowboat/manifest.git -m rowboat-froyo-dsp.xml

To pull down files to your working directory from the repositories as specified in the default manifest, run

$ repo sync

Apply IGEP v2 patches

Attention BEFORE continue you must apply all patches described here Also copy the the libertas init script and move it to device/ti/igepv2/libertas/rc.libertas

Download WIFI kernel modules

Download libertas modules and move to device/ti/igepv2/libertas/

$ mkdir device/ti/igepv2/libertas/
$ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/libertas.ko
$ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/libertas_sdio.ko
$ mv libertas.ko device/ti/igepv2/libertas/
$ mv libertas_sdio.ko device/ti/igepv2/libertas/

and download libertas firmware and move to device/ti/igepv2/firmware/

$ mkdir device/ti/igepv2/firmware/
$ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/sd8686.bin
$ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/sd8686_helper.bin
$ mv sd8686*bin device/ti/igepv2/firmware/

Download TI DVSDK package

Download the TI DVSDK package to the external/ti-dsp folder manually from the table in webpage http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_4_00/latest/index_FDS.html. Registration might be needed.

  • For DM37xx platform, download dvsdk_dm3730-evm_4_01_00_09_setuplinux package;
  • For OMAP35xx platform, download dvsdk_omap3530-evm_4_01_00_09_setuplinux package.
$ cp <dvsdk package> external/ti-dsp

The next step is running the TI DVSDK installation script. Since the script relies on English application output you need to set the language to English (only on non-english development hosts):

$ export LANG=C

Now run the get-tidsp.sh script

$ external/ti-dsp/./get_tidsp.sh

Download enhanced IGEP v2 kernel

Current kernel version works but there is an updated kernel in IGEP repositories, so it's recommended use this version, to do this add the linux-omap-2.6 IGEP repository and switch to linux-android-2.6.32.y branch.

$ cd kernel
$ git remote add igep git://git.igep.es/pub/scm/linux-omap-2.6.git
$ git fetch igep
$ git checkout igep/linux-2.6.32.y-android -b linux-2.6.32.y-android
$ cd ..

Build the sources

Now you're ready for build, do

source build/envsetup.sh
lunch igepv2-eng
make TARGET_PRODUCT=igepv2 -j8 OMAPES=(2.x|3.x|5.x)

Set OMAPES variable to install proper version of SGX drivers (Default is 3.x):

  • OMAPES=2.x, for OMAP3530 ES1 or ES2;
  • OMAPES=3.x, for OMAP3530 ES3.0;
  • OMAPES=5.x, for DM37x

Create rootfs tarball

Next step is create a tarball containing the rootfs

$ mkdir froyo-rootfs
$ cp -r out/target/product/igepv2/root/* froyo-rootfs/
$ cp -r out/target/product/igepv2/system froyo-rootfs/
$ sudo build/tools/mktarball.sh out/host/linux-x86/bin/fs_get_stats froyo-rootfs . rootfs froyo-rootfs.tar.bz2

Create Android SD card

Create a SD card

$ wget http://downloads.isee.biz/pub/SW_Releases/binaries/x-loader/v1.4.4-1/x-load-1.4.4-1.igep0020-sdcard.bin.ift
$ wget http://downloads.isee.biz/pub/SW_Releases/binaries/u-boot-arm/v2010.06-1/u-boot-arm-2010.06-1.igep0020.bin

Create ONE of these scripts (boot.source)

  • a) DM3730 + DVI 1280x720
mmc init 0
fatload mmc 0 80200000 uImage
setenv bootargs 'mem=71M@0x80000000 mem=384M@0x88000000 console=tty0 console=ttyS2,115200n8 \
       androidboot.console=ttyS2 root=/dev/mmcblk0p2 rw rootfstype=ext3 init=/init rootwait ip=off \
       omap_vout.vid1_static_vrfb_alloc=y omapfb.mode=dvi:1280x720MR-16 mpurate=1000'
bootm 0x80200000
  • b) DM3730 + Seiko 7.0 inch WVGA (800 x RGB x 480) TFT with Touch-Panel
mmc init 0
fatload mmc 0 80200000 uImage
setenv bootargs 'mem=71M@0x80000000 mem=384M@0x88000000 console=tty0 console=ttyS2,115200n8 \
       androidboot.console=ttyS2 root=/dev/mmcblk0p2 rw rootfstype=ext3 init=/init rootwait ip=off \
       omap_vout.vid1_static_vrfb_alloc=y omapdss.def_disp=lcd-70 omapfb.mode=dvi:1280x720MR-16 mpurate=1000'
bootm 0x80200000
  • c) DM3730 + Powertip 4.3 inch (480 x RGB x 272) TFT with Touch-Panel (not tested yet)
mmc init 0
fatload mmc 0 80200000 uImage
setenv bootargs 'mem=71M@0x80000000 mem=384M@0x88000000 console=tty0 console=ttyS2,115200n8 \
       androidboot.console=ttyS2 root=/dev/mmcblk0p2 rw rootfstype=ext3 init=/init rootwait ip=off \
       omap_vout.vid1_static_vrfb_alloc=y omapdss.def_disp=lcd-43 omapfb.mode=dvi:1280x720MR-16 mpurate=1000'
bootm 0x80200000

and build the u-boot script with

$ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'Boot setup script' -d boot.source boot.scr

download some media samples

$ wget http://downloads.isee.biz/pub/SW_Releases/files/media-samples.tar.gz
$ tar xzf media-samples.tar.gz

finally create the sdcard with the mkmmc-android.sh script (See pre built images for impatients to learn how to create the SD card).

$ wget http://downloads.isee.biz/pub/SW_Releases/android/froyo-2.2/mkmmc-android.sh
$ chmod a+x mkmmc-android.sh
$ sudo ./mkmmc-android.sh <device> x-load-1.4.4-1.igep0020-sdcard.bin.ift u-boot-arm-2010.06-1.igep0020.bin kernel/arch/arm/boot/uImage boot.scr froyo-rootfs.tar.bz2 media-samples

Warning: Provide the right device name after the script name when you invoke the script. If you get this wrong it can wipe your HDD. (See pre built images for impatients to learn how to figure out the device name).

Annex: patches

Save blocks of code below instructions correspondingly as files patch1, patch2, patch3

then do:

This needs to be reviewed as patch below is wrong!

cd device/ti/igepv2
patch -b < ../../../patch1
cd ../../..
cd external/wpa_supplicant
patch -b < ../../patch2
cd ../..
cd hardware/libhardware_legacy/wifi
patch -b < ../../../patch3
cd ../../..

Project device/ti/igepv2/

diff --git a/AndroidBoard.mk b/AndroidBoard.mk
index bd28495..580a46b 100644
--- a/AndroidBoard.mk
+++ b/AndroidBoard.mk
@@ -11,8 +11,13 @@ $(file): $(TARGET_PREBUILT_KERNEL) | $(ACP)
 
 ifeq ($(TARGET_PROVIDES_INIT_RC),true)
 file := $(TARGET_ROOT_OUT)/init.rc
-$(file): $(LOCAL_PATH)/init.rc | $(ACP)
+ifeq ($(OMAPES),5.x)
+$(file): $(LOCAL_PATH)/init.rc.dm37x | $(ACP)
 	$(transform-prebuilt-to-target)
+else
+$(file): $(LOCAL_PATH)/init.rc.omap35x | $(ACP)
+	$(transform-prebuilt-to-target)
+endif
 ALL_PREBUILT += $(file)
 endif
 
@@ -27,6 +32,36 @@ PRODUCT_COPY_FILES += \
 PRODUCT_COPY_FILES += \
 	$(LOCAL_PATH)/vold.fstab:system/etc/vold.fstab
 
+# WPA
+PRODUCT_COPY_FILES += \
+	$(LOCAL_PATH)/wpa_supplicant.conf:system/etc/wifi/wpa_supplicant.conf
+
+PRODUCT_COPY_FILES += \
+	$(LOCAL_PATH)/wpa_supplicant.conf:data/misc/wifi/wpa_supplicant.conf
+
+# Libertas SDIO firmware
+ifneq ($(wildcard $(LOCAL_PATH)/firmware/sd8686.bin),)
+PRODUCT_COPY_FILES += \
+	$(LOCAL_PATH)/firmware/sd8686.bin:system/etc/firmware/sd8686.bin
+endif
+ifneq ($(wildcard $(LOCAL_PATH)/firmware/sd8686_helper.bin),)
+PRODUCT_COPY_FILES += \
+	$(LOCAL_PATH)/firmware/sd8686_helper.bin:system/etc/firmware/sd8686_helper.bin
+endif
+
+# Libertas modules
+PRODUCT_COPY_FILES += \
+        $(LOCAL_PATH)/libertas/libertas.ko:system/lib/modules/libertas.ko
+
+PRODUCT_COPY_FILES += \
+        $(LOCAL_PATH)/libertas/libertas_sdio.ko:system/lib/modules/libertas_sdio.ko
+
+PRODUCT_COPY_FILES += \
+	$(LOCAL_PATH)/libertas/rc.libertas:system/bin/libertas/rc.libertas
+
+PRODUCT_COPY_FILES += \
+	$(LOCAL_PATH)/dhcpcd.conf:system/etc/dhcpcd/dhcpcd.conf
+
 # initlogo
 PRODUCT_COPY_FILES += \
 $(LOCAL_PATH)/../../rowboat/generic/initlogo/android-robot-on-black-480x640.rle:root/initlogo.rle.bak
diff --git a/BoardConfig.mk b/BoardConfig.mk
index b9e86b3..95187de 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -11,7 +11,7 @@ BUILD_WITH_ALSA_UTILS := true
 
 BUILD_PV_VIDEO_ENCODERS := 1
 
-BOARD_USES_OMAP3_LIGHTS := true
+BOARD_USES_OMAP3_LIGHTS := false
 
 BOARD_USES_VIRTUAL_TOUCHSCREEN := true
 USE_CUSTOM_RUNTIME_HEAP_MAX := "64M"
diff --git a/dhcpcd.conf b/dhcpcd.conf
new file mode 100644
index 0000000..54006c7
--- /dev/null
+++ b/dhcpcd.conf
@@ -0,0 +1,6 @@
+# dhcpcd configuration for Android Wi-Fi interface
+# See dhcpcd.conf(5) for details.
+
+interface wlan0
+# dhcpcd-run-hooks uses these options.
+option subnet_mask, routers, domain_name_servers
diff --git a/init.rc.dm37x b/init.rc.dm37x
new file mode 100755
index 0000000..fecd861
--- /dev/null
+++ b/init.rc.dm37x
@@ -0,0 +1,429 @@
+# Add our initlogo
+#on early-init
+#    symlink /initlogo.rle.bak /initlogo.rle
+
+on init
+
+sysclktz 0
+
+loglevel 3
+
+# setup the global environment
+    export PATH /sbin:/system/sbin:/system/bin:/system/xbin
+    export LD_LIBRARY_PATH /system/lib
+    export ANDROID_BOOTLOGO 1
+    export ANDROID_ROOT /system
+    export ANDROID_ASSETS /system/app
+    export ANDROID_DATA /data
+    export EXTERNAL_STORAGE /mnt/sdcard
+    export ASEC_MOUNTPOINT /mnt/asec
+    export BOOTCLASSPATH /system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar
+
+# Backward compatibility
+    symlink /system/etc /etc
+    symlink /sys/kernel/debug /d
+
+# create mountpoints
+    mkdir /mnt 0775 root system
+    mkdir /mnt/sdcard 0000 system system
+
+# Create cgroup mount point for cpu accounting
+    mkdir /acct
+    mount cgroup none /acct cpuacct
+    mkdir /acct/uid
+
+# Backwards Compat - XXX: Going away in G*
+    symlink /mnt/sdcard /sdcard
+
+    mkdir /system
+    mkdir /data 0771 system system
+    mkdir /cache 0770 system cache
+    mkdir /config 0500 root root
+
+    # Directory for putting things only root should see.
+    mkdir /mnt/secure 0700 root root
+
+    # Directory for staging bindmounts
+    mkdir /mnt/secure/staging 0700 root root
+
+    # Directory-target for where the secure container
+    # imagefile directory will be bind-mounted
+    mkdir /mnt/secure/asec  0700 root root
+
+    # Secure container public mount points.
+    mkdir /mnt/asec  0700 root system
+    mount tmpfs tmpfs /mnt/asec mode=0755,gid=1000
+
+##    mount rootfs rootfs / ro remount
+
+    write /proc/sys/kernel/panic_on_oops 1
+    write /proc/sys/kernel/hung_task_timeout_secs 0
+    write /proc/cpu/alignment 4
+    write /proc/sys/kernel/sched_latency_ns 10000000
+    write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000
+    write /proc/sys/kernel/sched_compat_yield 1
+    write /proc/sys/kernel/sched_child_runs_first 0
+
+# Create cgroup mount points for process groups
+    mkdir /dev/cpuctl
+    mount cgroup none /dev/cpuctl cpu
+    chown system system /dev/cpuctl
+    chown system system /dev/cpuctl/tasks
+    chmod 0777 /dev/cpuctl/tasks
+    write /dev/cpuctl/cpu.shares 1024
+
+    mkdir /dev/cpuctl/fg_boost
+    chown system system /dev/cpuctl/fg_boost/tasks
+    chmod 0777 /dev/cpuctl/fg_boost/tasks
+    write /dev/cpuctl/fg_boost/cpu.shares 1024
+
+    mkdir /dev/cpuctl/bg_non_interactive
+    chown system system /dev/cpuctl/bg_non_interactive/tasks
+    chmod 0777 /dev/cpuctl/bg_non_interactive/tasks
+    # 5.0 %
+    write /dev/cpuctl/bg_non_interactive/cpu.shares 52
+
+    chown system system /data
+    chmod 0771 /data
+
+    # Create dump dir and collect dumps.
+    # Do this before we mount cache so eventually we can use cache for
+    # storing dumps on platforms which do not have a dedicated dump partition.
+   
+    mkdir /data/dontpanic
+    chown root log /data/dontpanic
+    chmod 0750 /data/dontpanic
+
+    # Collect apanic data, free resources and re-arm trigger
+    copy /proc/apanic_console /data/dontpanic/apanic_console
+    chown root log /data/dontpanic/apanic_console
+    chmod 0640 /data/dontpanic/apanic_console
+
+    copy /proc/apanic_threads /data/dontpanic/apanic_threads
+    chown root log /data/dontpanic/apanic_threads
+    chmod 0640 /data/dontpanic/apanic_threads
+
+    write /proc/apanic_console 1
+
+    # Same reason as /data above
+    chown system cache /cache
+    chmod 0770 /cache
+
+    # This may have been created by the recovery system with odd permissions
+    chown system cache /cache/recovery
+    chmod 0770 /cache/recovery
+
+    #change permissions on vmallocinfo so we can grab it from bugreports
+    chown root log /proc/vmallocinfo
+    chmod 0440 /proc/vmallocinfo
+
+# change permissions for Overlay
+    chmod 0777 /dev/video1
+    chmod 0777 /dev/video2
+    chmod 0777 /dev/omap-resizer
+
+# loading dsp modules
+    insmod /system/ti-dsp/cmemk.ko "phys_start=0x84700000 phys_end=0x85900000 allowOverlap=1 useHeapIfPoolUnavailable=1"
+    insmod /system/ti-dsp/dsplinkk.ko
+    insmod /system/ti-dsp/lpm_omap3530.ko
+    insmod /system/ti-dsp/sdmak.ko
+
+# create basic filesystem structure
+    mkdir /system/etc/wifi 0770 wifi wifi
+    chmod 0770 /system/etc/wifi
+    chmod 0666 /system/etc/wifi/wpa_supplicant.conf
+    chown wifi wifi /system/etc/wifi
+    #wpa_supplicant control socket for android wifi.c (android private socket)
+    mkdir /data/misc/wifi 0770 wifi wifi
+    mkdir /data/misc/wifi/sockets 0770 wifi wifi
+    chmod 0770 /data/misc/wifi
+    chmod 0660 /data/misc/wifi/wpa_supplicant.conf
+    chown wifi wifi /data/misc/wifi
+    chown wifi wifi /data/misc/wifi/wpa_supplicant.conf
+
+    mkdir /data/misc 01771 system misc
+    mkdir /data/misc/bluetoothd 0770 bluetooth bluetooth
+    mkdir /data/misc/bluetooth 0770 system system
+    mkdir /data/misc/keystore 0700 keystore keystore
+    mkdir /data/misc/vpn 0770 system system
+    mkdir /data/misc/systemkeys 0700 system system
+    mkdir /data/misc/vpn/profiles 0770 system system
+
+    mkdir /data/local 0771 shell shell
+    mkdir /data/local/tmp 0771 shell shell
+    mkdir /data/data 0771 system system
+    mkdir /data/app-private 0771 system system
+    mkdir /data/app 0771 system system
+    mkdir /data/property 0700 root root
+    mkdir /data/misc/dhcp 0770 system dhcp
+    chown system dhcp /data/misc/dhcp
+
+    # create dalvik-cache and double-check the perms
+    mkdir /data/dalvik-cache 0771 system system
+    chown system system /data/dalvik-cache
+    chmod 0771 /data/dalvik-cache
+
+    # make sure the keychar files have correct permissions
+    chmod 0644 /system/usr/keychars/qwerty.kcm.bin
+    chmod 0644 /system/usr/keychars/qwerty2.kcm.bin
+
+    # create the lost+found directories, so as to enforce our permissions
+    mkdir /data/lost+found 0770
+    mkdir /cache/lost+found 0770
+
+    # double check the perms, in case lost+found already exists, and set owner
+    chown root root /data/lost+found
+    chmod 0770 /data/lost+found
+    chown root root /cache/lost+found
+    chmod 0770 /cache/lost+found
+
+on boot
+# basic network init
+    ifup lo
+    hostname localhost
+    domainname localdomain
+
+# set RLIMIT_NICE to allow priorities from 19 to -20
+    setrlimit 13 40 40
+
+# No battery hardware present
+    setprop hw.nobattery true
+    setprop hw.nophone true
+
+# Use USB keyboard layout
+    setprop hw.keylayout usbkbd
+    setprop hw.keycharmap usbkbd
+
+# Disable powermanagement
+    setprop hw.nopm     true
+
+# Define the oom_adj values for the classes of processes that can be
+# killed by the kernel.  These are used in ActivityManagerService.
+    setprop ro.FOREGROUND_APP_ADJ 0
+    setprop ro.VISIBLE_APP_ADJ 1
+    setprop ro.SECONDARY_SERVER_ADJ 2
+    setprop ro.BACKUP_APP_ADJ 2
+    setprop ro.HOME_APP_ADJ 4
+    setprop ro.HIDDEN_APP_MIN_ADJ 7
+    setprop ro.CONTENT_PROVIDER_ADJ 14
+    setprop ro.EMPTY_APP_ADJ 15
+
+# Define the memory thresholds at which the above process classes will
+# be killed.  These numbers are in pages (4k).
+    setprop ro.FOREGROUND_APP_MEM 1536
+    setprop ro.VISIBLE_APP_MEM 2048
+    setprop ro.SECONDARY_SERVER_MEM 4096
+    setprop ro.BACKUP_APP_MEM 4096
+    setprop ro.HOME_APP_MEM 4096
+    setprop ro.HIDDEN_APP_MEM 5120
+    setprop ro.CONTENT_PROVIDER_MEM 5632
+    setprop ro.EMPTY_APP_MEM 6144
+
+# Write value must be consistent with the above properties.
+# Note that the driver only supports 6 slots, so we have HOME_APP at the
+# same memory level as services.
+    write /sys/module/lowmemorykiller/parameters/adj 0,1,2,7,14,15
+
+    write /proc/sys/vm/overcommit_memory 1
+    write /proc/sys/vm/min_free_order_shift 4
+    write /sys/module/lowmemorykiller/parameters/minfree 1536,2048,4096,5120,5632,6144
+
+    # Set init its forked children's oom_adj.
+    write /proc/1/oom_adj -16
+
+    # Tweak background writeout
+    write /proc/sys/vm/dirty_expire_centisecs 200
+    write /proc/sys/vm/dirty_background_ratio  5
+
+    # Permissions for System Server and daemons.
+    chown radio system /sys/android_power/state
+    chown radio system /sys/android_power/request_state
+    chown radio system /sys/android_power/acquire_full_wake_lock
+    chown radio system /sys/android_power/acquire_partial_wake_lock
+    chown radio system /sys/android_power/release_wake_lock
+    chown radio system /sys/power/state
+    chown radio system /sys/power/wake_lock
+    chown radio system /sys/power/wake_unlock
+    chmod 0660 /sys/power/state
+    chmod 0660 /sys/power/wake_lock
+    chmod 0660 /sys/power/wake_unlock
+    chown system system /sys/class/timed_output/vibrator/enable
+    chown system system /sys/class/leds/keyboard-backlight/brightness
+    chown system system /sys/class/leds/lcd-backlight/brightness
+    chown system system /sys/class/leds/button-backlight/brightness
+    chown system system /sys/class/leds/jogball-backlight/brightness
+    chown system system /sys/class/leds/red/brightness
+    chown system system /sys/class/leds/green/brightness
+    chown system system /sys/class/leds/blue/brightness
+    chown system system /sys/class/leds/red/device/grpfreq
+    chown system system /sys/class/leds/red/device/grppwm
+    chown system system /sys/class/leds/red/device/blink
+    chown system system /sys/class/leds/red/brightness
+    chown system system /sys/class/leds/green/brightness
+    chown system system /sys/class/leds/blue/brightness
+    chown system system /sys/class/leds/red/device/grpfreq
+    chown system system /sys/class/leds/red/device/grppwm
+    chown system system /sys/class/leds/red/device/blink
+    chown system system /sys/class/timed_output/vibrator/enable
+    chown system system /sys/module/sco/parameters/disable_esco
+    chown system system /sys/kernel/ipv4/tcp_wmem_min
+    chown system system /sys/kernel/ipv4/tcp_wmem_def
+    chown system system /sys/kernel/ipv4/tcp_wmem_max
+    chown system system /sys/kernel/ipv4/tcp_rmem_min
+    chown system system /sys/kernel/ipv4/tcp_rmem_def
+    chown system system /sys/kernel/ipv4/tcp_rmem_max
+    chown root radio /proc/cmdline
+
+# Define TCP buffer sizes for various networks
+#   ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
+    setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208
+    setprop net.tcp.buffersize.wifi    4095,87380,110208,4096,16384,110208
+    setprop net.tcp.buffersize.umts    4094,87380,110208,4096,16384,110208
+    setprop net.tcp.buffersize.edge    4093,26280,35040,4096,16384,35040
+    setprop net.tcp.buffersize.gprs    4092,8760,11680,4096,8760,11680
+
+    setprop wifi.interface wlan0
+
+    class_start default
+
+## Daemon processes to be run by init.
+##
+service console /system/bin/sh
+    console
+
+# start PowerVR
+service pvr /system/bin/sgx/rc.pvr start
+    oneshot
+
+# start wifi
+service libertas /system/bin/libertas/rc.libertas start
+    oneshot
+
+# adbd is controlled by the persist.service.adb.enable system property
+service adbd /sbin/adbd
+    disabled
+
+# adbd on at boot in emulator
+on property:ro.kernel.qemu=1
+    start adbd
+
+on property:persist.service.adb.enable=1
+    start adbd
+
+on property:persist.service.adb.enable=0
+    stop adbd
+
+service servicemanager /system/bin/servicemanager
+    user system
+    critical
+    onrestart restart zygote
+    onrestart restart media
+
+service vold /system/bin/vold
+    socket vold stream 0660 root mount
+    ioprio be 2
+
+service netd /system/bin/netd
+    socket netd stream 0660 root system
+
+service debuggerd /system/bin/debuggerd
+
+service ril-daemon /system/bin/rild
+    socket rild stream 660 root radio
+    socket rild-debug stream 660 radio system
+    user root
+    group radio cache inet misc audio
+
+service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
+    socket zygote stream 666
+    onrestart write /sys/android_power/request_state wake
+    onrestart write /sys/power/state on
+    onrestart restart media
+
+service media /system/bin/mediaserver
+    user root
+    group system audio camera graphics inet net_bt net_bt_admin net_raw sdcard_rw
+    ioprio rt 4
+
+service bootanim /system/bin/bootanimation
+    user graphics
+    group graphics
+    disabled
+    oneshot
+
+service dbus /system/bin/dbus-daemon --system --nofork
+    socket dbus stream 660 bluetooth bluetooth
+    user bluetooth
+    group bluetooth net_bt_admin
+
+service wpa_supplicant /system/bin/wpa_supplicant -dd -Dwext -iwlan0 -c/system/etc/wifi/wpa_supplicant.conf
+    socket wpa_wlan0 dgram 660 wifi wifi
+    group system wifi inet
+    disabled
+    oneshot
+
+service bluetoothd /system/bin/bluetoothd -n
+    socket bluetooth stream 660 bluetooth bluetooth
+    socket dbus_bluetooth stream 660 bluetooth bluetooth
+    # init.rc does not yet support applying capabilities, so run as root and
+    # let bluetoothd drop uid to bluetooth with the right linux capabilities
+    group bluetooth net_bt_admin misc
+    disabled
+
+service hfag /system/bin/sdptool add --channel=10 HFAG
+    user bluetooth
+    group bluetooth net_bt_admin
+    disabled
+    oneshot
+
+service hsag /system/bin/sdptool add --channel=11 HSAG
+    user bluetooth
+    group bluetooth net_bt_admin
+    disabled
+    oneshot
+
+service opush /system/bin/sdptool add --channel=12 OPUSH
+    user bluetooth
+    group bluetooth net_bt_admin
+    disabled
+    oneshot
+
+service pbap /system/bin/sdptool add --channel=19 PBAP
+    user bluetooth
+    group bluetooth net_bt_admin
+    disabled
+    oneshot
+
+service installd /system/bin/installd
+    socket installd stream 600 system system
+
+service flash_recovery /system/etc/install-recovery.sh
+    oneshot
+
+service racoon /system/bin/racoon
+    socket racoon stream 600 system system
+    # racoon will setuid to vpn after getting necessary resources.
+    group net_admin
+    disabled
+    oneshot
+
+service mtpd /system/bin/mtpd
+    socket mtpd stream 600 system system
+    user vpn
+    group vpn net_admin net_raw
+    disabled
+    oneshot
+
+service keystore /system/bin/keystore /data/misc/keystore
+    user keystore
+    group keystore
+    socket keystore stream 666
+
+service dumpstate /system/bin/dumpstate -s
+    socket dumpstate stream 0660 shell log
+    disabled
+    oneshot
+
+service dhcpcd /system/bin/dhcpcd -o domain_name_servers -ABKL
+    disabled
+    oneshot
diff --git a/init.rc.omap35x b/init.rc.omap35x
new file mode 100755
index 0000000..d321f68
--- /dev/null
+++ b/init.rc.omap35x
@@ -0,0 +1,429 @@
+# Add our initlogo
+#on early-init
+#    symlink /initlogo.rle.bak /initlogo.rle
+
+on init
+
+sysclktz 0
+
+loglevel 3
+
+# setup the global environment
+    export PATH /sbin:/system/sbin:/system/bin:/system/xbin
+    export LD_LIBRARY_PATH /system/lib
+    export ANDROID_BOOTLOGO 1
+    export ANDROID_ROOT /system
+    export ANDROID_ASSETS /system/app
+    export ANDROID_DATA /data
+    export EXTERNAL_STORAGE /mnt/sdcard
+    export ASEC_MOUNTPOINT /mnt/asec
+    export BOOTCLASSPATH /system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar
+
+# Backward compatibility
+    symlink /system/etc /etc
+    symlink /sys/kernel/debug /d
+
+# create mountpoints
+    mkdir /mnt 0775 root system
+    mkdir /mnt/sdcard 0000 system system
+
+# Create cgroup mount point for cpu accounting
+    mkdir /acct
+    mount cgroup none /acct cpuacct
+    mkdir /acct/uid
+
+# Backwards Compat - XXX: Going away in G*
+    symlink /mnt/sdcard /sdcard
+
+    mkdir /system
+    mkdir /data 0771 system system
+    mkdir /cache 0770 system cache
+    mkdir /config 0500 root root
+
+    # Directory for putting things only root should see.
+    mkdir /mnt/secure 0700 root root
+
+    # Directory for staging bindmounts
+    mkdir /mnt/secure/staging 0700 root root
+
+    # Directory-target for where the secure container
+    # imagefile directory will be bind-mounted
+    mkdir /mnt/secure/asec  0700 root root
+
+    # Secure container public mount points.
+    mkdir /mnt/asec  0700 root system
+    mount tmpfs tmpfs /mnt/asec mode=0755,gid=1000
+
+##    mount rootfs rootfs / ro remount
+
+    write /proc/sys/kernel/panic_on_oops 1
+    write /proc/sys/kernel/hung_task_timeout_secs 0
+    write /proc/cpu/alignment 4
+    write /proc/sys/kernel/sched_latency_ns 10000000
+    write /proc/sys/kernel/sched_wakeup_granularity_ns 2000000
+    write /proc/sys/kernel/sched_compat_yield 1
+    write /proc/sys/kernel/sched_child_runs_first 0
+
+# Create cgroup mount points for process groups
+    mkdir /dev/cpuctl
+    mount cgroup none /dev/cpuctl cpu
+    chown system system /dev/cpuctl
+    chown system system /dev/cpuctl/tasks
+    chmod 0777 /dev/cpuctl/tasks
+    write /dev/cpuctl/cpu.shares 1024
+
+    mkdir /dev/cpuctl/fg_boost
+    chown system system /dev/cpuctl/fg_boost/tasks
+    chmod 0777 /dev/cpuctl/fg_boost/tasks
+    write /dev/cpuctl/fg_boost/cpu.shares 1024
+
+    mkdir /dev/cpuctl/bg_non_interactive
+    chown system system /dev/cpuctl/bg_non_interactive/tasks
+    chmod 0777 /dev/cpuctl/bg_non_interactive/tasks
+    # 5.0 %
+    write /dev/cpuctl/bg_non_interactive/cpu.shares 52
+
+    chown system system /data
+    chmod 0771 /data
+
+    # Create dump dir and collect dumps.
+    # Do this before we mount cache so eventually we can use cache for
+    # storing dumps on platforms which do not have a dedicated dump partition.
+   
+    mkdir /data/dontpanic
+    chown root log /data/dontpanic
+    chmod 0750 /data/dontpanic
+
+    # Collect apanic data, free resources and re-arm trigger
+    copy /proc/apanic_console /data/dontpanic/apanic_console
+    chown root log /data/dontpanic/apanic_console
+    chmod 0640 /data/dontpanic/apanic_console
+
+    copy /proc/apanic_threads /data/dontpanic/apanic_threads
+    chown root log /data/dontpanic/apanic_threads
+    chmod 0640 /data/dontpanic/apanic_threads
+
+    write /proc/apanic_console 1
+
+    # Same reason as /data above
+    chown system cache /cache
+    chmod 0770 /cache
+
+    # This may have been created by the recovery system with odd permissions
+    chown system cache /cache/recovery
+    chmod 0770 /cache/recovery
+
+    #change permissions on vmallocinfo so we can grab it from bugreports
+    chown root log /proc/vmallocinfo
+    chmod 0440 /proc/vmallocinfo
+
+# change permissions for Overlay
+    chmod 0777 /dev/video1
+    chmod 0777 /dev/video2
+    chmod 0777 /dev/omap-resizer
+
+# loading dsp modules
+    insmod /system/ti-dsp/cmemk.ko "phys_start=0x86b00000 phys_end=0x87200000 allowOverlap=1 useHeapIfPoolUnavailable=1"
+    insmod /system/ti-dsp/dsplinkk.ko
+    insmod /system/ti-dsp/lpm_omap3530.ko
+    insmod /system/ti-dsp/sdmak.ko
+
+# create basic filesystem structure
+    mkdir /system/etc/wifi 0770 wifi wifi
+    chmod 0770 /system/etc/wifi
+    chmod 0666 /system/etc/wifi/wpa_supplicant.conf
+    chown wifi wifi /system/etc/wifi
+    #wpa_supplicant control socket for android wifi.c (android private socket)
+    mkdir /data/misc/wifi 0770 wifi wifi
+    mkdir /data/misc/wifi/sockets 0770 wifi wifi
+    chmod 0770 /data/misc/wifi
+    chmod 0660 /data/misc/wifi/wpa_supplicant.conf
+    chown wifi wifi /data/misc/wifi
+    chown wifi wifi /data/misc/wifi/wpa_supplicant.conf
+
+    mkdir /data/misc 01771 system misc
+    mkdir /data/misc/bluetoothd 0770 bluetooth bluetooth
+    mkdir /data/misc/bluetooth 0770 system system
+    mkdir /data/misc/keystore 0700 keystore keystore
+    mkdir /data/misc/vpn 0770 system system
+    mkdir /data/misc/systemkeys 0700 system system
+    mkdir /data/misc/vpn/profiles 0770 system system
+
+    mkdir /data/local 0771 shell shell
+    mkdir /data/local/tmp 0771 shell shell
+    mkdir /data/data 0771 system system
+    mkdir /data/app-private 0771 system system
+    mkdir /data/app 0771 system system
+    mkdir /data/property 0700 root root
+    mkdir /data/misc/dhcp 0770 system dhcp
+    chown system dhcp /data/misc/dhcp
+
+    # create dalvik-cache and double-check the perms
+    mkdir /data/dalvik-cache 0771 system system
+    chown system system /data/dalvik-cache
+    chmod 0771 /data/dalvik-cache
+
+    # make sure the keychar files have correct permissions
+    chmod 0644 /system/usr/keychars/qwerty.kcm.bin
+    chmod 0644 /system/usr/keychars/qwerty2.kcm.bin
+
+    # create the lost+found directories, so as to enforce our permissions
+    mkdir /data/lost+found 0770
+    mkdir /cache/lost+found 0770
+
+    # double check the perms, in case lost+found already exists, and set owner
+    chown root root /data/lost+found
+    chmod 0770 /data/lost+found
+    chown root root /cache/lost+found
+    chmod 0770 /cache/lost+found
+
+on boot
+# basic network init
+    ifup lo
+    hostname localhost
+    domainname localdomain
+
+# set RLIMIT_NICE to allow priorities from 19 to -20
+    setrlimit 13 40 40
+
+# No battery hardware present
+    setprop hw.nobattery true
+    setprop hw.nophone true
+
+# Use USB keyboard layout
+    setprop hw.keylayout usbkbd
+    setprop hw.keycharmap usbkbd
+
+# Disable powermanagement
+    setprop hw.nopm     true
+
+# Define the oom_adj values for the classes of processes that can be
+# killed by the kernel.  These are used in ActivityManagerService.
+    setprop ro.FOREGROUND_APP_ADJ 0
+    setprop ro.VISIBLE_APP_ADJ 1
+    setprop ro.SECONDARY_SERVER_ADJ 2
+    setprop ro.BACKUP_APP_ADJ 2
+    setprop ro.HOME_APP_ADJ 4
+    setprop ro.HIDDEN_APP_MIN_ADJ 7
+    setprop ro.CONTENT_PROVIDER_ADJ 14
+    setprop ro.EMPTY_APP_ADJ 15
+
+# Define the memory thresholds at which the above process classes will
+# be killed.  These numbers are in pages (4k).
+    setprop ro.FOREGROUND_APP_MEM 1536
+    setprop ro.VISIBLE_APP_MEM 2048
+    setprop ro.SECONDARY_SERVER_MEM 4096
+    setprop ro.BACKUP_APP_MEM 4096
+    setprop ro.HOME_APP_MEM 4096
+    setprop ro.HIDDEN_APP_MEM 5120
+    setprop ro.CONTENT_PROVIDER_MEM 5632
+    setprop ro.EMPTY_APP_MEM 6144
+
+# Write value must be consistent with the above properties.
+# Note that the driver only supports 6 slots, so we have HOME_APP at the
+# same memory level as services.
+    write /sys/module/lowmemorykiller/parameters/adj 0,1,2,7,14,15
+
+    write /proc/sys/vm/overcommit_memory 1
+    write /proc/sys/vm/min_free_order_shift 4
+    write /sys/module/lowmemorykiller/parameters/minfree 1536,2048,4096,5120,5632,6144
+
+    # Set init its forked children's oom_adj.
+    write /proc/1/oom_adj -16
+
+    # Tweak background writeout
+    write /proc/sys/vm/dirty_expire_centisecs 200
+    write /proc/sys/vm/dirty_background_ratio  5
+
+    # Permissions for System Server and daemons.
+    chown radio system /sys/android_power/state
+    chown radio system /sys/android_power/request_state
+    chown radio system /sys/android_power/acquire_full_wake_lock
+    chown radio system /sys/android_power/acquire_partial_wake_lock
+    chown radio system /sys/android_power/release_wake_lock
+    chown radio system /sys/power/state
+    chown radio system /sys/power/wake_lock
+    chown radio system /sys/power/wake_unlock
+    chmod 0660 /sys/power/state
+    chmod 0660 /sys/power/wake_lock
+    chmod 0660 /sys/power/wake_unlock
+    chown system system /sys/class/timed_output/vibrator/enable
+    chown system system /sys/class/leds/keyboard-backlight/brightness
+    chown system system /sys/class/leds/lcd-backlight/brightness
+    chown system system /sys/class/leds/button-backlight/brightness
+    chown system system /sys/class/leds/jogball-backlight/brightness
+    chown system system /sys/class/leds/red/brightness
+    chown system system /sys/class/leds/green/brightness
+    chown system system /sys/class/leds/blue/brightness
+    chown system system /sys/class/leds/red/device/grpfreq
+    chown system system /sys/class/leds/red/device/grppwm
+    chown system system /sys/class/leds/red/device/blink
+    chown system system /sys/class/leds/red/brightness
+    chown system system /sys/class/leds/green/brightness
+    chown system system /sys/class/leds/blue/brightness
+    chown system system /sys/class/leds/red/device/grpfreq
+    chown system system /sys/class/leds/red/device/grppwm
+    chown system system /sys/class/leds/red/device/blink
+    chown system system /sys/class/timed_output/vibrator/enable
+    chown system system /sys/module/sco/parameters/disable_esco
+    chown system system /sys/kernel/ipv4/tcp_wmem_min
+    chown system system /sys/kernel/ipv4/tcp_wmem_def
+    chown system system /sys/kernel/ipv4/tcp_wmem_max
+    chown system system /sys/kernel/ipv4/tcp_rmem_min
+    chown system system /sys/kernel/ipv4/tcp_rmem_def
+    chown system system /sys/kernel/ipv4/tcp_rmem_max
+    chown root radio /proc/cmdline
+
+# Define TCP buffer sizes for various networks
+#   ReadMin, ReadInitial, ReadMax, WriteMin, WriteInitial, WriteMax,
+    setprop net.tcp.buffersize.default 4096,87380,110208,4096,16384,110208
+    setprop net.tcp.buffersize.wifi    4095,87380,110208,4096,16384,110208
+    setprop net.tcp.buffersize.umts    4094,87380,110208,4096,16384,110208
+    setprop net.tcp.buffersize.edge    4093,26280,35040,4096,16384,35040
+    setprop net.tcp.buffersize.gprs    4092,8760,11680,4096,8760,11680
+
+    setprop wifi.interface wlan0
+
+    class_start default
+
+## Daemon processes to be run by init.
+##
+service console /system/bin/sh
+    console
+
+# start PowerVR
+service pvr /system/bin/sgx/rc.pvr start
+    oneshot
+
+# start wifi
+service libertas /system/bin/libertas/rc.libertas start
+    oneshot
+
+# adbd is controlled by the persist.service.adb.enable system property
+service adbd /sbin/adbd
+    disabled
+
+# adbd on at boot in emulator
+on property:ro.kernel.qemu=1
+    start adbd
+
+on property:persist.service.adb.enable=1
+    start adbd
+
+on property:persist.service.adb.enable=0
+    stop adbd
+
+service servicemanager /system/bin/servicemanager
+    user system
+    critical
+    onrestart restart zygote
+    onrestart restart media
+
+service vold /system/bin/vold
+    socket vold stream 0660 root mount
+    ioprio be 2
+
+service netd /system/bin/netd
+    socket netd stream 0660 root system
+
+service debuggerd /system/bin/debuggerd
+
+service ril-daemon /system/bin/rild
+    socket rild stream 660 root radio
+    socket rild-debug stream 660 radio system
+    user root
+    group radio cache inet misc audio
+
+service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
+    socket zygote stream 666
+    onrestart write /sys/android_power/request_state wake
+    onrestart write /sys/power/state on
+    onrestart restart media
+
+service media /system/bin/mediaserver
+    user root
+    group system audio camera graphics inet net_bt net_bt_admin net_raw sdcard_rw
+    ioprio rt 4
+
+service bootanim /system/bin/bootanimation
+    user graphics
+    group graphics
+    disabled
+    oneshot
+
+service dbus /system/bin/dbus-daemon --system --nofork
+    socket dbus stream 660 bluetooth bluetooth
+    user bluetooth
+    group bluetooth net_bt_admin
+
+service wpa_supplicant /system/bin/wpa_supplicant -dd -Dwext -iwlan0 -c/system/etc/wifi/wpa_supplicant.conf
+    socket wpa_wlan0 dgram 660 wifi wifi
+    group system wifi inet
+    disabled
+    oneshot
+
+service bluetoothd /system/bin/bluetoothd -n
+    socket bluetooth stream 660 bluetooth bluetooth
+    socket dbus_bluetooth stream 660 bluetooth bluetooth
+    # init.rc does not yet support applying capabilities, so run as root and
+    # let bluetoothd drop uid to bluetooth with the right linux capabilities
+    group bluetooth net_bt_admin misc
+    disabled
+
+service hfag /system/bin/sdptool add --channel=10 HFAG
+    user bluetooth
+    group bluetooth net_bt_admin
+    disabled
+    oneshot
+
+service hsag /system/bin/sdptool add --channel=11 HSAG
+    user bluetooth
+    group bluetooth net_bt_admin
+    disabled
+    oneshot
+
+service opush /system/bin/sdptool add --channel=12 OPUSH
+    user bluetooth
+    group bluetooth net_bt_admin
+    disabled
+    oneshot
+
+service pbap /system/bin/sdptool add --channel=19 PBAP
+    user bluetooth
+    group bluetooth net_bt_admin
+    disabled
+    oneshot
+
+service installd /system/bin/installd
+    socket installd stream 600 system system
+
+service flash_recovery /system/etc/install-recovery.sh
+    oneshot
+
+service racoon /system/bin/racoon
+    socket racoon stream 600 system system
+    # racoon will setuid to vpn after getting necessary resources.
+    group net_admin
+    disabled
+    oneshot
+
+service mtpd /system/bin/mtpd
+    socket mtpd stream 600 system system
+    user vpn
+    group vpn net_admin net_raw
+    disabled
+    oneshot
+
+service keystore /system/bin/keystore /data/misc/keystore
+    user keystore
+    group keystore
+    socket keystore stream 666
+
+service dumpstate /system/bin/dumpstate -s
+    socket dumpstate stream 0660 shell log
+    disabled
+    oneshot
+
+service dhcpcd /system/bin/dhcpcd -o domain_name_servers -ABKL
+    disabled
+    oneshot
diff --git a/libertas/rc.libertas b/libertas/rc.libertas
new file mode 100755
index 0000000..bd03076
--- /dev/null
+++ b/libertas/rc.libertas
@@ -0,0 +1,45 @@
+#!/system/bin/sh
+
+load_libertas()
+{
+	insmod /system/lib/modules/libertas.ko
+	#insmod /system/lib/modules/libertas_sdio.ko
+	# Let WiFi part know that the driver is already loaded
+	setprop wlan.driver.status ok
+
+	echo "Loaded Libertas WiFi modules"
+
+	return 0;
+}
+
+unload_libertas()
+{
+	if rmmod libertas; then :; else return 1; fi
+	#if rmmod libertas_sdio; then :; else return 1; fi
+
+	echo "Unloaded Libertas WiFi modules."
+	return 0;
+}
+
+# Deal with the type of invocation we get.
+#
+case "$1" in
+"start")
+	load_libertas
+	;;
+stop)
+	if ! unload_libertas; then
+		echo "Couldn't unload modules" >&2;
+	fi
+	;;
+reload|restart)
+	if unload_libertas; then
+		load_libertas
+	else
+		echo "Couldn't unload modules" >&2;
+	fi
+	;;
+*)
+	echo "$0: unknown argument $1." >&2;
+	;;
+esac
diff --git a/vold.fstab b/vold.fstab
index fc83907..b58f21f 100644
--- a/vold.fstab
+++ b/vold.fstab
@@ -1,2 +1,2 @@
-dev_mount sdcard /mnt/sdcard auto /devices/platform/mmci-omap-hs.0/mmc_host/mmc0
+dev_mount sdcard /mnt/sdcard 3 /devices/platform/mmci-omap-hs.0/mmc_host/mmc0
 
diff --git a/wpa_supplicant.conf b/wpa_supplicant.conf
new file mode 100644
index 0000000..a35efd3
--- /dev/null
+++ b/wpa_supplicant.conf
@@ -0,0 +1,6 @@
+ctrl_interface=wlan0
+update_config=1
+
+network={
+	key_mgmt=NONE
+}

Project external/wpa_supplicant/

diff --git a/os_unix.c b/os_unix.c
index 8498b15..7b1b929 100644
--- a/os_unix.c
+++ b/os_unix.c
@@ -187,7 +187,7 @@ int os_program_init(void)
 	prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);
 
 	setgid(AID_WIFI);
-	setuid(AID_WIFI);
+	setuid(AID_SYSTEM);
 
 	struct __user_cap_header_struct header;
 	struct __user_cap_data_struct cap;

Project hardware/libhardware_legacy/

project hardware/libhardware_legacy/
diff --git a/wifi/wifi.c b/wifi/wifi.c
index 3f8708d..b114946 100644
--- a/wifi/wifi.c
+++ b/wifi/wifi.c
@@ -263,8 +263,8 @@ int ensure_config_file_exists()
     if (chown(SUPP_CONFIG_FILE, AID_SYSTEM, AID_WIFI) < 0) {
         LOGE("Error changing group ownership of %s to %d: %s",
              SUPP_CONFIG_FILE, AID_WIFI, strerror(errno));
-        unlink(SUPP_CONFIG_FILE);
-        return -1;
+        //unlink(SUPP_CONFIG_FILE);
+        //return -1;
     }
     return 0;
 }

Annex: rc.libertas

Save the following block to device/ti/igepv2/libertas/rc.libertas

#!/system/bin/sh

load_libertas()
{
	insmod /system/lib/modules/libertas.ko
	#insmod /system/lib/modules/libertas_sdio.ko
	# Let WiFi part know that the driver is already loaded
	setprop wlan.driver.status ok

	echo "Loaded Libertas WiFi modules"

	return 0;
}

unload_libertas()
{
	if rmmod libertas; then :; else return 1; fi
	#if rmmod libertas_sdio; then :; else return 1; fi

	echo "Unloaded Libertas WiFi modules."
	return 0;
}

# Deal with the type of invocation we get.
#
case "$1" in
"start")
	load_libertas
	;;
stop)
	if ! unload_libertas; then
		echo "Couldn't unload modules" >&2;
	fi
	;;
reload|restart)
	if unload_libertas; then
		load_libertas
	else
		echo "Couldn't unload modules" >&2;
	fi
	;;
*)
	echo "$0: unknown argument $1." >&2;
	;;
esac

--- That's all folks ---


See also