Home > Android, Texas Instruments OMAP 3 > Android 4.0 on BeagleBoard and Beagleboard-xM

Android 4.0 on BeagleBoard and Beagleboard-xM

November 24th, 2011 Leave a comment Go to comments

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 https://bitbucket.org/sola/android_manifest
$ repo sync -j8

Build Android:

$ source build/envsetup.sh
$ 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 ./mksdcard_beagle.sh /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:

  1. January 23rd, 2012 at 23:39 | #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 https://bitbucket.org/sola/android_manifest%5B/CODE%5D
    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 bitbucket.org and not all android sources files correct?

  2. January 24th, 2012 at 00:09 | #2

    @Adit Lal
    Repo is a python script built on top of git – http://source.android.com/source/version-control.html

    I’m not sure how to exactly, but If you know the directories to clone, you should be able to use git to do so.

    Alternatively, I’ve just found a patch @ http://rowboat.googlecode.com/files/Beagleboard_ICS_patches.tar.gz.
    For details see http://code.google.com/p/rowboat/wiki/ICSonBeagleboard

  3. January 29th, 2012 at 08:00 | #3

    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.

  4. January 29th, 2012 at 08:02 | #4

    I should have mentioned that I am using the prebuilt image..@Mike Trethowan

  5. January 29th, 2012 at 09:25 | #5

    @Mike Trethowan
    Hi Mike,

    I don’t have a Beagleboard-xM, the guy who made the images is Sola, I’ve linked to his blog at the top of this post. You’d have a better change of getting an answer there.

  6. January 29th, 2012 at 11:11 | #6

    @Mike Trethowan

    I’ve checked the FAQ at http://beagleboard.org/support/faq. Your problem could be caused because of the boot arguments:

    “I built my own custom kernel but I don’t see any boot messages?

    You may be passing the wrong bootargs to the kernel. Linux kernels >= 2.6.36 are using ttyOn instead ttySn for the serials on OMAP, so set console=ttyO2,115200n8 in U-boot.”

  7. January 30th, 2012 at 01:25 | #7

    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.

  8. January 30th, 2012 at 01:44 | #8

    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.

  9. January 30th, 2012 at 08:41 | #9

    @Mike Trethowan
    Good to hear you fixed your problem. Thanks for commenting and providing the solution.

  10. February 9th, 2012 at 09:20 | #10

    Rowboat released the code and instructions to Build Android 4.0 for Beagleboard with GPU support.

  11. Venkat Reddy
    March 27th, 2012 at 14:08 | #11


    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?.


  12. March 27th, 2012 at 14:35 | #12

    @ Venkat Reddy
    I don’t have a Beagleboard, so I have not tried those instructions. You could try to ask the original author (Sola). Link at the top of this post.

  13. Venkat Reddy
    April 4th, 2012 at 11:53 | #13

    I have found work around to this issue. Download beagleboard ICS patches
    $ cd ~
    $ curl http://rowboat.googlecode.com/files/Beagleboard_ICS_patches.tar.gz > 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 http://code.google.com/p/rowboat/wiki/ICSonBeagleboard

  14. April 4th, 2012 at 13:38 | #14

    @ Venkat Reddy
    Thanks for providing the solution.

  15. spatial
    April 12th, 2012 at 19:09 | #15

    @ Venkat Reddy
    I was using the beagleboard xm with the original Kingston SD Card. Basically I think the card to too slow to run the operating system.

  16. patrik
    April 19th, 2012 at 20:05 | #16


    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!

  17. April 19th, 2012 at 20:19 | #17

    @ 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 http://code.google.com/p/rowboat/wiki/ICSonBeagleboard


    This week TI released Android 4.0.3 devkit for Beagleboard-xM / Beaglebone. See http://www.cnx-software.com/2012/04/16/texas-instruments-releases-android-4-0-3-devkit-for-beagleboard-xm-and-beaglebone/ for details. Sorry your board is using OMAP3530, it won’t be relevant to your board.

  18. patrik
    April 19th, 2012 at 20:22 | #18

    These are what I see on my serial console:

    [email protected]:/ # 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)

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

  19. April 19th, 2012 at 20:32 | #19

    @ patrik
    Is your USB Hub an High Speed hub ? You can try by connecting it to a linux PC.

  20. patrik
    April 19th, 2012 at 20:38 | #20

    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..

  21. April 19th, 2012 at 20:43 | #21

    @ patrik
    The rowboat guys are the experts with TI boards and Android. Find “Where to get support” in http://code.google.com/p/rowboat/ and select your preferred method to contact them. That’s the best way to get a proper answer.

  22. swapn
    February 26th, 2013 at 14:21 | #22

    hi sir, i have Beagleboard-XM (Arm cortex A8) and used prebuild image from ti.com,
    link is http://processors.wiki.ti.com/index.php/TI-Android-ICS-4.0.3-DevKit-3.0.0_UserGuide

    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

  23. vimal
    March 15th, 2016 at 15:43 | #23

    sudo cp -a ./root/* ./rootfs/ This cmd getting problem… please help me…

  24. vimal
    March 15th, 2016 at 15:46 | #24

    Error Msg:

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

  25. March 15th, 2016 at 16:16 | #25

    That means there’s no ./root directory, so there must have been an error message shown in one of the previous commands.

  1. No trackbacks yet.