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 (March 2014) 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). Please note that different SoC variants had different SDK code drops from Allwinner, and their GPL license compliance status may vary.

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.

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.