TI-Android-GingerBread-2.3.4-DevKit-2.1.1 UserGuide

From Texas Instruments Wiki
Jump to: navigation, search

TIBanner.png

Contents

TI Android GingerBread 2.3.4 DevKit 2.1.1 User Guide

User Guide - December 09, 2011

About this manual

This document describes how to install and work with Texas Instruments' Android GingerBread DevKit release for AM335x platforms running Android. This release package provides a stable Android 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 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 list of Software and Hardware requirements to evaluate the DevKit release.

Hardware Requirements

This release of TI Android GingerBread 2.3.4 DevKit 2.1.1 is evaluated on the platforms listed below. This package should be easily portable on other platforms on similar TI devices.


TI Device Platform Supported Version Other Accessories
AM335x



AM335x EVM Rev 1.1B USB HUB, USB Keyboard, USB Mouse, Ethernet cable, USB Micro-B Cable, UART cable, Audio Speakers, MMC/SD Card (2GB min)

BeagleBone Rev A3 USB HUB, USB Keyboard, USB Mouse, Ethernet cable, USB Mini-B Cable, Micro MMC/SD Card (2GB min)


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 GingerBread 2.3.4 DevKit 2.1.1 release for AM335x and BeagleBone is available:

DevKit components

  TI_Android_GingerBread_2_3_4_DevKit_2_1_1
  |-- Application_Notes
  |   |-- Android_Boot_Time_Optimization.pdf
  |   |-- Android_Memory_Analysis.pdf
  |   `-- TI-Android-GingerBread-2.3.4-DevKit-2.1.1_PortingGuides.pdf
  |-- Debug_and_Development_Tools
  |   |-- Pinmux_Tool
  |   |   `-- PinMuxUtility_02_02_01_00.zip
  |   |-- TI_Android_Utilities
  |   |   `-- mk-mmc
  |   `-- TI_Code_Composor_Studio
  |       |-- TI-Android-CCSv5SetupGuide.pdf
  |       `-- setup_CCS_5.0.2.00006.tar.gz
  |-- Documents
  |   |-- BeagleBone-Android-DevKit_Guide.pdf
  |   |-- RowboPERF_User_Guide.pdf
  |   |-- TI-Android-GingerBread-2.3.4-DevKit-2.1.1_DeveloperGuide.pdf
  |   |-- TI-Android-GingerBread-2.3.4-DevKit-2.1.1_ReleaseNotes.pdf
  |   `-- TI-Android-GingerBread-2.3.4-DevKit-2.1.1_UserGuide.pdf
  |-- Performance_and_Validation_Results
  |   |-- Android_Benchmarks_DevKit2.3.4v2.1.1.pdf
  |   |-- CTS_Report.tar.gz
  |   `-- Test_Results.tar.gz
  |-- Prebuilt_Images
  |   |-- AM335x_EVM.tar.gz
  |   `-- BeagleBone.tar.gz
  `-- TI_Andorid_GingerBread_2_3_4_Sources
       |-- TI-Android-GingerBread-2.3.4-DevKit-2.1.1.xml
       |-- TI_Android_DevKit_Software_License_Manifests.tar.gz
       `-- TI_Android_GingerBread_2_3_4_AM335x_Sources.tar.gz

Setup

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

Getting Pre-built Images

Prebuilt images can be obtained from

Note: BeagleBone doesn't ship with Android SD card, please download the pre-built image online.

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

  $ tar -xzvf <Board name>.tar.gz
  $ cd <Board name>

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

  .
  |-- AM335x_EVM
  |   |-- Boot_Images
  |   |   |-- MLO
  |   |   |-- START_HERE
  |   |   |-- u-boot.img
  |   |   |-- uEnv.txt
  |   |   `-- uImage
  |   |-- Filesystem
  |   |   `-- rootfs_am335xevm.tar.bz2
  |   |-- Media_Clips
  |   |   |-- Audio
  |   |   |-- Images
  |   |   `-- Video
  |   |-- README.txt
  |   `-- mkmmc-android.sh
  `-- BeagleBone
      |-- Boot_Images
      |   |-- MLO
      |   |-- START_HERE
      |   |-- u-boot.img
      |   |-- uEnv.txt
      |   `-- uImage
      |-- Filesystem
      |   `-- rootfs_beaglebone.tar.bz2
      |-- Media_Clips
      |   |-- Audio
      |   |-- Images
      |   `-- Video
      |-- README.txt
      `-- mkmmc-android.sh

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>
  • 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 two different platforms AM335x EVM, BeagleBone. While they are different devices the hardware setup will remain almost the same.

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 should be set as (SW3(1:8)=00010111) 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 (SW13)on AM335x EVM.

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

Booting Android

  • Setup the board/platform
    • 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

  • Boot arguments for AM335x EVM:
  U-Boot# setenv bootargs 'console=ttyO0,115200n8 androidboot.console=ttyO0 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait init=/init ip=off';
  • Boot arguments for BeagleBone:
  U-Boot# setenv bootargs 'console=ttyO0,115200n8 androidboot.console=ttyO0 mem=256M root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait init=/init ip=off';

Android Home Screen

  • Click on the TI logo and run the performance and benchmarking apps you are interested in, look at the RowboPerf user guide for more details.

Android 2.3 DevKit homescreen.jpg

Keys mapping

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

Functionality
USB Keyboard/Mouse
Keypad on AM335x EVM
Home Screen
Home

Left
Left Arrow
SW3
Right
Right Arrow
SW4
Up
Up Arrow

Down
Down Arrow
SW6
Volume Up
Volume Up
SW9
Volume Down
Volume Down
SW10
Contacts
F3

Select
Enter
SW5
Back
Mouse right
SW2
Menu
F1
SW1

Note: There is no keypad on BeagleBone, you need to use USB Keyboard/USB Mouse.

UI Navigation

  • There are three ways to navigate the UI screen:
    • Matrix Keypad
    • USB Keyboard
    • USB Mouse

Out of the Box Demo

Multimedia Experience

  • Using browser and android applications

Android 2.3 DevKit browser.jpg

  • Image browsing and media playback

Android 2.3 DevKit gallery.jpg

View Image

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

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

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 (SW2).

Play Music

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

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.

Control Volume

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

TI RowboPerf Experience

Am335x-rowboperf-home.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

Am335x-browser.png

The Ethernet is configured by default. Use below command to check Ethernet configuration

  # netcfg
  e.g.
  lo       UP    127.0.0.1       255.0.0.0       0x00000049
  eth0     UP    172.24.190.221  255.255.252.0   0x00001043

Browser Manual Configuration

To configure Ethernet manually, use below commands.

  # netcfg eth0 up
  # netcfg eth0 dhcp
  # getprop net.eth0.dns1

getprop command prints the dns for the ethernet port, do the following to configure the DNS entries on board.

  # setprop net.dns1 <your_dns_server_ip>

If the platform is behind proxy, then following command should be executed to set the proxy settings

  # setprop net.gprs.http-proxy http://<hostname>:<port>

NOTE: If network is behind a proxy, in this DevKit release, we have NOT found a method to set the proxy server. We tried using "setprop net.eth0.http-proxy hostname:port" and "setprop net.gprs.http-proxy hostname:port", but neither could get us through the proxy. Also, the option of adding an entry of (99,'http_proxy','hostname:port") to the 'system' and 'secure' tables in the /data/data/com.android.providers.settings/databases/settings.db database has also been tried, but failed.

USB Mass Storage Support

The Android GingerBread 2.3.4 supports USB Mass storage functionality.

Connect USB mass storage device to board and check whether it is mounted properly.

  • Use mount command to see the list of mount points. Here is the sample output of mount command. The entry for USB mass storage is highlighted in bold
  # mount
rootfs / rootfs rw 0 0
/dev/root / ext3 rw,relatime,errors=continue,barrier=1,data=writeback 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/block/mmcblk0p3 /part-3 vfat rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
/dev/block/vold/179:3 /mnt/sdcard vfat rw,nosuid,nodev,noexec,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
/dev/block/vold/179:3 /mnt/secure/asec vfat rw,nosuid,nodev,noexec,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
/dev/block/vold/8:1 /mnt/usb2 vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/8:1 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/usb2/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
  • Run OI File Manager application and see whether usb2 directory is populated with the contents of the USB mass storage device.

Select "App Launcher" -> "OI File Manager" -> "Accept" -> "Continue" -> "Home Icon" -> "usb2" to browse usb mass storage device. This step is for first time user of "IO File Manager".

Select "App Launcher" -> "OI File Manager" -> "Home Icon" -> "usb2" to browse usb mass storage device.

Browsing to usb2 directory using OI File Manager

Note: Please connect the USB mass storage device only after system has booted up completely.

Limitations

  • The Gallery app/Android Settings does not recognize the mass storage mount
  • The system will not detect USB mass storage device if it is removed and re-connected. Please run the following command on the serial console to re-detect USB mass storage:
  echo F > /proc/driver/musb_hdrc.1

Other Display Features

Using LCD output

On AM335x EVM the on board LCD is used as output device by default.

Using VNC Viewer

Display output device is not available on BeagleBone. Please run Android VNC server on device console and experience the Android UI using VNC viewer on host machine.

Please refer to Android Display through VNC guide for more details.

Enable FPS 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

Display Rotation Support

Graphics and Video rotation is managed by software. Use standard android API to rotate screen in portrait or landscape mode. Currently portrait and landscape graphics rotation mode is supported.

In init.rc, need to add the following line and reboot the system to take the affect:

  • Rotate by 90 degree for portrait mode display
  setprop ro.sf.hwrotation 90
LCD display with ro.sf.hwrotation 0 Am335x-rotate-0.png
LCD display with ro.sf.hwrotation 90 Am335x-rotate-90.png

Note: The supported values for rotation are 90 and 270 for portrait mode display and 0 for landscape mode (default).

Wireless

The AM335x EVM with the wireless module supports Wi-Fi and Bluetooth on Android. The Wireless module is connected on COM connector (J11 base board) of AM335x EVM.

Note: BeagleBone doesn't support wireless (Wi-Fi and Bluetooth) module.

Wi-Fi

Enabling Wi-Fi
  • Menu->Settings->Wireless & networks->Wi-Fi settings
  • click Wi-Fi and wait for few seconds.
  • On the UI, Green check-mark appears and status shows scanning
  • After scan completes, available APs are listed

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
[  239.630215] wl1271: loaded
[  241.213208] wl1271: firmware booted (Rev 6.3.1.0.79)
[  243.309760] cfg80211: Calling CRDA for country: IN
[  243.323747] cfg80211: Regulatory domain changed to country: IN
[  243.329923] cfg80211:     (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[  243.338640] cfg80211:     (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[  243.346544] cfg80211:     (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[  243.354447] cfg80211:     (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[  243.362353] cfg80211:     (5735000 KHz - 5835000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[  247.769797] wl1271: Association completed.
  • when successfully connected, you will see status as connected to APNAME

Note: The Browser application does not work if both Ethernet and Wi-Fi are active. Please disable ethernet before using the Browser over Wi-Fi. Ethernet can be disabled by entering the following command on the serial console:

  # netcfg eth0 down
Disabling Wi-Fi
  • To turn off Wi-Fi, click Wi-Fi in Menu->Settings->Wireless & networks
  • Following message appears on console and the green check mark is not visible on UI
[  284.044136] cfg80211: Calling CRDA to update world regulatory domain
[  284.070143] cfg80211: World regulatory domain updated:
[  284.075522] cfg80211:     (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[  284.084293] cfg80211:     (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[  284.092581] cfg80211:     (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[  284.100848] cfg80211:     (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[  284.109105] cfg80211:     (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[  284.117370] cfg80211:     (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[  285.066762] wl1271: down

Bluetooth

Enabling Bluetooth
  • Menu->Settings->Wireless & networks->Bluetooth settings
  • Click Bluetooth and wait for few seconds
  • Bluetooth icon appears on taskbar. The following appears on the debug console
[  366.468046] Gpio value is :117
[  366.489744] WL1271: BT Enable
  • If BT is enabled green check-mark appears and status shows scanning
  • available bt devices are listed

BT scan results

  • click on desired device to pair with
  • popup with pin will appear

PIN for pairing

  • click Pair button to confirm pairing
  • verify that the desired device shows the same pin. click ok. devices paired

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, click Bluetooth in Menu->Settings->Wireless & networks
  • Bluetooth icon stops displaying on taskbar and the following messages appear on console:
[  420.612944] WL1271: BT Disable
Bluetooth Object Push profile

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

Sending files
  • go to Menu ->Gallery
  • Select a picture to share
  • click Menu (bottom right)
  • click share, select bluetooth from the options

Send picture from Gallery to Bluetooth

  • select paired bt device to send to
  • the bt device will prompt to accept. accept incoming file
  • once download finished. check file
Receiving files
  • on paired device (e.g. phone), select send to bt, click on am335xevm
  • on evm, notification appears about incoming connection (top left)

incoming transfer icon

  • open task bar. click on note

incoming transfer message

  • in popup click accept

Confirm incoming transfer

  • once download complete. 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 to phone and media audio'.

A2DP headset pairing-Note headset icon

  • Open Music player and play any audio clip
  • Audio will be heard on the Bluetooth headset
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
  input: AVRCP as /devices/virtual/input/input3
  • 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


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

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 USB Ethernet
  • 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)-
    • Go to home screen, press MENU,
    • Select Applications, select Development, then enable USB debugging.
    • Alternatively, you can navigate to Settings->Applications->Development and then enable the "USB debugging" option.
  • 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
   For Gusty/Hardy, edit the file to read:
   SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
   For Dapper, edit the file to read:
   SUBSYSTEM=="usb_device", 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
  • 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       255.0.0.0       0x00000049                       
  eth0     UP    172.24.190.59   255.255.252.0   0x00001043                       
  • If Ethernet was not configured, configure Ethernet of the board using ifconfig/netcfg as shown below.
  # netcfg eth0 up
  # netcfg eth0 dhcp
  • Configure the ADB Daemon 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 as "emulator"

  List of devices attached
  emulator-5554    device
  $ 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).

  • 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 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_9018
   %CompositeAdbInterface%   = USB_Install, USB\VID_18D1&PID_9018&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. 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

Compatibility Test Suite (CTS)

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

  • Pre-requisites
    • Download and extract (untar) the CTS package from here
    • Download and extract (untar) Google Android SDK from here

NOTE: Only the SDK mentioned on the above link will work with CTS.

  • Setup an ADB connection between Host and platform as mentioned in ADB section above.
  • Setup your platform to run the accessibility tests:
    • adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk
    • On the device enable Settings > Accessibility > Accessibility > Delegating Accessibility Service
  • Launch the CTS.
    • Edit android-cts/tools/startcts to point SDK_ROOT to android sdk installation location.
    • Run ./tools/startcts
    • On CTS prompt check the available plans
  cts_host> ls –plan 
  • Start a specific Test Plan
  cts_host> start --plan <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 when CTS is restarting the board, adb connection to CTS, may not happen automatically. In that case, execute the following command on the console, soon after the board has restarted.

  # stop adbd;sleep 1;start adbd;

NAND Booting

The current release doesn't support NAND Flash File system and Fastboot features. It will be added soon, please refer to the online page for latest update.

http://processors.wiki.ti.com/index.php?title=TI-Android-GingerBread-2.3.4-DevKit-2.1.1_UserGuide

Building Android Sources

Refer to TI Android DevKit Developer Guide at http://processors.wiki.ti.com/index.php/TI-Android-GingerBread-2.3.4-DevKit-2.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_GingerBread_2_3_4_AM335x_Sources.tar.gz.

SD Card Recommendations

Some brands or models of SD cards are observed with poor performance on AM335x EVMs and other 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/dsps/dsps_public_sw/sdo_tii/TI_Android_DevKit/TI_Android_GingerBread_2_3_4_DevKit_2_1_1/index_FDS.html
The release notes is available at http://processors.wiki.ti.com/index.php/TI-Android-GingerBread-2.3.4-DevKit-2.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