SlideShare a Scribd company logo
Build Your Own Android Tablet
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
Build Your Own Android Tablet
Build Your Own Android Tablet
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-boot
Kernel
Android (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 libgl1mesa-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-linuxgnu/libGL.so
Install JDK 6
Register and login at Oracle
http://www.oracle.com/technetwork/java/javasebusiness/downloads/ja
va-archive-downloads-javase6-419409.html

Download and unpack jdk-6u45-linuxx64.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-eabi4.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-bootpatches/master/v2013.04/0001-am335x_evm-uEnv.txt-bootz-nfixes.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

More Related Content

PDF
Beagleboard xm-setup
ODP
Description of GRUB 2
PDF
Adhocr T-dose 2012
PDF
Kernel Recipes 2013 - Conditional boot
PPTX
Linux boot process
PDF
Kernel Recipes 2013 - Crosstool-NG, a cross-toolchain generator
PDF
Development platform virtualization using qemu
PDF
Upgrade ux-fosdem-2015-gdhaese
Beagleboard xm-setup
Description of GRUB 2
Adhocr T-dose 2012
Kernel Recipes 2013 - Conditional boot
Linux boot process
Kernel Recipes 2013 - Crosstool-NG, a cross-toolchain generator
Development platform virtualization using qemu
Upgrade ux-fosdem-2015-gdhaese

What's hot (20)

PDF
QEMU in Cross building
PPT
PPTX
Programming OpenRISC on Altera De0_nano
PDF
Introduction to Linux Kernel Development
PDF
A Journey to Boot Linux on Raspberry Pi
PDF
Recipe of a linux Live CD (archived)
PDF
Scaling IO-bound microservices
PDF
Getting started with LinuxBoot Firmware on AArch64 Server
PDF
My First AMD EPYC 7251 memo
PPT
Learning AOSP - Android Booting Process
TXT
Emu log
PDF
Jagan Teki - U-boot from scratch
PDF
Ha opensuse
PPT
PDF
There is more to C
PDF
Linux fundamental - Chap 12 Hardware Management
PDF
NetBSD workshop
PDF
Linux Containers From Scratch: Makfile MicroVPS
PDF
firmware hacking, slash the pineapple for fun (codebali 2015)
PDF
OSS AWS 핸즈온 강의
QEMU in Cross building
Programming OpenRISC on Altera De0_nano
Introduction to Linux Kernel Development
A Journey to Boot Linux on Raspberry Pi
Recipe of a linux Live CD (archived)
Scaling IO-bound microservices
Getting started with LinuxBoot Firmware on AArch64 Server
My First AMD EPYC 7251 memo
Learning AOSP - Android Booting Process
Emu log
Jagan Teki - U-boot from scratch
Ha opensuse
There is more to C
Linux fundamental - Chap 12 Hardware Management
NetBSD workshop
Linux Containers From Scratch: Makfile MicroVPS
firmware hacking, slash the pineapple for fun (codebali 2015)
OSS AWS 핸즈온 강의
Ad

Similar to Build Your Own Android Tablet (20)

PDF
A million ways to provision embedded linux devices
PDF
005 skyeye
PDF
Build and Run Android N Source Ccode on NXP SABRESD platform
PDF
Let Me Pick Your Brain - Remote Forensics in Hardened Environments
PDF
DEF CON 23 - Phil Polstra - one device to pwn them all
PDF
ELC-E Linux Awareness
PDF
Let's trace Linux Lernel with KGDB @ COSCUP 2021
PDF
Android Boot Time Optimization
PDF
Lecture 6 Kernel Debugging + Ports Development
PDF
Linux Containers (LXC)
PPT
Ps3 linux
PDF
BKK16-211 Internet of Tiny Linux (io tl)- Status and Progress
PDF
LAS16-403: GDB Linux Kernel Awareness
PDF
LAS16-403 - GDB Linux Kernel Awareness
PPT
Qt native built for raspberry zero
PDF
Study on Android Emulator
PDF
Launch the First Process in Linux System
PDF
Android for Embedded Linux Developers
PPT
Basic Linux kernel
PDF
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
A million ways to provision embedded linux devices
005 skyeye
Build and Run Android N Source Ccode on NXP SABRESD platform
Let Me Pick Your Brain - Remote Forensics in Hardened Environments
DEF CON 23 - Phil Polstra - one device to pwn them all
ELC-E Linux Awareness
Let's trace Linux Lernel with KGDB @ COSCUP 2021
Android Boot Time Optimization
Lecture 6 Kernel Debugging + Ports Development
Linux Containers (LXC)
Ps3 linux
BKK16-211 Internet of Tiny Linux (io tl)- Status and Progress
LAS16-403: GDB Linux Kernel Awareness
LAS16-403 - GDB Linux Kernel Awareness
Qt native built for raspberry zero
Study on Android Emulator
Launch the First Process in Linux System
Android for Embedded Linux Developers
Basic Linux kernel
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
Ad

Recently uploaded (20)

PDF
Spectral efficient network and resource selection model in 5G networks
PDF
KodekX | Application Modernization Development
PDF
Electronic commerce courselecture one. Pdf
PDF
Encapsulation theory and applications.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Approach and Philosophy of On baking technology
Spectral efficient network and resource selection model in 5G networks
KodekX | Application Modernization Development
Electronic commerce courselecture one. Pdf
Encapsulation theory and applications.pdf
Network Security Unit 5.pdf for BCA BBA.
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Building Integrated photovoltaic BIPV_UPV.pdf
Empathic Computing: Creating Shared Understanding
Per capita expenditure prediction using model stacking based on satellite ima...
20250228 LYD VKU AI Blended-Learning.pptx
Programs and apps: productivity, graphics, security and other tools
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Review of recent advances in non-invasive hemoglobin estimation
NewMind AI Weekly Chronicles - August'25 Week I
The Rise and Fall of 3GPP – Time for a Sabbatical?
Reach Out and Touch Someone: Haptics and Empathic Computing
Understanding_Digital_Forensics_Presentation.pptx
Approach and Philosophy of On baking technology

Build Your Own Android Tablet

  • 2. Overview The simple way to BYOT The harder way
  • 3. Introduction Beaglebone Black (Texas Instrument) Load it with Android Install Chipsee Capacitive Touch Cape
  • 4. 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)
  • 5. The easy way Make bootable SD (min 2GB) Mount Chipsee Touch Screen Cape Boot up
  • 6. Specs 1. Android Jelly Bean 4.1.2 2. Linux 3.2 3. ADB 4. SGX Graphics Accelerator
  • 9. 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
  • 12. 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
  • 13. Preparation 1. Install JDK 6 • Some complications here 2. Install packages (apt-get) 3. Install Repo (if getting from Git)
  • 14. Toolbox (Optional) FTDI (Chip) Cable, used for Console Output in debugging (USB to TTL) 3.3v or 5v USB to RS232 to USB Cable
  • 15. 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
  • 16. Tools (Optional) FDTI (Chip) Cable for console output/debugging USB to TTL (3.3v or 5v) USB to RS232
  • 17. Steps Prep Host Download sources Customise (Optional) Build (make commands) u-boot Kernel Android (Do this last, trust me …) Copy Chipsee Additions Make SD Card
  • 18. 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 libgl1mesa-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-linuxgnu/libGL.so
  • 19. Install JDK 6 Register and login at Oracle http://www.oracle.com/technetwork/java/javasebusiness/downloads/ja va-archive-downloads-javase6-419409.html Download and unpack jdk-6u45-linuxx64.bin from Oracle $ chmod a+x jdk6u45-linux-x64.bin $ cd .jdk6u45-linux-x64.bin
  • 20. 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
  • 21. 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
  • 22. Setup toolchain Set Path $ export PATH=<android-src>/prebuilts/gcc/linux-x86/arm/arm-eabi4.6/bin:$PATH
  • 23. U-Boot Download Source or use pre-packed *patch if using Kernel 3.8 or higher $ wget https://raw.github.com/eewiki/u-bootpatches/master/v2013.04/0001-am335x_evm-uEnv.txt-bootz-nfixes.patch $ patch -p1 < 0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
  • 24. 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
  • 25. 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
  • 26. *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
  • 27. 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
  • 28. Build Android Filesystem Build Android $ cd ~/<android-src> make TARGET_PRODUCT=am335xevm_sk OMAPES=4.x Wait… Wait… Wait… ZZzzz …
  • 29. 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
  • 30. 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
  • 31. *WiFi 1. WiFi (RTL8188CUS Chipset) 1. More downloads and builds  2. SoftAP/WiFi hotspot and WiFi Direct 3. Default Linux Wl2xx chipset drivers
  • 32. 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
  • 33. More Information TI Website Rowboat Project Robert C Nelson My (almost defunct) Website www.colormecode.com
  • 34. 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
  • 35. 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