Thursday, July 19, 2012

Working Mali X11 driver on MK802 (A10)

I've managed to get the Mali X11 driver working on my AllWinner A10 MK802 device in Linux.

I'm using Linaro's 12.06 armhf build as a base image, and then using the linux-allwinner kernel sources, and some info from Rhombus Tech, combined with a bit of hacking around myself.

I've put the details here:

They're a bit long-winded at the moment, but once I've evened things out, I'll make a fresh SD card image.


  1. Awesome! Can't wait to load it up. Looking forward to it!
    Thank you

  2. Toby,

    do you have the .config somewhere and the date of the checkout?

    I am trying to re-compile your kernel (t2+) in order to get g_ether to work. The current head doesn't seem to work anymore. (see

    BTW: You might want to enable tty's to work around this bug:

    ~# zgrep -i "pty" /proc/config.gz

  3. Hi,
    thanks for the post -- I did have UNIX98 PTYs enabled, but not the legacy ones. I'll enable them now.

    I'm uploading the config now, to

    This was compiled from commit 23e5456879db0 (Jul 10)

    If you work out how to enable the usb gadget feature properly, I'd appreciate hearing it, to roll back into my kernels.

  4. Toby,

    Excellent work - your image loads, and is pretty responsive (considering the hardware).

    But would you be able to point me towards the 3.0.36-t1+ headers? I'd really like to compile a module for a USB Ethernet adapter, but have been running into trouble without the proper source files.


  5. Hi Sam,
    I'm not building separate kernel and headers packages; you'll need to grab the kernel config (above) and build the whole shebang.

  6. Hi Toby,
    Just want to say thanks for all your great work on this armhf Ubuntu image. I have it working on both a 1GB MK802 and a 7" tablet with the A10 and 1GB ram. For the tablet, the only thing I had to do to boot your image was to change the evb.bin and script.bin files to the ones included with the tablet's Android distribution!
    BTW you may be wondering why you had to disable the cpufreq code in your kernel build: it's because the MK802 doesn't have an AXP209 power controller and so basically you can't switch frequencies. If you have the cpufreq code enabled, the Linux kernel will oops during boot on the MK802.