Build Your Own Android Tablet

Preview:

DESCRIPTION

Presentation at October SG Android Developer Meetup by Jeff Pang. Jeff Pang shows us how you can build your own Android Tablet using BeagleBone and a capacitive touch screen. BeagleBone is an $89 MSRP, credit-card-sized Linux computer that connects to the Internet and runs software such as Android 4.0 and Ubuntu. With plenty of I/O and processing power for real-time analysis provided by an AM335x 720MHz ARM® processor, BeagleBone can be complemented with cape plug-in boards to augment functionality.

Citation preview

BYOT with Android

w/ Capacitive Touch Screen under

US$200

Overview

The simple way to BYOT

The harder way

Introduction

Beaglebone Black (Texas Instrument)

Load it with Android

Install Chipsee Capacitive Touch Cape

Difficulty Levels

Different ways to do it, at varying difficulty levels:

1. Level: Easy

2. Level: Hard (Offers more features)

3. Level: Ninja!!! (Do crazy stuff)

The easy way

Make bootable SD (min 2GB)

Mount Chipsee Touch Screen Cape

Boot up

Specs

1. Android Jelly Bean 4.1.2

2. Linux 3.2

3. ADB

4. SGX Graphics Accelerator

Android

Linux Kernel

Bootloader

Components

1. Bootloader

• U-boot.img

• MLO

2. Kernel

• uImage

3. Android Filesystem

• Rootfs

Making bootable SD

Make sure rootfs the correct archive type depending on mkmmc-android.sh

Tip: bunzip2 -c < file.tar.bz2 | gzip -c > file.tar.gz

Check SD card’s mount

Run script

$ sudo ./mkmmc-android.sh /dev/sdX

If you are not asleep yet

Here we goooo .

The hard way

Compiling from source

Choose Android version (Rowboat? TI? Chipsee?)

Choose Kernel version (3.2, 3.8 , 3.12)

Choose boot-loader (u-boot, fastboot)

Choose download method

From Gitorious

From Pre-packaged source from TI

From Pre-packaged source from Chipsee

Preparation

1. Install JDK 6

• Some complications here

2. Install packages (apt-get)

3. Install Repo (if getting from Git)

Toolbox (Optional)

FTDI (Chip) Cable, used for Console Output in debugging

(USB to TTL) 3.3v or 5v

USB to RS232 to USB Cable

Build Host Requirements

Simple? Not quite…

1. x64 Ubuntu 10.x or above (12.04 recc)

2. 100GB disk space and 4GB RAM

3. Virtual Machine (Optional)

4. Lots of time and patience

Tools (Optional)

FDTI (Chip) Cable for console output/debugging

USB to TTL (3.3v or 5v)

USB to RS232

Steps

Prep Host

Download sources

Customise (Optional)

Build (make commands)

u-bootKernelAndroid (Do this last, trust me …)

Copy Chipsee Additions

Make SD Card

Install Packages

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dri:i386 libgl1-mesa-glx:i386 \ libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \ python-markdown libxml2-utils xsltproc zlib1g-dev:i386 \ minicom tftpd uboot-mkimage expect

$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-

gnu/libGL.so

Install JDK 6

Register and login at Oracle

http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html

Download and unpack jdk-6u45-linux-x64.bin from Oracle

$ chmod a+x jdk6u45-linux-x64.bin

$ cd .\jdk6u45-linux-x64.bin

Install JDK 6 (cont.)

Install java update tool from Google

$ sudo mkdir /usr/lib/jvm

$ sudo mv jdk.1.6.0.45

$ sudo wget http://webupd8.googlecode.com/files/update-java-0.5b

$ sudo chmod +x update-java-0.5b

$ sudo ./update-java-0.5b

Install JDK (cont.)

If you want to get source from Rowboat, install Repo

$ mkdir bin

$ PATH=~/bin:$PATH

$ sudo bash -c "curl http://commondatastorage.googleapis.com/git-$

repo-downloads/repo > ~/bin/repo

$ sudo chmod a+x ~/bin/repo

Setup toolchain

Set Path

$ export PATH=<android-src>/prebuilts/gcc/linux-x86/arm/arm-eabi-

4.6/bin:$PATH

U-Boot

Download Source or use pre-packed

*patch if using Kernel 3.8 or higher

$ wget

https://raw.github.com/eewiki/u-boot-patches/master/v2013.04/0001-

am335x_evm-uEnv.txt-bootz-n-fixes.patch

$ patch -p1 < 0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch

U-boot

Build

$ make CROSS_COMPILE=arm-eabi- distclean

$ make CROSS_COMPILE=arm-eabi- am335x_evm_config

$ make CROSS_COMPILE=arm-eabi- -j<N><N> is the number of cores x 2 for faster compilation

Kernel Options

Kernel 3.2 (Maintained by TI)

No Device Tree Support

Git or pre-packaged source

Kernel 3.8 and above (Linux mainlining project)

No SGX Support

3.12 recently added

*Kernel 3.8 and 3.12

Checkout the source (3.8 and 3.12)

$ git clone git://github.com/RobertCNelson/linux-dev.git$ cd linux-dev$ git checkout origin/am33x-v3.8 -b tmp$ ./build_kernel.sh

Kernel 3.2

Found in source from TI (or Chipsee’s)

$ cd linux

$ make CROSS_COMPILE=arm-eabi- distclean

$ make CROSS_COMPILE=arm-eabi- am335x_evm_android_defconfig

$ make CROSS_COMPILE=arm-eabi- uImage -j<N><N> is the number of cores x 2 for faster compilation

Build Android Filesystem

Build Android

$ cd ~/<android-src>

make TARGET_PRODUCT=am335xevm_sk OMAPES=4.x

Wait…

Wait…

Wait…

ZZzzz …

Create Boot Script

Create a file uEnv.txt with contents

bootargs=console=ttyO0,115200n8 androidboot.console=ttyO0 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait init=/init ip=off bootcmd=mmc rescan ; fatload mmc 0 81000000 uImage ; bootm 81000000 uenvcmd=boot

Make bootable SD

Copy files to tmp location and make Tarball$ cd ~/<android-src>

$ make TARGET_PRODUCT=am335xevm_sk fs_tarball

$ cp <uEnv-location>/uEnv.txt image/boot

$ cp kernel/arch/arm/boot/uImage image/boot

$ cp u-boot/u-boot.img image/boot

$ cp u-boot/MLO image/boot

$ cp out/target/product/a,335xevm_sk/rootfs.tar.bz2 image

Follow the instructions described previously to make bootable SD

*WiFi

1. WiFi (RTL8188CUS Chipset)

1. More downloads and builds

2. SoftAP/WiFi hotspot and WiFi Direct

3. Default Linux Wl2xx chipset drivers

It’s a wrap!

For cheap prototypes…

Custom build for enterprise/industrial applications

Frustrated with Emulators and VMs?

Peeking under the pants hood of Android

More Information

TI Website

Rowboat Project

Robert C Nelson

My (almost defunct) Website www.colormecode.com

Where to buy

RS Components (Singapore)

http://singapore.rs-online.com/web/

Beaglebone Black

USB-TTL (Optional)

USB to RS232 (Optional but recommended)

Chipsee Capacitive

http://www.chipsee.com/

Ships to Singapore for about SG$40

Where to download

Android

https://gitorious.org/rowboat

http://www.ti.com/lsds/ti/tools-software/android.page

Chipsee CD

Kernel 3.8 and 3.12

https://github.com/RobertCNelson/linux-dev

Chipsee CD

U-Boot

git://git.denx.de/u-boot.git

Chipsee CD