TI-Android-JB-4.2.2-DevKit-4.1.1 UserGuide

From Texas Instruments Wiki
Jump to: navigation, search

TIBanner.png

Contents

TI-Android-JB-4.2.2-DevKit-4.1.1 UserGuide

User Guide - June 28, 2013

About this manual

This document describes how to install and work with Texas Instruments' Android JB DevKit release for AM335x platforms running Android. This release package provides a stable Android Jellybean 4.2.2 distribution with integrated SGX (3D graphics accelerated) drivers, TI hardware abstraction for WLAN, Bluetooth and standard applications from Android. The package also includes Linux Android kernel, boot loaders, debug & development tools and documentation to ease development, deployment and execution of Android on AM335X based systems. The product also forms the basis for all Android application development on AM335x platforms.

This document contains instructions to:

  • Install the release
  • Set up the hardware
  • Use the pre-built binaries in the package
  • Run Android on the supported platforms
  • Set up the Android debugger “adb” with the hardware platform
  • Install and execute Android (out of market) applications on hardware platforms

Installation

This section describes the download location and the list of Software and Hardware requirements to evaluate the DevKit release.

Hardware Requirements

This release of TI Android JB 4.2.2 DevKit 4.1.1 can be evaluated on the platforms listed below. This package should be easily portable to other platforms on similar TI devices.

TI Device Platform Supported Version Other Accessories
AM335x AM335x Evaluation Module AM335X EVM Rev 1.2 or greater USB HUB, USB Keyboard, USB Mouse, Ethernet, UART Cable, Audio Speakers, MMC/SD Card (2GB min)
AM335x AM335x Starter Kit AM335X Starter Kit Rev 1.2b or 1.2c Micro-USB cable, Ethernet cable, Audio Speakers, micro-SD Card (2GB min), USB Keyboard, USB Mouse, USB Camera Module
AM335x BeagleBone Black BeagleBone Rev A5 (A5A verified, A5B and A5C expected to work) USB HUB, USB Keyboard, USB Mouse, Ethernet, Mini-B USB Cable, micro-HDMI to HDMI cable, HDMI/DVI compatible Display (TV or Monitor), MMC/SD Card (2GB min). Also tested with Beaglebone LCD7 cape, LCD4 cape, LCD3 cape and Camera Cape.
AM335x BeagleBone
BeagleBone Black
Rev A3, A4, A5(expected to work), A6 USB HUB, USB Keyboard, USB Mouse, Ethernet, Mini-B USB Cable, MMC/SD Card (2GB min). Also tested with Beaglebone LCD7 cape, LCD4 cape and LCD3 cape.


This release is tested with BeagleBone LCD7, LCD4 and LCD3 capes. Beaglebone capes provide additional functionality to the BeagleBone.

BeagleBone LCD7 Cape

BeagleBone LCD Cape

The LCD7 Cape adds 7-Inch LCD output, Touch Screen and 5-Key Keypad for BeagleBone.

BeagleBone LCD4 Cape

BeagleBone LCD Cape

The LCD4 Cape adds 4.3-Inch LCD output, Touch Screen and 5-Key Keypad for BeagleBone.

BeagleBone LCD3 Cape

BeagleBone LCD Cape

The LCD3 Cape adds 3.5-Inch LCD output, Touch Screen and 5-Key Keypad for BeagleBone.

Beaglebone Camera Cape

BeagleBone CameraCape

The BeagleBone Camera Cape provides a portable camera solution for BeagleBone Black. Camera Cape is composed of a Sensor board and an Expansion board.


NOTE

This release supports LCD7 cape rev A1, A2, LCD4 cape rev A1 and LCD3 cape rev A1. Newer revisions may not be fully supported

Software Host Requirements

The host and target software dependencies and requirements are described below.

Host PC requirements

If you are an Android application developer or would like to use Android SDK Tools then refer to Android SDK Requirements for Host PC requirements.

To evaluate this release we recommend you to have a Linux "Ubuntu 10.04 or above" Host machine, See Ubuntu Linux installation notes

TI Android DevKit Software Release

The TI Android JB 4.2.2 DevKit 4.1.1 release for AM335x Starter Kit, AM335x EVM, BeagleBone Black and BeagleBone is available as online download from http://downloads.ti.com/sitara_android/esd/TI_Android_DevKit/TI_Android_JB_4_2_2_DevKit_4_1_1/index_FDS.html

Setup

This section gives the instructions to quickly prepare an SD Card image and get an experience of TI Android JB 4.2.2 DevKit 4.1.1 on TI AM335x platforms/devices.

Getting Pre-built Images

Prebuilt images can be obtained from

Use below commands to untar/uncompress the pre-built image

  $ tar -xzvf TI_Android_JB_4.2.2_DevKit_4.1.1_<Board name>.tar.gz
  $ cd <Board name>

The tree structure for uncompressed pre-built image directory should be as:

   .
  `-- <Board Name>
      |-- START_HERE
      |-- Boot_Images
      |   |-- MLO
      |   |-- u-boot.img
      |   |-- uEnv.txt
      |   `-- uImage
      |-- Filesystem
      |   `-- rootfs.tar.bz2
      |-- Media_Clips
      |   |-- Audio
      |   |-- Images
      |   `-- Video
      |-- README.txt
      `-- mkmmc-android.sh

NOTE: <Board name> will be am335xevm_sk for AM335x Starter Kit, am335xevm for AM335x EVM, beagleboneblack for BeagleBone Black and beaglebone for BeagleBone.

Procedure to populate MMC/SD Card

  • Get an SD Card of minimum size 2GBytes (Class4 minimum) and a USB Card reader
  • Insert the USB SD Card reader (with SD Card) in your host Linux PC
  • Prepare the MMC/SD card with pre-built images:
  $ cd <Board name>
  $ sudo ./mkmmc-android.sh /dev/sd<device>
NOTE

On systems have internal card reader the sd card will be mounted at /dev/mmcblk<device>
  • Above step will create a bootable MMC/SD card which can be used to boot up the device.

Setting Up Hardware

This DevKit release supports AM335x Starter Kit, AM335x EVM, BeagleBone Black and BeagleBone. While they are different devices the hardware setup will almost remain the same.

AM335x Starter Kit

  • Connect USB cable to the micro-USB port(J3) on AM335x Starter Kit to the Host PC and have a Terminal software like TeraTerm, Minicom or Hyperterminal.
  • Connect the Ethernet (J6 or J7).
  • Connect USB Host port (J5) to USB Keyboard or USB Mouse. (Optional)
    • You can connect USB keyboard and USB Mouse to the USB HUB for use with AM335x Starter Kit.
  • Insert Micro SD card into MMC/SD slot (J4).
  • Power ON AM335x Starter Kit by connecting power cable to (J9) and pressing PWRON button (SW5) for a few seconds.

AM335x EVM

  • Connect the UART port (J12 of base board) on AM335x EVM to the Host PC and have a Terminal software like TeraTerm, Minicom or Hyperterminal.
    • Baud rate settings: 115200 8-N-1
  • Connect the Ethernet (J15 of base board) on AM335x EVM.
  • Connect Audio Speakers (J26 on daughter card) on AM335x EVM.
  • Connect Audio Line-In cable (J27 on daughter card) on AM335x EVM.
  • Connect USB Host port (USB1) (J18 on base board) on AM335x EVM to USB Keyboard or USB Mouse.
  • Select Appropriate DIP Switch settings on AM335x EVM to boot over MMC/SD
    • For MMC/SD boot the DIP switch SW3 SYSBOOT 0-7 should be set as shown below:

AM335x EVM SD boot mode setting

Switch
1
2
3
4
5
6
7
8
State
OFF
OFF
OFF
ON
OFF
ON
ON
ON
  • Insert SD card into MMC/SD slot on AM335x EVM.
  • Connect power cable to J1 on AM335x EVM.
  • Switch ON the Power Switch (SW13) on AM335x EVM.

BeagleBone Black

  • Connect the Ethernet (P5) on BeagleBone Black.
  • Connect USB Host port (P3) on BeagleBone Black to USB Mouse or USB Keyboard.
    • Connect USB keyboard and USB Mouse to the USB HUB for use with BeagleBone Black.
  • Connect micro-HDMI cable to (P6) on BeagleBone Black and HDMI-capable TV or Display.
  • Insert Micro SD card into MMC/SD slot on the BeagleBone Black.
  • Press Switch 'S2 while powering on the BeagleBone Black by connecting power cable to (P1).
NOTE

We recommend to use external power supply (5V, 3A) for best results
  • To get adb console, connect USB cable to the mini-USB port(P4) on BeagleBone Black to the Host PC AFTER Android bootes up.

BeagleBone

  • Connect USB cable to the mini-USB port(P3) on BeagleBone to the Host PC and have a Terminal software like TeraTerm, Minicom or Hyperterminal.
  • Connect the Ethernet (P10) on BeagleBone.
  • Connect USB Host port (P2) on BeagleBone to USB Keyboard or USB Mouse.
    • Connect USB keyboard and USB Mouse to the USB HUB for use with BeagleBone.
  • Insert Micro SD card into MMC/SD slot on the BeagleBone.
  • Power ON the BeagleBone by connecting power cable to (P5).

Getting serial console on AM335x Starter Kit and BeagleBone

Serial console is provided via usb cable connection between the device and the Host. To establish a connection the serial console enter the following commands on the linux console after powering on the device:

$ sudo modprobe ftdi_sio vendor=0x0403 product=0xa6d0
$ minicom -D /dev/`dmesg | grep FTDI | grep "now attached to" | tail -n 1 | awk '{ print $NF }'` 

For detailed instructions on setting up the serial console refer BeagleBone-Android-DevKit Guide

Getting serial console on BeagleBone Black

You need serial cable connected to (J1) on the BeagleBone Black to obtain the serial console. Please see BeagleBone Black Accessories for recommended serial cables.

NOTE

(J1) may not be accessible if the Camera Cape is attached

Booting Android

  • Setup the board/platform
    • For AM335x EVM, Do the DIP switch settings to boot from SD Card, see the DIP switch setting under Setting Up Hardware section.
    • Insert the Micro/SD Card into the Board
    • Switch on the platform
    • Wait for 35sec to get Android up on the UI screen

NOTE: For the first time boot the System might take few minutes to boot.

NOTE: If your NAND flash is not empty the system might not boot with MMC, in that case do the following with Serial Console / Terminal prompt in u-boot

  U-Boot# mmc rescan
  U-Boot# fatload mmc 0 0x81000000 uEnv.txt
  U-Boot# env import -t 0x81000000 $filesize
  U-Boot# boot

Boot Arguments

AM335x EVM
 setenv bootargs 'console=ttyO0,115200n8 androidboot.console=ttyO0 mem=512M root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait init=/init ip=off'

TIP

AM335x EVM rev 1.5 has 1GB RAM. You can set mem parameter to 1G in the bootargs if using this version

AM335x Starter Kit

setenv bootargs 'console=ttyO0,115200n8 androidboot.console=ttyO0 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait init=/init ip=off'

BeagleBone Black

setenv bootargs 'console=ttyO0,115200n8 androidboot.console=ttyO0 mem=512M root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait init=/init ip=off'

BeagleBone

setenv bootargs 'console=ttyO0,115200n8 androidboot.console=ttyO0 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait init=/init ip=off'

Display Options

Using LCD output

On AM335x Starter Kit and AM335x EVM, the on board LCD is used as output device by default. On BeagleBone with LCD cape, the LCD on the LCD cape is used as the default output device.

Using HDMI Display

BeagleBone Black without any LCD capes uses HDMI as default output device. You can use HDMI-capable TV or Display panels which support 720P.

NOTE

We recommend to use external power supply (5V, 3A) for best results
NOTE

Some TVs and display panels may not operate correctly with the HDMI output from BeagleBone Black. Try different HDMI ports on the TV if the display does not appear. Also when resetting the device, HDMI may not reset properly. Try pulling out the power cable and connect it back holding switch S2 to reset.
NOTE

This feature is not supported on AM335x Starter Kit, AM335x EVM or BeagleBone
Using DVI Monitor

On BeagleBone with DVI-D cape, DVI display connected to the DVI output port is used as the default output device.

NOTE

DVI Output is not supported on AM335x Starter Kit and AM335x EVM
Using VNC Viewer

Display output device is not available on BeagleBone if not using LCD cape or DVI-D cape. You can run Android VNC server on device console and experience the Android UI using VNC viewer on host machine.

NOTE

Running VNC server on the BeagleBone increases the processor load and impacts the performance.

Connect the ethernet cable to BeagleBone and power up the board. Verify that android is booting using the USB serial console.

Once android is booted up and the shell prompt appears, check that ethernet interface is up:

  # netcfg

Now you can start the VNC server:

  # start androidvncserver

Using VNC Viewer application on the host you can connect to the Beaglebone at the target address [say 172.24.191.37] port 5901.

Android Home Screen

Android 4.2.2 DevKit homescreen on AM335x evm

UI Navigation

  • There are five ways to navigate the UI screen:
    • Keypad (Available on AM335x Starter Kit and AM335x EVM)
    • LCD Cape Keypad (Only available on BeagleBone LCD7 cape)
    • USB Keyboard
    • USB Mouse
    • Touch Screen (AM335x Starter Kit, AM335x EVM and BeagleBone/BeagleBone Black with LCD7 cape)
NOTE

The soft keyboard will not appear to enter text/data when USB keyboard is connected
Keys mapping

The table below lists the keypad and USB Keyboard mappings for using Android UI functionality.

Functionality
USB Keyboard
USB Mouse
Keypad on AM335x EVM
Keypad on Beaglebone LCD Cape
Keypad on AM335x Starter Kit
Home Screen
Win+Esc


RIGHT(S3)
SW2
Left
Left Arrow

SW3

Right
Right Arrow

SW4

Up
Up Arrow



Down
Down Arrow

SW6

Volume Up
Volume Up (Multimedia)

SW9

Volume Down
Volume Down (Multimedia)

SW10

Power


SW5
ENTER(S7)
Back
Esc, Back (Multimedia)

SW2
LEFT(S2)
SW3
Menu


SW1
UP(S4) SW1
Select
Enter
Left / Right / Middle Click


Search



DOWN(S5) SW4
NOTE

There is no keypad available on BeagleBone with DVI-D cape or without any cape, you need to use USB Keyboard/USB Mouse

The following table lists the functions available on the Navigation Bar on AM335x EVM and BeagleBone Black.

Soft Key
Feature
Remarks
Back Key Back Go back to previous screen
Home Key Home Switch to Home screen
Recent Apps Key Recent Apps Switch between recently opened Activities

Functions available on the AM335x Starter Kit keypad is shown in the picture below.
EVM-SK-keys.JPG

Out of the Box Demo

Multimedia Experience

  • Using browser and android applications

Android Apps drawer

Swipe across the screen to access more applications and widgets.

  • Image browsing and media playback

View Image

Select "App Launcher" -> "Gallery" -> "Images". Click any thumbnail to view the image.

Double tap the image to zoom in/out. Slide the image to view next image.

Gallery: Pictures

Edit Image

This is a new feature in this release. You can apply various special-effects to an Image.

Select "App Launcher" -> "Gallery" -> "Images". Click any thumbnail to view the image.

Tap on the "Editor" icon Android-jb-4.2.2-gallery-picture-editor-icon-am335xevm.png at the bottom-left of the screen. A filmstrip view of various available effects is seen at the bottom of the screen.

Gallery: Picture Editor

Play Video

Select "App Launcher" -> "Gallery" -> "Video". Click any thumbnail to play the video.

You can use the UI controls to Pause/Play/Seek the video. To stop playback and exit press the back key button.

Media Player

Enable Video Frame Per Second logs in Logcat

To print the FPS in logcat dump, type this command on the console before starting playback:

  # setprop debug.video.showfps 1

To disable the prints, type:

  # setprop debug.video.showfps 0

Play Music

Select "App Launcher" -> "Music" -> "<Artist>" -> "<song-name>" to experience the music.

Music Player

Control Volume

  • There are two ways to control volume:
    • Using volume up/down keys
    • Select "App Launcher" -> "Settings" -> "Sound" -> "Volumes"

Record Sound

Select "App Launcher" -> "Sound Recorder". Press Record button to start recording audio. Press Stop button to stop recording.

Playback the recorded audio by pressing Play button on Sound Recorder GUI.

Sound Recorder

TI RowboPerf Experience

Rowboperf is the set of demos and benchmark applications provided as part of the pre-built image. Rowboperf can be accessed from the shortcut from the Home screen or from the main menu.

Android-ics-rowboperf-am335xevm.png

Running 2D/3D Demo

Select "RowboPERF" -> "3D" -> "Chameleon" or "App Launcher" -> "RowboPERF" -> "3D" -> "Chameleon" to view 3D demo.

Select "RowboPERF" -> "RowboatBench" -> "2D Tests" -> "Run" to view 2D demo.

Select "RowboPERF" -> "0xBenchmark" -> "2D" -> "Run" to view 2D demo.

Running CPU Benchmark

Select "RowboPERF" -> "ARM" -> "Dhrystone" to get CPU dhrystone values.

Refer to RowboPERF User Guide for more details.

Browser Experience

Android-ics-browser-am335xevm.png

Ethernet Configuration

For best results, connect the ethernet cable to the device before booting. If you connect Ethernet cable after Android booted up, please wait 1-2 mins for the interface to configure itself using DHCP.

NOTE

Static IP for Ethernet is not supported

You can use the following command on the console to verify Ethernet configuration

  # netcfg
  e.g.
  lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:00:00:00
  sit0     DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
  eth0     UP                               172.24.191.26/22  0x00001043 96:cd:df:8b:c6:2b
NOTE

Disable Wi-Fi when using Ethernet connectivity
  • Optional If you need to set up proxy to access internet, configure this from Settings->Ethernet proxy settings:

Configure ethernet proxy

Wireless

AM335x Starter Kit and AM335x EVM supports Wi-Fi and Bluetooth using WL127x module on Android.

IMPORTANT

Ensure that the Wireless daughter card (COM6) is installed on the AM335x EVM before trying the wireless features. More information about this card is available at the WL127x COM daughter card web page
NOTE

This DevKit release does not support wireless (Wi-Fi and Bluetooth) on BeagleBone Black and BeagleBone

Wi-Fi

Enabling Wi-Fi
  • To turn on Wi-Fi, browse to "App Launcher" -> "Settings" -> "Wi-Fi".
  • Enable Wi-Fi by sliding the ON/OFF tab to the ON position and wait for few seconds.
  • The device scans for the available APs and displays them.

AP scan results

  • Connect to desired AP by clicking on its name and enter required details (username/key etc) and click Connect

Login to AP

  • The following appears on console
root@android:/ # [15534.646545] wl12xx: loaded
[15534.963165] wl12xx: state: 0
[15535.513610] wl12xx: firmware booted (Rev 6.3.10.0.132)
[15535.530853] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[15535.550750] wl12xx: state: 2
[15535.554870] wl12xx: adding p2p mgmt vif
[15535.611480] ADDRCONF(NETDEV_UP): p2p0: link is not ready
  • When successfully connected, you will see status as connected under the respective AP name. The AP name is also shown in the Notification Bar.
NOTE

Disconnect ethernet cable when using Wi-Fi
Disabling Wi-Fi
  • To turn off Wi-Fi, browse to "App Launcher" -> "Settings" -> "Wi-Fi".
  • Disable Wi-Fi by sliding the ON/OFF tab to the OFF position.
  • Following message appears on console and the Wi-Fi status is shown as OFF.
root@android:/ # [16587.530334] wl12xx: down
[16587.545227] wl12xx: down
Wi-Fi Hostspot (SoftAP)

TI-Android-JB-4.2.2-DevKit-4.1.1 supports Wi-Fi hostspot (SoftAP) feature with TI WL12xx Wireless module.

  • To turn on Wi-Fi hotspot, browse to "App Launcher" -> "Settings" -> "More..." -> "Portable hotspot"

More settings in Wireless and Networks

  • Click "Configure Wi-Fi hotspot" to configure the hotspot settings..
NOTE

Do not enable Wi-Fi Hotspot before configuring the settings. Changing the settings after enabling Wi-Fi hotspot may result in hotspot malfunction
Portable Hotspot menu

configuring hotspot with open security

  • Click the checkbox next to "Portable Wi-Fi hotspot" to start hotspot. You will see the message "Tethering or hotspot active" in the notification bar once the hotspot is fully functional.

hotspot active

  • Connect the Ethernet cable to the hotspot device and wait for a few seconds for ethernet to get configured. This will be used as the upstream interface.
  • The following screenshot shows the hotspot being detected from another evm.

hotspot detected on another evm

Wi-Fi Direct

TI-Android-JB-4.2.2-DevKit-4.1.1 supports Wi-Fi Direct with TI WL12xx Wireless module.

  • To turn on Wi-Fi direct, browse to "App Launcher" -> "Settings" -> "Wi-Fi" and enable Wi-Fi.
  • Click on the Menu icon Menu icon and select "Wi-Fi Direct". On AM335x Starter Kit press the Menu button (SW1) to get this menu.

enable Wi-Fi Direct

  • The resulting screen shows any nearby devices with Wi-Fi direct enabled.

Other Wi-Fi direct devices detected on evm


NOTE

Wi-Fi station mode or SoftAP/hotspot mode, if enabled, shall be disabled when Wi-Fi direct is active. The earlier state is restored when Wi-Fi direct is disabled


Changing WLAN MAC address

The devices loaded with TI-Android-JB-4.2.2-DevKit-4.1.1 will have the same MAC address which is encoded in wl1271-nvs.bin file. This may result in Wi-Fi not operating correctly when multiple devices are simultaneously in use. For optimum results, we recommend to modify the MAC address to ensure unique MAC for the devices before use

NOTE

Ensure that Wi-Fi (STA mode), hotspot (SoftAP) or Wi-Fi direct is not enabled when you are changing the MAC address

To change the MAC address, perform the following on the serial console of device:

  • First get the current MAC address for WLAN:
  root@android:/ # calibrator get nvs_mac /system/etc/firmware/ti-connectivity/wl1271-nvs.bin
  • Then update the MAC address for WLAN:
  root@android:/ # calibrator set nvs_mac /system/etc/firmware/ti-connectivity/wl1271-nvs.bin <MAC Address>

You need to reboot the board after changing the MAC address.

Bluetooth

Enabling Bluetooth
  • To turn on Bluetooth, browse to "App Launcher" -> "Settings" -> "Bluetooth".
  • Enable Bluetoth by sliding the ON/OFF tab to the ON position and wait for few seconds.
  • Bluetooth icon appears on taskbar.
  • When BT is enabled the status shows Turning Bluetooth ON and lists out the available Bluetooth devices.

BT scan results

  • Select the desired device to pair with.
  • A popup dialog with pin will appear.

PIN for pairing

  • Click Pair button to confirm pairing.
  • Verify that the desired device shows the same pin. click OK. And then the device gets listed under the paired devices category.
NOTE

When pairing with Bluetooth headset, pin may not be displayed. Android attempts to pair automatically with Bluetooth headsets. Pin dialog will be shown only if auto-pairing fails.
Disabling Bluetooth
  • To turn off Bluetooth, browse to "App Launcher" -> "Settings" -> "Bluetooth".
  • Disable Bluetooth by sliding the ON/OFF tab to the OFF position.
Bluetooth Object Push profile

Using Bluetooth, it is possible to send / receive files (pictures, media files etc).

Sending files
  • Browse to "App Launcher" -> "Gallery" -> "Images".
  • Select a picture to share.
  • Click Bluetooth icon in the top bar
  • Bluetooth device chooser pop-up appears with a list of available devices.

Transfer File using OPP

  • Select paired BT device to send to.
  • The BT device will prompt to accept. Accept incoming file at the other device.
  • Once download finishes, check file.
Receiving files
  • On paired device (e.g. phone), select send via Bluetooth, click on AM335XEVM.
  • On evm, notification appears about incoming connection.

incoming transfer icon

  • Open the task bar and select "Bluetooth share: Incoming file".

incoming transfer message

  • A pop up appears asking for confirmation. On popup click Accept.

Confirm incoming transfer

  • Once download completes, check file.
Bluetooth A2DP

You can listen to Media audio on Bluetooth A2DP headset.

  • Pair A2DP capable bluetooth headset with device. Android uses the stereo headset icon to denote A2DP headset.
  • After pairing succeeds, the status is updated to 'Connected'.

A2DP headset pairing

  • Open Music player and play any audio clip.
  • Audio will be heard on the Bluetooth headset.
Bluetooth HID

You can connect to Bluetooth keyboard or mouse.

Bluetooth Keyboard
  • Pair with the Bluetooth keyboard, by providing the suitable pass-code from the keyboard matching to the code shown on the device.
  • After the successful pairing of the keyboard with the device, the keyboard will be listed under the paired devices category.
  • The supported functionality of the paired keyboard can be used on the device.
  • For disconnecting the keyboard from the device, select the keyboard under paired devices category, and agree to disconnect message.

Bluetooth keyboard detected

Bluetooth keyboard pairing

Bluetooth Mouse
  • Pair with the Bluetooth mouse, by providing the suitable pass-code from the device, matching to the supported code of the mouse.
  • After the successful pairing of the mouse with the device, the mouse will be listed under the paired devices category.
  • The supported functionality of the paired mouse can be used on the device.
  • For disconnecting the mouse from the device, select the mouse under paired devices category, and agree to the disconnect message.

Bluetooth mouse detected

Bluetooth mouse pairing

Bluetooth AVRCP

You can control Media playback with Media player keys on Bluetooth headset with AVRCP capabilities.

NOTE: The following steps assume Bluetooth A2DP headset with AVRCP.

  • Pair the BT headset
  • The following text appears on the debug serial when the pairing is successfully completed. This confirms that AVRCP feature is registered with android
 [ 3291.281250] input: AVRCP as /devices/virtual/input/input4
  • Open Music Player and go to playlist view. Check that there are multiple clips in the playlist.
  • Press the Play/Pause button on the BT headset - The currently queued clip begins playing on the headset.
  • Press the Play/Pause button again on the headset - The currently playing clip is paused.
  • Press the Next button on the headset; the next clip in the playlist begins to play on the headset.
  • Press the Prev button on the headset; the currently playing clip restarts from the beginning.


Accelerometer Sensor

TI Android JB 4.2.2 DevKit 4.1.1 supports the accelerometer sensor on AM335x Starter Kit and AM335x EVM.

Auto-rotate screen

  • Browse to the "App Launcher" -> "Settings" -> "Display".
  • Enable the "Auto-rotate screen" feature. Ensure the Check box gets ticked.
  • Now hold the device in horizontal or vertical orientation to find the screen getting rotated.

Auto Rotate:Landscape Mode Auto Rotate:Portrait Mode


NOTE

The device should be kept vertically for best results

NOTE

To disable accelerator events, Disable the Auto-rotate screen from the same check box

Light Sensor

TI Android JB 4.2.2 DevKit 4.1.1 supports the light sensor on AM335x EVM.

Auto Brightness

  • Browse to the "App Launcher" -> "Settings" -> "Display"
  • Click on "Brightness". A pop-up is shown.
  • Enable "Automatic Brightness" - for brightness to be set automatically based on light sensor input

Automatic Brighness

Temperature Sensor

TI Android JB 4.2.2 DevKit 4.1.1 supports the temperature sensor on AM335x EVM.

Temperature Widget

  • Browse to the "Widget" section
  • Tap & Hold "Temperature Widget" icon to bring it on home screen
  • Temperature value will be updated every 10 sec based on surrounding temperature

Temperature Widget


Camera

TI-Android-JB-4.2.2-DevKit-4.1.1 supports Camera functionality using USB Camera on the AM335x Starter Kit, AM335x EVM and BeagleBone and using Camera Cape on BeagleBone Black.

IMPORTANT

Connect the USB Camera to the USB Host port ONLY after Android has completely booted-up on AM335x Starter Kit, AM335x EVM or BeagleBone

BeagleBone Camera Cape expansion board switch SW1 setting should be

1 0
ON OFF

You can start the Camera app from App Launcher -> Camera.


MTP

TI-Android-JB-4.2.2-DevKit-4.1.1 supports MTP sync over USB with Host. This feature is available on AM335x Starter Kit and AM335x EVM.

Refer MTP Configuration on host machine for more information.

Power Management

Power management is supported on AM335x Starter Kit, AM335x EVM and BeagleBone.

The Suspend to memory feature can not be demonstrated on BeagleBone with DVI-D cape or BeagleBone without any cape. This is because there is no input key/device connected to wakeup domain on these devices

Below are the features supported in TI-Android-JB-4.2.2-DevKit-4.1.1:

BackLight Control

  • Change of LCD backlights based on Wake Locks and Screen Timeouts
  • LCD back light brightness control from Settings Application
  • Auto Brightness Control

Suspend and Resume

  • Suspending the device to Memory.The following features are supported
  1. Suspend by pressing the POWER key or by a screen timeout.
  2. Prevent Suspend based on Wake Locks.
  3. System Resume on Key Press or Touch 

CPU Freq or Dynamic Voltage Frequency Scaling(DVFS)

  • A PM feature to automatically increase / decrease frequency and drop voltage based on CPU usage.
  • There are four different governors which can be used to control this feature, namely ondemand, performance, powersave and userspace governors.

CPU Idle States

  • There are two deeper power states introduced by CPU Idle namely Wait for interrupt,WFI and DDR Self Refresh.

Basic Settings

Enable PM

By default we have disabled PM with the setting "setprop hw.nopm true" in init.rc.

Replace the line with "setprop hw.nopm false" to enable suspend/resume features.

Remove the selection "App Launcher" -> "Settings" -> "Developer options" -> "Stay awake" if selected already.

To go in suspend mode
  • Press POWER (SW5) key on the keypad or wait for screen time out.
To resume from suspend mode
  • Touch the LCD screen for 3 to 4 seconds .
  • Press the Volume Up or Down key.
To set the Screen Timeout to go suspend
  • Select "App Launcher" -> "Settings" -> "Display" -> "Sleep"
  • Select one of the options from the list.
To set set the screen always on preventing suspend
  • Select "App Launcher" -> "Settings" -> "Developer options" -> "Stay awake"
To set Screen Brightness
  • Select "App Launcher" -> "Settings" -> "Display" -> "Brightness"
Auto brightness Control
  • Select "App Launcher" -> "Settings" -> "Display" -> "Brightness" > "Automatic brightness"
To set Alarm in Android
  • Select "App Launcher" -> "Clock "
  • Click "Set alarm" -> "Add Alarm". Set the alarm as per requirements.

Device will be woken up from suspend at Alarm Time.

Advanced Settings

CPU Dynamic Voltage Frequency Scaling settings
Enabling ondemand frequency governor

The ondemand governor enables DVFS(frequency/OPP) transitions based on CPU load.

  #echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Enabling performance frequency governor

The performance governor keeps the CPU always at the highest frequency.

  #echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Enabling powersave frequency governor

The powersave governor keeps the CPU always at the lowest frequency.

  #echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
Enabling userspace frequency governor

Once this governor is enabled, DVFS( frequency) transitions will be manually triggered by a userspace application by using the CPUfreq sysfs interface

  #echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

See all the available operating points

  #cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

Application can select any of the available frequency from the above

  #echo <Desired Frequency> > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
NOTE

The maximum frequency on BeagleBone or BeagleBone Black will be limited to 500MHz if powered only by USB cable
CPU Idle settings

All states of Cpu Idle are enabled by default. System enter deeper states when the cpu is idle. The usage and time count for these different states can be checked via

  #cat /sys/devices/system/cpu/cpu0/cpuidle/state*/time
  #cat /sys/devices/system/cpu/cpu0/cpuidle/state*/usage

To minimize the power consumption in runtime

The maximum power reduction in runtime is achieved when dvfs option is set to “power save”.

Power Consumption Analysis

Please check the power consumption analysis at TI-Android-JB-4.2.2-DevKit-4.1.1 Performance Benchmark page

Limitations

  • Suspend to Ram feature on BeagleBone Black is not yet tested.
  • Alarm to wake up the device from suspend will not work since there is no Real Time Clock functional when the device is put into suspend.
  • To wake the device from suspend, the user need to tap the touch the screen a little longer (2 seconds) or need to press the Volume keys hard.
  • System never enter "WFI and DDR Self Refresh" cpu idle state since display is always active and preventing this state to enter in runtime.
  • Some of the old beagle bones are not resuming after they have been put in to suspend.
  • In BeagleBone with LCD cape, the keypad is not connected to the wake up domain. So wake up is not possible by pressing keys.

NAND Booting

Booting NAND Prebuilt Images

SD card image for installing NAND images (SPL, U-boot, kernel and ubi.img) is provided for AM335x EVM.

Steps to install NAND images on AM335x EVM

$ tar -xzvf TI_Android_JB_4.2.2_DevKit_4.1.1_AM335xEVM_UBIFS.tar.gz
$ cd AM335xEVM_UBIFS
  • The tree structure for uncompressed pre-built image directory should be as:
 AM335xEVM_UBIFS
    |-- START_HERE
    |-- Boot_Images
    |   |-- MLO
    |   |-- u-boot.img
    |   |-- uEnv.txt
    |   |-- boot.scr
    |   `-- uImage
    |-- Filesystem
    |   `-- ubi.img
    |-- Media_Clips
    |   |-- Audio
    |   |-- Images
    |   `-- Video
    |-- README.txt
    `-- mkmmc-android-ubifs.sh
  • Prepare the MMC/SD card with pre-built images:
 $ sudo ./mkmmc-android-ubifs.sh /dev/sd<device>
  • Follow the Steps in README.txt to proceed further
  • After successfully installing NAND images
    • Change DIP Switch settings on AM335x EVM to boot over NAND
    • For NAND boot the DIP switch should be set as (SW3(1:8)=10110111) shown below:
Switch
1
2
3
4
5
6
7
8
State
ON
OFF
ON
ON
OFF
ON
ON
ON

ADB Android Debugger & Downloader

Android Debug Bridge (adb) is a versatile tool lets you manage the state of the Android-powered device. For more information about what is possible with adb, see Android Debug Bridge page at http://developer.android.com/guide/developing/tools/adb.html. The ADB tool can be used to

  • Download an application from a host machine, install & run it on the target board.
  • Start a remote shell in the target instance.
  • Debug applications running on the device using the debugging tool DDMS ( Dalvik Debug Monitor Server) which runs on top of adb connection.
  • Copy files to and from the board to host machine

Downloading "ADB" & Host setup

The adb tool is a part of Android SDK package located at http://developer.android.com/sdk/index.html. For an overview of how to install and set up the Android SDK, follow download & setup instructions from http://developer.android.com/sdk/index.html. Once you install Android SDK, the directory contents look like this.

  .
  |-- SDK Readme.txt
  |-- add-ons
  |-- google-market_licensing
  |-- platform-tools
  |   |-- NOTICE.txt
  |   |-- aapt
  |   |-- adb
  |   |-- aidl
  |   |-- dexdump
  |   |-- dx
  |   |-- lib
  |   `-- source.properties
  |-- platforms
  |-- temp
  `-- tools
      |-- NOTICE.txt
      |-- adb_has_moved.txt
      |-- android
      |-- ant
      |-- apkbuilder
      |-- ddms
      |-- dmtracedump
      |-- draw9patch
      |-- emulator
      |-- etc1tool
      |-- hierarchyviewer
      |-- hprof-conv
      |-- layoutopt
      |-- lib
      |-- mksdcard
      |-- monkeyrunner
      |-- proguard
      |-- source.properties
      |-- sqlite3
      |-- traceview
      `-- zipalign

Make sure you have installed the platform-tools component using the tools/android in Linux. The adb tool is located in paltform-tools/ directory under the Android SDK installation. Export the platform-tools and tools directory path as shown below.

  $ export PATH=<android_sdk_path>/platform-tools/:<android_sdk_path>/tools/:$PATH

Connecting Host machine & board through adb

This release of DevKit has been tested for three different methods of connecting a given board with host machine

  • adb over USB
  • adb over Ethernet

The below sections describe each of these methods and provides necessary instructions for the same.

adb over USB

  • Make sure that the mini-usb cable is connected between the host usb port and the target’s USB OTG port
  • Turn on "USB Debugging" on your board. On the board (UI screen)-
    • Browse to "App Launcher" -> "Settings" -> "Developer options".
    • Enable "USB debugging". Select OK for confirmation. Ensure the Check box gets ticked.
  • Setup host machine to detect the board. On Ubuntu Linux host machines this is done by adding a rules file to configure device vendor ID of on-board OMAP device.
  • For the EVMs and Boards covered here, the vendor ID is "18d1".
    • Log in as root and create this file: /etc/udev/rules.d/51-android.rules
   SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
  • Execute the following to change the user mode for the rules file.
    $ chmod a+r /etc/udev/rules.d/51-android.rules
  • Execute the following command to restart udev service.
    $ sudo service udev restart
NOTE

We recommend to reboot the host, if restarting udev does not work.
  • Verify the adb connectivity between host and target board
    $ adb devices 

If device is connected, then output on screen should list the device, example:

    List of devices attached
    20100720    device

adb over Ethernet

  • Make sure Ethernet port on board and host machine are connected to the network
  • Check Ethernet configuration for the board
  # netcfg                                                                        
  lo       UP                                   127.0.0.1/8   0x00000049 00:00:00:00:00:00
  sit0     DOWN                                   0.0.0.0/0   0x00000080 00:00:00:00:00:00
  eth0     UP                               172.24.191.26/22  0x00001043 96:cd:df:8b:c6:2b                       
  • If Ethernet was not configured, ensure that Ethernet is enabled and configured correctly in Android Settings and reboot. See Ethernet Configuration section for more details.
  • Configure the ADB Daemon on target to use an Ethernet connection using setprop as shown below.
  # setprop service.adb.tcp.port 5555
  • If network is configured successfully (above steps) then Restart service adbd on the target,
  # stop adbd
  # start adbd
  • On the host machine use following commands to establish adb connection
  $ export ADBHOST=<target's ip address>
  $ adb kill-server
  $ adb start-server
  $ adb connect <target_ip_address>:5555
  • Verify for device connectivity by executing the following command:
  $ adb devices

If connected, find the device name listed

  List of devices attached 
  172.24.191.26:5555	device

Invoke the shell of the target

  $ adb shell 

For more information about adb commands, see Android Debug Bridge page at Android ADB

adb over USB on Windows Machine

Follow the below instructions to get ADB over USB work on a Windows PC

  • Download latest Android SDK

(http://developer.android.com/sdk/index.html) and uncompress it in a local folder (i.e. c:\android_sdk).

  • Make sure you download the Platform Tools component by invoking the SDK Manager.exe
  • Optionally, you may want to add the location of the SDK's primary tools directory to your system PATH. Right-click on My Computer, and select Properties. Under the Advanced tab, hit the Environment Variables button, and in the dialog that comes up, double-click on Path (under System Variables). Add the full path to the platform-tools\ directory to the path.
  • Download Android USB Driver

(https://dl-ssl.google.com/android/repository/usb_driver_r03-windows.zip) and uncompress it in a local folder (i.e. c:\android_sdk\usb_driver)

  • Edit (or create and then edit if it doesn't already exist) file in

"%USERPROFILE%\.android\adb_usb.ini":

  > echo 0x18D1 > "%USERPROFILE%\.android\adb_usb.ini"
  • Edit android_winusb.inf to match EVM/Beagle vendor and product ids:

Under [Google.NTx86] section add:

   ;TI EVM
   %SingleAdbInterface%      = USB_Install, USB\VID_18D1&PID_D002
   %CompositeAdbInterface%   = USB_Install, USB\VID_18D1&PID_D002&MI_01

Note: Be careful to add it under Google.NTx86 and not under Google.NTamd64 unless your machine is AMD 64 bits. If you skip this step you won't be able to later install the driver as windows will reject it.

  • Boot the board as normal and wait until shell prompt is available (micro-B USB cable must be disconnected).
  • Connect micro-B USB cable between board and Windows PC.
  • If it is proceeding as planned, Windows will tell you it found a new hardware asks you to install the driver.
  • If windows does not ask, go to Computer-> Manage->Device Manager - > Universal Serial Bus controllers
    • Find the USB composite device with Hardware Id 0x18D1
    • For Beaglebone or Beaglebone black the device will be listed as BEAGLEBONE or BEAGLEBONEBLACK
    • Click on update driver -> Point to the android usb_driver location
  • Install driver that was downloaded as described in step 3 above:

Answer "No, not this time" to the question about running Windows Update to search for software.

  • Choose "Install the hardware that I manually select from a list (Advanced)" this is the 2nd option, then click "Next"
  • Select "Show All Devices", then click "Next"
  • You are going to see a grayed-out text box with "(Retrieving a list of all devices)", click the "Have Disk..." button
  • Browse" to your driver folder (c:\android_sdk\usb_driver). It will be looking of a .inf file so select "android_winusb.inf" and click "Open" then "OK". It's the only file there so you shouldn't go wrong.
  • Select "Android ADB Interface" then click the "Next" button.
  • A warning will appear, answer "Yes" but read the warning anyway.
  • Click the "Close" when the wizard is completed.
  • Disconnect and reconnect micro-B USB cable from Board(probably reboot it as well).
  • Open command prompt and restart adb server just to make sure it is in a proper state:
  > adb kill-server
  > adb start-server
  • List the attached devices with "adb devices". It should show your board/device with a random number.
  • Type "adb shell". You should see the "#" indicating it works.

Operations over ADB

The Root File System provided in this DevKit release contain only standard Android components and applications.

To install and run Android application follow steps mentioned below:

Installing (.apk files) application on Target Platform

  • From the host: You can use adb tool for package installation.
  $ adb install <package>.apk. 

NOTE: Use -s option with the adb tool, to install the package on external storage.

On successful installation adb tool will report SUCCESS on host terminal, and the application would be listed on the android main menu.

Un-installing applications (.apk) using adb

  • To un-install non-default components (that were installed later)
    • Method 1: On the host machine execute the following
  $ adb shell pm list packages
  $ adb uninstall <package name>
  • Method 2: On target:

Main menu -> Menu -> Settings -> Applications -> Manage applications -> Find the package Tap on it -> Uninstall -> OK -> OK

  • On successful removal, the application would have been removed from the android main menu. All the short-cuts to the application also removed.
  • To un-install default components, use the following commands from abd on host machine
  $ adb shell
  # rm /system/app/app.apk

On successful removal, the application would have been removed from the android main menu.

Copy any files to and from the board over ADB

  • Using the adb commands "pull" and "push" copy files to and from the board.
  • Unlike the install command, which only copies an .apk file to a specific location, the pull and push commands let you copy arbitrary directories and files to any location on the board.
  • To copy a file or directory (recursively) from the board, use
  $ adb pull <remote> <local>
  • To copy a file or directory (recursively) to the board, use
  $ adb push <local> <remote>

In the commands, <local> and <remote> refer to the paths to the file or directory on your development host (local) and on the target instance (remote).

  Here's an example: 
  $ adb push foo.txt /sdcard/foo.txt

Android Fastboot

This release supports updating the Android filesystem installed on sdcard(eMMC) or NAND using the fastboot protocol. Refer to Developer Guide for more details.

Compatibility Test Suite (CTS)

This section describe the procedure to run CTS on any platform.

  • Pre-requisites
    • For x86 platform, Download and extract the CTS package from here
    • Android SDK is installed and adb command is in the $PATH . See ADB section above
  • Refer to Google CTS Guide for information on setting up the host and android device for CTS testing.
  • Setup an ADB connection between Host and platform as mentioned in ADB section above.
  • Launch the CTS.
    • Change to android-cts directory
    • Start cts
  android-cts$ ./tools/cts-tradefed
    • On CTS prompt check the available plans
  cts-tf > list p 
  • Start a specific Test Plan
  cts-tf > run  cts --plan <test plan name>

Once all the tests are executed, the results can be browsed in an browser by opening [android-cts/repository/results/<session-name>/testResult.xml] and use the results to adjust your design.

NOTE: Sometimes, adb connection to CTS may not happen automatically after CTS restarts the board. In that case, execute the following command on the console, soon after the board has restarted:

  # stop adbd;sleep 1;start adbd;

Alternatively, unplug and reattach the USB cable.

Building Android Sources

Refer to TI Android DevKit Developer Guide at http://processors.wiki.ti.com/index.php/TI-Android-JB-4.2.2-DevKit-4.1.1_DeveloperGuide for building Android sources and setting up the platform for booting.

TI provides Android sources for all the supported devices in multiple locations, developers can download the sources from the rowboat repository or use the pre-packaged repo in the DevKit TI-Android-JB-4.2.2-DevKit-4.1.1.bin.

SD Card Recommendations

Some brands or models of SD cards are observed with poor performance on AM335x platforms. The symptom could be one or some of the followings.

  • the boot-up time is much longer than normal (3x of normal or even longer);
  • the reaction of UI operations is unacceptably delayed;
  • the Gallery app cannot find the media files to create the albums;
  • the video playback is sluggish.


The table below lists the SD cards tested which have no issue on performance.


Brand/Model Type Class Capacity
Sandisk-C4-4GB.jpg SanDisk SDHC 4 4GB
Sandisk-ultra-C4-16GB.jpg SanDisk Ultra SDHC 4 4GB
Sandisk-ultra-C4-16GB.jpg SanDisk Ultra SD 4 2GB
SONY-C4-4GB.jpg Sony SDHC 4 4GB
SONY-C4-2GB.jpg Sony SD 4 2GB
SONY-micro-C4-4GB.jpg Sony micro SDHC 4 4GB


The table below lists the SD cards tested which have poor performance.


Brand/Model Type Class Capacity

HP Invent SDHC 4 4GB

Kingston SDHC 4 4GB
Kingston-C4-4GB.jpg Kingston micro SDHC 4 4GB
Lexar-Multi-Use-C4-4GB.jpeg Lexar MULTI-USE SDHC 4 4GB
Lexar-PlatinumII-C6-4GB.jpeg Lexar PLANTINUM II SDHC 6 4GB
PNY-Optima-C4-4GB.jpg PNY Optima SDHC 4 4GB


Versioning

This release is available from http://software-dl.ti.com/sitara_android/TI_Android_DevKit/TI_Android_JB_4_2_2_DevKit_4_1_1/index_FDS.html
The release notes is available at http://processors.wiki.ti.com/index.php/TI-Android-JB-4.2.2-DevKit-4.1.1_ReleaseNotes

Technical Support and Product Updates

For further information or to report any problems, contact http://e2e.ti.com/android or http://support.ti.com.
For community support join http://groups.google.com/group/rowboat
For IRC #rowboat on irc.freenode.net