[GUIDE] ¤‡¤‡¤ Kernel starter guide and other information ¤‡¤‡¤

Search This thread

mroneeyedboh

Senior Member
Feb 14, 2008
1,865
490
Hey guys, Sorry... I havent had this phone in forever.. This will not be updated nor will I be answering questions about it. Its pretty much outdated as well. Good time while we had it!


Here is some information regarding kernels that I've collected from people off of this forum and the internet. This work is mine, but I just reworded it to make it work. I thought I'd compile it for future users that have questions.


Now updated with some of the more popular kernels at the bottom. Make sure you select the one that corresponds with your kernel style. ( i.e. Sense or AOSP )

Miscellaneous Tid-Bits:
** If you take any part of this please give me respects and XDA respects **
** Once again! First and foremost, make sure you flash the correct kernel for your ROM. That means if you have a Sense ROM, then you can flash only sense kernels. Same applies for AOSP ROMS can only run AOSP kernels.
** Also SBC kernels seem to be messing up batteries, and I would say that it would be related to that style of charging ( http://xdaforums.com/showthread.php?t=890448&highlight=casualties ) so tread lightly. HTC built that charging style ( almost instant drop to 90% battery life after it is disconnected from the charger ) to protect the cells from being " too full ". Li-Ion batteries aren't meant to be trickle charged. I myself do not recommend it, the same goes for many DEVs too. It is still offered by a few Devs out there, so make sure it doesn't say SBC ( if you don't want SBC ).
** If you are using a HAVS or Static kernel ( this applies to any version of HAVS ) Do not use SetCPU, because the kernel and the SetCPU will be counterproductive.
** I do recommend to run Juice Defender still regardless on which style kernel you pick to run. There will be no complications with the kernel and Juice Defender.
** Quadrant and Linpack scores mean nothing!
** There are two main styles of kernels, they are CFS and BFS.

Kernel Information


CFS = Completely Fair Scheduler


CFS kernels tend to focus on the system as a whole, and CFS is the default in the mainline Linux kernel. CFS's are efficient for lighter or standard tasks, think texting and web browsing here. The stock kernels that we run from HTC are CFS kernels. The CFS kernels typically give you the best battery life as well. Though it's worth pointing out that while CFS does attempt to be more fair with respect to all running processes, the mainline kernel DEVs have implemented some ideas that originated with BFS into CFS.


Here is more information on CFS: http://en.wikipedia.org/wiki/Completely_Fair_Scheduler

BFS= Brain **** Scheduler


BFS kernels tend to focus on whatever app is running in the foreground, think of a graphic intense game here. So a BFS kernel may give you better Quadrant scores, which shouldn't be the end all for someone choosing a kernel. The BFS is a 3rd party scheduler that the DEVs have to patch into a CFS kernel ( which in turn makes it into a BFS kernel ) . These kernels can tend to be laggy at times too.

Here is more information on BFS : http://en.wikipedia.org/wiki/Brain_****_Scheduler


Then there are sub-styles of these CFS and BFS kernels. Those being No-HAVS, HAVS, Static Undervolting, SBC and smartass governors.


HAVS = Hybrid Adaptive Voltage Scaling
Non-HAVS = Non Hybrid Adaptive Voltage Scaling AKA Static Voltage Scaling


HAVS built kernels, both less aggressive and more aggressive builds, are based on the idea by allowing a range of variable voltage levels at each speed setting. Which basically means the amount of current the system draws from the battery fluctuates according to what it needs ( based off of the process at hand ). HAVS dynamically scales the voltage supplied to the CPU at any given speed, erring on the side of lowest power draw, in an effort to enhance power saving. The theory is that if the load isn't significant enough, it may be possible to lower the voltage more than the static setting, and in terms saving that much more battery. But also it can raise it higher than the static setting if it sees fit.

For an example in a More Aggressive HAVS kernel the speed of 245mhz has a range of voltage values that can be used. The ranges are from 900-950mV. So if the load is low enough, instead of sending 925mV to the CPU only 900mV will be sent ( saving battery ). Now if the load is big enough to call for more juice than 925mV (which is the static setting), the HAVS ( inside of the kernel ) can send up to 950mV to the CPU at that 245mhz speed. The voltage of 950mV is the max HAVS can send at a 245mhz speed. ( Keep in mind these voltages are not the same for all forms of HAVS, so the voltages will vary between DEVs and which kernel your looking into. This was just an example from Netarchy's More HAVS table )

No-HAVS built kernels use Static voltage scaling and do not use undervolting. These will not alter the amount of current at one set CPU speed. So no matter what process is being ran, it's still going to provide that dead set amount of current to the CPU. Thus burning battery life for smaller tasks, as it would use the same amount of battery for heavier tasks.

Not all EVOs can run a HAVS built kernel. Most should try out the More Aggressive HAVS kernels, and if your phone acts funny ( Force closing, Camera issues, if it doesn't reboot etc ) then you should try the Less Aggressive HAVS kernels. And if still you're in the same boat, then last resort is to use a Non-HAVS kernel. Then you can run something like SetCPU to help out to throttle down the CPU at times.


Static Undervolting


Remember how I said that HAVS can fluctuate how much power it draws based on CPU load and battery temperature? Well when the kernel is not using HAVS, it is going to use Static Undervolting. Static Undervolting is when each frequency uses less mV then it normally would call for, but those numbers are set in stone. They will not fluctuate like HAVS would to save battery life. For example, the stock default voltage for the 998mhz setting is 1300mV.If the static voltage table is altered so that the setting for 998mhz is 1275mV ( this is what a Statis Undervolting kernel does ) . Then whenever the cpu scales to 998mhz on the phone, the power supplied will be 1275mV instead of 1300mV. So basically each frequency is guaranteed to always draw less power than normal ( In this case the CPU will pull 35 LESS mV every time the phone's CPU hits 998mhz ) .


So in Static Undervolting kernel, the frequency of 245mhz has a voltage setting of 925mV assigned to it. So whenever the CPU is at 245mhz, it will be getting 925mV at all times. Regardless of the process at hand. ( Again these numbers used above are for Netarchy's Kernel. It will vary from DEV to DEV and kernel to kernel. )

SBC=Superior Battery Charging

Possible issues here with the SBC charging. I would sway away from these style kernels ( http://xdaforums.com/showthread.php?t=904577 )


SBC is a type of "trickle" charging. It's a full, slow, complete charge and it prevents the 10% drop that most users get when pulling the phone off the charger. This kernel performs best with an overnight charge. Some users asked questions on the safety of the SBC charging method. Ms79723 states that it slowly pushes mV into the battery and thus keeps the battery cool. SBC kernels push the battery past their normal 100% charged point, to a TRUE 100% charged battery. These kernels also charge extended batteries to their maximum and show true "on charger" voltages, which would deem these to be more accurate for checking voltages on your battery. There was and still are concerns of the SBC kernels destroying your battery, but to most people now these don't pose much concern anymore.

The issues people were bring up is that the Li-Ion batteries are charged to the point HTC set them to was for safety of the battery. Li-Ion's can be unstable at times, but Ms79723 programmed safety temperature and voltage "stops" to kill the charging is they get too high. Bad things can start to form, I said can not will, if the temperature gets above 140f and voltage gets to or past 4230mV. If the mV gets to 4230mV it can causes issues. If it gets to 4300 mV it can cause plating. People are also speculating that the SBC kernels are going to kill your battery and or shorten the life. With the price of eBay batteries now days, if the SBC kernels give you drastically ( which has been seen ) more battery life, then why not? The highest seem on the SBC kernels is 4210mV, which is under both values for issues to start.

Smartass Governor


I at first thought the Smartass Governor learned from what you do. But a member ( gpz1100 ) gave me this short to the point description on how they work. The Smartass governor isn't really smarter, nor does it learn from how you use the phone. It's smarter only the sense that it considers more factors to base the cpu speed on. It's more or less a combination of conservative with a screen off profile built in. The way it scales the CPU is not at all affected by any history of usage, rather only by immediate samples taken.

There are other governors that are available as well. Those being conservative, ondemand, powersave, etc. which those are more self explanatory.
 
Last edited:

33colburn

Senior Member
Dec 2, 2007
78
6
Columbus, OH
Thank you. I have been looking for a laymans term definition for lots of these acronyms. This is a great post. I have bookmarked for myself and others for future reference. Thanks is given!!!!!!
 

VisedMonk

Senior Member
Dec 14, 2010
496
70
Michigan
Great post. Thanks much for compiling all this info from various sources.

Questions to satisfy my curiosity --

1. What type of governor (conservative/smartass/etc.) do you prefer or recommend? I seem to have the best luck with smartass. Plus I like saying I have a smartass governor.

2. What kernel or kernels do you use? ms's SBC thread is hot right now. I've tried those out, and while I do like the true 100% charge of SBC, I get quick battery drain once the battery falls from 100%. I'm not sure I get any more battery life that without the trickle charge.

For the last few days I've been using Ziggy's BETA Kernel Evo CFS 19 Dec 10 (2.6.32.27-ck2) with Calkulin's EViO 2 rom. I get the initial 4 or 5% drop right off the charger, then everything calms down and I get GREAT battery life. I don't use SetCPU or anything like that, only OS Monitor to change the governor from conservative to smartass.

Screenshot attached. 25 minutes of voice calls, 25 texts or so, light web browsing (xda), some facebook, 10 or so emails. About 5 hours of this time was on 3G while driving on the highway.
 

Attachments

  • Screenshot.jpg
    Screenshot.jpg
    38.6 KB · Views: 3,442

mroneeyedboh

Senior Member
Feb 14, 2008
1,865
490
Great post. Thanks much for compiling all this info from various sources.

Questions to satisfy my curiosity --

1. What type of governor (conservative/smartass/etc.) do you prefer or recommend? I seem to have the best luck with smartass. Plus I like saying I have a smartass governor.

2. What kernel or kernels do you use? ms's SBC thread is hot right now. I've tried those out, and while I do like the true 100% charge of SBC, I get quick battery drain once the battery falls from 100%. I'm not sure I get any more battery life that without the trickle charge.

For the last few days I've been using Ziggy's BETA Kernel Evo CFS 19 Dec 10 (2.6.32.27-ck2) with Calkulin's EViO 2 rom. I get the initial 4 or 5% drop right off the charger, then everything calms down and I get GREAT battery life. I don't use SetCPU or anything like that, only OS Monitor to change the governor from conservative to smartass.

Screenshot attached. 25 minutes of voice calls, 25 texts or so, light web browsing (xda), some facebook, 10 or so emails. About 5 hours of this time was on 3G while driving on the highway.

I so far used conservative. I'm mainly using text and web. So a CFS kernel is where it's at for me. I never see the use on stuff like SetCPU when using specific kernels, because the kernels determine what and how to set the cpu's speed etc.
On the screen shots, I'm sill learning on whats what. But it seems good.

On the SBC kernels, I'm new to this stuff. So I myself am messing with them, trying to find what works best for me.

Great write up. I learned a lot. One thing I noticed that you did not have what SBC stands for SBC=superior battery charging

Thanks man. And yeah I did forget that, huh lol. Thanks.
 
Last edited:
  • Like
Reactions: kalehua4791

netarchy

Retired Senior Recognized Developer
Jun 16, 2010
1,441
1,170
San Antonio, TX
github.com
Just a few comments/corrections for ya ;D

Here is some information regarding kernels that I've collected from people off of this forum and the internet. This work is not mine, I just reworded it to make it fit. I thought I'd compile it for future users that have questions.


** There are two main styles of kernels, those being CFS and BFS.




CFS = Completely Fair Scheduler


CFS kernels tend to focus on the system as a whole. CFS's are efficient for lighter or standard tasks, think texting and web browsing here. The stock kernels that we run from HTC are CFS kernels. The CFS kernels typically give you the best battery life as well.

Here is more information on CFS: http://en.wikipedia.org/wiki/Completely_Fair_Scheduler

BFS= Brain **** Scheduler


BFS kernels tend to focus on whatever app is running in the foreground, think a 3d gaming here. So a BFS kernel may give you better Quadrant scores, which shouldn't be the end all for someone choosing a kernel. These kernels can tend to be laggy at times too.

Here is more information on BFS : http://en.wikipedia.org/wiki/Brain_Fuck_Scheduler
Mostly correct, though it's worth pointing out that while CFS does attempt to be more fair with respect to all running processes, the mainline kernel devs have implemented some ideas that originated with BFS into CFS.

CFS is the default in the mainline linux kernel, BFS is a 3rd party scheduler that must be patched in.


** Then there are sub-styles of these CFS and BFS kernels. Those being No-HAVS, HAVS, Static Undervolting, SBC and smartass governors.
Variations tend to focus more on HAVS/No-HAVS, a number are incorporating SBC, and many, while they may include the smartass governor, also often include other governors as well, such as conservative, ondemand, powersave, etc.

HAVS = Hybrid Adaptive Voltage Scaling
Non-HAVS = Non Hybrid Adaptive Voltage Scaling


HAVS built kernels, both less aggressive and more aggressive builds, are based on the idea by allowing a range of variable voltage levels at each speed setting. Which basically means the amount of current the system draws from the battery fluctuates according to what it needs ( based off of the process at hand ). These levels are based on the load of the CPU and battery temperature. The theory is that if the load isn't significant enough, it may be possible to lower the voltage more than the static setting, and in terms saving that much more battery. But also it can raise it higher than the static setting if it sees fit.

For an example in a More Aggressive HAVS kernel the speed of 245mhz has a range of voltage values that can be used. The ranges are from 900-950mV. So if the load is low enough, instead of sending 925mV to the CPU only 900mV will be sent ( saving battery ). Now if the load is big enough to call for more juice than 925mV (which is the static setting), the HAVS ( inside of the kernel ) can send up to 950mV to the CPU at that 245mhz speed. The voltage of 950mV is the max HAVS can send at a 245mhz speed.
NoHAVS/Non-HAVS = Static Voltage Scaling ;D Just sayin'

Caveat: The mV ranges quoted here are only guaranteed accurate/valid in reference to my kernel builds using the HAVS-more voltage table.

Other HAVS implementations might have a greater range of possible voltage values for any given speed, or a lesser range. The main concept to convey with regard to HAVS is that it dynamically scales the voltage supplied to the cpu at any given speed, erring on the side of lowest power draw, in an effort to enhance power saving.

No-HAVS built kernels use Static voltage scaling and do not use undervolting. These will not alter the amount of current at one set CPU speed. So no matter what process is being ran, it's still going to provide that dead set amount of current to the CPU.Thus burning battery life for smaller tasks, as it would use the same amount of battery for heavier tasks.

Not all EVOs can run a HAVS built kernel. Most should try out the More Aggressive HAVS kernels, and if your phone acts funny ( Force closing, Camera issues, if it doesn't reboot etc ) then you should try the Less Aggressive HAVS kernels. And if still you're in the same boat, then last resort is to use a Non-HAVS kernel. Then you can run something like SetCPU to help out to throttle down the CPU at times.

Pretty accurate here.


Static Undervolting


Remember how I said that HAVS can fluctuate how much power it draws based on CPU load and battery temperature? Static Undervolting is when each frequency uses less mV then it normally would call for, but those numbers are set in stone. They will not fluctuate like HAVS would to save battery life. So say normally the frequency of 998 MHz would use 100%. Once you flash a Static Undervolting kernel, that specific frequency would run at 90% ( versus the normal 100% ) at all times. So basically each frequency is guaranteed to always draw less power than normal ( i.e. 10% less than normal ) .


So in Static Undervolting kernel, the frequency of 245mhz has a voltage setting of 925mV assigned to it. So whenever the cpu is at 245mhz, it will be getting 925mV at all times. Regardless of the process at hand.

This is potentially worded in a confusing manner using %'s. HAVS dynamically sets the amount of power supplied to the cpu at any given speed based on factors like load and battery temperature.

When not using HAVS, Static voltage scaling is used. Static undervolting is simply setting these static voltage values at a lower level than the stock default.

For example: The stock default voltage for the 998mhz setting is 1300mV.
If the static voltage table is altered so that the setting for 998mhz is 1275mV, then whenever the cpu scales to 998mhz on the phone, the power supplied will be 1275mV instead of 1300mV.

It's also worth noting that the static undervolting example you've used at 245mhz is only guaranteed valid as an example referencing one of my static undervolting kernel builds. Another kernel builder might well alter the table in their particular kernel to set the values higher or lower (in other words, it's worth pointing out that it's an example, and not a given truth for all kernels ;D).
 

flooberz

Senior Member
May 31, 2010
57
0
How do we find the voltage tables for the different kernels? i'm curious to see how they all compare with each other.
 

Dsims6465

Member
Jan 24, 2010
11
2
Just thanx

Didn't see a thanx button, but thanx anyway. We noobs love people like you who explain what noobs don't know in a way noobs can understand. Don't change your writing style.

The Old Black Guy

Here is some information regarding kernels that I've collected from people off of this forum and the internet. This work is not mine, I just reworded it to make it fit. I thought I'd compile it for future users that have questions.


** There are two main styles of kernels, those being CFS and BFS.




CFS = Completely Fair Scheduler


CFS kernels tend to focus on the system as a whole, and CFS is the default in the mainline linux kernel. CFS's are efficient for lighter or standard tasks, think texting and web browsing here. The stock kernels that we run from HTC are CFS kernels. The CFS kernels typically give you the best battery life as well. Though it's worth pointing out that while CFS does attempt to be more fair with respect to all running processes, the mainline kernel devs have implemented some ideas that originated with BFS into CFS.


Here is more information on CFS: http://en.wikipedia.org/wiki/Completely_Fair_Scheduler

BFS= Brain **** Scheduler


BFS kernels tend to focus on whatever app is running in the foreground, think a 3d gaming here. So a BFS kernel may give you better Quadrant scores, which shouldn't be the end all for someone choosing a kernel. The BFS is a 3rd party scheduler that the dev's have to patch into a CFS kernel ( which in turn makes it into a BFS kernel ) . These kernels can tend to be laggy at times too.

Here is more information on BFS : http://en.wikipedia.org/wiki/Brain_Fuck_Scheduler



** Then there are sub-styles of these CFS and BFS kernels. Those being No-HAVS, HAVS, Static Undervolting, SBC and smartass governors.




HAVS = Hybrid Adaptive Voltage Scaling
Non-HAVS = Non Hybrid Adaptive Voltage Scaling AKA Static Voltage Scaling


HAVS built kernels, both less aggressive and more aggressive builds, are based on the idea by allowing a range of variable voltage levels at each speed setting. Which basically means the amount of current the system draws from the battery fluctuates according to what it needs ( based off of the process at hand ). HAVS dynamically scales the voltage supplied to the CPU at any given speed, erring on the side of lowest power draw, in an effort to enhance power saving. The theory is that if the load isn't significant enough, it may be possible to lower the voltage more than the static setting, and in terms saving that much more battery. But also it can raise it higher than the static setting if it sees fit.

For an example in a More Aggressive HAVS kernel the speed of 245mhz has a range of voltage values that can be used. The ranges are from 900-950mV. So if the load is low enough, instead of sending 925mV to the CPU only 900mV will be sent ( saving battery ). Now if the load is big enough to call for more juice than 925mV (which is the static setting), the HAVS ( inside of the kernel ) can send up to 950mV to the CPU at that 245mhz speed. The voltage of 950mV is the max HAVS can send at a 245mhz speed. ( Keep in mind these voltages are not the same for all forms of HAVS, so the voltages will vary between devs and which kernel your looking into. This was just an example from Netarchy's More HAVS table )

No-HAVS built kernels use Static voltage scaling and do not use undervolting. These will not alter the amount of current at one set CPU speed. So no matter what process is being ran, it's still going to provide that dead set amount of current to the CPU.Thus burning battery life for smaller tasks, as it would use the same amount of battery for heavier tasks.

Not all EVOs can run a HAVS built kernel. Most should try out the More Aggressive HAVS kernels, and if your phone acts funny ( Force closing, Camera issues, if it doesn't reboot etc ) then you should try the Less Aggressive HAVS kernels. And if still you're in the same boat, then last resort is to use a Non-HAVS kernel. Then you can run something like SetCPU to help out to throttle down the CPU at times.


Static Undervolting


Remember how I said that HAVS can fluctuate how much power it draws based on CPU load and battery temperature? Well when the kernel is not using HAVS, it is going to use Static Undervolting. Static Undervolting is when each frequency uses less mV then it normally would call for, but those numbers are set in stone. They will not fluctuate like HAVS would to save battery life. For example, the stock default voltage for the 998mhz setting is 1300mV.If the static voltage table is altered so that the setting for 998mhz is 1275mV ( this is what a Statis Undervolting kernel does ) . Then whenever the cpu scales to 998mhz on the phone, the power supplied will be 1275mV instead of 1300mV. So basically each frequency is guaranteed to always draw less power than normal ( In this case the CPU will pull 35 LESS mV every time the phone's CPU hits 998mhz ) .


So in Static Undervolting kernel, the frequency of 245mhz has a voltage setting of 925mV assigned to it. So whenever the cpu is at 245mhz, it will be getting 925mV at all times. Regardless of the process at hand. ( Again these numbers used above are for Netarchy's Kernel. It will vary from dev to dev and kernel to kernel. )

SBC=Superior Battery Charging

SBC is a type of "trickle" charging. It's a full, slow, complete charge and it prevents the 10% drop that most users get when pulling the phone off the charger. This kernel performs best with an overnight charge. Some users asked questions on the safety of the SBC charging method. Ms79723 states that it slowly pushes mV into the battery and thus keeps the battery cool. SBC kernels push the battery past their normal 100% charged point, to a TRUE 100% charged battery. These kernels also charge extended batteries to their maximum and show true "on charger" voltages, which would deem these to be more accurate for checking voltages on your battery. There was and still are concerns of the SBC kernels destroying your battery, but to most people now these dont pose much concern anymore.

The issues people were bring up is that the Li-Ion batteries are charged to the point HTC set them to was for safety of the battery. Li-Ion's can be unstable at times, but Ms79723 programmed safety temperature and voltage "stops" to kill the charging is they get too high. Bad things can start to form, I said can not will, if the temperature gets above 140f and voltage gets to or past 4230mV. If the mV gets to 4230mV it can causes issues. If it gets to 4300 mV it can cause plating. People are also speculating that the SBC kernels are going to kill your battery and or shorten the life. With the price of eBay batteries now days, if the SBC kernels give you drastically ( which has been seen ) more battery life, then why not? The highest seem on the SBC kernels is 4210mV, which is under both values for issues to start.

Smartass Governor


This is an integrated process that basically does something like SetCPU does but smarter. What Smartass does is it learns from how you use the system ( the system being your phone ). So SetCPU has its "profiles" to determine how it will set the CPU ( for lack of better terms ), smartass will automatically distribute power as needed. And again this is determined by how you use the phone. Its more of an Intelligent SetCPU. This process is not in every kernel, so if you are interested look for it in the features.

There are other governors that are available as well. Those being conservative, ondemand, powersave, etc. which those are more self explanatory.




If anything needs to be added or altered PM me and I'll edit the post. If it helps, dont forgot to click the thanks button in the bottom right, instead of posting thanks.
 
  • Like
Reactions: Howey.r

mroneeyedboh

Senior Member
Feb 14, 2008
1,865
490
How do we find the voltage tables for the different kernels? i'm curious to see how they all compare with each other.

Truthfully the voltages are dependent to the devs. Like I said it varies, so you would have to contact the devs and see how they set theirs up.

Didn't see a thanx button, but thanx anyway. We noobs love people like you who explain what noobs don't know in a way noobs can understand. Don't change your writing style.

The Old Black Guy

No problem man. BTW nice sign off name haha. The thanks button is on the bottom right of the first post. Its a rectangle button, but none the less no problem.
 

_MetalHead_

Senior Member
Jun 30, 2010
6,763
2,747
Portland
You should also mention the difference between Sense and AOSP kernels. That's a pretty big one to leave out. Someone just posted this morning about flashing a Sense kernel with MIUI and rendering their phone pretty much useless.
 

gpz1100

Senior Member
Nov 28, 2009
3,118
608
shaun0207,

In a word, no. They control two different things. One control charging method, other controls process prioritizing.
 
  • Like
Reactions: shaun0207

Top Liked Posts

  • There are no posts matching your filters.
  • 345
    Hey guys, Sorry... I havent had this phone in forever.. This will not be updated nor will I be answering questions about it. Its pretty much outdated as well. Good time while we had it!


    Here is some information regarding kernels that I've collected from people off of this forum and the internet. This work is mine, but I just reworded it to make it work. I thought I'd compile it for future users that have questions.


    Now updated with some of the more popular kernels at the bottom. Make sure you select the one that corresponds with your kernel style. ( i.e. Sense or AOSP )

    Miscellaneous Tid-Bits:
    ** If you take any part of this please give me respects and XDA respects **
    ** Once again! First and foremost, make sure you flash the correct kernel for your ROM. That means if you have a Sense ROM, then you can flash only sense kernels. Same applies for AOSP ROMS can only run AOSP kernels.
    ** Also SBC kernels seem to be messing up batteries, and I would say that it would be related to that style of charging ( http://xdaforums.com/showthread.php?t=890448&highlight=casualties ) so tread lightly. HTC built that charging style ( almost instant drop to 90% battery life after it is disconnected from the charger ) to protect the cells from being " too full ". Li-Ion batteries aren't meant to be trickle charged. I myself do not recommend it, the same goes for many DEVs too. It is still offered by a few Devs out there, so make sure it doesn't say SBC ( if you don't want SBC ).
    ** If you are using a HAVS or Static kernel ( this applies to any version of HAVS ) Do not use SetCPU, because the kernel and the SetCPU will be counterproductive.
    ** I do recommend to run Juice Defender still regardless on which style kernel you pick to run. There will be no complications with the kernel and Juice Defender.
    ** Quadrant and Linpack scores mean nothing!
    ** There are two main styles of kernels, they are CFS and BFS.

    Kernel Information


    CFS = Completely Fair Scheduler


    CFS kernels tend to focus on the system as a whole, and CFS is the default in the mainline Linux kernel. CFS's are efficient for lighter or standard tasks, think texting and web browsing here. The stock kernels that we run from HTC are CFS kernels. The CFS kernels typically give you the best battery life as well. Though it's worth pointing out that while CFS does attempt to be more fair with respect to all running processes, the mainline kernel DEVs have implemented some ideas that originated with BFS into CFS.


    Here is more information on CFS: http://en.wikipedia.org/wiki/Completely_Fair_Scheduler

    BFS= Brain **** Scheduler


    BFS kernels tend to focus on whatever app is running in the foreground, think of a graphic intense game here. So a BFS kernel may give you better Quadrant scores, which shouldn't be the end all for someone choosing a kernel. The BFS is a 3rd party scheduler that the DEVs have to patch into a CFS kernel ( which in turn makes it into a BFS kernel ) . These kernels can tend to be laggy at times too.

    Here is more information on BFS : http://en.wikipedia.org/wiki/Brain_****_Scheduler


    Then there are sub-styles of these CFS and BFS kernels. Those being No-HAVS, HAVS, Static Undervolting, SBC and smartass governors.


    HAVS = Hybrid Adaptive Voltage Scaling
    Non-HAVS = Non Hybrid Adaptive Voltage Scaling AKA Static Voltage Scaling


    HAVS built kernels, both less aggressive and more aggressive builds, are based on the idea by allowing a range of variable voltage levels at each speed setting. Which basically means the amount of current the system draws from the battery fluctuates according to what it needs ( based off of the process at hand ). HAVS dynamically scales the voltage supplied to the CPU at any given speed, erring on the side of lowest power draw, in an effort to enhance power saving. The theory is that if the load isn't significant enough, it may be possible to lower the voltage more than the static setting, and in terms saving that much more battery. But also it can raise it higher than the static setting if it sees fit.

    For an example in a More Aggressive HAVS kernel the speed of 245mhz has a range of voltage values that can be used. The ranges are from 900-950mV. So if the load is low enough, instead of sending 925mV to the CPU only 900mV will be sent ( saving battery ). Now if the load is big enough to call for more juice than 925mV (which is the static setting), the HAVS ( inside of the kernel ) can send up to 950mV to the CPU at that 245mhz speed. The voltage of 950mV is the max HAVS can send at a 245mhz speed. ( Keep in mind these voltages are not the same for all forms of HAVS, so the voltages will vary between DEVs and which kernel your looking into. This was just an example from Netarchy's More HAVS table )

    No-HAVS built kernels use Static voltage scaling and do not use undervolting. These will not alter the amount of current at one set CPU speed. So no matter what process is being ran, it's still going to provide that dead set amount of current to the CPU. Thus burning battery life for smaller tasks, as it would use the same amount of battery for heavier tasks.

    Not all EVOs can run a HAVS built kernel. Most should try out the More Aggressive HAVS kernels, and if your phone acts funny ( Force closing, Camera issues, if it doesn't reboot etc ) then you should try the Less Aggressive HAVS kernels. And if still you're in the same boat, then last resort is to use a Non-HAVS kernel. Then you can run something like SetCPU to help out to throttle down the CPU at times.


    Static Undervolting


    Remember how I said that HAVS can fluctuate how much power it draws based on CPU load and battery temperature? Well when the kernel is not using HAVS, it is going to use Static Undervolting. Static Undervolting is when each frequency uses less mV then it normally would call for, but those numbers are set in stone. They will not fluctuate like HAVS would to save battery life. For example, the stock default voltage for the 998mhz setting is 1300mV.If the static voltage table is altered so that the setting for 998mhz is 1275mV ( this is what a Statis Undervolting kernel does ) . Then whenever the cpu scales to 998mhz on the phone, the power supplied will be 1275mV instead of 1300mV. So basically each frequency is guaranteed to always draw less power than normal ( In this case the CPU will pull 35 LESS mV every time the phone's CPU hits 998mhz ) .


    So in Static Undervolting kernel, the frequency of 245mhz has a voltage setting of 925mV assigned to it. So whenever the CPU is at 245mhz, it will be getting 925mV at all times. Regardless of the process at hand. ( Again these numbers used above are for Netarchy's Kernel. It will vary from DEV to DEV and kernel to kernel. )

    SBC=Superior Battery Charging

    Possible issues here with the SBC charging. I would sway away from these style kernels ( http://xdaforums.com/showthread.php?t=904577 )


    SBC is a type of "trickle" charging. It's a full, slow, complete charge and it prevents the 10% drop that most users get when pulling the phone off the charger. This kernel performs best with an overnight charge. Some users asked questions on the safety of the SBC charging method. Ms79723 states that it slowly pushes mV into the battery and thus keeps the battery cool. SBC kernels push the battery past their normal 100% charged point, to a TRUE 100% charged battery. These kernels also charge extended batteries to their maximum and show true "on charger" voltages, which would deem these to be more accurate for checking voltages on your battery. There was and still are concerns of the SBC kernels destroying your battery, but to most people now these don't pose much concern anymore.

    The issues people were bring up is that the Li-Ion batteries are charged to the point HTC set them to was for safety of the battery. Li-Ion's can be unstable at times, but Ms79723 programmed safety temperature and voltage "stops" to kill the charging is they get too high. Bad things can start to form, I said can not will, if the temperature gets above 140f and voltage gets to or past 4230mV. If the mV gets to 4230mV it can causes issues. If it gets to 4300 mV it can cause plating. People are also speculating that the SBC kernels are going to kill your battery and or shorten the life. With the price of eBay batteries now days, if the SBC kernels give you drastically ( which has been seen ) more battery life, then why not? The highest seem on the SBC kernels is 4210mV, which is under both values for issues to start.

    Smartass Governor


    I at first thought the Smartass Governor learned from what you do. But a member ( gpz1100 ) gave me this short to the point description on how they work. The Smartass governor isn't really smarter, nor does it learn from how you use the phone. It's smarter only the sense that it considers more factors to base the cpu speed on. It's more or less a combination of conservative with a screen off profile built in. The way it scales the CPU is not at all affected by any history of usage, rather only by immediate samples taken.

    There are other governors that are available as well. Those being conservative, ondemand, powersave, etc. which those are more self explanatory.
    5
    Great post.will thank you when I get on the computer.

    Sent from my PC36100 using XDA App
    4
    Just a few comments/corrections for ya ;D

    Here is some information regarding kernels that I've collected from people off of this forum and the internet. This work is not mine, I just reworded it to make it fit. I thought I'd compile it for future users that have questions.


    ** There are two main styles of kernels, those being CFS and BFS.




    CFS = Completely Fair Scheduler


    CFS kernels tend to focus on the system as a whole. CFS's are efficient for lighter or standard tasks, think texting and web browsing here. The stock kernels that we run from HTC are CFS kernels. The CFS kernels typically give you the best battery life as well.

    Here is more information on CFS: http://en.wikipedia.org/wiki/Completely_Fair_Scheduler

    BFS= Brain **** Scheduler


    BFS kernels tend to focus on whatever app is running in the foreground, think a 3d gaming here. So a BFS kernel may give you better Quadrant scores, which shouldn't be the end all for someone choosing a kernel. These kernels can tend to be laggy at times too.

    Here is more information on BFS : http://en.wikipedia.org/wiki/Brain_Fuck_Scheduler
    Mostly correct, though it's worth pointing out that while CFS does attempt to be more fair with respect to all running processes, the mainline kernel devs have implemented some ideas that originated with BFS into CFS.

    CFS is the default in the mainline linux kernel, BFS is a 3rd party scheduler that must be patched in.


    ** Then there are sub-styles of these CFS and BFS kernels. Those being No-HAVS, HAVS, Static Undervolting, SBC and smartass governors.
    Variations tend to focus more on HAVS/No-HAVS, a number are incorporating SBC, and many, while they may include the smartass governor, also often include other governors as well, such as conservative, ondemand, powersave, etc.

    HAVS = Hybrid Adaptive Voltage Scaling
    Non-HAVS = Non Hybrid Adaptive Voltage Scaling


    HAVS built kernels, both less aggressive and more aggressive builds, are based on the idea by allowing a range of variable voltage levels at each speed setting. Which basically means the amount of current the system draws from the battery fluctuates according to what it needs ( based off of the process at hand ). These levels are based on the load of the CPU and battery temperature. The theory is that if the load isn't significant enough, it may be possible to lower the voltage more than the static setting, and in terms saving that much more battery. But also it can raise it higher than the static setting if it sees fit.

    For an example in a More Aggressive HAVS kernel the speed of 245mhz has a range of voltage values that can be used. The ranges are from 900-950mV. So if the load is low enough, instead of sending 925mV to the CPU only 900mV will be sent ( saving battery ). Now if the load is big enough to call for more juice than 925mV (which is the static setting), the HAVS ( inside of the kernel ) can send up to 950mV to the CPU at that 245mhz speed. The voltage of 950mV is the max HAVS can send at a 245mhz speed.
    NoHAVS/Non-HAVS = Static Voltage Scaling ;D Just sayin'

    Caveat: The mV ranges quoted here are only guaranteed accurate/valid in reference to my kernel builds using the HAVS-more voltage table.

    Other HAVS implementations might have a greater range of possible voltage values for any given speed, or a lesser range. The main concept to convey with regard to HAVS is that it dynamically scales the voltage supplied to the cpu at any given speed, erring on the side of lowest power draw, in an effort to enhance power saving.

    No-HAVS built kernels use Static voltage scaling and do not use undervolting. These will not alter the amount of current at one set CPU speed. So no matter what process is being ran, it's still going to provide that dead set amount of current to the CPU.Thus burning battery life for smaller tasks, as it would use the same amount of battery for heavier tasks.

    Not all EVOs can run a HAVS built kernel. Most should try out the More Aggressive HAVS kernels, and if your phone acts funny ( Force closing, Camera issues, if it doesn't reboot etc ) then you should try the Less Aggressive HAVS kernels. And if still you're in the same boat, then last resort is to use a Non-HAVS kernel. Then you can run something like SetCPU to help out to throttle down the CPU at times.

    Pretty accurate here.


    Static Undervolting


    Remember how I said that HAVS can fluctuate how much power it draws based on CPU load and battery temperature? Static Undervolting is when each frequency uses less mV then it normally would call for, but those numbers are set in stone. They will not fluctuate like HAVS would to save battery life. So say normally the frequency of 998 MHz would use 100%. Once you flash a Static Undervolting kernel, that specific frequency would run at 90% ( versus the normal 100% ) at all times. So basically each frequency is guaranteed to always draw less power than normal ( i.e. 10% less than normal ) .


    So in Static Undervolting kernel, the frequency of 245mhz has a voltage setting of 925mV assigned to it. So whenever the cpu is at 245mhz, it will be getting 925mV at all times. Regardless of the process at hand.

    This is potentially worded in a confusing manner using %'s. HAVS dynamically sets the amount of power supplied to the cpu at any given speed based on factors like load and battery temperature.

    When not using HAVS, Static voltage scaling is used. Static undervolting is simply setting these static voltage values at a lower level than the stock default.

    For example: The stock default voltage for the 998mhz setting is 1300mV.
    If the static voltage table is altered so that the setting for 998mhz is 1275mV, then whenever the cpu scales to 998mhz on the phone, the power supplied will be 1275mV instead of 1300mV.

    It's also worth noting that the static undervolting example you've used at 245mhz is only guaranteed valid as an example referencing one of my static undervolting kernel builds. Another kernel builder might well alter the table in their particular kernel to set the values higher or lower (in other words, it's worth pointing out that it's an example, and not a given truth for all kernels ;D).
    3
    How do we find the voltage tables for the different kernels? i'm curious to see how they all compare with each other.

    Truthfully the voltages are dependent to the devs. Like I said it varies, so you would have to contact the devs and see how they set theirs up.

    Didn't see a thanx button, but thanx anyway. We noobs love people like you who explain what noobs don't know in a way noobs can understand. Don't change your writing style.

    The Old Black Guy

    No problem man. BTW nice sign off name haha. The thanks button is on the bottom right of the first post. Its a rectangle button, but none the less no problem.
    2
    THANK YOU!! This guide is very well written and makes perfect sense to us who want to know more about what these kernels do.

    Thanks again!!

    No problem man. Just spread the word. I tired to get it stickied but got no response. lol Ohwell.