Home
Instructions
Building
Before beginning, one must understand that the source tree is a moving target. The build might fail if the upstream makes any change incompatible with the changes made by this project. It happens that the upstream does not build by itself. With this in mind, you can start the process.
First, you need to download the sources
$ mkdir myeee
$ cd myeee
$ repo init -u git://gitorious.org/android-eeepc/manifest.git
$ repo sync
Then you must specify your target and product. The easiest way to do this is to create buildspec.mk under myeee with contents like
TARGET_ARCH=x86
TARGET_PRODUCT=eee_701
DISABLE_DEXPREOPT=true
You are now ready to build the images
$ make
$ make installer_img
The images can be found under out/target/product/eee_701/.
Installation
In the last step of building the sources, a disk installer is created. You need to “burn” it onto a usb stick
$ dd if=out/target/product/eee_701/installer.img of=/dev/sdX
where /dev/sdX is your usb stick. You can now insert it into your Eee PC and boots from the stick.
When the grub menu is shown, select sysloader and press enter. It will boot into the disk installer and install the images onto the first disk.
Please note that this step will ERASE everything on your /dev/block/sda. When you see the message
Done processing installer config. Configured X images
the installaion is finished and you can now reboot.
The disk installer expects that your usb stick will appear as /dev/block/sdb. If this is not the case, you need to manually start the installation
$ stop installer
$ installer -p /dev/block/sdX2
where sdX is your usb stick.
Running
By default, eth0 of Eee PC has static adress 192.168.0.202.
One can gain shell access through adb
$ export ADBHOST=192.168.0.202
$ adb kill-server
$ adb shell
Zygote is configured not to start automatically.
One must manullay enter
# start zygote
either in adb shell or in console.
Branches
3D acceleration
There is a branch demonstrating how to utilize the hardware capabilities for 3D acceleration. It supports only those chipsets supported by i915 kernel module, with kernel modesetting enabled (2.6.29 or later). It breaks in various weird ways if used on an unsupported platform. It lacks support of threading, surface resizing. There might be security issues too. Works are going on to improve the situation, though a little slow.
You may
$ repo sync
$ make
to build the new system image. If you already have a working system and you just want to test out this branch, you can copy
system/framework/framework.jar
system/lib/libutils.so
system/lib/libui.so
system/lib/libsurfaceflinger.so
system/lib/libdrm.so
system/lib/libdrm_intel.so
system/lib/libhgl.so
system/lib/i915_dri.so
to the target, after backing up the original files. Using logcat, you can see messages like
I/EGLKMSSurface( 2160): using (fd=21)
I/EGLKMSSurface( 2160): connector = 0x7
I/EGLKMSSurface( 2160): encoder = 0x8
I/EGLKMSSurface( 2160): crtc = 0x4
I/EGLKMSSurface( 2160): mode = 1024x600
I/EGLKMSSurface( 2160): id = 21, 22
I/EGLKMSSurface( 2160): name = 1, 2
I/EGLKMSSurface( 2160): handle = 1, 2
I/EGLKMSSurface( 2160): size = 1228800
I/EGLKMSSurface( 2160): width = 1024
I/EGLKMSSurface( 2160): height = 600
I/EGLKMSSurface( 2160): stride = 2048
I/EGLKMSSurface( 2160): bpp = 16
D/EAGLE ( 2160): Using DRI driver /system/lib/i915_dri.so
I/SurfaceFlinger( 2160): EGL informations:
I/SurfaceFlinger( 2160): # of configs : 42
I/SurfaceFlinger( 2160): vendor : Android
I/SurfaceFlinger( 2160): version : 1.31 Android META-EGL
I/SurfaceFlinger( 2160): extensions:
I/SurfaceFlinger( 2160): Client API: OpenGL ES
W/SurfaceFlinger( 2160): ro.sf.lcd_density not defined, using 160 dpi by default.
D/EAGLE ( 2160): context switch from 0x0 to 0x81c9040
I/SurfaceFlinger( 2160): OpenGL informations:
I/SurfaceFlinger( 2160): vendor : Tungsten Graphics, Inc
I/SurfaceFlinger( 2160): renderer : Mesa DRI Intel(R) 915GM GEM 20090114 x86/MMX/SSE2
I/SurfaceFlinger( 2160): version : 1.4 Mesa 7.3-rc3
I/SurfaceFlinger( 2160): extensions: too many to list
I/SurfaceFlinger( 2160): DisplayHardware flags 0x30104
when you start zygote. Try run some 3D applications (note, only OpenGL is supported, not OpenGL ES), like Android-GL (download the apk) and compare the performance differences.
External Projects
ffmpeg
ffmpeg has been ported to integrate with Android build system. Both x86 and arm are supported. To retrieve the sources, add
<remote name="olv" fetch="git://gitorious.org/~olvaffe/" />
<project path="external/ffmpeg" name="ffmpeg/ffmpeg-android" remote="olv" revision="android" />
<project path="external/ffmpeg/libswscale" name="libswscale/libswscale-android" remote="olv" revision="android" />
to .repo/local_manifest.xml and
$ repo sync
Discussions
Anyone interested in this project is invited to join the channel #0xlab on freenode.

