GPL Violations

Allwinner has repeatedly violated the GPL (and by proxy so have most hardware manufacturers and resellers using or selling products based on Allwinner chipsets). Either by not providing (Linux/Android) kernel or u-boot source at all, or by delivering trees with pre-built binaries and no matching source code. They even blatantly use LGPL licensed code in their userspace libraries for media decoding.

Over time, Allwinner has only increased the binary blobs present in their kernel trees, showing clearly that - even though Allwinner in the meantime joined Linaro - it is not progressing. Quite the opposite actually, and one has to worry about what value Linaro membership really has if a member is allowed to behave like this.

Allwinner also joined the Linux Foundation as of June 2015, while compliance issues clearly remain.

= In the linux kernel =

Inclusion of binaries in the kernel source tree are a clear and obvious violation of the license of the linux kernel (GPL).

NAND support
libnand is Allwinners own implementation of a block device on top of a raw NAND flash controller.

On 2015-03-03 Allwinner published A20 NAND driver sources for both linux-3.4 and u-boot on their github account https://github.com/allwinner-zh/

On 2015-04-03 Allwinner pushed an update (8bedbaf85b4318c77ddbf86370da4477fd46778b) to Allwinner's Linux-3.4 tree containing libnand source for A10, A13, A31.

GPL violations in:
 * A23 SDK
 * A80 SDK

USB3.0
libusb300 provides USB3.0 support for the Allwinner A80. This crucial kernel code is of course another GPL violation.

GPL violations in:
 * A80 SDK

Display support
Both DSI and eDP support for A80 are binary blobs, and hdcp support for HDMI is a binary as well.

GPL violations in:
 * A80 SDK

DRAM frequency scaling code
Two binary blobs are provided here as well.

GPL violations in:
 * A23 SDK
 * A80 SDK

libisp
libisp is a driver for the Image signal processor (HawkView ISP), used for camera picture preprocessing and image enhancement.

GPL violations in:
 * A31/A31s SDK
 * A23 SDK
 * A80 SDK

Other camera code
For A80, allwinner introduced 3 further blobs, 2 for MIPICSI, and one for a "Face detector."

GPL violations in:
 * A80 SDK

Touchscreen support
Some binary blobs for touchscreen drivers are present in several SDKs.

GPL violations in:
 * A31/A31a SDK
 * A23 SDK
 * A80 SDK

= U-boot =

Inclusion of binaries in the u-boot source tree are a clear and obvious violation of the license of u-boot (GPL).

Allwinner published the u-boot source dump on Github on 2015.01.15.

DRAM support
Sources for DRAM code seem to be published on github.

NAND support
libnand is Allwinners own implementation of a block device on top of a raw NAND flash controller.

On 2015-03-02 Allwinner published A20 NAND driver sources for u-boot in their bootloader repository. GPL violations in:
 * A23 SDK
 * A31/A31a SDK
 * A80 SDK

Other u-boot issues

 * drivers/video_sunxi/sunxi_v2/de_bsp/hdmi/aw/libhdcp
 * board/sunxi/sun8iw7/box_standby/cpus_pm/cpus_pm_binary.code
 * board/sunxi/sun8iw6/box_standby/cpus_pm/cpus_pm_binary.code
 * tools/gen_check_sum

= CedarX =

While Allwinner has published some code on their | github account, they are not compliant yet. It seems that they feel that producing only code for those codecs that actively used LGPLed symbols is enough, and that they intend to keep the other codes under wraps. This is not how the LGPL works (as it applies to the full and complete binaries produced earlier, and not to some rewritten or restructured code produced today), and Allwinner should by now be very much aware of it.

This is the userspace library that implements media decoding (JPEG, MPEG2/4, h264, VC1, VP6/8, ...). This driver is a mix and match of many bits, including some reference decoders, surrounded by allwinner and hw specific code. But, crucially, several parts of it have been taken straight from libavcodec from the FFMPEG project. This code is LGPL, but since this code has been adapted and included, CedarX is not a dependency and the LGPL applies to the whole library, forcing Allwinner to release the lot.

Also, CedarXPlayerTest has staticly linked in ffmpeg demuxer.