GPL Violations

Allwinner has repeatedly violated the GPL, (and by proxy so are 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 LGPLed license 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.

= 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.

We have a very old source tree for this, but all newer versions have only been included as binaries in both kernel and u-boot SDK trees.

GPL violations in:
 * A20 SDK
 * A31/A31s SDK
 * 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
Allwinner's u-boot repository contains libdram implementation only in binary form:
 * arch/arm/cpu/armv7/sun8iw8/dram/libdram
 * arch/arm/cpu/armv7/sun8iw7/dram/libdram
 * arch/arm/cpu/armv7/sun8iw6/dram/libdram-pad
 * arch/arm/cpu/armv7/sun8iw6/dram/libdram-homlet
 * arch/arm/cpu/armv7/sun8iw5/dram/libdram
 * arch/arm/cpu/armv7/sun9iw1/dram/libdram

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

We have a very old source tree for this, but all newer versions have only been included as binaries in both kernel and u-boot SDK trees.

GPL violations in:
 * A20 SDK
 * A31/A31a SDK
 * A23 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 =

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.