Free Electrons add mainline Linux kernel support for the A13 Allwinner VPU


Posted today on Free Electrons blog.

19 years old intern in Free Electrons took the Cedrus reverse engineering of Allwinners proprietary CedarX video driver who is around since mid 2014 and made patches for mainline Linux kernel.

I’m sure we use these since they were made first available and they are build in our images, so I’m really puzzled why they have made their way to mainline just now and not earlier?

Isn’t it time Linux-Sunxi community to stop working on kernel fork and start to send all development and patches upstream like Rockchip developers do already for 2 years?

Looking at mainline kernel Rockchip has way better support now than Allwinner although Linux-Sunxi community to seem many times bigger than Rockchip community.

Rockchip devices are in many Chromebooks and Google push them to send all their work upstream to latest kernels.

None of newer Allwinner chips found it’s place in Chromebooks and this is the problem, for Android kernel 3.10 is enough and they will not move from it, neither they learn (or are capable to generate quality code) to upstream all work they do.

This is pitty as since A10/A20 we can’t see anything which to beat Rockchip as productivity.

RK3288 is mainline and although Cortex-A17 still faster than any chip Allwinner have.

Now Rockchip work to release their new super duper RK3399 (2x Cortex-A72 and 4x Cortex-A53) and again they upstream code before even selling the chip.

With two USB3 hosts this chip is good candidate for next OLinuXino 🙂


EDIT1: after the posting there were interesting comments from  Chen-Yu Tsai (a.k.a. wens213) who point me that what Free Electrons did is not simple commit to already existing project but did from scratch v4l2 mem-2-mem codec driver! So I appologise for the underestimated efforts!

EDIT2: I admit that what I wrote about Linux-Sunxi repository was about Kernel 3.4 which I was using two years ago and which was developed “wild west” style. I was assuming as the repositories are still there this continues, but I was wrong!

Our boards are with A10/A13/A20 and have mainline support, so I didn’t followed closely what happens with Linux-Sunxi lately.

Chen-Yu and Siarhei explained that this repo is kept there for historical reasons and now all development is focused to upstream too! Good to know 🙂

At Linux-Sunxi there is very clear table about what is done ( light green) and on what is working (ornge)




Appnotes and Tutorials about Debugging UEFI and Linux Kernel on Intel SoCs with OpenOCD and ARM-USB-OCD-H or ARM-USB-TINY-H


Intel made nice video tutorial how to use OpenOCD and our JTAGs with their SoCs! This explains the frequent purchases they do from many Intel locations all around the world of ARM-USB-TINY-H , ARM-USB-OCD-H and ARM-JTAG-20-10.

Searching bit more there is application note How to setup ARM-USB-OCD-H with Intel Quark SoC X1000 and tutorials about Low-cost UEFI debugging options for Intel and How to debug Linux Kernel on Intel Quark

How to root any Allwinner device running Android and most of the Chinese “Pi” clones which bet on Allwinner Android Linux Kernel


I got this interesting Tweet this morning from Ken Tindell @kentindell

I decided to check what is this about and expand the message … then LMAO!


David Manouchehri ‏@DaveManouchehri found interesting code in the Allwinner GitHub

What does this means? If string “rootmydevice” pass through sunxi_debug process it assigns you root privileges.

My first though was who the hell will use the original extracted from Android Linux Kernel 3.4 made by Allwinner which contains binary blobs, when there is completely Free Open Source alternative developed by Linux-Sunxi community?

…and while thinking on it, scrolling down I found this:


some guy decided to try it on his Orange Pi – you see the result, he got root access to the device by simple echo command!

Damn! and this is put with non-conditional flags i.e. embedded always in the kernel you can’t remove it!

If the guys from Allwinner were smart enough they would at least hide this in the binary blobs, so no one could see it!

This is just yet another example what you are exposed to when use kernels which are with binary blobs inside, not speaking of the security quality of the code which Allwinner developers produce!

Fortunately we use Linux-Sunxi community kernel which is 100% open source and no binary blobs!

(well if you want hardware acceleration GPU drivers are still with binary blobs and no one knows what is inside, but this looks like heap of works and no one is interested to liberate them so far).

here is what OLinuXino Kernel responds on the same command:


What does this means? All devices which run Allwinner Linux Kernel 3.4 are subject to this backdoor security flaw and you can easily gain root access on any on them!

A10, A20 OLinuXino LIME and LIME2 are officially supported in Debian 8.0 Jessie



Debian 8.0 Jessie now supports many Allwinner boards including A10-OLinuXino-LIME, A20-OLinuXino-MICRO, A20-OLinuXino-LIME and A20-OLinuXino-LIME2!

more info you can find on


Another interesting article for using mainline Linux uboot and kernel you can read here

Building Debian Linux image for A20-OLinuXino-LIME2 with mainline kernel 3.19 new tutorial by Remy van Elst



A20 is now in mainline which means you can build mainline kernel and it will work on A20-OLinuxino-LIME2.

Remy made blog post how to build Debian Linux with latest Kernel 3.19 from scratch – you can read how he did this here.



I was trying to build my first Linux kernel following the instructions Raivis posted on OLinuXino Yahoo group , but being total linux noob there were always issues of this or that package missing during the build process. My OS is Ubuntu 11.10 32bit and there were lot of packages missing.

Trygve made some more patches and posted them on Github which bring me much further but still the kernel build was stopping at sparse compilation complaining for some files, then I found and after downloading VJ package and executing $ ./ ~/opt/ltib the necassary paths were set and LTIB finally built successfully 🙂

Now have to read the documentation 🙂 and try experimenting with tweaking the kernel and experiment with building images, this is not lighting fast process and takes about 45 minutes.