Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Hi.

 

The Tesla topic from the latest WAN show and how the supporting the different cars/hardware/software version is difficult, it was compared to Android and how it is "difficult" for them it is to support all the brands of the phones. I think it has to do with the architecture of both hardware and software levels and the "Modularity+Weak links+Redundancy+Diversity" is a big part of it. So if we compare Android to Windows, it seems like Microsoft and vendors have established a set of hardware and software standards which helps them with compatibility. I am pretty sure that Windows 11 will run fine on my 7 years old AIO kitchen PC, but my Pixel 2 is out of support already.

 

Anyway, people who are involved in the open source Android versions or know enough, what are the differences between the builds for each vendor? is it basically packing drivers for each device or are there different OS features that have dependencies and need to be "fixed"? What stops Android from being more universal compared to Windows? (Almost) no one caring about modularity is probably one of them. However i would really like to know more.

 

Thanks!

 

Link to post
Share on other sites

It's about driver support from the chip makers really.

 

Once that stops you see most phones using said chipset stop getting updates.

 

Also phones are seen as easily disposable things and thus are treated that way in terms of software updates.

 

My one plus one is still going strong and has android 11 available for it by people in the community but that is rare.

Link to post
Share on other sites

Quite simple, everything that isn't a brand new flagship doesn't justify any SW development (hence you see plenty of "new" old/cheaper models being sold with outdated Android .

Once the costumer has bought it their is no money to be made for the manufactor hence no update.

 

Same bigger brands to support to some extent but for everything affordable it's pretty much a bust either right out of the shop or after 2 years (at which point most of these units will be replaced when renewing contracts).

 

Link to post
Share on other sites
47 minutes ago, jaslion said:

It's about driver support from the chip makers really.

Let me pause here - what does make it impossible for the driver written for Android 10 to be used for Android 11? Is it the chip manufacturers that lock it on the driver level to the specific os/kernel version, or is it Android that changes the kernel every release and breaks the compatibility?

Link to post
Share on other sites
13 minutes ago, tridy said:

Let me pause here - what does make it impossible for the driver written for Android 10 to be used for Android 11? Is it the chip manufacturers that lock it on the driver level to the specific os/kernel version, or is it Android that changes the kernel every release and breaks the compatibility?

Nothing really. People make long unsupported chips work on new versions. Depends on the chips mediatek stuff is pretty horrible in this regard.

 

Basically comes down to putting extra work into a device that is already sold. That and updates aren't a one fit all because every phone has weird special features with a special skin with special sauce. So yeah literally made to work in the moment but not after.

Link to post
Share on other sites
24 minutes ago, tridy said:

Let me pause here - what does make it impossible for the driver written for Android 10 to be used for Android 11?

Nothing, but thats not the issue. Its support from the hardware manufacturer that needs to write the driver.

Lets take for example your 7 year old AIO computer on windows 11.

It might run the basic stuff, but the GPU might not be supported. Ethernet wont work or the wifi wont install,

just like alot of hardware wouldnt work on windows 10 at the start.

Later that got resolved but not everything.

 

For a phone that problem is bigger as each component is different from others so there is no way to write a "catch all" driver.

Just look at ROM releases for older phones on XDA, while they will release a ROM for older phones usually there will be a long list

of device specific thing that wont work.

 

It mostly comes down to companies just not doing it as it makes no sense to them aka no monetary benefit.

You buying a new phone is much better for them.

Same goes for PC, drivers for their devices will stop the year its released. Just a few release drivers for newer OS'es.

The rest is just a tossup if the older driver will still work.

 

In practice this is just 1 version apart where it will most likely work. (W7 drivers will work most of the time on W10)

 

Link to post
Share on other sites

Android is difficult to support across multiple devices because of

 

  • Google's Choice to Develop around around the idea that a image should be specific to each device. Compared to Linux where drivers are integrated in the kernel or come as modular add-ons utilizing dkms. So for each Android Version and Each Device, a build environment needs specifically setup for that device and individually compiled for that device. Google tried to take a step back and move backwards towards Generic System Images, but it's been a crap show.
  • Most Drivers are proprietary and minimally supported by the developers. Now take say Samsung and they decide that a additional feature should be modified in a specific piece of hardware, now we have 2 drivers for the same hardware that are not directly compatible.
  • Many Phone Manufacturers want full control over the devices, modifications and planned obsolescence. Some Manufacturers end up in this path anyways due to contracts with phone carriers. They can achieve this by keeping the code base and update cycle locked down to whatever they want, while intentionally breaking general outside compatibility and locking down the device.

 

2 hours ago, tridy said:

So if we compare Android to Windows, it seems like Microsoft and vendors have established a set of hardware and software standards which helps them with compatibility. I am pretty sure that Windows 11 will run fine on my 7 years old AIO kitchen PC, but my Pixel 2 is out of support already.

Not really. If we compare Linux to Windows instead of Android to Windows for a second, you will find that the way hardware support is handled is fairly similar. Linux and Windows will have there various drivers provided by manufacturers, in the meantime both platforms are also usually developing generic compatibility drivers to help maintain compatibility in the future. Android could have had the same compatibility, it was just pulled away and forgotten.

Link to post
Share on other sites

it comes down to software and hardware combinations.

Android covers so many chipsets, os versions, drivers, and skins that supporting every device from every manufacturer would be nigh impossible, 

please, pm me if you would like to contribute to my gpu bios database (includes overclocking bios, stock bios, and upgrades to gpus via modding)

Bios database

My beautiful, but not that powerful, main PC:

prior build:

Spoiler

 

 

Link to post
Share on other sites
4 hours ago, tridy said:

Hi.

 

The Tesla topic from the latest WAN show and how the supporting the different cars/hardware/software version is difficult, it was compared to Android and how it is "difficult" for them it is to support all the brands of the phones. I think it has to do with the architecture of both hardware and software levels and the "Modularity+Weak links+Redundancy+Diversity" is a big part of it. So if we compare Android to Windows, it seems like Microsoft and vendors have established a set of hardware and software standards which helps them with compatibility. I am pretty sure that Windows 11 will run fine on my 7 years old AIO kitchen PC, but my Pixel 2 is out of support already.

 

Anyway, people who are involved in the open source Android versions or know enough, what are the differences between the builds for each vendor? is it basically packing drivers for each device or are there different OS features that have dependencies and need to be "fixed"? What stops Android from being more universal compared to Windows? (Almost) no one caring about modularity is probably one of them. However i would really like to know more.

 

Thanks!

 

@HelpfulTechWizardnot exactly true:

 

It's about how things are handled:

Microsoft makes windows, and deploys update directly.  No OEM gets customized windows or updates.  (Adding apps?  Sure, but you can always just wipe it and reinstall windows vanilla.)

Android is "made" by Google, but then the core is shipped off to Samsung, Motorola, etc. etc. and THOSE COMPANIES make Android 10 / 11 / 12 for their phones.

Problem is:  After I bought my Galaxy?  Samsung basically gets nothing from me.  So any development they do after purchase is on their own dime.  So after a couple years?  They're losing money on development of new software versions.  (This is also why Apple seems to have longer use life, because they don't have to worry about someone else mucking with the OS)

 

Unless this model of distribution changes, it's going to keep happening.

Link to post
Share on other sites

It was not the best comparison, it’s better compared to console games versus PC ports in the context of their audience.

The reason some games run extremely well on a console that on paper and even in synthetic benchmarks is absolutely outclassed and shouldn’t even be able to run many games, is that the game is designed super carefully around the specific hardware of the console.

Thats why GTA V runs on an Xbox 360, which even with its graphical cut down shouldn’t even be able to dream of running on what’s basically a triple core PowerPC housefire and a Radeon x1650 with 512mb of shared ddr3

But even a similar game of its time, GTA IV, ram smooth as silk and looked great, and the reason why it runs like ass on PC is that entire game was designed from its very core to run on specifically the Xbox 360’s hardware.

When you have something designed to run on a single specific system, you don’t need to worry about compatibility with anything else.

 

In comparison development for PC means your game needs to be compatible with and run on hundreds of thousands of different part combinations. Hardware that’s a decade old and hardware that’s brand new, being prepared for hardware that doesn’t even exist yet. Your game can’t just not be compatible with someone’s other x86 processor, it can’t just not work with a certain type of memory, it has to function with a large variety of video cards and integrated graphics and ideally have at least some optimization for each type of video processing.

 

 

That’s the comparison they were trying to make there. This ties back to the Android versus iOS thing in that iOS is designed only for Apple hardware, it’s never going to be on anything else, so it’s easy to optimize how it functions. That’s why the equivalent Apple phone tends to have significantly lesser hardware specs, because it’s OS is perfectly designed around its hardware.

Then Android is sort of a base framework for each phone company to tailor to their needs, but since this base operating system has to be compatible with every android device out there, there’s a lot more going on, it gets a little bloated here and there in order to keep it compatible with everything. And then the phone maker tacks on what their modifications to the base OS are, ideally with not taking away anything that would make it less globally compatible with other software or even other phones connectivity.

Tesla is in a similar situation to Apple where their software is optimized around Tesla hardware. It’s only meant to run on a Tesla, it won’t run on anything else particularly well, and in order to get it to run on anything else the fairly streamlined and hardware optimized design won’t persist with it.

 

The idea is taking iOS and putting it on an android phone. It’s been done, you could do it, now make that one hacked together version of iOS run on every current mainstream android phone out of the box.

Is that iOS version for these phones still comparable to its Apple hardware original?

Link to post
Share on other sites

Maybe I have been lucky but for about 11 years now I haven't had a single problem with missing drivers. With the older scanners i used VueScan and that is one really good product. So even if we say that Windows is not perfect, they are still doing a very good job. I am pretty sure that any mouse, keyboard, video card and screen will work on the basic level, not highest resolution, no media buttons, no extra keys but it will work and will be usable to some extent. As it was mentioned, the producers of the phones might not be interested in that but Google has a lot to control there. And as i see, there are no real standards there and no one even bothers creating some sort of generic abstractions. I thought Google would be better than that, at least in a long run. And isn't it nice when they lock the bootloaders?

Link to post
Share on other sites
5 hours ago, 8tg said:

It was not the best comparison, it’s better compared to console games versus PC ports in the context of their audience.

The reason some games run extremely well on a console that on paper and even in synthetic benchmarks is absolutely outclassed and shouldn’t even be able to run many games, is that the game is designed super carefully around the specific hardware of the console.

Thats why GTA V runs on an Xbox 360, which even with its graphical cut down shouldn’t even be able to dream of running on what’s basically a triple core PowerPC housefire and a Radeon x1650 with 512mb of shared ddr3

But even a similar game of its time, GTA IV, ram smooth as silk and looked great, and the reason why it runs like ass on PC is that entire game was designed from its very core to run on specifically the Xbox 360’s hardware.

I think that it was like that before but now Microsoft is doing a lot of unification and there are many interesting things happening. I think even at this point it is much easier to do the game and target both Windows and XBOX. XBOX OS itself might be very well stripped down and optimized for gaming but I am pretty sure they could fairly easy build XBOX OS to work on other hardware as well.

Link to post
Share on other sites
8 hours ago, tkitch said:

Problem is:  After I bought my Galaxy?  Samsung basically gets nothing from me.  So any development they do after purchase is on their own dime.  So after a couple years?  They're losing money on development of new software versions.

The same is true for the most of the hardware, isn't it?

 

I am not asking them to do the development for the new software. I am asking so that others could do the development for their device without voodoo magic.

Link to post
Share on other sites
12 hours ago, tridy said:

The same is true for the most of the hardware, isn't it?

 

I am not asking them to do the development for the new software. I am asking so that others could do the development for their device without voodoo magic.

Yes and no.  

Most companies only have to do 'limited' support in comparison.  

GPU Companies make drivers, but it also is for the "new" products.  They also cut off the old stuff sooner or later.

Motherboard companies don't have to make drivers for stuff.  The manufs handle that, the MB manuf only really has to do BIOS which is an incremental upgrade, not a full software generation update.  

A company can make a "new" driver for something by updating the old one.  Android 10 to 11 is not an "update" that's a whole new OS build you have to setup for a device.  Very different story.

Link to post
Share on other sites
On 6/20/2021 at 4:23 AM, jaslion said:

It's about driver support from the chip makers really.

 

Once that stops you see most phones using said chipset stop getting updates.

 

Also phones are seen as easily disposable things and thus are treated that way in terms of software updates.

 

My one plus one is still going strong and has android 11 available for it by people in the community but that is rare.

Neither Android nor iOS can compare to how long PCs are typically supported. I can certainly get Windows 10 running on a Core 2 Duo desktop (and even laptops), while phones released a number of years later (with some, about 2015-ish, actually being faster than said C2D machines) are getting next to nothing at this time. 
 

Even Google themselves killed off security patches for the original Pixel after a mere three years.

 

This is an aspect I legitimately hate about Android (despite it’s flexibility and host of other features I like). Compared to the PC platform, manufacturers have too much power over Android, distributing the OS themselves to their devices instead of Google.

 

However, I don’t see this problem ever being resolved. Fragmentation and long term software support have been thorns since Android’s beginning. Were Google try to strong arm manufacturers into allowing devices to receive updates directly from Google, manufacturers are in the position (especially Samsung, which has their own app store) to tell Google to go to h3ll. 

The pursuit of knowledge for the sake of knowledge.

Forever in search of my reason to exist.

Link to post
Share on other sites
28 minutes ago, Zodiark1593 said:

Neither Android nor iOS can compare to how long PCs are typically supported. I can certainly get Windows 10 running on a Core 2 Duo desktop (and even laptops), while phones released a number of years later (with some, about 2015-ish, actually being faster than said C2D machines) are getting next to nothing at this time. 
 

Even Google themselves killed off security patches for the original Pixel after a mere three years.

 

This is an aspect I legitimately hate about Android (despite it’s flexibility and host of other features I like). Compared to the PC platform, manufacturers have too much power over Android, distributing the OS themselves to their devices instead of Google.

 

However, I don’t see this problem ever being resolved. Fragmentation and long term software support have been thorns since Android’s beginning. Were Google try to strong arm manufacturers into allowing devices to receive updates directly from Google, manufacturers are in the position (especially Samsung, which has their own app store) to tell Google to go to h3ll. 

Google is pushing for a more windows style one update for all system but it is a very uphill battle.

 

All google really has is the main branch of android development but as huawei and amazon have proven they don't care.

Link to post
Share on other sites

There's relatively few models of Apple devices vs hundreds of Android devices 

Phone 1 (Daily Driver): Samsung Galaxy Z Fold2 5G

Phone 2 (Work): Samsung Galaxy S21 Ultra 5G 256gb

Laptop 1 (Production): 16" MBP2019, i7, 5500M, 32GB DDR4, 2TB SSD

Laptop 2 (Gaming): Toshiba Qosmio X875, i7 3630QM, GTX 670M, 16GB DDR3

Link to post
Share on other sites
On 10/8/2020 at 1:49 PM, LAwLz said:

There are several reasons.

 

1) Unstable ABI and lack of code portability

This one partially has to do with why you can't boot a generic image but it has more to do with why it takes so long to get updates.

You might have heard of "stable ABI" before. GNU/Linux do not have a stable ABI. What this means is that the way drivers integrate into the kernel can (and usually does) change from version to version. So if you write a driver for one version of Android, it might not work on the next version, and has to be partially rewritten. 

 

Project Treble fixed this to some degree by offering a stable ABI (which is to say, Google limited themselves with what changes they can make to the driver interfaces to ensure that one driver can work on multiple versions). Windows has a very stable ABI. That's why you can still sometimes install XP drivers on Windows 10. Here is an explanation on why GNU/Linux does not have a stable ABI.

 

 

2) Device Tree and hardware specific code

This has to do with how ARM works. ARM devices are typically not designed to be able to detect which hardware is present on the device when they boot. You therefore have to code exactly which hardware is present and pass that info to the kernel with a "device tree". 

 

It is possible to design a device to look for hardware automatically at boot, if it's compliant with what's called ARM "Server Base Boot Requirements". Here is a great article about how it is being implemented in the Raspberry Pi.

Here is a page from ARM about it, and it goes over some of the things that needs to be done. As you can probably see, it requires collaboration from OS vendors, hardware vendors and OEMs, which is one of the reasons why it might be pretty hard to get working on phones.

Why does those articles mention "servers"? Because getting consumer electronics vendors like Qualcomm and Samsung to work with each other, to make their devices last longer so fewer devices are sold, is not exactly an easy task. It matters a lot for server vendors trying to sell to enterprise customers. So ARM has basically went "okay, we'll just focus on servers then". There is nothing technical preventing server base boot from working on phones though, if everyone worked together. Your device would still need some specific drivers though to function 100%. That brings me to...

 

 

3) Drivers

How do you install drivers on a phone? Usually, the drivers are baked into the Linux kernel on Android phones, so they are updated only when the OS is updated. Google has solved this limitation however by creating and implementing a way for drivers to be updated through the Play Store!

Here is an article about how it's now supported by some Snapdragons and some Mali GPUs. So this issue is slowly being solved, but I am not sure if drivers other than GPU drivers can be updated yet.

 

 

A side note about updates.

A new project called "project mainline" will help Android phones get updates quicker. What Google is doing is decoupling a lot of system modules from the OS itself and making them upgradable through the Play Store.

When it was first announced (Android 10) it was 12 different modules such as permission controller and media framework, and with Android 11 they are extending it to 20 modules.

These modules are delivered and updated with a new file format called APEX.

The reason why I bring this up is because APEX could be used for more than just updating some Google mandated core components. Google might be planning on making a generic Android OS, and then have vendors install their specific code through APEX modules.

 

 

 

 

 

Then there are a ton of other reasons why booting a generic OS image on a phone isn't possible today. Google is working on solving a lot of that but it takes time.

Please note that the article I just linked about AOSP being able to boot from mainline Linux 5.9 with just one patch has this rather big caveat:

That means that it only works on devices where the device makers have submitted drivers to the Linux kernel team and have them merged into the master branch. That's not an easy feat and I doubt many devices supports it. But with APEX modules that might not be a problem in the future!

  

 

Link to post
Share on other sites
On 6/21/2021 at 10:31 PM, LAwLz said:

Then there are a ton of other reasons why booting a generic OS image on a phone isn't possible today. Google is working on solving a lot of that but it takes time.

 

On 6/21/2021 at 10:31 PM, LAwLz said:

the drivers are baked into the Linux kernel on Android phones

 

On 6/21/2021 at 10:31 PM, LAwLz said:

it requires collaboration from OS vendors, hardware vendors and OEMs, which is one of the reasons why it might be pretty hard to get working on phones.

 

that looks like a mess to me, something that was not put too much thought into from the beginning, so Google just made it work in the beginning and now they are trying to fix it.

 

is it just me or is baking drivers into kernels (regardless of the OS) is not a good idea?

Link to post
Share on other sites
1 hour ago, tridy said:

that looks like a mess to me, something that was not put too much thought into from the beginning, so Google just made it work in the beginning and now they are trying to fix it.

 

is it just me or is baking drivers into kernels (regardless of the OS) is not a good idea?

It is a mess, but Google didn't really have much choice since Android is based on Linux and that's kind of how the Linux kernel works.

Drivers are loaded as kernel modules. This has not really been an issue before because most companies write decent drivers that gets submitted to the main branch of Linux. That is to say, the Linux kernel has a ton of drivers baked into it.

 

The problem we encounter with SoCs from for example Qualcomm is that they do not submit their drivers to the Linux kernel.

As a result, Qualcomm takes the Linux source code, add their own drivers and then send that to the device manufacturers. Device manufacturers becomes completely dependent on Qualcomm as a result, which Qualcomm of course likes. If Qualcomm were submitting their drivers to the Linux kernel and they were approved, Qualcomm would lose some control and they don't want that.

 

The problem isn't baking drivers into the kernel because that's kind of necessary, regardless of if you do it with kernel modules like in Linux or through the Windows Driver Model, which also runs in kernel space but isn't a kernel module. You need drivers to run in kernel space.

The problem we are having with Qualcomm and other SoC vendors is that they have positioned themselves as a middle-man for the kernel. Want to run Android on our hardware? Then you need our drivers, which you only get if you download our super special version of the kernel that we fully control the development of.

 

Imagine if Nvidia stopped allowing you to download their GPU drivers from their website and instead made you download "Windows 10 - Nvidia Edition" in order for your graphics card to work. That's basically what Qualcomm and other SoC vendors are doing with Android.

 

 

It's a mess but hopefully Google will fix it sooner or later.

Link to post
Share on other sites
52 minutes ago, LAwLz said:

The problem we are having with Qualcomm and other SoC vendors is that they have positioned themselves as a middle-man for the kernel.

Well, that is really messed up. There should be inversion of control implemented 🙂

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×