Oliver Schinagl, a member of linux-sunxi community working on open source kernel and bootloader for AllWinner SoCs, has given a presentation of the community at FOSDEM 2014 to give an overview, and show what progress has been made to date. I’ll write a summary in this post, but if you want to watch the video and/or access the slides scroll down at the bottom of the post.
- Founded in 2007 in Zhuhai, Chiang now with 550 employees including 450+ engineers
- 15% market share in 2013 for tablet SoCs, only behind Apple.
- Products: F-series SoC (2010), A10 (2011), A13, A10s (2012), and A20 (2013). (cnsoft He skipped A31(s) and A80 here as they are not really supported by the community).
- They list “Open Source Source” and “GPLv3” in their marketing materials although they clearly violate GPL in some part of the code. Progress is slowly being made however.
Sunxi community was born out of arm-netbook community working on EOMA68 boards in order to specifically target AllWinner SoCs, and now count over 600 mailing list subscribers (Google Group), 130 in IRC (#linux-sunxi), but only around 20 active developers.
Oliver then talks about the progress and status of different part of the software:
- U-boot (lichee) NAND-only released by AllWinner, but requiring boot0/boot1 that were binary only until a source code release recently.
- U-boot (sunxi) MMC / SDCard only, developed by the community, and preferred bootloader as it boots from SD card.
- Initial work on Coreboot
- Operating Systems – Linux, FreeBSD, Tizen, Firefox OS and Minix (Interest only)
- Fedora 18/19 maintained by a Red Hat employee in his spare time, and the best supported distro right now according to Oliver
- Others – Linaro ALIP, Arch / Gentoo, Debian / (X)Ubuntu, (Xen).
Interestingly one important OS is missing: Android. The main reason is because there’s no community around Android with sunxi, but there’s still minimal work being done on Replicant/CyanogenMod, and AllWinner SDK for Android has been released.
He then goes through the different Linux kernel and branches on linux-sunxi github repo:
- Lichee 3.0, 3.3 and 3.4 (with some 3.8 backport) from AllWinner. Some code in 3.4 version comes from sunxi linux work
- Sunxi 3.0 (deprecated), 3.4 (maintenance), experimental 3.10 (Long term support kernel, likely to be used by Android 5.0, with AllWinner SoC support in mainline, and features like KVM and CMA),
- Mainline kernel with two branches: sunxi-devel (latest code) and sunxi-next (with patches accepted into mainline). All mainline work has been done by the community, with no involvement from AllWinner. Currently CPU, interrupts, Timers, RTC, Watchdog (also used for reset), Ethernet and I2C are working, and you can boot a headless server. More info @ http://linux-sunxi.org/Linux_mainlining_effort.
He also talked of FEX files, the configuration files for AllWinner SoCs, that have a functionality similar to device tree, and in kernel 3.10 both device tree and fex files are supported. There’s also a tool called sunxi-babelfish that converts fex files into device tree files.
That’s all of the open source software part of the talk, and next is a list of hardware for playing around with AllWinner SoCs:
- Olimex LIME board, fully open source hardware
- Cubieboard 1 & 2, with schematics (PDF), but not all files to be fully open source hardware
- EOMA68 / Improv. Improv, the baseboard, is open source hardware, but EOMA68 is not yet, although it should become open source hardware once the company (QiMod) gets back its initial investment
- If you don’t have one of the three development platform above, you can also use one of the many tablets, media players, or HDMI TV stick available on the market.
AllWinner based device are unbrickable, as they can always to booted from a micro SD or SD card, and if no SD card is available, you can use FEL-mode to access the board via USB.
So all in all there’s currently good support for sun4i (A10), sun5i (A10s and A13) and sun7i (A20) SoCs, and it could even become FSF endorsable, but nothing is perfect, as the community is not really involved in A31, A31s and A80 development as these are based on PowerVR GPU, with no hope of ever getting open source GPU drivers in Linux, and there are binary blobs with Mali GPU (3D), GPS, and touchscreen drivers, and the Boot ROM (BROM) and CedarX libraries (APU/VPU) are only available in binary format. There’s however work on open source Mali GPU driver (Limare) which could be usable this year, and there’s reverse engineering work being done for video decoding.
Oliver shows a demo of hardware video playback with a 100% open source implementation, capable of even playing files not supporting by the official binary only version, and gets a around of applause when he announces the complete presentation was done on an AllWinner board.
The talks ends with detailing the different ways you can contribute to the community: editing the Wiki, adding new supported devices, helping porting AOSP, CyanogenMod, Ubuntu Touch or Firefox OS, and submitting kernel patches.
The presentation slides are available here.