[Q] playing with the kernel : new cpufreq: interactive: New 'interactive' governor - Galaxy S I9000 Android Development

I'm curious hehe but also with a lack of knowledge.
I've only played with my amd cpu governor in linux ( voltage and multiplier) but i will take a look at this.
I've already looked at the governor info on SGS, but didn't when deeper on this subject.

Maybe a way to further reduce lag without setting performance governor ?
What Mike Chan (author) writes about the spcificities of his governor :
Advantages:
+ significantly more responsive to ramp cpu up when required (UI interaction)
+ more consistent ramping, existing governors do their cpu load sampling in a workqueue context, the 'interactive' governor does this in a timer context, which gives more consistent cpu load sampling.
+ higher priority for cpu frequency increase, rt_workqueue is used for scaling up, giving the remaining tasks the cpu performance benefit, unlike existing governors which schedule rampup work to occur after your performance starved tasks have completed.
Everyone who owns a Galaxy i9000 talks about lag. This should be a way to reduce it further.
I'm looking now for some tutorials about compiling for arm on an intel386 cpu. lot to read

i'll see if i test this, will update tmr

Junior Members are Junior Members...
Thanks so much Rasdeep to have a look on this
I tried what it seems to me the simplest way ( I'm a real nOOb) :
copy the pre-compiled cpufreq_interactive.ko in /lib/modules/
then i did :
busybox grep nr_running /proc/kallsyms
and get :
c037f720 T nr_running
(different from the last one, cause i'm testing another kernel from Rasdeep, the 1.2 ghz undervolted now )
then did :
# insmod /lib/modules/cpufreq_interactive.ko nr_running_addr=0xc037f720
and get :
insmod: can't insert '/lib/modules/cpufreq_interactive.ko': invalid module format
Ok. Galaxy is Hummingbird CPU, and Milestone is Texas Instruments OMAP 2430. Not the same kind of CPU, i believe.
So. Maybe i need to compile. Eh, to learn to compile.

tristecire said:
Thanks so much Rasdeep to have a look on this
I tried what it seems to me the simplest way ( I'm a real nOOb) :
copy the pre-compiled cpufreq_interactive.ko in /lib/modules/
then i did :
busybox grep nr_running /proc/kallsyms
and get :
c037f720 T nr_running
(different from the last one, cause i'm testing another kernel from Rasdeep, the 1.2 ghz undervolted now )
then did :
# insmod /lib/modules/cpufreq_interactive.ko nr_running_addr=0xc037f720
and get :
insmod: can't insert '/lib/modules/cpufreq_interactive.ko': invalid module format
Ok. Galaxy is Hummingbird CPU, and Milestone is Texas Instruments OMAP 2430. Not the same kind of CPU, i believe.
So. Maybe i need to compile. Eh, to learn to compile.
Click to expand...
Click to collapse
It fails because it is not compiled against the Samsung kernel.

maxisma said:
It fails because it is not compiled against the Samsung kernel.
Click to expand...
Click to collapse
Hi
I think so, but compiling a kernel module is for me a brand new thing, a bit harder than flashing firmwares or testing new custom kernel releases made by another guys.
Don't know if i need the full sources, if the compilation is made on the desktop intel or in the sgs galaxy. Anyway i've got the full source, now.
http://opensource.samsung.com/
and search i9000
Found here :
http://forum.samdroid.net/f49/samsung-i9000-linux-kernel-eclair-source-1149/
given by LeshaK
Russian guys on this forum seems to know how to cook kernels, modules, initramfs and full roms. Thanks

Hello tristecire !
Thank you for the info.
I'm building a kernel with this new governor.
Hopefully i'll publish it with sources after some extensive tests.
Edit : instantaneous crashs : (even with appropriate nr_running_addr)

Related

[ROM[CyanogenMod][Fast][Stable][CM10] We make a stable difference

Features
Always get the latest additions
Ultra-fast
Ultra-stable
2012-10-06 Fixed power_profile.xml to show correct battery usage (bug was present in CyanogenMod, is also present in all other ROMS & custom kernels)
2012-10-06 Removed CMUpdater
2012-10-06 Recalculated correct smartreflex values with an average of 45mV less volts for the MPU.
2012-10-09 Deadline as default IO Scheduler & fifo_batch 1
2012-10-11 Patches to prevent sync_lost
IDEAS OMAP Gamma Control settings are disabled. They can be modified with 3rd party software. I disabled it because dmesg gets a SYNC_LOST on screen awake.
IDEAS Undervolt LCD by extensive testing. Should decrease heat which would in return prevent CPU throttling.
IDEAS Experiment to increase memory bandwidth. Overclock memory from 400 to 466 or 533?
IDEAS Our display is a huge battery eater. Letś make things black where we can. Also black MMS/People/... background.
COMING remove some code from the Power HAL to prevent spamming logcat with eg BOOSTPULSE not found. It's either this or stick with interactive governor.
IDEAS remove hotplug governor since it seems to crash every time I try it. If it doesn't crash today it will tomorrow
IDEAS increase throttling temperature from 65C to 85C as this is the Tjmax for OMAP4460, still seeing if this works well with the battery
PROGRESS Always fixing CM10 bugs
IDEAS 40Hz VSYNC for extra battery life. Kernel part is ready. Still need to find the Android part
Approved
I78377898 MPU 1350MHz: improve stability: - We give 1350MHz its own EFUSE - Smartreflex offset -90000 - All this should result in +30mv for extra stability CyanogenMod/android_kernel_samsung_tuna
Id17e6ca1 BFQ v5 enabled. After we installed the BFQ patches we should be enabling BFQ. (added at reqest of Rafael Salas) CyanogenMod/android_kernel_samsung_tuna
I81f5b749 block: introduce the BFQ-v5 I/O sched for 3.0 (added at reqest of Rafael Salas) CyanogenMod/android_kernel_samsung_tuna
I882c1e7a block: cgroups, kconfig, build bits for BFQ-v5-3.0 (added at reqest of Rafael Salas) CyanogenMod/android_kernel_samsung_tuna
I161fc7c4 block: prepare I/O context code for BFQ-v5 for 3.0 (added at reqest of Rafael Salas) CyanogenMod/android_kernel_samsung_tuna
Downloads
cm-10-20121011-UNOFFICIAL-maguro.zip
cm-10-20121010-UNOFFICIAL-maguro.zip
cm-10-20121006-UNOFFICIAL-maguro.zip
Results
These are based on the lowest MPU voltage my Nexus was able to run. I added 5mv to the last crashed MPU voltage, and next I added 80mv again which is the noise/ripple value. 1210mv was too close to the voltage making 1350mhz freeze (1170mv). These are safe for everyone.
MPU - Stock Smartreflex - Optimized smartreflex
350 - 840 - 810
700 - 1000 - 950
920 - 1090 - 1050
1200 - 1200 - 1170
1350 - 1210 - 1240
good
what is the correlation with Fixed power_profile.xml and kernel?
however, you're doing a great job on xda ... continues ... guy.
Welcome !!
Waiting for this !
If you have a fix, why not submit it to gerrit?
djjonastybe said:
Fixed power_profile.xml to show correct battery usage (bug was present in CyanogenMod, is also present in all other ROMS & custom kernels)
Click to expand...
Click to collapse
Looking forward to know whatis the bug in power_profile.xml too.
chadouming said:
Looking forward to know whatis the bug in power_profile.xml too.
Click to expand...
Click to collapse
+1. Gawd i hate suspense.
Galaxy S3 stock ROM had a bug in power_profile.xml and showed the display as 2nd or 3rd drainer instead of first and miles ahead...
chadouming said:
Looking forward to know whatis the bug in power_profile.xml too.
Click to expand...
Click to collapse
mpokwsths said:
Galaxy S3 stock ROM had a bug in power_profile.xml and showed the display as 2nd or 3rd drainer instead of first and miles ahead...
Click to expand...
Click to collapse
Hmm, I guess this?
thederekjay said:
If you have a fix, why not submit it to gerrit?
Click to expand...
Click to collapse
+1
i think he's just saying that he got the fix just to get some download numbers.
anyway,we expect the difference
Sent from my Galaxy Nexus
I am compiling it please hold on
https://docs.google.com/spreadsheet/ccc?key=0AuqacKmGLKJ6dEdJZG5QTmNtQnoyYk0zbm5IanluMHc#gid=1
If anyone here has undervolted and kept their crashing voltages please send them so I can improve smartreflex
k786 said:
+2
if you have a fix why make it rom exclusive? submit a gerrit and make all roms better
Click to expand...
Click to collapse
I did that. But they are not fond of my power consumption calculation being linear. Let s say they wanted me to prove it it is correct. No way to prove it except making a calculation based on their existing findings.
anarkia1976 said:
what is the correlation with Fixed power_profile.xml and kernel?
however, you're doing a great job on xda ... continues ... guy.
Click to expand...
Click to collapse
the power consumption of the CPU is preset in the power_profile.xml since android by itself cannot calculate power consumptions. Using kernels with custom frequencies for the CPU can screw all this up. 1350MHz or 1500MHz are not official so they are not included in power_profile.xml. So we have to add them to show correct battery stats
Anyone try this yet?
I am uploading todays version. I tweaked deadline and set it as default. I also revised my custom smartreflex code.
Does anyone here use a governor other than interactive?
I will start testing on undervolting the LCD right away.
Also new and being the first Nexus ROM to release:
40Hz refresh rate extra battery life! I believe 40Hz is plenty for gaming on a phone.
Going to test this tomorrow.
Uploaded todays version
why using a host that requires register\login?i want to try the rom,but not want to register a service that i'll never use..thanks anyways mate!
Good ideas djjonas.
Definitely going to try it.
However ... 40Hz are not enough. This is the concept of Project Butter. 60fps all the time!
I would say more than 45Hz would be good...
download link is very troublesome, very bad.

[DEV][WIP][KERNEL-PATCH][MSM7x30/8x55 GPU OVERCLOCKING][2d-core done][3d-core][v0.7]

Finally after someone pm'd me I looked back into GPU Overclocking.
New thread created issues with old thread OP permissions (people seem to be asking the same questions over and over again all information will be kept in OP & DO READ THE THREAD, repetitive questions will now be ignored)
Benefits:
Smoother UI
Handle 2d & 3d core GPU intensive applications & games
Currently only 2D core has been overclocked working on 3D core OC
2D-core original value - 192mhz OC to 245mhz DONE achieved 25% performance boost grp_2d_clk outputs 245760000hz
3D-core original value - 245mhz OC to 300+mhz WIP hoping to achieve 40-50% performance boost
2D-core OC only Download: Coming soon...
Download Links for other devices coming soon...
Works for all HTC Sense/Cm9/Cm10 kernels (Just ask a kernel developer for your device to implement the source code)
Note: Don't have internet on PC so providing 3 main files that need replaced for 2D-core OC to work
Download link to source code: http://d-h.st/wbH
3D-CORE OC TESTS Download: Coming soon...
Do check under sys/kernel/debug/htc_clock/clks/ look for file with all clocks & look for GRP_clks (Graphics clock)
OK so basically today I've been thinking and I've come to the conclusion that I will release the 2D-core OC patch As Soon As Possible, 3D-core Core OC is NOT Impossible but for now I'll give it a break, I will attempt 3D-core OC If/When I can get a hold of a msm7x30/msm8x55 device, as it will make it much easier for both me & users.
So for now you can enjoy the 50mhz increase/bump up, perf boost 25% in 2D-core (will increase performance in both 2D/3D intensive appications as 2D-core is used for 3D AFAIK and increase User Interface performance (Note: This will not take a hit on battery life)), I will also release a couple of fixes on patchas kernel that shouldnt be there/set etc.
(Theres a device available in my area for roughly £90, if anyone wants to contribute towards getting that device or can donate a device , more than welcome and shoot me a PM so I can list you here.)
(This isnt a promise of 3D-Overclock if you donate, if you donate please do so expecting nothing I will only attempt 3D-overclock)
Working device list - all kernel 3.0+ msm7x30/msm8x55 soc devices.
Main thread is in Desire HD Android Development section: http://forum.xda-developers.com/show....php?t=2368497
Unless i am mistake, i believe there's already 2d and 3d overclock in the AlterNdromadus kernel.
sharptv said:
Unless i am mistake, i believe there's already 2d and 3d overclock in the AlterNdromadus kernel.
Click to expand...
Click to collapse
Link github commit?
Shaky156 said:
Finally after someone pm'd me I looked back into GPU Overclocking.
New thread created issues with old thread OP permissions (people seem to be asking the same questions over and over again all information will be kept in OP & DO READ THE THREAD, repetitive questions will now be ignored)
Benefits:
Smoother UI
Handle 2d & 3d core GPU intensive applications & games
Currently only 2D core has been overclocked working on 3D core OC
2D-core original value - 192mhz OC to 245mhz DONE achieved 25% performance boost grp_2d_clk outputs 245760000hz
3D-core original value - 245mhz OC to 300+mhz WIP hoping to achieve 40-50% performance boost
2D-core OC only Download: Coming soon...
Download Links for other devices coming soon...
Works for all HTC Sense/Cm9/Cm10 kernels (Just ask a kernel developer for your device to implement the source code)
Note: Don't have internet on PC so providing 3 main files that need replaced for 2D-core OC to work
Download link to source code: http://d-h.st/wbH
3D-CORE OC TESTS Download: Coming soon...
Do check under sys/kernel/debug/htc_clock/clks/ look for file with all clocks & look for GRP_clks (Graphics clock)
Click to expand...
Click to collapse
Hint:
Either a PATCH file (you generate it with the "diff" command), or a link to a commit on github.
Also, your thread title is incorrect, because what you've provided is actually *NOT* a patch at all. It is a zip file with three C source files.
I would recommend strongly against dumping in some random files, especially not knowing what kernel source they actually apply to. As for your line "Works for all HTC Sense/Cm9/Cm10 kernels (Just ask a kernel developer for your device to implement the source code)", I can absolutely guarantee that this assumption is not valid. It may very well work on whatever kernels you've looked at or tested against, but that is no indication that it would work for others.
Shaky156 said:
Link github commit?
Click to expand...
Click to collapse
I'm very indecisive :silly: :
https://github.com/HTCDreamOn/htc7x30-3.0/commit/161849b66e1202e71d706d22df1f67e7b486398b
https://github.com/HTCDreamOn/htc7x30-3.0/commit/8c0e7c29d937fc3951e5a18383f32614c535c158
https://github.com/HTCDreamOn/htc7x30-3.0/commit/81140be92be456f48f8de8839c63e1d28aa36fb0
https://github.com/HTCDreamOn/htc7x30-3.0/commit/16df031534411956d13620f583f61131578ed820
As you can see I have at at no point changed the third file in the zip.
HTCDreamOn said:
I'm very indecisive :silly: :
https://github.com/HTCDreamOn/htc7x30-3.0/commit/161849b66e1202e71d706d22df1f67e7b486398b
https://github.com/HTCDreamOn/htc7x30-3.0/commit/8c0e7c29d937fc3951e5a18383f32614c535c158
https://github.com/HTCDreamOn/htc7x30-3.0/commit/81140be92be456f48f8de8839c63e1d28aa36fb0
https://github.com/HTCDreamOn/htc7x30-3.0/commit/16df031534411956d13620f583f61131578ed820
As you can see I have at at no point changed the third file in the zip.
Click to expand...
Click to collapse
The kernel graphics software layer edit was mainly to force the 2dclk running async to the axi, ive changed the 2d oc works perfectly fine so will try n update with another patch for that
Shaky156 said:
The kernel graphics software layer edit was mainly to force the 2dclk running async to the axi, ive changed the 2d oc works perfectly fine so will try n update with another patch for that
Click to expand...
Click to collapse
Look forward to a collaboration between you and HTCDreamOn!
Devs + testers join IRC will make life easier
Irc freenode #s1gpuoc
Okay after looking @ GPU Overclock for 2 weeks, This is the news on GPU OC for MSM8x55/MSM7x30 socs.
My findings...
2D-core OC from 192mhz to 245mhz successful.
3D-core OC will not happen without me obtaining the datasheet (which is proprietary)
The clocks are protected, via Ownership/Permissions, and maybe an RCU/MPU
No Overclocking the CPU does NOT Overclock the GPU, thats the worst thing I've heard in my life lol.
The lowest the GPU can hit is 192mhz or lpxo freq
Bus is not overclockable, it always is 192mhz
EBI_2D_clk will and has always been 0mhz
Modifying kgsl platform data and/or the graphics table with random values or even calculated values from correct pll freqs will NOT OC the gpu
it's ashame the GPU clocks are protected.
IF anyone is looking to continuing this project and is on the right track you're more than welcome to get in contact with me, especially if you have the msm7x30 datasheet.
The QSD8x50 soc is more open than this soc, so I'm doing a few tests on the HD2

[GUIDE] Custom Kernels: A Guide on What you Need to Know

I was searching for info about MPDecision and stumbled upon this..it's a very good read specially for beginner and those that want to know more about kernel specifics and how they work..this was written back in 2012:
---What IS a kernel?---
The ELI5 answer: "An analogy: the Kernel is like the Engine, Electrical system and the Transmission to a car. The Library, Framework and the Apps [AKA ROM] are the body frame and the rest of the Car." - faux123
In other words, the kernel is the software that controls the hardware at a very low level.
---The Stock Kernel---
The "stock" kernel is the kernel that comes with your Nexus 4 out of the box. It's compiled directly from Google's kernel source code and shipped on your device with zero modifications. A custom kernel, on the other hand, compiles the stock kernel source and adds various modifications to that code.
What are those modifications that kernel devs employ?
To understand what they mean, you need to understand the features of the stock kernel first!
What are the stock kernel parameters?
CPU min frequency: 384 MHz
CPU max frequency: 1512 MHz
Governor: Ondemand
I/O Scheduler: CFQ
What does each parameter represent?
CPU frequency: you can simply think of this as the "speed" the CPU is running at
Governor: regulates the CPU frequency based on many different parameters such as load and time-in-state. Here is an excellent list of many of the most common CPU governors and how each works. Note that you will only see a couple of the CPU governors on this list in whatever kernel you use. Ondemand and Interactive are by far the most widely used, and are the ones you should look at.
I/O Scheduler: handles how the system makes disk access; Please refer to the previous linked thread and scroll down to the 4th post for a detailed list.
What else do you need to know?
--PowerHAL--
PowerHAL is what makes Project Butter. The powerHAL is a ROM component that tells the kernel to BOOST the CPU frequency to higher values in response to UI inputs. The higher CPU frequencies can better respond to UI demands so the overall experience is smoother than without. - faux123
--mpdecision--
All Qualcomm based phones have Qualcomm prorprietary userspace binary called "mpdecision" aka m(ake)p(oor)decision. Instead of letting the kernel itself to decide what frequencies and how many cores to run, this "mpdecsion" binary polls the kernel run queue statistics and decides for the whole system the "optimal" frequency and the "optimal" number of cores to use. The concept is fine, except the decision making is done in userspace and it's 100% closed source so there's no way to tweak it and there's a latency (because all userspace binaries needs to "poll" the kernel for the latest information which is slightly delayed). - faux123
ELI5: mpdecision is a proprietary Qualcomm daemon that makes calls to the SoC (the entire chip your phone uses) to manage the cores. The OS (PowerHAL) makes a request to mpdecision and then mpdecision makes a request to the first two cores to ramp them up. - _motley
Why do kernel devs mess with these?
In practice, the PowerHAL ramping up trick successfully got rid of a lot of the UI lag since Android 4.1. However, this comes at the cost of battery life (and heat generation!) The reason for this is because the system ramps up its CPU on every touch input, rather than waiting for the kernel to calculate the load and ramp up accordingly. On the Nexus 4, when the PowerHAL makes a call to mpdecision it locks the minimum CPU to 1026 MHz upon touch input for the first two cores. While this DOES give you the buttery-smoothness you would expect, it's a bit overly aggressive. This is part of the reason why stock kernel tends to heat up your phone when you play around with it a lot.
---Custom Kernels---
What changes should I look out for?
--mpdecision--
Many kernel devs don't like Qualcomm's implementation, so they work around or get rid of it. Franco, Faux, Bricked, Matr1x, Motley, and Trinity have gotten rid of it/used their own implementations. Harsh and IntersectRaven's leave it intact. Every kernel dev implements things in their own way, and the only way to tell which is better for you is to try each one. This is by far the biggest change any kernel dev can make, as it completely alters how the system handles hotplugging and CPU scaling. In general, you'll find kernels without mpdecision running cooler, with greater battery life, but with a little more lag (made up for by other tweaks).
--thermald--
A binary that controls how to throttle your CPU based on CPU and battery temperatures. You can find the config file in /system/etc/thermald.conf. Stock configs lead to aggressive thermal throttling (battery temp. at 36 degrees C for example, which is easily achieved). You can look into the file and see the various thresholds and actions that the system takes to lower the temperature of the CPU and battery, but it isn't really necessary. Just know that some kernel devs may have changed this in order to allow your phone to run at higher frequencies for an extended period of time, or to further make your phone run cooler.
--Underclocking--
Quite straightforward, by limiting the max frequency your CPU can use, you use less power (higher frequency results in more power dissipated by the CPU).
P = C(V^2)f where C is capacitance, V is the voltage, and f is the current frequency
..gives you an idea of how underclocking (and undervolting) uses less power.
--Undervolting--
This is all the rage today, with many users trying to get as low as possible stable voltage. It's arguable how much undervolting saves battery life, but there's no doubt it reduces heat dissipated from the CPU (see: the above formula). Your CPU is located on the top half of your phone, which is likely where you've felt the heat before. How much your chip can successfully undervolt depends on what type of binned CPU you have. If you want to undervolt, I recommend checking if the voltages you set are stable by running the StabilityTest app and doing the Scaling Stability Test. The frequencies' voltages definitely don't scale linearly, so don't assume that doing global undervolts will be the best you can do. You'll have to apply voltages one by one if you truly want the lowest your chip can possible handle.
--Overclocking/overvolting--
Bricked, Trinity, and Motley's kernel implement this, because it CAN be dangerous. Overclocking usually requires overvolting the processor (so the overclock is stable) but overvolting carries with it the risk of bricking your phone by frying the CPU. Know that doing this has some risks before you try it. Some kernels like Matr1x and Faux's also allow for the GPU to be overclocked if games run a little slowly for you.
--Hotplugging--
Hotplugging is where the individual cores on your phone switch on/off depending on the load on the CPU. The advantage of hotplugging is a reduction in power used because the cores will only turn on when needed. Kernels that use the auto_hotplug binary by Thalamus (that would be Matr1x, Motley, Trinity, Bricked at the moment) allow you to fine tune the enabling and disabling thresholds. These parameters are generally for advanced users only as they require you to write scripts to control them.
--Color Control--
Gives you the ability to change color multipliers and gamma settings to calibrate your display. If you feel your display is too yellow, or you miss the previous feel of your previous phone, then you can mess around with this to get better color reproduction. You can find some user examples here to give you a good idea of what can be done. Gamma control currently requires either Faux's control app or for certain kernels you can use scripts to control them.
--Wakelock reduction--
Some kernels have reduced the msm_hsic_host wakelock duration so your phone enters deep sleep more often. How much improvement this makes is debatable, and whether or not this wakelock is even an issue is also debatable.
--Kernel modules--
Some kernels make modifications to the low-level drivers that interact with the components of your phone. An explanation of what is commonly touched can be found here. You don't really have to worry about this, just know that something is being improved when a kernel dev mentions it.
---Installing a Custom Kernel---
Just flash the zip in your recovery of choice. No need for wiping cache or anything. However, one thing to note that might save you some headache in the future is: what exactly are you flashing? When you flash a kernel, you are not just flashing the kernel, you are writing to the entire boot partition. The boot partition is made up of the kernel AND the ramdisk (the ramdisk is an image that the kernel mounts read-only at boot, it is basically used by the kernel to mount the rest of the system images). Some kernel devs pack their own ramdisk into their boot.img that you are flashing, so when you try to flash a DIFFERENT kernel, you end up in a bootloop. (An example: flash Franco kernel --> flash Faux kernel on top = bootloop.) To solve this you need to reset the ramdisk by flashing a stock reset kernel with the stock ramdisk.
Click to expand...
Click to collapse
all content taken from [URL="http://www.reddit.com/r/nexus4/related/158t1i/custom_kernels_a_guide_on_what_you_need_to_know/"]a reddit post i found which was originally written [/URL]by reddit user IAmAN00bie

[KERNEL] Bricked-Kernel Hammerhead | Sweep2wake | KnockKnock/Dt2w

Welcome to the most customizable N5 kernel on xda
Bricked-Kernel Nexus 5 (hammerhead)​
Features:
* Based upon Google's msm 3.4 source
* Various fixes, improvements and optimizatios (look @ github)
* Compiled with gcc4.7.2 toolchain (linaro 09.12)
* -O3+ optimized
* Snapdragon & CortexA15 optimizations
* replaced qcom's hotplug binary with msm_mpdecision (IN-KERNEL, better battery life + performance)
* Extensive sysfs interface for mpdecision with all the tuneables you want (/sys/kernel/msm_mpdecision/)
* replaced qcom's thermal binary with my IN-KERNEL solution. (/sys/kernel/msm_thermal/)
* export krait version to: /sys/kernel/debug/krait_variant
* Allow OC up to 2,5Ghz
* Allow UC to 96Mhz
* Undervolting (faux123)
* F2FS Support
* Multirom Support
* KCAL (savoca) & Gamma Control (faux123)
* Sound Control (faux123)
* Default clocks: 300 Mhz min & 2265,6 Mhz max
Zip features:
*** ON-THE-FLY-RAMDISK EDITS!
*** THIS KERNEL USES YOUR RAMDISK, it will just modify it on the fly while flashing. These changes are not creating any incompatibilities with roms/other kernels.
* removes min freq overrides from the ramdisk
* removes governor overrides from the ramdisk
* adds init.d support to your ramdisk (if not already supported)
* modifies stock ondemand settings
* add module insertion
Check the compare links for the rest ​
Where is tha Changelog???
There will be no more changelogs.
Instead the download pages were outfitted with compare links to github for each download.​
What is sweep2wake?
Disabled as default, activate through an app like KControl or over sysfs: echo 1 > /sys/android_touch/sweep2wake​
What is doubletap2wake / knock knock?
Disabled as default, activate through an app like KControl or over sysfs: echo 1 > /sys/android_touch/doubletap2wake​
How to install?
Flash through recovery. #done.​
How to uninstall?
Flash this:
http://bricked.de/downloads/kernel/hammerhead/bricked_uninstaller_hammerhead.zip
You are done. Bye.​
Where to complain about errors/bugs?
Please use the Issuetracker for bugs/errors/feature wishes!
Issuetracker @ https://github.com/showp1984/bricked-hammerhead/issues
[email protected]
IRC Chat: Freenode IRC #bricked​
Download:
No Guarantees! If it kills your grandmother or your device, I am NOT responsible! If you understand this:
(If you download, please hit Thanks below my post! Thank you!)
>>> DOWNLOAD <<<​
Donation Hall-of-Fame:​
> Hall of fame <
Thank you very much!​
Stock 4.4 Nexus5 boot.img - flash this if you come from another kernel coming with it's own ramdisk (eg: zip contains a *.img file) ONLY FLASH ON 4.4
Source:
​
What is msm_thermal?
Kernel based 3-phase thermal control!
This replaces your /system/bin/thermal-engine-hh binary which is renamed by the installer to thermal-engine-hh_bck.
It will throttle your cpu speed to keep it cool and unleash it if the cpu has cooled down enough. (3 phases: low, mid and high)
Check /sys/kernel/msm_thermal/conf/ for the thermal configuration
allowed_max_high = highest threshold (phase 3)
allowed_max_low = remove the throttling if we cooled down to this (clr_thrshold)
allowed_max_freq = max frequency if throttled (limit)
[...]mid[...] = same as above, just for phase 2
[...]low[...] = Lowest threshold (phase 1)
check_interval_ms = how often shall we check? (sampling rate)
shutdown_temp = if we reach this shut down the device!
If you want to see msm_thermal doing it's job:
Code:
adb shell
cat /proc/kmsg | grep 'thermal'
What is msm_mpdecision?
100% kernel based multi core decision! (should cpu1/2/3 be online or not?)
This replaces your /system/bin/mpdecision binary which is renamed by the installer to mpdecision_bck.
Check /sys/kernel/msm_mpdecision/conf/ for the configuration.
startdelay = time until mpdecision starts doing it's magic (20000)
delay = time between checks (130)
pause = if something else plugs in the cpu, fall asleep for 10000ms (10 secs)
scroff_single_core = if the screen is off, don't plug in cpu1/2/3. Additionally: Unplug all cpus except cpu0 when screen is turned off (1)
enabled = enable(1) or disable(0) mpdecision. This does not affect scroff_single_core!
min_cpus = min cpus to be online, cannot be < 1. Default: 1
max_cpus = max cpus to be online, cannot be > 4. (if you set it to 2 and min_cpus to 1 you will basically have a dualcore) Default: 4
idle_freq = a value against that will be checked if a core +/- is requested. (499200)
If cpu0 is below that value and a core up of another cpu is requested, nothing will happen.
If any other cpu is above that value and a core down of that cpu is requested, nothing will happen. (otherwise it would now put down that cpu even though it is still working, which isn't what we want)
Hot plug thresholds (aka now it gets 'complicated')
This small formula calculates which value will be used: (number_of_cpus_online - 1) * 2
The result of this formula will be the nwns_threshold where a new cpu is hotplugged.
The result of this formula + 1 will be the nwns_threshold where a cpu is unplugged.
nwns_threshold_x = runqueue threshold, if this is reached cpuX will be hot/unplugged
twts_threshold_x = time threshold, this amount of time must have passed for the related action to be taken (hot/unplug)
Example:
One cpu is online.
(1 - 1) * 2 = 0 ergo:
nwns_threshold_0 = cpu1 will be hotplugged at this value
((1 - 1) * 2) + 1 = 1
nwns_threshold_1 = cpu0 will be unplugged at this value
Since we can't unplug cpu0 this is '0'.
Two cpus are online.
(2 - 1) * 2 = 2 ergo:
nwns_threshold_2 = cpu2 will be hotplugged at this value
((2 - 1) * 2) + 1 = 3
nwns_threshold_3 = cpu1 will be unplugged at this value
etc...
Some values are:
NwNs_Threshold: 12, 0, 25, 20, 32, 28, 0, 35
TwTs_Threshold: 140, 0, 140, 190, 140, 190, 0, 190
Where the position and function of the number equals the result of the above explained formula.
(all times are in ms)
If you want to see the mpdecision magic happening:
Code:
adb shell
cat /proc/kmsg | grep 'MPDEC'
mpdecision's input event boost, aka project butter
This will boost your min cpu speed if you touch the screen or press a button and gives you full control.
In those events the min cpu freq will be risen to a predefined value (look below) on every online cpu. This boosts overall reaction times and smoothness a lot. (works similar to the qcom mpdecision binary)
Configuration files:
[email protected]:/sys/kernel/msm_mpdecision/conf # ls | grep boost
boost_enabled
boost_freqs
boost_time
All of them work like the usual sysfs files, except one special case:
boost_freqs will list all frequencies from cpu 0 to cpu x. Cpu 3 and any following cpu will share one frequency.
To change those frequencies echo the cpu number + the frequency in khz.
Example: To change the boost freq of cpu3 (and 4,5,6,7,8, etc) the echo would look as follows:
Code:
echo "3 960000" > /sys/kernel/msm_mpdecision/conf/boost_freqs
for cpu0:
Code:
echo "0 960000" > /sys/kernel/msm_mpdecision/conf/boost_freqs
Defaults:
Code:
cat /sys/kernel/msm_mpdecision/conf/boost_freqs
960000
960000
729600
576000
Why do I have no WLAN?
Due to this kernels very high optimization settings it is too big for our boot.img with WLAN included into the kernel, so it is built as a module. That means it needs to be inserted into the kernel upon boot up, which needs to be automated for maximum comfort.
The zip adds module insertion to your ramdisk, if that fails for some reason the wlan module cannot be inserted.
if
Code:
adb shell lsmod
doesn't show this:
Code:
tun 14701 0 - Live 0x00000000
cifs 275399 0 - Live 0x00000000
bcmdhd 2964650 0 - Live 0x00000000 (C)
Then something went horribly wrong.
Chances are that I broke it and this should never happen.
One post in the issue tracker will probably fix it with the next release
You can restore wlan for your current bootup by executing:
Code:
adb shell
su
insmod /system/lib/modules/bcmdhd.ko
Is there an app available to customize this pure bodacious and awesome kernel?
Yes there is: KControl. It's in the Google Playstore.
​
A few benchmark results:
Vellamo Metal:
http://vellamo2.quicinc.com/api/v2/app/plot/Metal/submission/PEE3B604B-8C49-69F5-001E-6BCA76DF491D
(usually ranges from 11xx-12xx. Depending on system background load, thermal status, air pressure, weather, world hunger, etc...)
Antutu:
https://plus.google.com/u/0/108262968419038009038/posts/VJbxpMoFJPN
(usually ranges from 28.xxx - 30.xxx. Depending on system background load, thermal status, air pressure, weather, world hunger, etc...)
3DMark Icestorm unlimited: (the others are maxed out)
https://plus.google.com/u/0/108262968419038009038/posts/N24t9ssoBcL
(17xxx)
FIRST! o yes!!! mwhahahah!! and so it begins
Finally a Bricked thread! :victory: No more F5 spamming the kernel website
Good stuff, you've finally joined the party.
Sent from my Nexus 5 using Tapatalk
Woot! first page!
+1
10 char
Ngo93 said:
Finally a Bricked thread! :victory: No more F5 spamming the kernel website
Click to expand...
Click to collapse
If you are familiar with rss, all kernel download pages have a little rss symbol, if you click it you get here:
http://bricked.de/kernelrss.php?action=krss&device=hammerhead&release=stable&type=aosp
Just something to consider instead of spamming F5
unforgivenmercy said:
Good stuff, you've finally joined the party.
Click to expand...
Click to collapse
If you take a look at the dates on my homepage you might notice that the party ended about 2 days ago. The after party on the other hand starts now!
faux123 said:
Woot! first page!
Click to expand...
Click to collapse
Indeed! Well the thread isn't that old yet
OBI ONE is here aweseome !!! Always a pleasure to hang around in ur threads
n3ocort3x said:
OBI ONE is here aweseome !!! Always a pleasure to hang around in ur threads
Click to expand...
Click to collapse
left something on github for you
I saw, many thanks for that, but i think i have to ask u a bit about this, already in bed now, but tomorrow is another day 5star and subscribed as always
show-p1984 said:
left something on github for you
Click to expand...
Click to collapse
In the op it just says to install. So no wiping of cache or D cache correct? Sorry just re assuring
Sent from my Nexus 5 using Tapatalk
Wiping cache is redundant and you don't have to do it with kernels.
Sent from my Nexus 5 using Tapatalk
Carbajal3009 said:
In the op it just says to install. So no wiping of cache or D cache correct? Sorry just re assuring
Sent from my Nexus 5 using Tapatalk
Click to expand...
Click to collapse
The zip does it for you.
However, if it gives you a warm and fuzzy feeling you are free to do it again (so twice then ^^).
Wow, finally it is here. Flashing now.
Has anyone actually demonstrated (scientifically or otherwise) anything wrong with the qcom mpdecision binary? Im not taking anything away from kernel developers who write their own mpdecision (especially those who also provides sources), but I am curious as to whether they are actually better than those provided by qcom. Surely they know more about the capabilities of their own cpus better than anyone no?
jazzor said:
Has anyone actually demonstrated (scientifically or otherwise) anything wrong with the qcom mpdecision binary? Im not taking anything away from kernel developers who write their own mpdecision (especially those who also provides sources), but I am curious as to whether they are actually better than those provided by qcom. Surely they know more about the capabilities of their own cpus better than anyone no?
Click to expand...
Click to collapse
A fair question, I imagine there is something sacrificed using either or.
Sent from my Nexus 5 using XDA Premium 4 mobile app
jazzor said:
Has anyone actually demonstrated (scientifically or otherwise) anything wrong with the qcom mpdecision binary? Im not taking anything away from kernel developers who write their own mpdecision (especially those who also provides sources), but I am curious as to whether they are actually better than those provided by qcom. Surely they know more about the capabilities of their own cpus better than anyone no?
Click to expand...
Click to collapse
It's not that complicated (there is no black voodoo magic), that's why bricked kernel was the first to introduce this feature back on the pyramid.
CPUs need to be plugged in / unplugged based on load, there is nothing more qcom can know that we can't also see inside of the kernel.
There is one HUGE thing that is wrong with qcom's mpdecision: It's closed. It's a black box. We don't have any idea what is going on in there. Literally, none. It's not even configurable. It could contain secret nsa code, or send dirty sms to your girlfriend (who might actually enjoy that, idk...)
If we would have source, hell, awesome. I wouldn't have spent over a year (first commit: Date: Thu, 21 Jun 2012 06:06:47 +0200, see here) to get my msm_mpdecision solution to the point where it is a) awesome and b) a lot better than the binary. It can be configured in any way you might need to. It features statistics on how often and how long a cpu is hotplugged. It has the input event boost. It's the full package deal.
If you compare my kernel with the stock kernel you will see huge performance improvements and battery savings on bricked. Those are not only because of my msm_mpdecision but certainly related. Furthermore: we can completely customize it, over sysfs, on a running kernel, without reflashing.
That's what I would have expected from qcom in the first place.
Another thing wrong with qcom's binary: It's static. Meaning: If you change your min freq on stock it will always reset back to defaults. Same with their thermal binary. That's just annoying.
msm_mpdecision will notice it if you change your min frequency and dynamically work with that from there on. It will also prevent hotplug wars between apps and it: eg: an app plugs in cpus to grab some cpu data (like frequencies, etc. That is only available if the cpu is plugged in). Qcom's mpdecision would now raise hell to keep that cpu unplugged, my msm_mpdecision just sits back and chills for 10 seconds to avoid those wars. (again, even that delay is fully configurable)
There are also a bunch of boring advantages as to why it is better to let something crucial to the system run in kernel space and not in user space, but that would most certainly explode the context of this thread by the factor of 4.
My solution is not inferior to that binary in any way, in fact it has been vastly superior in my testing up until now, otherwise I would a) improve it or b) ditch it. I don't keep around bad stuff just for the point of having it or because I wrote it. If it sucks I will say that and act accordingly.
Thanks for the very informative post. I suppose there are advantages in avoiding qcom's mpdecision. Though i'd like to point out that the Android framework (msm power HAL) does use some of the interfaces provided by the binary (see hardware/qcom/power/). With the nexus 4, this will spam a lot of stuff to logcat if you are missing this interface, not sure if this is the same with the nexus 5, but judging by the sources it seems it will. Maybe you could provide some notification about this side effect.
Similarly, this could apply to the thermal side of things as well.

[KERNEL][BETA/TEST][CM12][1/12/15] E980 Kernel+ V0.8.1

E980 Kernel+​
***I am not responsible for you bricking your device or causing any other unwanted outcomes to your device. Be careful and smart. If you don't know what you're doing you probably shouldn't be flashing this.***
This is the E980 Kernel+​The end goal here is to have a kernel with more features and potentially much better battery life. I can only guarantee it will work on E980, not sure if it will work on other devices. I also do not know what ROMs it will work on. That is up to you to share. Rule of thumb is, if it's CyanogenMod, it'll work.
Suported Devices:
E980
E988
***If you are interested in building your ROM with my kernel, you have my permission to do so. However, if you could just let me know, that'd be nice. Also a credit would be appreciated but is not necessary either.***
DOWNLOAD​[11/12/14]: E980Kernel+V0.7.3.4: http://goo.gl/yMqgrP
[11/12/14]: E980Kernel+V0.7.3.3: http://goo.gl/eUfbQY
[10/11/14] E980Kernel+V0.6: http://goo.gl/XvQg7Z
[9/29/14] E980Kernel+V0.5: http://goo.gl/tJ9JGs
[9/23/14] E980Kernel+V0.4: http://goo.gl/cxphLB
[9/15/14] E980Kernel+V0.3.1: http://goo.gl/vtmnRR
Original Kernel: https://drive.google.com/file/d/0BxhkPfIzMhriQ0pqdGN0TnFDb2c/edit?usp=sharing
CHANGES​[11/12/14] V0.7.3.4:
Removed Undervolting
Removed GPU Tweaks
No more (or at least a lot less) random reboots
[11/12/14] V0.7.3.3:
Added Intelli-Plug V3.8
Added Intelli-Thermal
Added Undervolting
Tweaked GPU a little (more to come later)
Updated Intellidemand to V5
***If you are experiencing reboots upon setting CPU governors, set the voltage higher on your CPU thru Trickster or similar Kernel Settings App!***
[10/11/14] V0.6:
Compiled with Linaro (Should notice some minor performance improvements)
Other minor changes
[9/29/14] V0.5:
Added I/O Schedulers:
SIO, VR, Zen
Fixed Faux
Updated Faux Drivers to V3
[9/23/14] V0.4:
Removed Governors:
SmartassV2, Hyper (Only in config, they are still in source)
Added Faux Sound Controls (Thanks to Faux123 for his work)
Updated to CM11 Nightly 9/23/14 boot.img
[9/15/14] V0.3.1:
Added Governors
Dancedance, Intellidemand, SmartassV2, Hyper. (Hyper seems to be buggy, same with SmartassV2)
Added TCP Congestion Control
Westwood, Highspeed, Hybla, Htcp, Vegas, Veno, Scalable, Lp, Yeah, Illinois.
Flashing Instructions:​Make sure you use Mack's TWRP or Gummy CWM.
Flash a supported ROM
Flash E980 Kernel+
Wipe Cache & Dalvik
I highly suggest you are rooted and busybox'd.
Note: If flashing fails and you are on a CM11 ROM, you may want to try flashing original kernel or earlier version before reflashing your ROM or clean installing.
To-Do List:
-Faux Sound - Done.
-Governors/IO schedulers - Done.
-More TCP congestion controllers - Done.
-Replacement for Qualcomm's MP-Decision (Intelli-Plug) - Done.
-Support for actual GPU underclocking (Maybe save battery since it always runs at top freq when it doesn't have to.) - In the works.
-Support for undervolting - Removed for now.
-Lower clock speeds than 384 MHz
-Higher clock speeds than 1728 MHz
-Intelli-Thermal - Done.
-Fast Charge - Soon.
-Battery Life eXtender - Soon.
-Knock On/DT2W (May not add due to battery drain issue that comes with)
-Keyboard USB support
-Linaro Performance Toolchain - Done.
-Support for F240 - In the works.
-Anything else?
***Make note I do not know if I can implement all of these but I will try my best***
Source: https://github.com/Snepsts/kernel_e980
Toolchain: https://github.com/Snepsts/linaro4.7gcc
HOW TO BUILD​
At this point if anybody wants to try out the kernel before I make releases, you are free to compile it yourself. I would like to ask that you do not share compilations just because I like to track how many people download and use the kernel through my goo.gl links and the afh download counter. I don't like it when people rehost my kernel since it gives me misguided numbers on how many people are following my work. It's just personal though, I'm not going to stop you. I just like it because it gives me an idea of how many people are using my work and kind of makes me want to keep working on it since I know how many people still use it.
Anyways, I'll leave instructions to compile right here:
This is assuming you're using a Linux distro (VM or not, has to be 64-bit) Pretty much everybody recommends Ubuntu, and that's fine, but if you want my suggestion Mint runs like a dream. Anyways to building!
You'll need to get the required packages. I forget these off the top of my head, but they're something like this:
Code:
sudo apt-get install -y build-essential kernel-package libncurses5-dev bzip2 abootimg
There might be more, idk. This should get you through the build. Let me know if there's anything else.
Next we'll make a directory and grab the sources.
Go to your main directory to store the android folder in (for tidiness sake), if you have a preference you can do this differently. If you're not sure what you're doing here, just go from where you are (should be your main dir):
Code:
mkdir android
cd ~/android
git clone https://github.com/Snepsts/kernel_e980.git
This might take a while... when it's done you should have a folder called "kernel_e980" in your android directory.
While we're downloading, go get the latest M build or the latest nightly of CyanogenMod: https://download.cyanogenmod.org/?device=e980
This will be useful later.
Now we go grab a toolchain. My favorite is this one: http://www.mediafire.com/?x7lgbeprpg8gn choose the cortex A-15 one. Untar it and move the folder wherever you like. I suggest the android folder to follow the rest of the guide.
Code:
cd ~/Downloads
tar -xvf arm-cortex_a15-linux-gnueabihf-linaro_4.7.4-2014.06-build_2014_09_13.tar.xz
Now move this folder through the GUI (Graphical User Interface), much easier than more commands imo.
Now rename the folder toolchain, just because it's easier.
Now we're ready to build. The username is whatever your Linux username is.
Code:
cd ~/android/kernel_e980
export ARCH=arm
export CROSS_COMPILE=/home/username/android/toolchain/bin/arm-cortex_A15-linux-gnueabihf-
make cyanogenmod_e980_defconfig
All ready to go
One last thing, before you make it, if you are a little more advanced and need to toggle something or do anything else, use:
Code:
make menuconfig
You probably don't need that.
The # means the amount of cores in your computer's processor +1. For example, my Linux virtual machine has 4 cores allocated to it, so I assign it -j5. Now to make the kernel:
Code:
make -j#
And watch the words flyyyyy.
If anything fails, double check you didn't mess up. Also, the current Github build is never guaranteed to succeed.
Once the build is completed, you should see something like:
zImage is created!
Or something. Now go to your Downloads and get the boot.img out of the CyanogenMod build whatever way you wish to.
We'll leave it in the Downloads folder for the sake of the guide:
Code:
cd ~/Downloads
abootimg -x boot.img
Now you should have a zImage, intrid.img, and a bootimg.cfg. Ignore the zImage, move the intrid.img and bootimg.cfg to the ~/android/kernel_e980/arch/arm/boot folder.
Now we finish the kernel:
Code:
cd ~/android/kernel_e980/arch/arm/boot
abootimg --create boot.img -f bootimg.cfg -k zImage -r intrid.img
Done! Your kernel will be the boot.img file.
Replace a current kernel.zip's boot.img with this one, you can use any of the E980Kernel+ .zip folders for this. Just remove the boot.img in that one then put yours in it. I always upload my kernel to Gdrive and then download it to my phone to flash. But whatever you wanna do from here is fine.
And now you have the latest version of E980Kernel+ Unofficial. Yay you!
Click to expand...
Click to collapse
XDA:DevDB Information
E980 Kernel+, Kernel for the LG Optimus G Pro
Contributors
Snepsts
Source Code: https://github.com/Snepsts/kernel_e980
Kernel Special Features: Faux Sound, CPU Governors, TCP Congestion Controllers, I/O Schedulers, Intelli-Plug/Intelli-Thermal
Version Information
Status: Beta
Current Stable Version: V0.7.3.4
Stable Release Date: 2014-11-12
Current Beta Version: V0.8.1 TEST
Beta Release Date: 2015-1-12
Created 2014-10-19
Last Updated 2015-1-12
About E980 Kernel+
In this post we will go over some of the things in this kernel and shed some light on what they do... Let me know if you have any information to contribute or anything else
Intelli-Plug
Intelli-Plug is developed and updated by Faux123.
Intelli-Plug is a hot plug replacement for Qualcomm's proprietary MP-Decision. MP-Decision essentially decides the final factor on clock speeds, when cores go offline, how long they go offline, and they generally manage your CPU. There is a lot of discussion over whether or not Qualcomm's solution to hot plugging is efficient or not. Intelli-Plug is an open-source and updated version of MP-Decision in which anybody can contribute to and improve. It uses different methods for arguably better performance and better battery life. The current version used is optimized for MSM-8960 chipsets (like ours). It is updated and even offers convenient profiles to optimize battery life, performance, balance the two, or do a little between each option. Some of the profiles allow an eco-mode like experience. Eco-mode is a depreciated feature of Intelli-Plug that turned a quad-core processor into a dual-core, effectively optimizing the processor to run like a dual-core and save more battery power. In order to toggle the profiles option without paying 5 dollars for the Faux Clock app, you may use a root explorer (like ES File Explorer), go to sys/module/intelli-plug/parameters/nr_run_profile_sel and input a number anywhere between 0-5.
I prefer this option ON and do not currently have a profile preference. In my experience it improves the overall device (performance/battery life) with no noticeable drawbacks.
Intelli-Thermal
Intelli-Thermal is developed and updated by Faux123.
Intelli-Thermal is a thermal replacement to Qualcomm's proprietary thermal solutions. It is open-source and anybody can contribute to it. It has optimized thermal performance and is arguably more efficient than stock thermal settings. In addition to being an open-source and updated module, Intelli-Thermal offers customization such as: personal selection of cores to throttle at a self-determined value, and a similar selection for cores to offline (minus core 0, since it must be online at all times). Intelli-Thermal allows you to set your own rules (do not set the limit too high) and thermal values are in Celsius.
I prefer this option ON, and set Frequency Throttle Limit to 70 C, Core Offline Limit to 65 C, enable all cores for Frequency Throttling Cores, and enable Cores 2 & 3 for Offline Cores. Rarely do I ever experience heat, and if so it is very minimal. The device may lag or get hot depending on your settings, so please be careful or mindful of what you set. This works better on some ROMs than others.
*** Personal Note: These two are of my favorites because they are optimized and make for a better experience with little to no performance drops. This is just my preference, and it can be chosen to follow as a guideline by your discretion. ***
Multi-Core Power Saving
This is a normal kernel feature.
Multi-Core Power Saving is a basic feature that, depending on the profile selection, groups tasks to a certain amount of cores. 0 is off, so the device runs as normal. 1 is on, and will try to group tasks into single cores or multiple cores at lower frequencies to save power, but will not force it. 2 is aggressive, and depending on the user, may find that this causes a little more lag as the phone really hates using any extra CPU juice for anything, processes may be clustered and slowed down from this, but battery life is also the best at 2.
I prefer this option set to 1, as it has no noticeable lag and seems to still optimize the battery a little more. This option varies from user to user.
Faux Sound Control
Faux Sound Control is developed and updated by Faux123.
Faux Sound Control is a custom feature that enables sound manipulation on the kernel level. This feature will allow you to modify the gain (Make sound louder at the potential cost of music quality or lower for ear protection) and other various settings from a kernel level. This is completely user preference and will vary from user to user.
Intelli-Demand CPU Governor
Intelli-Demand CPU Governor is yet another feature developed and updated by Faux123.
Intelli-Demand means Intelligent On Demand. On Demand is a kernel CPU Governor that comes as the stock setting for most phones. But it tends to be a little less than optimized and such results in sub-par battery life. Intelli-Demand is a tweaked version by Faux that will allow for similar performance and better battery life. It is also popular for gaming as when the GPU 3D load gets heavy it will perform like On Demand as not to interfere with game loads.
This is my current preferred CPU Gov as it has never given me problems and works like a charm.
I/O Scheduling
I/O Schedulers are different ways of controlling the input/output stream of information in with the memory of a phone. These generally do not vary too much in performance or battery-life but everybody seems to have a preferred one. I don't have a favorite and switch between noop, row, and zen from time to time again.
My only preferred setting here is setting the read-ahead buffer to 4096, as it increases speed and performance without any real hit to the battery.
TCP Congestion Control
I am not very well versed in TCP protocol or anything in the sort, but this basically controls how your phone interacts with Wifi/Data packets.
My preference (and, from what I've read, the general consensus) points to the Westwood TCP Congestion Controller. Never had any problems with it, too lazy to benchmark them.
I will add more later, and as I add features to the kernel, I will add explanations! Also, I plan on buying the Faux Clock app soon simply to figure out which profile is which (since the information is nowhere to be found) and then I'll return it and report the numbers back here. Also, whenever Cyanogen decides we're ready for CM12 official, the kernel will be ready for CM12 too. Please bear in mind that I hate updating and am not one with the Github (nor do I have time to learn about Github). Cheers! :good:
GOOD JOB:good::good::good:
And a little cpu overclock like 2ghz plzzzz ^^
Is it possible that you can create a kernel for F240?
Name... Hmmm
2SHAYNEZ
MitoTakatori said:
Is it possible that you can create a kernel for F240?
Click to expand...
Click to collapse
Hmmm... You posted the kernel for F240 to be compatible with E980 CM11 ROMs... right? If you can give me source for that I can try and add the same things to it as I am the e980. But I am by no means a dev or anything.
Snepsts said:
Hmmm... You posted the kernel for F240 to be compatible with E980 CM11 ROMs... right? If you can give me source for that I can try and add the same things to it as I am the e980. But I am by no means a dev or anything.
Click to expand...
Click to collapse
Nice. I will check the source then pinpoint it to you. Thanks in advance.
MitoTakatori said:
Nice. I will check the source then pinpoint it to you. Thanks in advance.
Click to expand...
Click to collapse
I hope I am able to deliver a kernel to you. By the way, what is the difference between F240 and E980/E988? I know E988 is international. Is F240 Viet or something? And what are hardware differences?
Snepsts said:
I hope I am able to deliver a kernel to you. By the way, what is the difference between F240 and E980/E988? I know E988 is international. Is F240 Viet or something? And what are hardware differences?
Click to expand...
Click to collapse
That's a good question... But u did build this on vmware? What steps did u take?
Snepsts said:
I hope I am able to deliver a kernel to you. By the way, what is the difference between F240 and E980/E988? I know E988 is international. Is F240 Viet or something? And what are hardware differences?
Click to expand...
Click to collapse
F240 is korean. I really don't know the exact difference between the E98x variants and the F240x. Maybe some kernel thingy.
bountyman334 said:
That's a good question... But u did build this on vmware? What steps did u take?
Click to expand...
Click to collapse
Yes. VMware using Linux Mint 64-bit. My main machine is a Windows 7 with AMD FX-6350 (3.9 GHz) and 8 GB of RAM.
Here, read the guide mukwing gave me in this thread: http://forum.xda-developers.com/optimus-g-pro/general/making-cm11-0-kernel-e980-t2870820
That should be everything you need. Props to him he knows what he's doing!
MitoTakatori said:
F240 is korean. I really don't know the exact difference between the E98x variants and the F240x. Maybe some kernel thingy.
Click to expand...
Click to collapse
I do believe there are some slight hardware differences which is what I read. I'm guessing the kernel you posted tells it to emulate an e980 somehow with the hardware. Maybe do something a little different to behave like e980. I don't really know though, that's just my guess. But yes I'll totally give it a shot if you can give me source.
Name it "Spartan" kernel or "Taco" kernel ?
2SHAYNEZ
shayneflashindaily said:
Name it "Spartan" kernel or "Taco" kernel ?
2SHAYNEZ
Click to expand...
Click to collapse
Is the Taco kernel a reference to the flashaholic thread?
I like Spartan kernel though...
I was thinking of something like the "Ignis" kernel. Ignis is Latin for flame. Or maybe "Phoenix" kernel.
Knock on/double tap to wake please
Just tried to add some governors. Picked them right off of another kernel... I also copied and pasted the kconfig, makefile, and cpufreq.h files hoping that it would be the same... didn't work. Haha, guess I'll try typing in the config stuff myself and see where that gets me.
Adding features is the most headache things haha.
The commits from other device's kernel always not so compatible with e980 kernel.
Even commits from similar device's kernel like oppo n1 or G Pad 8.3 i still can't sucessfully incorporate them.
Without knowledge of programming, hard to find out what's wrong in the code.......
BTW, i have compiled a TWRP which can mount/read/write to F2FS formatted sdcard. But it lack the ability to format the sdcard to F2FS, need to do it in linux.(i am not sharing it because it still have chance of recovery bootloop)
mukwing said:
Adding features is the most headache things haha.
The commits from other device's kernel always not so compatible with e980 kernel.
Even commits from similar device's kernel like oppo n1 or G Pad 8.3 i still can't sucessfully incorporate them.
Without knowledge of programming, hard to find out what's wrong in the code.......
BTW, i have compiled a TWRP which can mount/read/write to F2FS formatted sdcard. But it lack the ability to format the sdcard to F2FS, need to do it in linux.(i am not sharing it because it still have chance of recovery bootloop)
Click to expand...
Click to collapse
Wow really? Damn I would have thought for sure HTC One kernels would have some similarity (Since we have identical processors).
Guess I'm learning C. I've actually made sense out of some of the programming already, but it's gonna be a ***** to get working. Thanks for the info though.
Good if you know programming language!
Waiting your kernel
But i will stay with stock lg for a while, haha.
Running this with acid and its running great, lost 2% between 11pm-6 in deepsleep:beer:
Sent from my LG-E980 using XDA Free mobile app
Snepsts said:
Is the Taco kernel a reference to the flashaholic thread?
I like Spartan kernel though...
I was thinking of something like the "Ignis" kernel. Ignis is Latin for flame. Or maybe "Phoenix" kernel.
Click to expand...
Click to collapse
Lol love tacos .... How about "La flama Blanca" The white flame lol .. Jk
2SHAYNEZ

Categories

Resources