Android builders summit update

Amazing event, very nicely organized and executed.

Thanks for Linux Foundation for the picture

Jason and Khasim at Android builders summit

Jason Kridner and Khasim Syed Mohammed giving Key Note on “Using Android outside of Mobile phones”

Our talk video is hosted here,

Disable HTML5 and turn off HD for easy view,

There are multiple action items on us for arowboat, I will keep posting here on our progress, on quick thing to quote is working closely with Linaro to enable all open platforms.

Thanks to Linux Foundation for the picture

Khasim wearing Recon's goggles powered by Android


Android 4.0 IceCream on Beagleboard XM (TI AM37x – ARM Cortex A8)

You thought we would be late – didn’t you ? – Impossible !!! brings you first cut of Android 4.0 Ice Cream Sandwich on Texas Instruments AM37x based Beagleboard XM (ARM Cortex A8 at 1GHz).

This is very preliminary version and there is lot more do, we are continuing our efforts to evaluate and bring in support for all other peripherals like Audio, video, connectivity, SGX acceleration etc. This might take some time.

The official TI DevKit  release is still not planned yet as we have to evaluate the performance on each arowboat supported devices like AM37x, AM335x, AM35x, etc.

Complete details about building sources, pre-built image to quickly evaluate ICS on beagleboard and source locations for download are documented by Pankaj Bharadiya from arowboat team here,

Coming soon : ICS on Beaglebone :)

Happy Thanks Giving.

beaglebone introduced at completed yesterday with a wonderful note from Khasim member of and beagleboard community.

This was an unique event where audience were given access to beaglebone, beagleboard XM, pandaboard and craneboards, there were software fueling stations to setup laptops for Android development, trying platforms with pre-built images, solving queries and so on.

Satish Patel from Texas Instruments gave a talk on “Android memory optimization techniques for non phone segment”. The talk was houseful :)

Lot of fun, excellent talent to talk to – we had Diogo Ferreira from CyanogenMod at our hackers corner.


Let’s get back to work now :( hosts Android Quiz and Hackers corner hosts Android Quiz and Android Hackers corner at

Texas Instruments sponsored Android hackers’ corner

  • Get access to multiple open platforms like Pandaboard, beagleboard, craneboard, beaglebone, etc
  • Fueling stations where you can find pre-built images, Android tools, sources and lot more developer resources to install/copy & setup your laptops
  • Talk to experts from on multimedia, 3D graphics acceleration, Android internals, Embedded Linux, etc.
  • Get trained instantly on basics to advanced topics on Android.
  • Go Live on Android development for embedded and mobile products / applications.

Win exciting prizes every hour and bumper prize “beaglebone” !!!!

Participate in arowboat Android Quiz and win prizes every hour for two continuous days

The steps are simple,

a)       Follow us on, you will be auto followed.

b)       Every hour questions will be posted on arowboat twitter account

c)       Answer the question, the first correct entry will win an exciting prize sponsored by Texas Instruments

d)       Get ready to win Beaglebone – Lucky draw among all the quiz participants on final day

Follow us on for more updates.

Posted by:

Syed Mohammed Khasim

Join us at

Yes we “” team is at – on November 18th and 19th at Bangalore. More details here

We will be presenting multiple sessions at the event.

Interesting news:

We will be demonstrating Beaglebone running Android (  live at the venue.

There will be 21×18 feet of hackers corner hosted by community with lots of boards to play and learn around, instructors from will be available to discuss Android issues, live trainings and a lot more.

Just excited … more info will be provided soon. Looking forwarded to meet you there.

Khasim (

TI’s AM335x is announced …!

Really cool device indeed.

TI’s AM335x based on ARM Cortex A8 running at 720MHz, support for mDDR, DDR2/DDR3, lots of in built peripherals like ADC (can be configured to be Touch screen controller), USB PHY(two numbers), EMAC, LCD controller, CAN, PWM, 3D graphics acceleration, etc.

More details about device and its capabilities can be found here,

Now the interesting stuff, the first board that comes out of this product is a Beagleboard bone :) – It is just 89$ platform that can be used to prototype products, evaluate high level operating system distributions like Android, Linux and try out OS less software libraries called starterware. They are also planning to support RTOS from mentor, Windriver, etc.

Coming back a bit, Android is fully functional on this device “AM335x”. Two ways to get access :

– Get EVM that gives fully functional Android feature set.

– Get Beaglebone : This will allow you to run Android but since there is no display on board, we provide you in built VNC app, that can be used to access the Android screen over ethernet. This should be good enough for any app developer to go live … has support for AM335x, choose the target product as am335xevm or beaglebone accordingly.

In next few days we will be putting more documents and wikis to help you understand the product and Android offering better.

— published by Khasim Syed Mohammed (

Training from Mentor Graphics on Android for TI Devices

The Introduction to Android Platform Development course will help you understand how to leverage Android open source software to engineer Android-based products. This class will help you understand the challenges you are likely to face (e.g., Android porting, power management optimization, …) and start to address how to solve these problems. There will be hands-on lab exercises using the BeagleBoard-xM that will reinforce lecture and discussion topics under the guidance of our industry expert instructors.

You will learn how to

  • Use the Android build system and development environment
  • Configure and build a kernel
  • Work with Android libraries, memory management, and file systems
  • Best use the Android runtime environment
  • Understand the anatomy of an Android application
  • Do basic Android porting
  • Implement audio & video hardware acceleration
  • Port legacy C/C++ code into an Android environment
  • Customize User interfaces
  • Handle software updates

Hands-On labs

Throughout this course, extensive hands-on lab exercises provide you with practical experience using the BeagleBoard-xM  topics include:

  • Build an Android runtime environment and boot it natively on the BeagleBoard-xM
  • Using the Android SDK
  • Debugging Java and native C/C++ code
  • Build the Android kernel
  • Structure, build, and test Android driver

*Please note: These classes are held at specific Texas Instruments facilities.

More Details  here;jsessionid=VQTCH24XLXOHDQC1JAKR3KQ?sku=4DW102001&tfsection=Overview



  • Systems-level familiarity with operating systems like Linux or Windows.  C/C++ programming proficiency and device driver experience are important. Java knowledge is helpful.

Android, Linux-ARM and TLS register emulation

If you are an Android integration/porting guy and you don’t know what TLS is or why you should care about it while porting Android on a new Linux Kernel, then you have just landed on the right page.

What is TLS or Thread Local Storage?

In a multi-threaded application, where all threads in a process share the same address space, there often arises the need to maintain data that is unique to a thread. Use of errno, in a C code, is a classic example of using this type of data which is local to a given thread. TLS or Thread Local Storage, as you can probably figure out from its name now, is a concept used for Threading abstraction. It is a fast and efficient way to store per-thread local data. Offset of thread’s local data is accessible via the TLS register(h/w or s/w block) which points to Thread Control Block of respective thread. Check this PDF for more information.

Yesteryears High end ARM cores viz. ARM9 and even some of ARM11 cores do not have this TLS Register physically available. Operating Systems (Linux from here onwards) need to emulate it in software. New generation ARM cores viz. Cortex-Ax onwards, however, do have this TLS register available (CP15).

Why do I being an Android porting/integration guy, need to care about all this?

Android(till Froyo? I guess) had this unique bug (or feature?) where in, it assumes that TLS register is emulated by the Kernel(Linux) and thus expect Linux to trap it. It worked well for ARM cores who were already emulating TLS register in software.

With the rise of ARM Cortex-Ax cores, people started reporting all sort of errors related to Android mounting or random Android service crashes. It turned out that the error was due to hard dependency of Android on TLS register emulation. Since Cortex-Ax devices do have TLS register available and Linux was not trapping it, that made Android really really mad.

By that time there was no known way to make Android user-space TLS register aware, people started patching Linux to make it compatible with the emulated TLS register. Here is the relevant TLS patch for 2.6.32 and patch for 2.6.37 ARM kernel.

With Gingerbread i.e. v2.3, Android introduced a build config variable ARCH_ARM_HAVE_TLS_REGISTER which (you need to set it to true during build time) will make Android user-space TLS register aware and you don’t need to patch your Linux anymore.

So now you know what else to look for if your Android port is crashing on an unsupported Kernel version.

I’m yet to figure out what ARCH_ARM_HAVE_TLS_REGISTER ends up doing. A quick grep of this variable in AOSP came out with results in bionic/ and frameworks/base/opengl/ projects.

Contributed by :- Amit Pundir

TI Android Gingerbread 2.3 DevKit 1.0

TI Android Gingerbread 2.3 DevKit version 1.0 is available for AM37x, AM35x & OMAP35x devices.

TI’s Android Gingerbread 2.3 DevKit version 1.0 (EA) release is available for AM35x, AM37x, OMAP35x devices. The release has been validated on AM35x/37x EVMs and Beagleboard rev C4.

The DevKit release can be downloaded from

This release package provides a Andorid GingerBread 2.3 sources, SGX (3D graphics) drivers, Adobe Flash 10 support, WLAN, Bluetooth support for WL1271, Power Management (DVFS, suspend, resume, CPU IDLE, etc), S-Video, RowboPERF performance measurement application, NAND (UBIFS), USB Mouse cursor, Fastboot and standard applications from Android.

Release Notes are available at

What’s new in this release?

The Devkit release has improved tools for debug and development environment. The release includes TI’s Code Composer Studio V5 with Android Plugins to ease Android app development and porting for developers. The android sources (kernel, file system and boot loader) are pre-packaged to enable developers start building android for custom hardware with detailed host setup instructions.

Refer to for more details.

Power Management is improved as it supports DVFS, CPU IDLE, Suspend, Resume, etc.

Bluetooth Hands Free and Head Set profiles are supported, Mouse cursor is added (not in standard Gingerbread frame work from Google).

The following features from previous FroYo release are still retained,

Adobe Flash 10 libraries (on request), USB Mass Storage, Audio record/playback, Keypad, Touchscreen, S-video, DVI, etc.

For support and queries please use



Camera porting trials on Gingerbread

Since few weeks we were struggling to get camera working on beagleboard-xm. At start we felt it should be easy to migrate from froyo to gingerbread with respect to HAL. But..!!! got stuck in white display problem and dead lock while capture.

We would like to put our understanding which might help somebody who works with camera port on Android.

Camera Preview is only white screen on gingerbread

We have seen couple of issues reported related to this ; either with simulator or with h/w. Some applications which were accessing a camera in froyo have failed to preview correctly in gingerbread. In gingerbread there is a change in camera service – added support for multiple camera access – and surface flinger – OpenGL ES textures.

Error: D/CameraHardware( 1952): Preview Heap
I/ActivityManager( 954): Displayed +2s393ms (total +16s148ms)
W/OrientationEventListener( 1995): Cannot detect sensors. Not enabled
E/SurfaceFlinger( 954): texture=1984777172, using format 17, which is not supported by the GL
D/dalvikvm( 1995): GC_CONCURRENT freed 469K, 54% free 2690K/5831K, external 901K/1038K, paused 2ms+19ms
W/AudioPolicyManagerALSA( 1952): AudioPolicyManagerALSA::getStrategyForStream() Stub Called…

Camera application use default surface holder for preview and that is RGB565 by default at surface flinger.

We could see some display format has been removed. It might be the case with specific vendor as well. With respect to beagleboard-xm and TI SGX; we need to change display to RGB565 in underline file. This change has enabled camera preview on gingerbread.

Filename: CameraService.cpp
Function: CameraService::Client::registerPreviewBuffers

ISurface::BufferHeap buffers(w, h, w, h,

Optimization Scope: One can enable support to render directly YUV422 frame and remove conversation YUV422->RGB565 at camera HAL.

Dead lock/Hand up @image capture
After resolving we felt like we were  done… But very next we pressed capture button…opps….Application just hanged up.

After looking into the code we found:
1. Camera service is acquiring a lock and calling camera HAL function
2. Camera HAL function creating a thread
3. New thread gets compressed image and call Camera service’s callback
4. Data callback again tries to check for valid message and for the same try to acquire a lock

1. If – CameraHardware:takepicture() returns to the camera service before PictureThread calls callback ; scenario will work fine.

In Other case camera service will go for a sleep. Somehow takepicture() should gets return back to free the lock. But even in sleep mode that is not happening and continuous while loop in lockIfMessageWanted kept running. This might be scenario of thread exception.

We got it fixed by removing conditional check in callback. We don’t see any side effects with this change.

Now… moving on recording part with soft codecs :)


contributed by Satish Patel Texas Instruments.

If you want to share any message, please write to sm dot khasim at gmail dot com


Get every new post delivered to your Inbox.