Sorry, you need to enable JavaScript to visit this website.

Android on Zynq

Hi all,

Is the android sources for Zynq out? Where can i download it from?

Cheers
Shakith

The Android source is not available yet. We are working on it, though.
Bryan

One answer from the Xilinx forums. Is is the same distribution?
http://forums.xilinx.com/t5/EDK-and-Platform-Studio/Android-on-Zynq/m-p/...

Yes, we will take the existing port for ZC702 and modify for ZedBoard.
Bryan

With the Digilent Linux kernel (https://github.com/Digilent/linux-3.3-digilent.git) and with the iveia Android sources (http://wiki.xilinx.com/android-on-zynq-building-bsp) I've actually succeeded booting into an Android system. Keyboard and mouse input does not work yet.

I've created a basic documentation about building Android for ZedBoard. Is there a wiki or a site where I can upload it?

Hi Wachag,

It would be really helpful if you could share the document with me.
email: akini@synapticon.com

Or, you could share a public link through DropBox or Google Drive.

Thanks,
Anup.

I have Android 2.3.7 running with VGA output and keyboard working. Currently trying to get 4.2.2 up.
I've classes tomorrow, but I can try and publish the source (already going home for today :).

Meanwhile, if you wanna give it a try, basically what I did was the following:

1) Checked out the 3.3 kernel from Digilent.
2) Checked out the 3.3 kernel from Google.
3) Merged Google into Digilent.
4) Created a new bitstream with the Xillybus VGA IP used in the Xillinux distribution, and generated a new boot.bin. Also manually modified the dts and generated a new blob.
5) Merged the Xillybus VGA IP driver.
6) Reconfigured the kernel, adding the android options (except the tracer) and the Xillybus driver. Note that the ipv6 support as module is broken, add it as built-in or remove it.

That's it for the Linux kernel.

For Android:
1) I checked out the sources from Iveia. It did not compile at first so I had to do some quickfixes, nothing extraordinary though. Used generic-eng as lunch.
2) At this point Android boots but the keyboard doesn't work. Kinda. It actually does, but the screen state (logically) seems to always stay locked, so the keyboard events end up never being sent to the application and it looks like it doesn't. There's an option in one of the .xml files so it never locks, or you can quickfix by short circuiting the test in Android's code. You may also want to change the keyboard layout, look for .kl files.

I couldn't find support for the mouse and ethernet in the Iveia source, but I've found some patches from the androidX86 project to add them. Haven't tested it though. Anyway, adding them should be straightforward.
Ethernet works ok in Linux and you can use adb without problems.

Hope it helps :-)

> Merged the Xillybus VGA IP driver.

I've searched the Internet but could not find the Linux kernel driver for XillyVGA. Could you please tell where can you download it?

I can't seem to use adb while i'm in Android on the ZedBoard:
---
# adb
adb: not found
---
Also I can't seem to find the ethernet and mouse patches in de androidX86 project. Can you help?

apparently "adb" is not available in the Android Shell, it's called "pm".

My solution was similar, it is downloadable from http://home.mit.bme.hu/~wacha/android_zed.pdf

As for the keyboard:

diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index f934e6b..9fb842a 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -1767,7 +1767,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// the device some other way (which is why we have an exemption here for injected
// events).
int result;
- if (isScreenOn || isInjected) {
+ if (isScreenOn || isInjected || true) {
// When the screen is on or if the key is injected pass the key to the application.
result = ACTION_PASS_TO_USER;
} else {

Nice. Do you mind if I put this into the guide?
(Also, I am thinking about wikifying it so everyone could edit it)

The ZedBoard Android building guide is available at http://elinux.org/Zedboard_Android .
Feel free to improve it.

Awesome job! Feel free to add the keyboard patch to the wiki!
I've requested an account on elinux so I can't edit right now :(

If you want to add info on how to get rid of the oled module error message, just mount the ramdisk and in the kernel directory do:
make module_install INSTALL_MOD_PATH=Path_to_mounted_ramdisk_root/lib/modules ARCH=arm

Thank you very much!
Also, I've found a GitHub repository https://github.com/cambridgehackers

It seems that they are porting Android 4.1.2_r1 to the Zedboard.

Have you tried it? My 4.2.2 is currently stuck on the bootanimation with something dying all of the time, getting one that works without having to debug it would be wonderful!

My notebook is compiling it at the moment :-).
And in the next few hours :-)

Checking out the source is a bit tricky, but much.

(Sorry, I mean not so tricky)

Unfortunately this is the situation with this version too.
I do not know so much about Android to fix it.

Thank you for the guide. It has been extremely helpful. This is a whole new world to me, but now I can boot Android.

I was previously trying to port Android and I found the cambridgehackers source probably a month ago, but didn't realize till recently it has a wiki also: https://github.com/cambridgehackers/zedboard_manifests/wiki/ZedboardAndr...

Somewhere along the line I also found how he did the kernel:
https://github.com/cambridgehackers/device_xilinx_kernel/wiki/ZedboardKe...

Hope this helps.

Thanks for the links to the wiki pages.
I tried to follow the guide to build Android for the ZedBoard. But I get stuck at 'repo sync'.
I get the following error:
---
maxim@maxim-ubuntu:~/android4$ ./repo sync
Fetching projects: 100% (301/301), done.
Syncing work tree: 98% (295/301) error: revision
refs/tags/android-4.1.2_r1 in platform_system_core not found
---
Does anyone know what I'm doing wrong?

Thanks in advance!

Correction:
make modules_install INSTALL_MOD_PATH=Path_to_mounted_ramdisk_root ARCH=arm

I've updated the elinux wiki page with the keyboard patch. Thanks! I've got Android 2.3 running with keyboard input via USB OTG.
Mouse input and ethernet (wifi via dongle?) doesn't seem to work though.

Does someone tried to get the mouse working on android? I've tried the mouse patch for gingerbread here: http://git.alwaysinnovating.com/cgit.cgi/ai.android/tree/preprocess/ging...
which seems to work succesfully on other boards like beagleboard. But no luck on zedboard, while mouse is running under linux. I think the patch could work, but there is maybe an issue with correctly recognizing mouse device under android? How does android access usb devices? Does anybody know?

I am not sure but perhaps you have to write an input configuration file:
http://source.android.com/tech/input/input-device-configuration-files.html

I have a rooted Gingerbread tablet which supports mouse input, as soon as I have the time I'll test it.

Mhh, using the patch as already mentioned recognizes the mouse device without problems (HID support in Kernel enabled -> recognizing as HID device). And all events are passed through EventHub.cpp and InputReader.cpp but they don't reach the java message queues and therefore no cursor movements are handled...
I'm not sure if mouse parameters were already introduced in idc files from gingerbread since gingerbread has no native mouse support.

Furthermore I had a problem with wrong colors using hdmi output(turquoise android bot). This is because Android uses RGBA instead of BGRA color space in Framebuffer. For this issue I found a fast,dirty solution. Maybe it's useful for someone...

In File
system/core/libpixelflinger/format.cpp Line 26 (//PIXEL_FORMAT_RGBA_8888)
Edit the Line to the following:
{ 4, 32, {{32,24, 8, 0, 16, 8, 24,16 }}, GGL_RGBA }, // PIXEL_FORMAT_RGBA_8888

It's no good patch, but it works. Modifiying SurfaceFilnger.cpp to use the existing BGRA was no help.

I was posting the wrong line, android uses line 27 for hdmi , which has to be
{ 4, 24, {{ 0, 0, 24,16, 16, 8, 8, 0 }}, GGL_RGB }, // PIXEL_FORMAT_RGBX_8888

This guide provides an alternative at how to port Android on zedboard, moreover it explains how to use Internet on Android and connect the board to a host by ADB. http://wpage.unina.it/mario.barbareschi/zedroid/index.html