Most smartphones use chips with the architecture Advanced RISC Machines, or ARM for short. ARM issues licenses to the chip manufacturers who produce chips based on this architecture. In order to address the chipset in Android smartphones, a hardware-specific version of the Linux kernel is used.
Open Source & Proprietary Source Code
Linux or the Linux kernel is the most widely used kernel. This is mainly due to the fact that it is open source on the one hand and on the other hand can be adapted comparatively easily to the respective devices. Many servers but also small and Internet-of-Things devices are operated with Linux or kernels based on it. This Linux kernel is also the basis of the Android kernel, which is adapted to the respective system and modified to such an extent that it fits exactly to the respective chipset. These changes are not integrated into Linux, but adapted once by the manufacturer for the respective device and chipset and then usually left as is. The multitude of different chipsets as well as the rapid development of new chips and devices and the associated new development and adaptation of the software requires a high effort, which makes the maintenance and further development of older devices and their software unattractive for many manufacturers.
That’s why there are hardly any Android-based smartphones that have undergone a kernel upgrade, with the exception of Android One and Pixel devices. Here Google takes care of the kernel updates. In contrast, many Android smartphones still run with the Linux kernel version 3.18.y, for which support has officially expired in 2017. For custom ROMs, security updates and features can be backported with modified kernels. In June 2020, support for the entire Linux kernel version 3.x.y. has officially expired. In fact, it is not even there on the release information page for Kernel.org.
From this point of view, the upgrade to the Linux kernel version 4.9 of the Xiaomi Redmi Note 4X by the Custom ROM community seems to be especially worth mentioning; the original firmware has been left at version 3.18.y. By the official kernel update of the Xiaomi Mi A1, an Android One device with the same chipset, to 4.9.y., it was successfully ported to the Redmi Note 4X. However, even these modified kernel versions run mainly on custom ROMs and cannot be installed without unlocked bootloader. The fact that the Android Verified Boot and Android Secure Boot processes can not be completed successfully proves the importance of the locked bootloader.
Besides such ports there are also the reverse cases where community ROM developers contribute to improving security in the Android Open Source Project, which then benefits all vendors. A concrete example is Daniel Micay, the developer of the GrapheneOS Custom ROM, which aims to make Google pixel devices run completely without Google code. In 2016, he has contributed code to the AOSP to disable a developer tool by default, which is integrated in Android from Nougat on. This is one example of many in which the community developers and the Android Open Source Project work together and benefit from each other.
In August 2019, Xiaomi devices showed that proprietary source codes from manufacturers can also cause problems: The manufacturer is actually known for its cooperation with the custom ROM developers. However, even the source codes published by Xiaomi are not without proprietary code. This code is used as a vendor device tree to compile custom ROMs, it is hosted on platforms like Github for this purpose. LineageOS used the vendor device trees hosted by TheMuppets, which contained this proprietary code as BLOB. The manufacturer of the face recognition software used for FaceUnlock filed a copyright complaint with Github and had this code blocked. As a result, almost all Xiaomi devices were initially no longer supported by LineageOS. This could be circumvented by the developer physically reading out and saving the source code of the respective device. However, by far not all developers have access to every device for which they develop software.
Qualcomm vs MediaTek
Qualcomm and MediaTek are currently the two largest manufacturers of smartphone overlapping chipsets for Android devices. Qualcomm’s chipsets are best supported by the custom ROM community, primarily because the CodeAurora forum provides source code and drivers for Qualcomm’s ARM chipsets through the open source platform. Other manufacturers such as Exynos from Samsung, HISillicon from Huawei or MediaTek practice a rather contrary policy if they use modified Linux kernels and do not make them publicly available.
Although the Linux Foundation requires in its license that its source code may be used and modified, provided that it is further published and made available to other users, this is not always done to the required extent with some manufacturers. Above all the manufacturer MediaTek is, which concerns the publication of the Kernel source code, particularly with the Fairphone 1 negatively noticed. Which actually violates §2. b of the GPL v2 license of the Linux kernel on which the Android kernels are based.
The fact that for each device and its chipset all parts have to be re-coordinated means a high hurdle for updates, especially when it comes to complete Android versions. This costs a lot of work and a lot of money, which the manufacturers like to save, since they have already made a maximum profit with the sale of the device. Any work they invest in addition to that reduces this.
Another example of the lack of updates and low transparency can be found in the Qualcomm Snapdragon 800/801 series, which was used in the Fairphone 2, among others, but is also found in many other high-end smartphones. For the release of Android 7, Sony tried to develop an update for the Z3 equipped with this chip, but failed because of the CDD for Nougat. When asked for reasons for the failure, Google first pointed to Sony, then Sony to Qualcomm and Qualcomm in turn pointed to Google and the smartphone manufacturers. The various Android communities considered either a lack of graphics driver support or a lack of hardware-based encryption support for the chipset to be the cause. Nevertheless, there were versions of Nougat developed by the community for devices with the same chipset and Fairphone, after much effort and as the only manufacturer, managed to provide Nougat for the device.
All these processes show how much interaction is needed to make an Android update possible, from chipset manufacturers and device manufacturers to Google and its CDD. Even if chip manufacturers discontinue support for their chipsets, this reduces the chances of an update, as device manufacturers will then have to ensure compliance with Google’s requirements.