Android 4.0 on BeagleBoard and Beagleboard-xM

Sola has written the instructions (in Japanese) to build Android 4.0 (ICS) for Beagleboard and Beagleboard-xM.

Here’s the same in English:
Get the source code:

$ mkdir -p /home/sola/work/ics
$ cd /home/sola/work/ics
$ repo init -u
$ repo sync -j8

Build Android:

$ source build/
$ lunch full_beagleboard_xm-eng [for BeagleBoard-xM]
$ lunch full_beagleboard-eng [for BeagleBoard]
$ time make -j8

Generate the rootfs:

$ cd $ANDROID_ROOT/out/target/product/beagleboard_xm/ [for BeagleBoard-xM]
$ cd $ANDROID_ROOT/out/target/product/beagleboard/ [for BeagleBoard]
$ mkdir rootfs
$ sudo cp -a ./root/* ./rootfs/
$ sudo cp -a ./system/* ./rootfs/system/

Build the kernel:

$ export ARCH=arm
$ export CROSS_COMPILE=$ANDROID_ROOT/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
$ cd $ANDROID_ROOT/board/beagleboard/kernel
$ make omap3_beagle_android_defconfig
$ make uImage modules -j8

Partition the SD card (bootloader, media, rootfs):

$ cd $ANDROID_ROOT/board/beagleboard/sdcard
$ sudo LANG=C ./ /dev/sdx

where /dev/sdx depends on your setup (e.g. /dev/sda).

Generate boot.scr:

$ cd $ANDROID_ROOT/board/beagleboard/bootscript
$ ./mkbootscr

Copy MLO/u-boot.bin/uImage/rootfs to the SD card:

$ sudo cp -a board/beagleboard/x-loader/MLO /media/boot/
$ sudo cp -a board/beagleboard/u-boot/u-boot.bin /media/boot/
$ sudo cp -a board/beagleboard/bootscript/boot.scr /media/boot/
$ sudo cp -a board/beagleboard/kernel/arch/arm/boot/uImage /media/boot/
$ cd $ANDROID_ROOT/out/target/product/beagleboard_xm/ [for BeagleBoard-xM]
$ cd $ANDROID_ROOT/out/target/product/beagleboard/ [for BeagleBoard]
$ sudo cp -a ./rootfs/* /media/rootfs/
$ sudo chmod 777 -R /media/rootfs

Prebuilt images are also available:

Share this:

Support CNX Software! Donate via cryptocurrencies or become a Patron on Patreon

25 Replies to “Android 4.0 on BeagleBoard and Beagleboard-xM”

  1. This is the guide i took for reference and changed the repositories address to the one for beagleboard , using this command
    [CODE]repo init -u
    Yet all 239 odd projects got downloaded , how to only download the beagleboard source files and not all aosp project on the main android source code git

    Please clarify this (i know how to use -b option in repo sync to take only branches of a project from the manifest i point it to)
    repo should only download files from and not all android sources files correct?

  2. Hi, I am working on the BB-xm using the DVI and a standard LCD monitor (all works with rowboat and angstrom.) Currently I have no way to use the serial port to watch what’s happening. Being familiar with Rowboat’s boot, this is what I see. The LEDs go through the same sequence during boot then go off as expected. Next the LED on my monitor comes on but no display of a boot screen as I would expect and never does have a display. I am using a USB hub and have a really good power source, (a nice 5v 4A wall-wart switcher.) This is probably simple, but I am still fairly new to Android and to Linux.

  3. Thank you for the response. I have been on many android user groups and never had someone reply to a question.. I did look in boot.scr and compared it with rowboat’s and the arguments were mostly the same: The boot.scr from this prebuilt has console=ttyO2,115200n8. The differences had to do with partition format, ext4 vs ext3 and with root=’dev/mmcblk0p2 vs root=’dev/mmcblk0p3. Wait states are handled different where rowboat uses rootdelay=1, this uses rootwait and noinitrd.

    There are two additional arguments that don’t exist within rowboat, but they are DVI related which may actually be a problem. The first is omapfb.mode=dvi:640x480MR-16 and omapdss.def_disp=”dvi”

    I will play with the boot arguments and see what I get. Again, thanks and I will check out the link.

  4. I decided to change root=’dev/mmcblk0p3 to root=’dev/mmcblk0p2 and delete omapfb.mode=dvi:640x480MR-16. This seems to have fixed the problem. Again, Thanks.

  5. Hi,

    I had downloaded the source from this source and re-created the Kernel and Android images. I am getting “Unfortunately,System UI has stopped” message is coming for every one 1sec. I am using beagle-xm board. Could you please help me here?.


  6. I have found work around to this issue. Download beagleboard ICS patches
    $ cd ~
    $ curl > Beagleboard_ICS_patches.tar.gz
    $ tar -zxvf Beagleboard_ICS_patches.tar.gz

    and apply patch


    $ cd /frameworks/base
    $ git am /0001-change-default-device-type-for-touch-screen.patch
    $ git am /0002-disble-hardware-renderer.patch

    you can find more information at

  7. Hi,

    I have successfully followed the above instructions to port Android 4.0 ICS on OMAP 3530 beagleboard. The issue is ith the USB.
    I have powered my Beagleboard with 5V DC supply and tried to connect the USB hub with Keyboard and mouse to both USB HOST and USB OTG and at both times the devices are not recognised and I(even if I am not plugging the hub to the Beagleboard) always get USB enumeration failure.

    Also, upon boot, although the root command prompt comes up, I get these messageson the minicom serial terminal:
    request_suspend_state: sleep (0->3) at 107356268123 (2000-01-01 00:01:42.518621636 UTC)
    PM: Syncing filesystems … done.
    mmc0: card 0001 removed

    and then none of my keystrokes on the serial console gets executed on the command prompt of android.

    Please help!

  8. @ patrik
    I don’t have a board, so I would not be able to help you here.

    I recommend you check the instructions and ask at


    This week TI released Android 4.0.3 devkit for Beagleboard-xM / Beaglebone. See for details. Sorry your board is using OMAP3530, it won’t be relevant to your board.

  9. These are what I see on my serial console:

    root@android:/ # hub 1-0:1.0: Cannot enable port 2. Maybe the USB cable is bad?
    hub 1-0:1.0: Cannot enable port 2. Maybe the USB cable is bad?
    ehci-omap ehci-omap.0: port 2 cannot be enabled
    ehci-omap ehci-omap.0: Maybe your device is not a high speed device?
    ehci-omap ehci-omap.0: USB host (EHCI) controller does not support full speed or low speed device on it’s root port.
    ehci-omap ehci-omap.0: Please connect full/low speed device via a high speed hub.
    hub 1-0:1.0: unable to enumerate USB device on port 2
    warning: `zygote’ uses 32-bit capabilities (legacy support in use)
    request_suspend_state: wakeup (3->0) at 34657470707 (2000-01-01 00:00:29.772460939 UTC)

    root@android:/ # request_suspend_state: sleep (0->3) at 108676286655 (2000-01-01 00:01:43.791276887 UTC)
    PM: Syncing filesystems … done.
    mmc0: card 0001 removed

  10. Yes, it is a high speed hub. When I connect to my Linux PC immediately the mouse and keyboard are recognized. By the way the instructions on Beagleboard ICS seems so complicated. Your instructions are damn easy to follow. I’d also downloaded the patch mentioned above. However I do not know which one to apply and how. Any help? I didnt find help in the website you mentioned..

  11. hi sir, i have Beagleboard-XM (Arm cortex A8) and used prebuild image from,
    link is

    my hdmi output is completely working than i change boot arguments for s-video output(i change boot arguments according to the ti guide for froyo ) ..

    than the s-video output is not getting and than i saw terminal it stucked at uncropessing kernel….

    what to do for getting the s-video out..??? have a android 4.0.3 have s-video support..??

    Thanks in advance

  12. Error Msg:

    jamesreetha@jamesreetha-Inspiron-N5010:/media/jamesreetha/VIMAL/ANDROIDNEW/out/target/product/beagleboard$ sudo cp -a ./root/* ./rootfs/
    cp: cannot stat ‘./root/*’: No such file or directory

Leave a Reply

Your email address will not be published. Required fields are marked *