Freescale recently published a release of the Jellybean version of Android for i.MX6.
Weighing in at 247MB, it consists of:
|7649967||lines of patch (excluding the kernel and U-Boot)|
|22||AOSP projects changed|
|15||projects added to AOSP|
Where is it?
It took us a while to get things bootstrapped, but we now have a set of buildable sources:
- The kernel is in our Github repository in branch boundary-jb4.2.2-staging.
- The Android modifications are in the now badly-named imx-android-r13.4-ga repository. Use branch jb-1.1.0.
Note that in order to download the sources, you’ll need to be signed up for access to our private repositories.
This is alpha code!
Note that this is a very preliminary release. It’s bootable and contains a lot of functionality, but there are a lot that hasn’t been tested.
- The vold structure has changed somewhat, so media playback hasn’t been tested.
- Wi-Fi hasn’t yet been tested on Nitrogen6X.
- Only the SABRE Lite and Nitrogen6X boards are currently supported.
- The camera application has not yet been tested, and
- The browser is slow to load pages.
Details of the browser issue
The last item in the list above is one of the things that put getting a Jellybean release up and running on our front burner.
Those of you who have run the recent ICS releases have probably noticed that the browser is often unresponsive.
We did some testing of the ICS code base and found that there appeared to be issues on initial page loads, and these seem to be present in the JB code base as well.
Before setting it aside, we did find out that the issues seem to be related to I/O and not CPU:
- top shows almost zero CPU utilization while the browser is stalled.
- Several customers indicated that switching to a Class 10 SD card
- We found that the speed was much improved on a board booted to eMMC (which has much higher bandwidth)
- We also found that there are warning messages from the audio subsystem like this:
W/AudioFlinger( 2361): write blocked for 343 msecs, 1 delayed writes...
Removing the audio output code didn’t solve the issue though. Things were slow even when audio output consisted of a no-op.
Oddly, many of the browser benchmarks report quite respectable numbers on Jellybean.
Xianzhong Li at Freescale put together a nice post on i.MX Community describing some of the GUI features of the ICS version of Android. In it there is a list of Browser benchmarks and each of them
seems to load slow, but ultimately report and demonstrate very respectible numbers.
In other words, the problems appear to be related to either user input or initial page loads.
How do I build and test?
The build process is essentially the same as on the ICS release, but with the jb-1.1.0 branch:
~/$ mkdir myandroid ~/$ cd myandroid ~/myandroid$ repo init -u git://github.com/boundarydevices/imx-android-r13.4-ga.git -b jb-1.1.0 ~/myandroid$ repo sync ~/myandroid$ . build/envsetup.sh ~/myandroid$ lunch [select nitrogen6x-eng here] ~/myandroid$ m 2>&1 | tee build.out ~/myandroid$ sudo device/boundary/mksdcard.sh /dev/sdc
Note that the reference to /dev/sdc above will need to match your SD card reader.
More to follow
Sorry for the preliminary release, but we’ve had numerous requests for an early update, and vacation schedules dictate that we either release an early version now or wait for a couple of weeks.
Stay tuned for updates.