Why can't phones be updated independently of phone manufacturers

How come there hasn’t been standardazation in terms of smartphone kernels,

For example, in an X64 computer, you can install whatever operating system you want. And whatever kernel you want. And the processor will be supported the kernel for more than a Decade.

While on the phone side, even if you can unlock the bootloader, You need the board specific image file with a device specific kernel to boot.

I would Imagine that the device manufacturers would want standardaization in order to simplify the development and maintenance of their Devices.

1 Like

If that one already has your hardware drivers and firmware, yes, kinda the same situation…

x86 is the exception, and that is mostly because of the BIOS. When you look at other platforms like ARM SBCs, you’re the captive of the manufacturer just like with phones. Even the Raspberry Pi - if you have the RPi 3 line you get to upgrade to a bullseye derived system and no further. You can replace it with stock Debian but you lose access to all the specific hardware on the Pi.


Ian

that’s a lie? https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit

Depends on version, I guess 3 and older might be covered already by Debian.

For the most part, it comes down to control of proprietary binaries of the hardware itself.

Also, they are slowly working towards that end goal:

You can get a Generic System Image, allowing you to install just about any variant of Android. What keeps you from installing other operating systems is actually the kernel.

However, they are now working on a GKI, Generic Kernel Image.

Even under the current way of Android development, you can install other operating systems, it just requires that you A. build the kernel with needed features, and B. have all the appropriate binaries and libraries for the running the hardware.

Most phone manufacturers hold little power over the binaries that they have to use for their hardware, as they didn’t invent the hardware. Usually, they are just putting together other peoples hardware into a package. With that, they either cannot release the source code for the binaries, because they are bound by the hardware manufacturers not to, or they will not, to keep an “edge” over the competition.

I once took a motorola flipside phone, and turned it into a debian computer. It worked great as a computer, but all the hardware had driver support in the kernel, and the kernel could support the old version of debian that I was running on it back in 2016.

If you are board, you can read about that here: Using your i927 as a Debian “Chatter” Phone – AlaskaLinuxUser's Scratchpad

Since then, the kernels have gotten more specific for Android’s needs, and don’t have what you need in them for running other OS’s, like GNU Linux, etc… That is why, if you want to install Ubuntu Touch, you have to rebuild the kernel to include support for several things that you use for running a GNU Linux operating system like Ubuntu.

So, recap, and TL;DR
One of the main limiting factors is kernel driver support for hardware.

To make it truly effective, they need to convince hardware manufacturers to build hardware that has a minimum compatibility. Like your desktop computer, if you install an OS that doesn’t have graphics driver support, it still displays, just in some ridiculously low resolution with low color support. All of these phone ones are super specific and don’t work that way. If you don’t have the drivers, they just don’t work at all.

All that said, just having the ability to install/flash any OS you want doesn’t really help, because most desktop OS’s are not very handy as a cell phone.

4 Likes

that’s a lie?

Maybe half lie, half truth. You can install the 64 bit image from scratch – which is a bit wasteful on the RPi 3 with 1G RAM – but you can’t upgrade an existing 32 bit image. The structure of the /boot partition has changed.


Ian

1 Like

Same, I was disappointed too to discover the smartphone/tablet’s world without the same hardware support than PC. On PC there is a lot of hardware manufacturers, and usually everything is ok on a Linux distrib when I was testing them…
Sad to not have this easy way to install everything on our mobiles :frowning: And I know there are mobiles with open hardware, but when I see the price, I always run :s

I would Imagine that the device manufacturers would want standardaization in order to simplify the development and maintenance of their Devices.

“Standardisation” means “upstreaming their changes”.

In an ideal world, the all manufacturers along the supply chain (of the final phone, of the SoC, of all the other hardware components (cellular, WiFi, Bluetooth, GPS, NFC, etc)) would upstream their device drivers into the mainline Linux kernel.

In reality, manufacturers often don’t do this. It requires work and is expensive. And next year they release a new phone anyway, why bother maintaining the old one?
So they just take the current LTS kernel release, slam their changes and device drivers on it, and stop there. As Greg Kroah-Hartman points out, this results in even new phones running old kernels (because of the long development lifecycles of a SoC).

In comparison, Intel is very actively involved in writing device drivers and upstreaming them. That’s why on desktop “it just works”. Because either the manufacturers themselves, or active community members who own the laptop and want to scratch their own itch, have upstreamed drivers into mainline Linux.

Projects like LineageOS may help you run newer Android versions than the manufacturer provided, but they still run on an old kernel. E.g. my OnePlus 5 (released 2017) runs Android 14, but on kernel 4.4!

Thus every SoC will have its own kernel tree that diverged from mainline Linux. So if you are LineageOS (or any other ROM developer) and want to build an OS, you first have to somehow get that tree. Then, if you want security patches, you have to manually backport them from the mainline kernel. And sometimes, if you want to support new Android versions on these old kernels, you even need to backport entire features like eBPF. And then you have to repeat that for every SoC you want to support.

This is also a security risk: you have no idea which, if any, security patches have been backported to your SoC’s kernel.

As others have pointed out, Google is working on things like GSI and GKI to improve the situation.

1 Like

I have a tool for this: divested-mobile/cve_checker: A tool for downloading, checking, and applying (CVE) patches to a repository. - Codeberg.org
Database: kernel_patches/Kernel_CVE_Patch_List.txt at master - divested-mobile/kernel_patches - Codeberg.org
Patches: divested-mobile/kernel_patches: See Kernel_CVE_Patch_List.txt, it is buried in here somewhere - Codeberg.org
Examples in production: Patch Levels - DivestOS Mobile

Example for your OP5: divestos-build/Scripts/LineageOS-20.0/CVE_Patchers/android_kernel_oneplus_msm8998.sh at master - divested-mobile/divestos-build - Codeberg.org

Google doesn’t even use it themself

For modern Pixel’s they are taking some ancient GKI and applying the monthly mandatory patches on top and only occasionally rebasing on a newer GKI.
Despite it being possible to simply just run the latest GKI.

If Google doesn’t want to make a good example, others manufactures won’t care either.

1 Like

You just need to use the right hardware;

or

@AdmFubar
FairPhone does not solve this issue in any way.
I documented this here Is Fairphone really interested in sustainability? - #2 by SkewedZeppelin - The Products - Fairphone Community Forum

Additionally the modem used on the PinePhone runs an ancient Linux 3.18 kernel which has been end of life since May of 2019.
So it too doesn’t solve this issue.

You can update them with more current os with a newer kernel. (Thise does answer your question)

Perhaps you arent asking the right question? What do you mean by a standard kernel? anything standardized means a larger group of hardware will be vulnerable then.

and just for reference…

That’s why I previously said “And I know there are mobiles with open hardware, but when I see the price, I always run :s”

Because OEMs won’t provide addresses for their hardware.

Nobody I know likes Microsoft or Bill Gates for that matter, but at least one thing Microsoft has done right: it used its monopoly power to require OEMs to provide hardware addresses. This gave an opportunity to open source community to develop drivers. That’s why you can install various Linux distros on virtually any PC or laptop.

Google could have done the same, but it chose not to… .

2 Likes