[Q] Different Kernel for each device - why? - Android Q&A, Help & Troubleshooting

Hey,
so I've just started compiling a kernel for my HTC Desire S and I'm a little bit confused about the different kernel sources.
As far as I know, there is basically at least one kernel source for each device (htcdev lists different sources for different devices, for example). Why is that? Aren't the only differences between the devices the different hardware? So couldn't they put all driver sources into the source tree and just supply a different .config for each device? I guess the x86 arch is build that way, isn't it?
What am I missing here?
~Thanks

Related

[Q] Kernel 2.6.29

What do you make of this.
http://forum.archosfans.com/viewtopic.php?f=63&t=44030
I'm no Android or Linux expert or even Above Beginner really so would appreciate any info available.
Is it usual to base newer FW on older Kernels. Someone also says Android 1.6 was based on 2.6.29???
Cheers
It shouldn't really make any difference in this case. It's definitely not a 'fake' Froyo as that person is calling it.
When comparing Archos' kernel (it's included in their GPL package) with Android's kernel 2.6.29, there are a lot of differences, about 1000 files changed. I guess they've added some omap patches (I'm not allowed to post external links, yet, so let me describe the git repository: git (dot) kernel (dot) org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git) or even use the omap kernel, because Archos' kernel suffix is also "-omap1".
Good to see that the omap guys are up-to-date with their kernel. So... let's try to make it work on our Archos devices!

Kernel developers - are they nuts?

Hi!
I just want to vent my anger
Has anybody noticed that there are a minimum of four "parties" that work on an android kernel tree?
First there is the android open source project.
Then there is the CodeArora project.
There is also a kernel tree at Cyanogenmod.
And last but not least we have the "manufacturer" kernel tree.
AOSP has got a common tree and an individual tree for each architecture- just like Cyanogenmod.
CodeAurora has got multiple(!) trees for a single architecture.
The manufacturer seems to use some of CodeAurora's trees in the majority of cases.
Ah- I forgot the "original" linux kernel tree
This way we never get the most efficient and most stable kernel.
Just my two cents
you're right, but not only the kernel is used. LG takes code from codeaurora project - have seen this in code from the frameworks base tree^^
but on the other side: better they use community code as own code that didn't works perfect
WTF? LG really takes his sources from CodeAurora?!?!?
Well since code aurora is dedicated to qualcomm SoCs if i were a kernel developer i wud start with that tree..one question though does codeaurora contain gb kernel (.35) source for our msm7227 ??? u guys checked it out ???even if they theres a lot of other hardware that are going to need proprietary drivers i guess... THird world peripherals make porting tougher.. its just my take correct me if i m wrong
sarfaraz1989 said:
Well since code aurora is dedicated to qualcomm SoCs if i were a kernel developer i wud start with that tree..one question though does codeaurora contain gb kernel (.35) source for our msm7227 ??? u guys checked it out ???even if they theres a lot of other hardware that are going to need proprietary drivers i guess... THird world peripherals make porting tougher.. its just my take correct me if i m wrong
Click to expand...
Click to collapse
my kernel patches are taken from the codeaurora .35 source, but i can't adopt the complete kernel. there is a "must understand" and "must have many time" to do that
andy572 said:
my kernel patches are taken from the codeaurora .35 source, but i can't adopt the complete kernel. there is a "must understand" and "must have many time" to do that
Click to expand...
Click to collapse
That is exactly the problem!
I cannot really judge which patch from which tree is good- because I have not the time to read through Qualcomm's manuals (if they are public at all) and the kernel source.
If they would concentrate on one tree everything would be fine (ok- if you look at the "chaos commits" in the git repositories you become sick )
@caveman u working on a P500 kernel ??? how is porting so friggin easy for HTC devices..Do they have open source driver /generic hardware or what i mean a few of em even got a honeycomb partial port forget 2.3 ....
sarfaraz1989 said:
@caveman u working on a P500 kernel ??? how is porting so friggin easy for HTC devices..Do they have open source driver /generic hardware or what i mean a few of em even got a honeycomb partial port forget 2.3 ....
Click to expand...
Click to collapse
LG have some specific (old) hardware - they are using qualcomm hardware, but it's to old for newer kernel sources. the other problem is low cost hardware like the display - ms6000 is never used today, new devices are using samsung displays.
look at the wlan/smd chip - bcm4325 is never supported, bcm4329 is newer and is in kernel .38 too ... do you know, what i mean?
old hardware drivers are rare in kernels - never used drivers gets removed from tree, so there is no chance to bring it back.
ofcourse that's why it's called EVOLUTION
so it looks like u were right about getting a new phone
ciolnadu said:
ofcourse that's why it's called EVOLUTION
so it looks like u were right about getting a new phone
Click to expand...
Click to collapse
yes, it's marketing strategy and its ok - but why should i buy me a new device, when my is doing a good job?
andy572 said:
but why should i buy me a new device, when my is doing a good job?
Click to expand...
Click to collapse
+1 agreed 100% with andy.
andy572 said:
LG have some specific (old) hardware - they are using qualcomm hardware, but it's to old for newer kernel sources. the other problem is low cost hardware like the display - ms6000 is never used today, new devices are using samsung displays.
look at the wlan/smd chip - bcm4325 is never supported, bcm4329 is newer and is in kernel .38 too ... do you know, what i mean?
old hardware drivers are rare in kernels - never used drivers gets removed from tree, so there is no chance to bring it back.
Click to expand...
Click to collapse
Do you mean the drivers sources were in the old kernel and are removed in the new one? If so, I mean we have the old sources, why is it so difficult to port them to the new kernel sources? I am not a kernel developer so probably I am missing something
rivett said:
Do you mean the drivers sources were in the old kernel and are removed in the new one? If so, I mean we have the old sources, why is it so difficult to port them to the new kernel sources? I am not a kernel developer so probably I am missing something
Click to expand...
Click to collapse
code isn't moved but deleted.
Has anybody found out the CodeAurora git commit on which LG's V10r is based on?

Q on building the "latest" Android Kernel

I have a general question about building the Android kernel. For understanding purposes, I'm a C/C++/C# developer (and Android application developer), but have little functional knowledge of the Linux kernel.
With regard to porting Android, I'm curious how one builds the latest Kernel. The Android Kernel is not simply the standard Linux Kernel branch, correct? Where does one get the latest "Android" Kernel from? Does Google host a Kernel site as part of AOSP that we can sync with?
Once you have the latest Kernel, is it simply a matter of ensuring the Make file is accurate, adding the appropriate device drivers (as .so files?) for your particular hardware, and performing a Make? Then I assume you can update your device's Kernel with the one you've buildt?
In closing, for example, I'd like to sync the Android 3.0 Kernel, update the drivers necessary for my EVO 4G, build the latest Kernel, and then flash it to my phone. Just looking for some insight as I start getting educated on the topic.
Thanks for any advice you can offer!
Actually, the android kernel is very similar to the linux kernel (well it is based on the linux kernel). You can get the kernel from here: http://source.android.com/source/downloading.html. You can also take a look here: http://elinux.org/Android_Kernel_Download and here: http://elinux.org/Android_Kernel_Features. It will be quite difficult to build a kernel for your device without the source (there's none for 3.0.1 for your device), but you could still build it from a lower kernel version: http://linux.softpedia.com/progDownload/HTC-EVO-4G-Sprint-Kernel-Source-Code-Download-58254.html.
Thanks for the info, Theonew. When you say that it will be difficult for me to build the kernel for an EVO without the source, is that because the vendors (Qualcomm, for example) haven't made source for their devices available, so it's hard to build the drivers (.so files?) that are compatible with the latest kernel?
Shidell said:
Thanks for the info, Theonew. When you say that it will be difficult for me to build the kernel for an EVO without the source, is that because the vendors (Qualcomm, for example) haven't made source for their devices available, so it's hard to build the drivers (.so files?) that are compatible with the latest kernel?
Click to expand...
Click to collapse
HTC hasn't released the source of the kernel v3.0.1 (which comes in Ice Cream Sandwich) for your device (since it's not available for your device...yet at least).

Build Ubuntu Touch using cm11?

Hi
My goal is to build Ubuntu Touch for the Ideos X5 U8800. So far, I have only had trouble finding and setting up the source for a cm-10.1 build. Finally, I gave up and built cm-11 using Blefish's device source tree. Everything works just fine.
So the question is: Can Ubuntu Touch be built using cm-11, or is cm-10.1 the only option at the moment?
Best regards,
aribk
They switched to Android 4.4 some time ago. Don't know why they haven't updated the wiki yet.
Some sources:
http://news.softpedia.com/news/Cano...-Touch-Based-on-Ubuntu-14-04-LTS-438400.shtml
https://www.mail-archive.com/[email protected]/msg06401.html
https://wiki.ubuntu.com/Touch/Porting (further down)
Ubuntu is based on CM? Thougt the only thing in common is parts of the kernel??
So, it will more or less be able to port ubuntu to other devices just by changing kernel and baseband?
reellamer said:
Ubuntu is based on CM? Thougt the only thing in common is parts of the kernel??
So, it will more or less be able to port ubuntu to other devices just by changing kernel and baseband?
Click to expand...
Click to collapse
Libhybris is being utilized by Ubuntu for Devices, Sailfish, Open webOS and others to form a base layer compatibility with Android hardware drivers (above and beyond just the baseband [radio]). This is what gets the ports to work with Android hardware... http://en.wikipedia.org/wiki/Hybris_(software)
The mainline efforts have focused on Nexus hardware and seem to have formed a consensus that CyanogenMod 10.x is the best jumping off point.

[Q] Where to start for Android Kernel Development?

Hello Guys,
I see a lot of threads for starting with android rom development, but can anyone give me pointers for kernel development? I would like to start kernel development and do not know where to start. I am not interested in rom development at the moment, but that is because I assume that the android rom is like a user space app over the kernel. Please correct me if I am wrong. It would be great if you guys could point me to some beginner friendly kernel development tutorials. I am looking through Linux Device Drivers (LDD) book but am having a hard time comparing that with android. I have cloned mediatek 6589 source from android repository. I am submitting partial url cos I am not allowed to submit full url yet. URL(android.googlesource.com/kernel/mediatek/+/android-5.1.0_r0.2) since I am running a mtk6589 device (Walton X1/ Gionee Dream D1) and would like to understand where to start coding kernels for android. Any help would be greatly appreciated.
Oh and I would like mediatek specific help if possible. I have gone through some of the general kernel building and overclocking tutorials. I want to do some more enhancements if possible. Since mediatek seems to be the mysterious one with bare minimum source availability, I would like to take up that challenge
Thanks.
I don't have a tutorial for you but a small checklist. You need:
* Kernel source tree
* A config for your device (e.g. arch/arm/configs/*defconfig*)
* A cross compiler toolchain to generate ARM code (you can use the precompiled one from the Android source tree)
* A way to package your kernel into a boot image for your device - usually an Android boot image contains a compiled kernel (zImage), a compressed ramdisk for the root filesystem, and probably a device tree binary (dtb). Mediatek may do things differently.
* A way to install that boot image on your device - this requires an unlocked bootloader that allows custom boot images to be installed and started. Most devices use the fastboot tool for this.
Your first step should be to build a working kernel from unmodified sources. When you got that working, you can think about starting actual coding.
Thanks for the Pointer Mate
_that said:
I don't have a tutorial for you but a small checklist. You need:
* Kernel source tree
* A config for your device (e.g. arch/arm/configs/*defconfig*)
* A cross compiler toolchain to generate ARM code (you can use the precompiled one from the Android source tree)
* A way to package your kernel into a boot image for your device - usually an Android boot image contains a compiled kernel (zImage), a compressed ramdisk for the root filesystem, and probably a device tree binary (dtb). Mediatek may do things differently.
* A way to install that boot image on your device - this requires an unlocked bootloader that allows custom boot images to be installed and started. Most devices use the fastboot tool for this.
Your first step should be to build a working kernel from unmodified sources. When you got that working, you can think about starting actual coding.
Click to expand...
Click to collapse
Thanks man. Really appreciate the pointers. I do have some of the checklists done. Like
* Kernel source tree
** A cross compiler toolchain to generate ARM code (using the precompiled one)
* A way to install that boot image on your device
Now the problem is, my device still does not have its source code available. I got the general source tree from google which is not my device's so I dont have the defconfig. Is there a way to rip it out from a compiled kernel? Like using some sort of a decompiler? Also I will look around for zimage packaging tools. Thanks mate. Mediatek is apparently one hell of a problem child XD
syko_kickass said:
Now the problem is, my device still does not have its source code available. I got the general source tree from google which is not my device's so I dont have the defconfig. Is there a way to rip it out from a compiled kernel? Like using some sort of a decompiler? Also I will look around for zimage packaging tools.
Click to expand...
Click to collapse
If you're lucky, your existing kernel exposes its config in the file /proc/config.gz. If not, I don't know how to get a matching config - best is to avoid buying anything from GPL violators.

Categories

Resources