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 moment1. 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:

zcat image-m001.gz | dd of=/dev/sdX

(where sdX is your SD card device. You’ll need to unmount the SD card, first.)

Installing from Windows

If you’re unfortunate enough to be stuck on Windows, you can download a zip file with the image (M001 or M003). First, unzip the image. Then, the Slatedroid forums have instructions on how to flash the Debian SD card image from Windows. If that doesn’t work, you can try these instructions. The Debian image is the same format as the Froyo image, so the same steps should apply.

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:

  1. FAT16 (for script/ directory)
  2. linux-swap (optional)
  3. 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.

Building On This

All the scripts & patches I used are available on github. There should be enough there for a savvy person to fairly easily build this again from an AOSP release.

The kernel used is “my” copy of Wondermedia’s kernel source release. Hopefully as Alexey’s from-scratch kernel adds more features, it will eventually be able to run Android as well.

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!



  1. I called it a doh! moment []

52 thoughts on “Froyo (Android 2.2) alpha for Eken M001 & M003

  1. Scotty, I don’t think I’d buy one of these tablets just on the basis of this alpha. Maybe if it gets significantly better, but new tablets are coming out every day.

    Also, you should spend cash on food. That stuff’s important. :)

  2. 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

  3. I was able to get this to boot on my tablet I got from Neuros Technology. It’s a Gindart SP56 which is a knockoff of the Eken M002.

  4. if you make for eken m002 version (in one folder script pleaseeeeeeee), i provide the web host (ownership) for download with many backups servers (megaupload premium etc)
    you’re awesome!

  5. 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?

  6. 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

  7. Lets hope the knowledge you gain with this will eventually allow you to port the tablet version of android when 3.0 comes out :D
    Great job man

  8. 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.

  9. 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

  10. 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?

    every thing else works fine.

    regards stef

    • stef – It’s a kernel boot parameter, you should be able to change it in the scriptcmd I think. Post on slatedroid and someone will help you.

      However, if you read this thread: http://www.slatedroid.com/index.php?topic=14187.0 then you’ll find out it doesn’t seem to be actually Android 2.2, it’s 1.6 dressed up to look like 2.2. Eken appear to be lying about the version on the M009… :(

  11. This works great on my M001… right out of the box. I know this message doesn’t add much but I wanted to say “Thanks”.

  12. Hello ,

    I want to use your android installation via SD card (fat+ext2) , for a similar machine VIA WM8505 smartbook (128Mb ram Nand 2GB) : on this board we are able to run Linux bentoo debian live via Sd .

    I have tryed to load your configuration for eken mm01/mm03 but on my device
    u-boot do non load any linux kernel (uzImage.bin different ?) .

    can you help me ?
    Regards

  13. Hey,

    Im using Mac OSX. Where should i enter “zcat image-m001.gz | dd of=/dev/sdX” ? In terminal? In device? And how can i find out what is sd X number?

    Thanks for nice guide

  14. how to install that i tried that slatedroid but when i go i write flashnul -p -k and then that sd thing i choose my sd and i have those all on same folder it just doesnt do anything

  15. we have connected VIA WM8505 smartbook via JTAG/serial cable and can read u-boot log messages : linux shutoff after loading this touchscreen devices (on this HW do not have touchscreen)

    how to edit/modify INIT file ?

    many thanks
    ——————————————————————————–
    usb 1-1: configuration #1 chosen from 1 choice
    root@android:/ # drivers/input/touchscreen/wm9715-api.c 332
    init: vt1613_ref=0
    drivers/input/touchscreen/wm9715-api.c 335
    ———————————————————————————-

  16. Hey Guys! How are you?
    i will reply in spanish and english. My name is Damián from Argentina.
    ——————————————————————
    English:
    —————————————————————–
    It installed perfectly on my M002 Eken. Leave some points for which are still trying:
    * No Market
    * Ignition is much faster than the Android 1.6 version
    * I do not recognize the camera (when you open it restarts the tablet)
    * Does not recognize the USB connection
    * No Sound
    * Full Support Spanish language =)
    * usually reset every 3 or 4 minutes (still do not know why)
    __________________________________________
    Spanish:
    ————————————————————————-
    Se instalo perfecto en mi Eken M002. Dejo algunos puntos para los que aún estan intentando:
    * No tiene Market
    * El encendido es mucho mas rápido que el de la version Android 1.6
    * No me reconoce la Camara (cuando la abres se reinicia)
    * No reconoce el la conexión USB
    * No tiene Sonido
    * Soporte Full de idioma Español
    * Suele reiniciarse cada 3 o 4 minutos (aún no se por qué)

  17. 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.

    P.S. Funny to say, my name is Alexey too.. Be aware, puny WM8505, Russian Alex-bears are coming! :)

    • Hi Alexey/Nomad,

      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.)

      Congrats again. :)

      – Angus

  18. Angus,
    I sent you a letter with modules, patches and description.

    > 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.

    – Angus

  19. 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! ;) )

  20. 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.

  21. please tell me how can i edit froyo.img
    and how to install it in the flash so that sdcard is available to root and install apps
    and i can install the ethernet driver

  22. 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.

    • To be honest, it’s probably not worth bothering with. Noone (including me) really continued development and it was a proof-of-concept, not a full port.

  23. All this and I still don’t understand how to get my M0001 to get out of demo mode.
    Has anyone done the fix and have documented it yet.
    Someone help….
    Cutra

Leave a Reply

Your email address will not be published. Required fields are marked *