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.

Contents

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.

U-boot

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

The hardware block which accelerates decoding and encoding of video codecs by hardware, called Video Engine, Cedar Engine or also known as VPU, was successfully reversed-engineered to the point of allowing the use of hardware decoding for the most popular video codecs. Find more at the Cedrus project wiki page.

The linux-sunxi community has all the information that is required to create a proper driver that can be mainlined, without the need of the source-code of this CedarX software library, that only has use to:

Comply with the (L)GPL License.

Be used as a source of documentation for the few parts and video codecs still not yet reversed-engineered.

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.

TODO: 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.