Building android-4.0.4 IceCreamSandwich on Pandaboard/Pandaboard ES

This is the 2nd post about building Android for pandaboard. I quote from the previous post

Google maintainers advise to always repo sync the master branch for panda claiming it’s the most stable , but in my opinion they should focus on stabilizing tags. Tags should represent a stable snapshot of he source tree to build and run . That’s what a tag means in Software Engineering anyway !

This post is a translated version of the Japanese post on reposted under permission of the main author  that describes how to build Android JB tag android-4.0.4_r1.2 for pandaboard, of course some patching is required to get it work, you can download all the patches required from this mirror or follow the steps to get them one by one from the main mirror.


IMPORTANT: To compile ICS you need to be using gcc 4.4 , so you may downgrade your gcc version or just installing gcc/gcc++ 4.4 and specifying them while making.

$ sudo apt-get install gcc-4.4 gcc-4.4-multilib g++-4.4 g++-4.4-multilib

Then, override make’s default variables with

$ make CC=gcc-4.4 CXX=g++-4.4 -j4

– prepare the directory

$ mkdir ~/panda_work
$ export PANDA_WORK=~/panda_work
$ mkdir ~/panda_work/android
$ export ANDROID_ROOT=~/panda_work/android

– init the repo

$ repo init -u -b android-4.2.2_r1
$ repo sync


  1. to save time you can use an old tree and repo init inside it’s dir , then sync will grab only the differences
  2. in case repo sync hangs use repo sync -j1 to disable multi threading also check repo sync -h for other options

– get the gpu user space binaries

$ wget
$ tar zxvf imgtec-panda-20120430-67545da7.tgz
$ ./

– apply the patches

$ wget
$ tar jxvf panda.ics.patch.tar.bz2
$ cd device/ti/panda 
$ git apply panda.ics.patch/0001-merge-master-to-device-ti-panda.patch # merges the contents of master branch into /device/ti/panda
$ cd ..
$ tar jxvf panda.ics.patch/hardware_ti_wlan.tar.bz2 -C hardware/ti/ # merges the contents of master branch
$ tar jxvf panda.ics.patch/hardware_ti_wpan.tar.bz2 -C hardware/ti/ # merges the contents of master branch
$ git apply panda.ics.patch/0003-Change-ALOG-to-LOG.patch # fixes a bug
$ git apply panda.ics.patch/0004-enable-wifi.patch # merges the contents of master branch to enable wifi
$ git apply panda.ics.patch/0005-change-console-permission.patch # root permssion to console

– add the script of flashing or you can use fastboot instead , but note that this script will create an extra partition (/media)

$ git apply panda.ics.patch/

– build the tree

$ source build/
$ lunch full_panda-userdebug
$ make CC=gcc-4.4 CXX=g++-4.4 -j4

– format and flash from a ubuntu machine, /dev/sdx is the the sdcard device

$ LANG=C sudo ./ /dev/sdX $ANDROID_ROOT


– prepare the environment

$ export ARCH=arm
$ export CROSS_COMPILE=$ANDROID_ROOT/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-

– clone the repo

$ git clone kernel
$ cd kernel
$ git checkout -b android-omap-panda-3.0 origin/android-omap-panda-3.0
$ git checkout 52f476403350050beb0dff135a55c06c9e7a82a9

– build

$ make panda_defconfig
$ make -j4
$ cp -a arch/arm/boot/zImage $ANDROID_ROOT/device/ti/panda/kernel

note: though bootloader and xloader images are provided within device/ti/panda dir , you can build them from source using the following instructions


– build xloader

$ git clone git://
$ cd x-loader
$ git checkout -b omap4_dev origin/omap4_dev
$ make omap4430panda_config
$ make ift
$ cp -a MLO $ANDROID_ROOT/device/ti/panda/xloader.bin


– clone the repo

$ git clone git://
$ cd u-boot
$ git checkout -b omap4_dev origin/omap4_dev

– change the boot parameters

$ wget
$ git apply 0001-change-bootarges.patch

– build

$ make omap4430panda_config
$ make
$ cp -a u-boot.bin $ANDROID_ROOT/device/ti/panda/bootloader.bin

3 thoughts on “Building android-4.0.4 IceCreamSandwich on Pandaboard/Pandaboard ES

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s