Ok, I know much of what I'm about to ask has generally been answered or discussed in other posts, but I could really use some more direct/specific answers to my own questions.
My first question is about hardware drivers. To my understanding, a great many, if not most, of the more common wifi drivers are incorporated into the latest linux kernels. If this is the case, will more or less any Android system run on a device so long as the appropriate kernel is provided?
To be a little more clear on that, I'm actually trying to learn Android development (both for apps and building roms) on a cheap Chinese tablet that I picked up. Naturally it already has a version of Android 2.2 pre-installed. However, I have not been able to extract the contents of the boot.img or the system.img, I keep getting an error, whereas I can unpack the SDK img's no problem. So I was hoping that I can get away without compiling a custom kernel, use the already existing one, and go ahead with tweaking the system.img from either the AOSP or SDK sources. Getting the source code from the manufacturer may be impossible since I can't even seem to find out who the manufacturer is or get their contact info.
I'm actually looking to port CM7 to my wife's LG Shine Plus eventually, but I don't want to pull a Tim Allen on her phone so I want to get some experience and feel for working with Android's internals on my tablet.
So my next question is still about drivers, but what I want to know is how are things like the LCD, touchscreen input, audio output, wifi and the cell radio handled on a typical Android device? Is it mostly handled by the hardware itself with the Android framework or kernel just passing universal APIs or do the drivers for each individual piece of hardware need to be compiled into the kernel? As in the gkisystem for radios, is this handled by the kernel or the framework? Which kinda brings me back to my first question, if it is built into the kernel itself, can I not use, for example, the already existing kernel on the LG Shine Plus (it's running 2.1) to port CM7?
Any and ALL help is honestly and truly appreciated. I've been looking for detailed answers for these questions EVERYWHERE.
** just bumping this post so that it can get seen**
any help or advice at all?
I recently bought a ZiiO and at first look it seems like an excelent tablet for is price. But it get's me frustrated to be stuck on Android 2.2.1 version as well as stuck on Creatives' propritary updates.
At first glinpse on the device everything here looks like it has been developed according to the hardware. Not having market, not beeing able to mess around
Searching and researching on the web allowed me to root my device and install common software like the Market.
Then I realized that ZiiO's hardware is capable of supporting USB Host which sadly hasn't been enabled on the kernel that's compiled on the device. Looking at config.gz made me wonder why on the world would Creative do such a thing.
Has anyone been able to dump ZiiO's boot or kernel? I need to recompile the kernel to enable some flags. Has anyone gone through this expirence that can lead me on the right track?
Having such a variety of devices on the world makes me confuse on what should and could be done on this device.
i know much fuss is always made about devices getting or not getting updates to newer versions of android. but i don't understand why it's as big of a (technical) issue as it is.
android is based on linux, correct? anyone with a linux-based desktop regularly updates the kernel and various system packages without thinking twice. and the devices continue to work fine. i can run any version of ubuntu i want on my laptop, and they all work fine.
the problem with building the android osp for an arbitrary device is drivers, correct? is it because manufacturers don't release the source code for drivers? i can understand it isn't possible to reverse engineer or transfer a binary blob from one system to another.
but, manufacturers have these drivers (of course); why is it so difficult to package their drivers with newer versions of android? the kernel can't change so much that drivers need to be re-written with every version, or it would have died a long time ago.
this isn't meant to inspire flaming, i'm just curious what it really takes to build android for a device (and have it 100% working). if a device existed with 100% open source drivers, would it be trivial to build android for that device? how many proprietary drivers does an average device have? are they standardized at all beyond the ARM ISA?
Hello everyone,
I am not new to the android scene, and am quite familliar with linux development in java and c. I found myself in the pleasant position of having a second Atrix 4g that I had previously unlocked and played with a bit and decided it was time to have a look at some of the android issues that have managed to sufficiently annoy me.
To this end I have pulled down the aosp of ICS as well as CM9 for comparison. I see that there are issues with the tegra2 binaries for ICS and was going to have a go at building a 2.6.39 kernel for ICS.
Can any of you point me to some info on integrating a new kernel into the android build? As I understand it, the currently available binary drivers are build against 2.6.36 for GB.
Is it only the opengl drivers that are an issue? Are there opensource drivers for the bt/wifi/cell? The cameras/touch sensors/gyros etc?
I have done some research and looked over Googles build info, but it only covers the reference gear. I have not yet found a good guide on integrating 3rd party drivers for other hardware..
Thanks for all your assistance. Once I learn the build system I'm sure I will be able to make some useful contributions.
Also, I may be able to offer some hosting assistance for some projects.
Which smartphone has the source for the drivers availbale at the moment?
To know what to choose in case i want to port tizen to it...
frullewulle said:
Which smartphone has the source for the drivers availbale at the moment?
To know what to choose in case i want to port tizen to it...
Click to expand...
Click to collapse
I just wanted to post a new thread with the same question.
Also, which are the phones with the best reverse-engineered drivers? And is there much difference between this and open drivers?
If you have open drivers you should pretty easily be able to port every system to it that supports the same specs as screen resolution, etc, right?
Unrelashade said:
I just wanted to post a new thread with the same question.
Also, which are the phones with the best reverse-engineered drivers? And is there much difference between this and open drivers?
If you have open drivers you should pretty easily be able to port every system to it that supports the same specs as screen resolution, etc, right?
Click to expand...
Click to collapse
Although it would be reasonable for you to think so, you would also be incorrect. The reason why this isn't the case is because hardware manufacturers each have their own different firmware that they use, which causes a lot of the bifurcation of the Android ecosystem. Just because you have two phones that are identical in every hardware fashion doesn't mean that their firmware is the same, so there is no guarantee that one set of drivers would work on different devices.
syung said:
Although it would be reasonable for you to think so, you would also be incorrect. The reason why this isn't the case is because hardware manufacturers each have their own different firmware that they use, which causes a lot of the bifurcation of the Android ecosystem. Just because you have two phones that are identical in every hardware fashion doesn't mean that their firmware is the same, so there is no guarantee that one set of drivers would work on different devices.
Click to expand...
Click to collapse
Ooohh, so underneath android and its Linux kernel lies a firmware that handles communication between the kernel/ Android and the drivers/ hardware? So I'd need open drivers and open firmware to be able to port anything with ease to this device (at least theoretically)?
Unrelashade said:
Ooohh, so underneath android and its Linux kernel lies a firmware that handles communication between the kernel/ Android and the drivers/ hardware? So I'd need open drivers and open firmware to be able to port anything with ease to this device (at least theoretically)?
Click to expand...
Click to collapse
Yes, but practically this is impossible as firmware comes straight from the manufacturer, so even if you could develop some sort of open firmware (basically you would be making an open BIOS), you would have no way to install it onto the actual device, since they are hard coded into the chip. You would need specialized tools in order modify on that level.
syung said:
Yes, but practically this is impossible as firmware comes straight from the manufacturer, so even if you could develop some sort of open firmware (basically you would be making an open BIOS), you would have no way to install it onto the actual device, since they are hard coded into the chip. You would need specialized tools in order modify on that level.
Click to expand...
Click to collapse
Awesome, I'm finally learning what I want to know!
So if there was a manufacturer who gave this firmware/ BIOS code away (because it's an old model or they have been convinced by the community or it's a dedicated device for developers or whatever) then it would be finally easy to port every system to it (that supports the hardware)?
And how come it is possible to port e.g. Linux to Android devices without having the sourcecode of the firmware/ BIOS? Because they reverse engineered it? And if you have a device with closed drivers you have to reverse engineer the drivers *and* the firmware/ BIOS? How come no manufacturer tried to build a developer device with open firmware/ BIOS since it would give them a lot of support from developers?
Theoretically yes, but then you would still face the issue of how you are going to interface with the hardware, as the chips were not designed to be interfaced with via usb devices. They tend to be programmed at production then never altered again.
Android is linux-based, so it would stand to reason that you could port a stripped-down version of linux onto the device. Using other tools, you can create a VM on the Android device to have a fully functioning version of linux, but this is all software-level, not physical level. And the reason why they don't make open BIOS is for the same reason textbook manufacturers keep making new versions of textbook that are almost exactly the same.