Post navigation

Update 25/11: Now supports M003 as well, and it appears the M002 may be able to boot from the M001 build.

Update 27/11: New build posted, now with better functioning Wifi!

Android 2.2 on dirt cheap WM8505 tablets. I said it may not be possible. Since then, I’ve spent hours and hours trying to reverse-engineer the custom calls that the WM8505 Android port uses to set up the correct graphics modes. I still can’t replicate their process successfully.

However, on Sunday I had what my friend Adam has called “an a-ha moment”1. Android’s own porting guide says the graphics mode has to be RGB565 with double-buffering (aka page-flipping), but apparently this is not strictly true.

Within a couple of hours, I had a Froyo home screen up on my M001:

Now, a few busy evenings later, I can offer a hacky alpha for people to check out, and hopefully build upon. However, this is not the same as “the Eken M001 now supports Android 2.2“.

Get to the Android already!

OK, here it is. This build is configured to boot entirely from the SD card, to minimise the chances of bricking a tablet and to make it easy for people to check it out. You should be able to run this without any impact on the OS installed in the tablet.

This image is a dodgy hack, pre-release quality, and totally unsupported, btw. Do not expect very much.

Installing from Linux/OS X

If you have a 2Gb+ SD card, you can download the image (M001 or M003) and use ‘dd’ to copy it over the top of your SD card:

Installing the SD Card manually

If you have a smaller SD card, or you just want to make your own, then I also uploaded tarballs containing the FAT and ext2 partitions for each tablet. You can unpack these onto any SD card, with the following partition & formatting scheme:

FAT16 (for script/ directory)

linux-swap (optional)

ext2 (for root filesystem)

(NB: The partitioning scheme has changed since the first set of posted images.)

First boot

The first boot from the SD card will take a few minutes longer than usual, because the Dalvik VM is generating its cache. I think mine takes around 5 minutes the first time.

Status

The following things work:

Basic Android UI

Touchscreen

Blanking the screen when idle

Swap partition on SD card

The following things should work, please test:

Wifi

SetCPU & other CPU scaling (will need to “root” first)

The following things are untested and probably don’t work:

Audio

Video playback (probably will be choppy)

Battery level tracking

Automatic screen rotation (I hope you like landscape)

However I expect all those things should be fairly easy to implement, except for smooth video playback.

The following things definitely don’t work:

Graphics acceleration, there isn’t even page flipping/double buffering at the moment, let alone OpenGL ES (which there will never be.) It isn’t as painfully slow as I thought it might be, but it definitely isn’t fast. There are also a few artifacts, like lock screen redraw when turning back on. Also, some apps may not work as expected due to the odd graphics mode.

Touchscreen calibration. The device ships with my Eken M001 calibration on it. If mine is no good then you can copy your /data/wmt/touchcal to /etc/touchcal on the SD card to bring it across. But there’s no WM8505 calibration app installed, so someone either needs to port Wondermedia’s or write a new one from scratch.

Suspend/Resume (was broken in 1.6, still broken in 2.2 as it’s a kernel deficiency.)

Installing to the flash in the tablet

At the moment, this only supports booting from SD card. However, there’s no reason why someone clever couldn’t build an alternate version that installs to the tablet’s internal flash – all the required pieces exist AFAIK.

If you do build anything using this, please please please share source/instructions for what you improve. Every “secret” someone hoards away is a step away from making these devices properly usable.

This Froyo build comes unsupported (sorry), and I’m not likely to do a whole lot more on it. However, one thing I do intend to do is get it running on my Eken M003 (my M001 has serious hardware problems so I can’t really use it as a tablet any more.)

However, I really hope that others will jump in, build on it, and make something good. Enjoy!

I really want to thank you for the time you spent on this project so far.
I will folow your progress and hope some day it will work like it should.
unfortuneley i have no skills in developing,but mabey you should ask on the
xda-developers forum.
regards stef

Gus,
This is Very-Very good work.
I now understand about the NAND problem, it explains why the M001 that I saw at a trade show (China rep) who had a M001 running Android 2.1 ment when he said M001 to slow for 2.2 on his unit the 2.1 was very fast .
Anyone understand the differance between 2.1 and 2.2 as far as memory operations?

hi, i got FY706 tablet, and i try to do wrote upstair, and all perfec except when tablet finish to boot and i show first image and loding bar working and donÂ´t finish and restart android and watch the same loading bar and donÂ´t stop to restart and donÂ´t finish to install froyo.
if anyone got the solution please send a mail to me at batone79@hotmail.com
thanks

Marco – 10 hours is not a long time to wait for a response before posting again. Frankly, it’s just annoying. I’ve deleted that follow-up comment because it didn’t add anything to the original.

I’m sure it’s possible to use a 3g modem, but I don’t know how – you’ll need to make sure you have the right kernel module support for your modem, which will depend on what model it is. From there, AFAIK the steps should be the same as for any other install of 2.2. Good luck.

Actually i have charged the Firmware with the sd-card the EKEN-SlateDroid Steel-v2-script and work correctly but i search android 2.2 for eken m001 because i want to charge on browser Adobe flash player for the video or the web site. I search a script to charge with the sd-card and the driver for 3g modem….if is possible… Thanks for all to reply and send the link to download the new system… Thanks for all developers and people to help me. Thanks

Hi i have android 2.2 from eken m009 on my m003 and everything is working ..only need to change the resolution to 800×600 .
Now i have 800×480 so a dobble screen on the bottom.
do you know how to change the resulution?

Gus,
I worked with your alpha release for a while to understand how it works. After some time I realized that you forced gralloc to use 32-bit single-buffer framebuffer and using this knowledge I was able to port vanilla 2.2_r1 to Flytouch/Epad device. With some tweaks I got device working stable including WiFi. There are still lots of problems including video suspend/resume issues, absence of sound and camera support, etc. Also I spent a lot of time working on hardware-accelerated video driver and finally succeeded.
First of all, to enable 16-bit mode you have to ioctl /dev/graphics/fb1 device and turn OFF thing called DIRECTPATH. I don’t have a clue what it is, but it works! After that you can enable 16-bit + double buffer mode even on regular kernel.
For 2d acceleration I wrote own gralloc and copybit modules. Gralloc is using pmem (just as tom3d’s smdk6410 and other grallocs) and copybit is using iocp to kernel driver for blitting and stretching. Unfortunately performance of hardware blitter is almost equal to plain memcpy. I think we have slow RAM bottleneck in here. If you are interested, I can send you sources for gralloc/copybit and patched video drivers to post them to your GIT. It can also happen that results of my research would help Alexey in his kernel code development and after some time we’ll have fully working kernel for Android.

That’s awesome, congratulations! I’d be very excited to see, and happy to post to github, the code for 16bpp/double-buffering/copybit.

Yeah, wow. I captured and then retried every combination of ioctls that I thought I saw WMT’s Android sending, but I obviously never got it right. In the end I was convinced they were mapping an I/O buffer and doing some direct register writes from userspace as well. Very keen to see what it took in the end.

I’m guessing your Flytouch is 256Mb? One of the reasons I never picked this up again in earnest (apart from lack of time) is that on the 128Mb models pages are already being swapped out by the time you boot to the home screen, so you have a very low free memory overhead. I think a 256Mb model could probably be quite usable, though! (I couldn’t quite justify buying yet another cheap tablet.)

> In the end I was convinced they were mapping an I/O buffer and doing some direct register writes from userspace as well
Actually, they do.. Their copybit/libui libs are filled with code that mirrors video driver functions.

> Iâ€™m guessing your Flytouch is 256Mb?
Yep. That’s why Froyo runs normally and have enough memory for complex apps. Of course, there are lots of features missing and it would take a lot of time to make it usable as 1.6.

Hi Nomad, Angus, those patches are interesting, so please put up them online somewhere ;-). I wonder, if they’re suitable for http://groups.google.com/group/vt8500-wm8505-linux-kernel ? If not, what is the best place to discuss Android-related hacking? (I mean, in serious manner, not how it is done on Slatedroid.)

pfalcon – I’m sure Nomad won’t mind if I forward you his email w/ his notes. I won’t have time to merge them into github (or anywhere else) for at least a few days, too much going on right now!

It sounds like we have enough people that it would be useful to create a development-centric WM8505-Android list for collaboration, like the WM8505 kernel list. Maybe use something like librelist instead of Google Groups, this time?

Something I’d also like to do (but haven’t had time) is make the WM8505 Froyo port use repo & the proper AOSP build process. The stuff on github was just a stop-gap so I could distribute -something-, rather than a good end scenario.

(Oh, now I’m getting interested again and it’s getting harder to not waste $100 on a 256Mb WM8505 tablet! Grr! ;) )

Angus, thanks, and thanks for keeping the stuff organized – there’re really lot if fragmented information, I even decided to write down a detailed timeline in my blog, http://pfalcon-oe.blogspot.com/2011/02/wm8505-vt8500-wm85xx-hacking-timeline.html as wade thru various forums, blogs, mailing lists and archives. And I’m glad that your blog is authoritative source, and there’re links with other wm850x projects already.

So well, I meant whether there’s known good place to discuss Android hacks – both development-centred and yet not too big/official (main Android lists unlikely will work for us). And if there’s nothing like that, I guess we can create our own list for now, to not overload vt8500 kernel list and still capture discussion.

Hi im really new at this and I have absolutely no idea on how to do this. If anyone can give me the most basic and idiot-proof way to do this ill be very grateful. I have a Eken M0001 and a Hackintosh PC. Does anyone have any idea on how i can get this done. Like I said I need very very detailed instructions on how to get this done please and thank you.