[Dell Venue] x1123:
[GUIDE] To build dell venue kernel (& ROM) from source

I faced hard ware problem in my PC when execute make command, the RAM is screaming and PC died before the build complete look like my RAM have big problem. I do best to write a brief guide by expecting someone willing to try to build kernel for this device and probably complete rom. More people involve will create opportunity to have customs kernel and rom for dell venue :D

Brief Guide to Build DELL VENUE kernel Noob Proof

I. Preparing development Tools

A PC (Desktop or Laptop) with 2 GB Ram (4 GMB or more Ram is preferred), Pentium 4 class Processor or Higher. 40 GB Hard Disk Space. Internet Connection

II. Linux Ubuntu 10.04 i386 (32 bit Platform) is suggested, but other linux distribution and/or amd64 (64 bit Platform) also welcome. Other operating system is not covered by this guide.

III. Reference / links

http://source.android.com/source/initializing.html To set up build environment.

https://www.codeaurora.org/xwiki/bin/QAEP/ everything about build process

http://opensource.dell.com/releases/venue/v4.06/ available source for dell venue.

http://xdaforums.com/forumdisplay.php?f=1013 for discussion forum

Special Preparation on the PC with Ubuntu 10.04 i386 installed.

A.1. Dell venue available kernel source have to be build with Froyo Source Tree (Instructed by build instruction) sun-java5-jdk is mandatory requirement.

Install sun-java5-jdk :

Modified file sources.list repository > open gnome terminal >

$ sudo gedit /etc/apt/sources.list > a text editor (gedit) will opened, add the following line on the file

deb http://archive.ubuntu.com/ ubuntu/ hardy main multiverse

deb http://archive.ubuntu.com/ ubuntu/ hardy-updates main muiltiverse

save and close the text editor.

standard ubuntu repository

###Repository /etc/apt/sources.list This file
deb http://kambing.ui.ac.id/ubuntu/ lucid main restricted universe multiverse
deb http://kambing.ui.ac.id/ubuntu/ lucid-updates main restricted universe multiverse
deb http://kambing.ui.ac.id/ubuntu/ lucid-backports main restricted universe multiverse

### Sources Repository
deb-src http://kambing.ui.ac.id/ubuntu/ lucid main restricted universe multiverse
deb-src http://kambing.ui.ac.id/ubuntu/ lucid-updates main restricted universe multiverse
deb-src http://kambing.ui.ac.id/ubuntu/ lucid-backports main restricted universe multiverse

## Canonical Partner
deb http://archive.canonical.com/ubuntu lucid partner
deb-src http://archive.canonical.com/ubuntu lucid partner

##Security
deb http://security.ubuntu.com/ubuntu lucid-security main restricted
deb-src http://security.ubuntu.com/ubuntu lucid-security main restricted
deb http://security.ubuntu.com/ubuntu lucid-security universe
deb-src http://security.ubuntu.com/ubuntu lucid-security universe
deb http://security.ubuntu.com/ubuntu lucid-security multiverse

ubuntu 10.04 repository with enbale to install sun-java5-jdk

###Repository /etc/apt/sources.list This file
deb http://kambing.ui.ac.id/ubuntu/ lucid main restricted universe multiverse
deb http://kambing.ui.ac.id/ubuntu/ lucid-updates main restricted universe multiverse
deb http://kambing.ui.ac.id/ubuntu/ lucid-backports main restricted universe multiverse

### Sources Repository
deb-src http://kambing.ui.ac.id/ubuntu/ lucid main restricted universe multiverse
deb-src http://kambing.ui.ac.id/ubuntu/ lucid-updates main restricted universe multiverse
deb-src http://kambing.ui.ac.id/ubuntu/ lucid-backports main restricted universe multiverse

## Canonical Partner
deb http://archive.canonical.com/ubuntu lucid partner
deb-src http://archive.canonical.com/ubuntu lucid partner

##Security
deb http://security.ubuntu.com/ubuntu lucid-security main restricted
deb-src http://security.ubuntu.com/ubuntu lucid-security main restricted
deb http://security.ubuntu.com/ubuntu lucid-security universe
deb-src http://security.ubuntu.com/ubuntu lucid-security universe
deb http://security.ubuntu.com/ubuntu lucid-security multiverse
deb-src http://security.ubuntu.com/ubuntu lucid-security multiverse

## To Get Java 1.5 on ubuntu 10.04
deb http://archive.ubuntu.com/ubuntu hardy main multiverse
deb http://archive.ubuntu.com/ubuntu hardy-updates main multiverse

undertanding of ubuntu repository, please read THIS GUIDE

On gnome terminal > execute command

$ sudo apt-get update and wait then >

$ sudo apt-get install sun-java5-jdk > and wait.

if you have other java version installed (I.e sun-java6-jdk) > remove sun-java6-jdk by executing command on terminal >

$ sudo apt-get remove sun-java6-jdk

Note – this action is NOT necessary if you know how to handle multiple java version.

A.2. Install additional development tools in your ubuntu :

open gnome terminal

execute a command >

$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown libxml2-utils xsltproc

execute >

$ sudo apt-get install file-roller p7zip-full p7zip-rar

A.3. Install appropriate Android USB Driver.

You need to do either automatic way or manual way (No need to do both)

I) “Automatic” way Android USD Driver installation > in this situation you will get also adb (android development bridge). This is a suggested and easiest way.

A xda forum member create a script to install ADB and Android USD Driver almost all today available brands.

Download Knives & Forks installation scripts in this links > http://www.bsus.co.id/android/knives-and-forks-12.01.25.zip

[Note : I uploaded knives-and-fork file due to I can not find original download links]

Instruction to set up Android USD Driver along with ADB and fastboot is in the file, just unpack somewhere in your home folder,. Read instruction.txt file

II)Manual way Android USD Driver installation : open gnome terminal > execute command on terminal >

$ sudo gedit /etc/udev/rules.d/99-android-rules >

a BLANK gedit text editor will be opened > copy paste the following items on the blank text editor :

# ACER
SUBSYSTEM=="usb", SYSFS{idVendor}=="0502", MODE="0666", USER=x, GROUP=x
# ASUS
SUBSYSTEM=="usb", SYSFS{idVendor}=="0b05", MODE="0666", USER=x, GROUP=x
# DELL
SUBSYSTEM=="usb", SYSFS{idVendor}=="413c", MODE="0666", USER=x, GROUP=x
# FOXCONN
SUBSYSTEM=="usb", SYSFS{idVendor}=="0489", MODE="0666", USER=x, GROUP=x
# GARMIN-ASUS
SUBSYSTEM=="usb", SYSFS{idVendor}=="091e", MODE="0666", USER=x, GROUP=x
# Google
SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666", USER=x, GROUP=x
# Hisense
SUBSYSTEM=="usb", SYSFS{idVendor}=="109b", MODE="0666", USER=x, GROUP=x
# HTC
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666", USER=x, GROUP=x
# HUAWEI
SUBSYSTEM=="usb", SYSFS{idVendor}=="12d1", MODE="0666", USER=x, GROUP=x
# K-TOUCH
SUBSYSTEM=="usb", SYSFS{idVendor}=="24e3", MODE="0666", USER=x, GROUP=x
# KT Tech
SUBSYSTEM=="usb", SYSFS{idVendor}=="2116", MODE="0666", USER=x, GROUP=x
# KYOCERA
SUBSYSTEM=="usb", SYSFS{idVendor}=="0482", MODE="0666", USER=x, GROUP=x
# LENEVO
SUBSYSTEM=="usb", SYSFS{idVendor}=="17ef", MODE="0666", USER=x, GROUP=x
# LG
SUBSYSTEM=="usb", SYSFS{idVendor}=="1004", MODE="0666", USER=x, GROUP=x
# MOTOROLA
SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", MODE="0666", USER=x, GROUP=x
# NEC
SUBSYSTEM=="usb", SYSFS{idVendor}=="0409", MODE="0666", USER=x, GROUP=x
# NOOK
SUBSYSTEM=="usb", SYSFS{idVendor}=="2080", MODE="0666", USER=x, GROUP=x
# NVIDIA
SUBSYSTEM=="usb", SYSFS{idVendor}=="0955", MODE="0666", USER=x, GROUP=x
# OTGV
SUBSYSTEM=="usb", SYSFS{idVendor}=="2257", MODE="0666", USER=x, GROUP=x
# PANTECH
SUBSYSTEM=="usb", SYSFS{idVendor}=="10a9", MODE="0666", USER=x, GROUP=x
# PEGATRON
SUBSYSTEM=="usb", SYSFS{idVendor}=="1d4d", MODE="0666", USER=x, GROUP=x
# PHILIPS
SUBSYSTEM=="usb", SYSFS{idVendor}=="0471", MODE="0666", USER=x, GROUP=x
# PMC-SIERRA
SUBSYSTEM=="usb", SYSFS{idVendor}=="04da", MODE="0666", USER=x, GROUP=x
# QUALCOMM
SUBSYSTEM=="usb", SYSFS{idVendor}=="05c6", MODE="0666", USER=x, GROUP=x
# SK TELESYS
SUBSYSTEM=="usb", SYSFS{idVendor}=="1f53", MODE="0666", USER=x, GROUP=x
# SAMSUNG
SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666", USER=x, GROUP=x
# SHARP
SUBSYSTEM=="usb", SYSFS{idVendor}=="04dd", MODE="0666", USER=x, GROUP=x
# SONY ERICSSON
SUBSYSTEM=="usb", SYSFS{idVendor}=="0fce", MODE="0666", USER=x, GROUP=x
# TOSHIBA
SUBSYSTEM=="usb", SYSFS{idVendor}=="0930", MODE="0666", USER=x, GROUP=x
# ZTE
SUBSYSTEM=="usb", SYSFS{idVendor}=="19d2", MODE="0666", USER=x, GROUP=x

Note : Please make change to USER=x to USER=Your UserName in ubuntu and GROUP=x with GROUP=Your UserName in ubuntu.

save the file and close.

In this state, since you install Android USB Driver Manually, you need an adb which can be found easily by googling. Or you can download the file from this links >

http://www.bsus.co.id/android/adb+fastboot.zip

Unpack adb+fastboot.zip you will have a folder named adb+fastboot with 2 file inside adb and fastboot > open gnome terminal > go into adb+fastboot folder $ cd adb+fastboot.

At gnome terminal [in folder adb+fastboot] execute command >

$ sudo cp adb /usr/bin

$ sudo chmod 755 /usr/bin/adb

$ sudo cp fastboot /usr/bin/

$ sudo chmod 755 /usr/bin/fastboot

by executing above commands adb and fastboot will be available globally in your ubuntu system.

Now you have a PC ready to use as development tools to build dell-venue android kernel. Let's build “special environment” for Dell Venue development :

Downloading Source : Please visit and read : http://source.android.com/source/downloading.html since this guide is refers to the site.

open gnome terminal

in your home/user folder execute command >

$ mkdir dell-venue > create a folder named dell-venue

$ mkdir bin > create a folder named bin

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

after completing all download > execute command >

$ chmod a+x ~/bin/repo

$ PATH=~/bin:$PATH > to make application in folder /home/user/bin available globally.

To avoid every time you want to work with repo command have to execute in terminal > $PATH=~/bin:$PATH will be better to put repo file in ~/bin to available globally by modifying a file named .bashrc [DOTbashrc] in your home/user/ folder. If you dont have the file just copying from /etc folder > in gnome terminal execute command >

$ cp /etc/bash.bashrc /home/user/.bashrc > then execute >

$ gedit .bashrc > a gedit text editor will appear > in the line after last line at opened gedit text editor > type export PATH=~/bin:$PATH

.bashrc file before modified

...
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi

.bashrc file with modification

...
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
export PATH=~/bin:$PATH

Now you have executable application named repo appoint to googlesource git repository.

We need to download all source code special for dell venue with froyo platform from codeaurora website. In the gnome terminal execute command >

$cd ~/dell-venue

$repo init -u git://codeaurora.org/platform/manifest.git -b froyo_almond -m M76XXTSNCJNLYA60401001.xml –repo-url=git://codeaurora.org/tools/repo.git

wait until the downloading complete > and execute command >

$repo sync

wait until the synchronization with server complete. It's depending on your internet connection speed with take about 2-5 hours … LOL

Once the sync completing, your development environment for building dell venue kernel and rom is ready.

Download dell venue source code from links >

http://opensource.dell.com/releases/venue/v4.06/

download all file and save in your dell-venue folder [Just for easy remembering].

open gnome terminal > go to dell-venue folder >

$cd ~/dell-venue

there is a folder named kernel, you can delete this folder or rename the folder due to we will replace this folder with source from dell website. In terminal execute asf :

if you want to delete forever folder named kernel, execute >

$ rm -rf kernel

if you want to rename kernel folder with other name to keep the file available [just in case], execute >

$ mv kernel kernel-old.

Extract dell venue kernel you downloaded in the dell-venue folder

in this stage we have ready environment to build dell venue kernel, the next is to follow build instruction :

1) download source tree of android froyo from Qualcomm (done)

2) replace kernel (done)

3) build kernel by > Please execute

$ . build/envsetup.sh or

$ source build/envstup.sh

$ choosecombo 1 1 msm7201a_surf eng

$ make -j4

-j4 is optional you can try with -j3 if you have 2 processor in the PC (i.e dual core), the clue is processor +1 > core 2 duo = 4 processor thus can use make -j5 and so on..

ONCE THE BUILD SUCESS in folder working forlder in this example ~/dell-venue/out/target/product/msm7201a_surf will available :
* system.img
* userdata.img
* boot.img
* recovery.img
* ramdisk.img
AND
* update.zip

Flash above file via fastboot with command

$ sudo fastboot -i 0x413c flashall -w OR [flash one by one]

$ sudo fastboot -i 0x413c flash system system.img

$ sudo fastboot -i 0x413c flash userdata userdata.img

$ sudo fastboot -i 0x413c flash boot boot.img

optional

$ sudo fastboot -i 0x413c flash recovery recovery.img

build instruction for other module is in the kernel-build_readme.txt from this link > http://opensource.dell.com/releases/venue/v4.06/ as we see the instruction need to download various "source tree"

kernel > as above

-------------------------------------------------------------------------------

wpa_supplicant

1) download source tree of android froyo from Google.

2) build android by

. build/envsetup.sh

choosecombo (all default option, Product choices are: 2. generic)

make -j4

3) replace external/wpa_supplicant_6

4) mmm external/wpa_supplicant_6/wpa_supplicant

-------------------------------------------------------------------------------

jpeg

1) download source tree of android donut from Google.

2) build android by

. build/envsetup.sh

choosecombo (all default option, Product choices are: 2. generic)

make -j4

3) replace external/jpeg

4) mmm external/jpeg

-------------------------------------------------------------------------------

e2fsprogs

1) download source tree of android donut from Google.

2) build android by

. build/envsetup.sh

choosecombo (all default option, Product choices are: 2. generic)

make -j4

3) replace external/e2fsprogs

4) mmm external/e2fsprogs

-------------------------------------------------------------------------------

webkit

1) download source tree of android donut from Google.

2) build android by

. build/envsetup.sh

choosecombo (all default option, Product choices are: 2. generic)

make -j4

3) replace external/webkit

4) mmm external/webkit

-------------------------------------------------------------------------------

bluez

1) download source tree of android gingerbread from Google.

2) build android by

. build/envsetup.sh

choosecombo (all default option, Product choices are: 2. generic)

make -j4

3) replace external/bluez, and 'export BOARD_HAVE_BLUETOOTH=true'

4) mmm external/bluetooth/glib

mmm external/bluetooth/bluez

-------------------------------------------------------------------------------

Note : to build from gingerbread source tree, we need sun-java6-jdk or higher, then we need to manage the available java in our PC.

my suggestion we build what required sun-java5-jdk first [donut and froyo] after everything running well then install sun-java6-jdk > download source tree for gingerbread and build.

wpa_supplicant > to enable wifi well function to connect access point

bluez > to enable bluetooth well function

jpeg > related to image

webkit > for browser and other component need webkit library

suggestion [for time saving in experiment] build kernel first and test if the kernel alive in the device, then we build other module (wpa_supplicant, bluez, jpeg, webkit for full functionality of device)

I personally need to check my PC with New RAM and will post the build result.

LET'S HAVE FUN