Can anyone who has actual experience in Linux kernel development for ARM platforms offer a realistic defense of the status quo other than "companies making the SoCs don't care nor do the device OEMs that are their primary customers and it would cost more to do it right"?<p>I'm not a low level hardware person, but being on the edges of the Android modding community for over a decade now and also spending a lot of time working on the various Pi-likes has left me incredibly frustrated with the state of hardware support.<p>In my mind it is absolutely inexcusable that vendors regularly ship hardware with only binary blob support for ancient kernels, years old versions of Android, etc. with no intent to ever change. To me that's a sign of either pure incompetence or an active desire to do things wrongly. Am I wrong? Is there any reason I shouldn't feel like everyone responsible for those choices should be named and shamed constantly? Basically is there any good excuse other than "it's cheaper this way" and/or defective logic about drivers being "trade secrets" of some form.
ChromeOS/chromebook has been fairly successful at making this happen. Tons of MediaTek and Qualcomm drivers & good support, if you have a chip slightly bigger than a phone chip.<p>Qualcomms slowly turning it around. Their Wi-Fi router situation was reaching a real breaking point, but we are multiple years of folks + them making good progress to getting into grace.<p>The benefit is also higher too, since ChromeOS has a more regular Linux-y environment, and I think even using Wayland now. Where-as on phone, it's like, great, kernel drivers, but the entire upper stack is Android so what the driver needs to prioritize is different.<p>If you read in here, part of the dodge is that rather than a actually upstream, Google maintains their own custom Kernel Module Interface (KMI) in their Android specific "Generic Kernel Image" (GKI) that's different from the actual kernel interface. So instead of vendors targeting upstream, now they're authoring to a Google specific kernel interface - a kernel wrapper - that doesn't exist anywhere else! Google's "Generic Kernel" seems like a fork of upstream that now people develop against. Its hard for me to see this situation as an improvement; it feels like it will insure work doesn't get upstreamed, since work isn't against the kernel but Google's kernel.<p>"Google Kernel Image" (or Android Kernel Image) might have been a better name than Generic Kernel Image.
Reading that again today in the context of "Linux gives up on 6-year LTS kernels, says they’re too much work", Android could have been a prime helper of LTS kernel maintenance.<p><a href="https://news.ycombinator.com/item?id=37591050">https://news.ycombinator.com/item?id=37591050</a>
Here's the up to date documentation
<a href="https://source.android.com/docs/core/architecture/kernel/generic-kernel-image" rel="nofollow noreferrer">https://source.android.com/docs/core/architecture/kernel/gen...</a>