All times are UTC-06:00

Post new topic  Reply to topic  [ 10 posts ] 
Author Message
PostPosted: Sun Apr 01, 2012 8:59 am 

Joined: Sun Apr 01, 2012 8:05 am
Posts: 9
After much anticipation we would like to release the latest Android 4.0.3 source tree. This build is based on CyanogenMod and uses the latest Linux 3.2 kernel we are currently developing.

Please note the following is currently known not to be working:
* VSYNC isn't implemented in 3.2 kernel
* Wifi (this should be simple to implement), ethernet can be made to work by running dhcpcd eth0 on the serial console
* Audio (3.2 kernel lacks these drivers, will need to wait for our 3.4 rebase)
* Video playback (this should also be simple to add)
* Animations will break rendering (please disable by going to Settings -> Developer options -> (Window animation scale & Transition animation scale) -> off

The steps to build:
mkdir efikamx_android
cd efikamx_android
repo init -u git:// -b cyanogenmod
repo sync
. build/
lunch cm_efikamx-userdebug
This should produce build output to out/target/product/efikamx/

Now get and build the kernel (a precompiled uImage is available in the android source $path_to_android_source/device/freescale/efikamx/kernel)
git clone git://
cd linux-testing
cp arch/arm/configs/mx51_efikamx_android_defconfig .config
ARCH=arm CROSS_COMPILE=$path_to_android_source/prebuilt/$host_arch/toolchain/arm-eabi-4.4.3/bin/arm-eabi- make uImage
Now to setup the sdcard, please use this partitioning structure (as its expected for Android to boot)
[physical] [p1] [vfat] [20M] (uImage & boot.scr)
[logical] [p5] [ext4] [200M] (/data)
[logical] [p6] [ext4] [300M] (/cache)
[logical] [p7] [ext4] [300M] (/)
[physical] [p2] [vfat] [$whatever is left] (currently unused)
Note that to get the logical partitions correct you will need to begin the logical partitions at the fourth MBR not the third.

Now that the above is ready please copy the android system by doing the following:
rsync -avr $path_to_android_source/out/target/product/efikamx/root/ $sdcard_p7/
rsync -avr $path_to_android_source/out/target/product/efikamx/system $sdcard_p7/
rsync -avr $path_to_kernel_source/arch/arm/boot/uImage $sdcard_p1/
Now you should be able to boot. Please note the bold issue above, to get around stuck frames: click on either the clock or the application switcher.

If you have any issues please feel free to respond to this post.

 Post subject:
PostPosted: Fri Apr 27, 2012 10:18 am 

Joined: Thu Mar 03, 2011 9:23 am
Posts: 25
Has anyone tried this? I hope to get a chance this weekend. When you say "we", who do you mean? Thanks.

 Post subject:
PostPosted: Tue May 01, 2012 11:43 pm 

Joined: Thu Jul 28, 2005 12:41 am
Posts: 1066
Did you have a chance to try it? I tested a tablet with Linux and Windows a few weeks ago, but found that on a tablet Android is the only choice...


 Post subject:
PostPosted: Tue May 15, 2012 9:32 pm 

Joined: Tue May 15, 2012 8:33 pm
Posts: 1
"* Video playback (this should also be simple to add)"

does this imply support for the hardware decoder?
I'm really interested in the EfikaMX laptop, for using 3G networking to ssh into servers, connect to IRC chat and the like etc. but smooth playback of any video would make it more useful.

I'm wary of buying it and finding out the decoder can't be used (as on my VIA server), or worse if the basic 2D display is slow and/or VESA only and I can't view divx with software decoding.

 Post subject:
PostPosted: Sat May 19, 2012 4:30 am 

Joined: Sun Apr 01, 2012 8:05 am
Posts: 9
This thread is about EfikaMX smart-top not the netbook. Also it's specific to Android and not our default Linux install which is the supported use-case. We have functional hardware decoding of video on the netbook.

PostPosted: Sat Nov 03, 2012 9:06 am 

Joined: Wed Oct 31, 2012 12:47 pm
Posts: 3
there seem to be a few errors in the manifest - I applied this patch to get it to checkout:
diff --git a/default.xml b/default.xml
index 4ccf12e..2080a77 100644
--- a/default.xml
+++ b/default.xml
@@ -23,7 +23,7 @@
<project path="dalvik" name="CyanogenMod/android_dalvik" />
<project path="development" name="CyanogenMod/android_development" />
<project path="device/common" name="device/common" remote="aosp" revision="refs/tags/android-4.0.3_r1" />
- <project path="device/freescale" name="ahmedammar/platform_device_freescale" />
+ <project path="device/freescale" name="ahmedammar/platform_device_freescale" revision="refs/heads/cyanogenmod" />
<!-- <project path="device/generic/goldfish" name="device/generic/goldfish" remote="aosp" revision="refs/tags/andro
<project path="device/google/accessory/arduino" name="device/google/accessory/arduino" remote="aosp" revision="refs
<project path="device/google/accessory/demokit" name="device/google/accessory/demokit" remote="aosp" revision="refs
@@ -61,6 +61,7 @@
<project path="external/dnsmasq" name="CyanogenMod/android_external_dnsmasq" />
<project path="external/doclava" name="platform/external/doclava" remote="aosp" revision="refs/tags/android-4.0.3_r
<project path="external/dropbear" name="CyanogenMod/android_external_dropbear" />
+ <project path="external/drm" name="ahmedammar/platform_external_libdrm" />
<project path="external/e2fsprogs" name="CyanogenMod/android_external_e2fsprogs" />
<project path="external/easymock" name="CyanogenMod/android_external_easymock" />
<project path="external/elfutils" name="CyanogenMod/android_external_elfutils" />
@@ -164,7 +165,7 @@
<project path="external/vim" name="CyanogenMod/android_external_vim" revision="master" />
<project path="external/yaffs2" name="CyanogenMod/android_external_yaffs2" />
<project path="external/zlib" name="CyanogenMod/android_external_zlib" />
- <project path="frameworks/base" name="ahmedammar/android_frameworks_base_cm" />
+ <project path="frameworks/base" name="ahmedammar/platform_frameworks_base_cm" revision="refs/heads/cyanogenmod" />
<project path="frameworks/compile/libbcc" name="platform/frameworks/compile/libbcc" remote="aosp" revision="refs/ta
<project path="frameworks/compile/linkloader" name="platform/frameworks/compile/linkloader" remote="aosp" revision=
<project path="frameworks/compile/slang" name="CyanogenMod/android_frameworks_compile_slang" />
@@ -182,7 +183,7 @@
<project path="hardware/libhardware" name="CyanogenMod/android_hardware_libhardware" />
<project path="hardware/libhardware_legacy" name="CyanogenMod/android_hardware_libhardware_legacy" />
<project path="hardware/msm7k" name="CyanogenMod/android_hardware_msm7k" />
- <project path="hardware/qcom/display" name="ahmedammar/android_hardware_qcom_display" />
+ <project path="hardware/qcom/display" name="ahmedammar/platform_hardware_qcom_display" revision="refs/heads/cyanoge
<!-- <project path="hardware/qcom/gps" name="CyanogenMod/android_hardware_qcom_gps" />
<project path="hardware/qcom/media" name="CyanogenMod/android_hardware_qcom_media" /> -->
<project path="hardware/ril" name="CyanogenMod/android_hardware_ril" />
@@ -249,8 +250,8 @@
<project path="packages/wallpapers/MusicVisualization" name="CyanogenMod/android_packages_wallpapers_MusicVisualiza
<project path="packages/wallpapers/NoiseField" name="platform/packages/wallpapers/NoiseField" remote="aosp" revisio
<project path="packages/wallpapers/PhaseBeam" name="platform/packages/wallpapers/PhaseBeam" remote="aosp" revision=
- <project path="prebuilt" name="CyanogenMod/android_prebuilt" />
- <project path="vendor/cm" name="ahmedammar/platform_vendor_cm" />
+ <project path="prebuilt" name="platform/prebuilt" remote="aosp" revision="refs/tags/android-4.0.3_r1" />
+ <project path="vendor/cm" name="ahmedammar/platform_vendor_cm" revision="refs/heads/cyanogenmod" />
<project path="sdk" name="CyanogenMod/android_sdk" />
<project path="system/bluetooth" name="CyanogenMod/android_system_bluetooth" />
<project path="system/core" name="CyanogenMod/android_system_core" />
With that it mostly builds - there were a few undefined symbols in the camera, bluetooth an setup applications but I just disabled building these.

I notice however that the GPU binaries ( have dependencies on which is not included...

My interest is in running on a custom iMX53 based board so its probably off topic for this forum but I haven't seen anywhere else with better than gingerbread accelerated builds for the iMX53. The question has been asked a couple of times on imx community and they just say their latest BSP is gingerbread. Linaro also seem to have stopped working on Freescale Android since around May 2012. If there are more appropriate places to discuss this please give me a pointer.

I haven't actually tried running the build on my hardware - will do so next week. I did get your "technical preview" binary ICS build to run just using my own kernel.

So currently I have three different sets of GPU binaries (all claiming to be the same version but with different MD5s):
1 The set from the Adeneo GB 10.4 BSP
2 The set from your tech preview
3 The set from this source release

1) Segfaults on ICS when starting surfaceflinger
2) Does not segfault but gives a white screen starting surfaceflinger
3) Have not tried yet

Most of the android opengl test cases function with 1 + 2 (though some do segfault wiht 1).

I would to get this running with the latest upstream kernel (now that Sascha Hauer's IPU driver has been merged into staging)
That will obviously require adding the GPU kernel driver as a local patch since upstream won't take it until we have open userspace (there does seem to be some progress on that front with freedreno)

Does anyone know what difference between GB and ICS causes the old binaries not to work (I'm using a Linaro 3.1 based kernel in all cases for the momemnt).



PostPosted: Mon Nov 05, 2012 4:24 pm 

Joined: Wed Oct 31, 2012 12:47 pm
Posts: 3
Ok an update.

Using :
* Linaro ICS
* the GPU blobs from this source release
* gralloc code from the Freescale GB tree

gets a working bootanimation and lockscreen.
However it segfaults on launcher startup in glCopyTexImage2D called from crrateLayer() in frameworks/base/libs/hwui/OpenGLRenderer.cpp

Setting ro.nohardwaregfx = true "fixes" this and gives a usable system (surfaceflinger is still using HW acceleration and apps like glmark work)

Now I'll try switching to the gralloc from this source release as it's much cleaner and supports both PMEM and ION


PostPosted: Mon Nov 05, 2012 6:18 pm 

Joined: Sun Apr 01, 2012 8:05 am
Posts: 9
Hey Martin,

Good to know that you are progressing with your port.

I wanted to bring to your attention a variety of things. Firstly this CyanogenMod based release probably will not work with everything you may want as it expects a drm based video driver (imx-drm) in our case. And that was literally the only feature that we implemented in this release, i.e. no gpu acceleration/ no video decoding acceleration/ audio / wifi, etc.

That was the reason that we never provided the GLES libraries as we did not support that in this release.

Another place to look, is the ics-4.0.3 branch ( ... /ics-4.0.3) which is actually a much more complete release. It is based on Freescale's BSP and supports hardware accelerated rendering and video playback and all peripherals. Although, unlike the BSP we are using gstreamer as the video playback engine, including the Freescale VPU unit's plugin (so it's accelerated). You might need some instructions on how to get it all to compile and maybe access to some currently *private* trees but we can work on this.

Some changes in the rendering pipeline between GB and ICS required certain patches to be applied to the GLES libraries and that is the main reason behind the segfaults and/or white screens.

Below is a link to a tarball containing the required GLES libraries that you were asking about, they contain the mentioned patches and are known to work. They are actually fresh out of our latest build of Android ICS for the smart book:

Feel free to continue to post your progress as we are quite interested to see people using the work we have put effort into releasing.


PostPosted: Sat Nov 10, 2012 8:45 am 

Joined: Wed Oct 31, 2012 12:47 pm
Posts: 3
Hi Ahmed,

First of all a big thank you for the GLES libraries - no more segfaults or white screens :)

I've looked at your ics-4.0.3 branch but, as you say, it uses a lot of private trees at the moment. It would be great to have access to these (particularly the hardware and frmeworks/base) bits.

What kernel are you using? I'm currently using a 3.1 from Linaro but looking at moving to the latest 3.7 (which now has the DRM drivers in staging). I'd also like to switch from PMEM (now removed upstream) to ION.

One thing I'm not very clear on is the role of the 2D acceleration in Android.
My understanding is that pre ICS surfaceflinger used copybit to perform the blits required to compose the final screen and that copybit was implemented using C2D. However in ICS copybit has gone (its inteface is no longer defined in libhardware) and surfaceflinger does everything using OpenGLES. It seems that hwcomposer (new in ICS) can use C2D (potentially via a private copybit library) but that this is only used for things like video layers. So I don't think the 2D accelerator has ever been used for actual 2D drawing (polygons etc).

I don't have a hwcomposer at all at the moment and it doesn't seem to matter much.
That said I haven't looked at video playback at all (no usecase for that at the moment).



PostPosted: Fri Nov 16, 2012 3:30 pm 

Joined: Sun Apr 01, 2012 8:05 am
Posts: 9

You can ignore all the gstreamer_aggregate folder initially, it will only break your build (if you don't know how to build with it, in tree). Just move it out of the android build source tree. seems public to me?
Just made platform_hardware_imx public.

The gstreamer ones i'll make public as soon as possible.

About hwcomposer, and copybit. You're pretty much spot on about your observations but I think post-ICS (probably even HC) the use of GLES has taken over the entire pipeline, leaving hwcomposer/copybit just to deal with video compositing only. I haven't looked at android framework code in quite some time, so don't quote me on that, please.

Hope this helps.


Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 10 posts ] 

All times are UTC-06:00

Who is online

Users browsing this forum: No registered users and 2 guests

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
cron Copyright © 2004-2012, Genesi USA, Inc. The Power Architecture and wordmarks and the Power and logos and related marks are trademarks and service marks licensed by
All other names and trademarks used are property of their respective owners. Privacy Policy
Powered by phpBB® Forum Software © phpBB Group