PLEASE READ THIS ENTIRE POST THOROUGHLY BEFORE PROCEEDING...
This is a customized kernel built from SGH-I727 (aka Skyrocket) source code. This ROM has all the fixes from CyanogenMod & Team Chopsticks tree along with some other stuff.
It's very simple to install.
- Ensure you've already installed a working ROM
- Install Zip from CWM.
- Wipe both caches (just to be safe)
FSync Control - Courtesy of Ezekeel
FSync Control which can be used to disable the fsync system calls for single files and filesystems (echo 0 > /sys/class/misc/fsynccontrol/fsync_enabled). These fsync syscalls are used by kernel modules and user space programs to flush an I/O buffer (which is in RAM) to disk to make sure that this data is actually savely stored on the disk before executing the next step. Disabling fsync can result in data loss on a crash/freeze since the data is still in the I/O buffer and has not been saved to disk as it should be and can also lead to problems due to race conditions if two or more processes access the same file. On the other hand disabling fsync reduces the number of I/O operations which potentially could reduce the battery drain and also improve I/O performance.
Wheatley Governor - Courtesy of Ezekeel
Badass removes all of this "fast peaking" to the max frequency. On a typical system the cpu won't go above 1080Mhz and therefore use less power. To trigger a frequency increase, the system must run a bit @ 1080MHz with high load, then the frequency is bumped to 1350MHz. If that is still not enough the governor gives you full throttle. (this transition should not take longer than 2-5 seconds, depending on the load your system is experiencing).
You can tweak the Phase 2 (1080MHz) and Phase 3 (1350MHz) via sysfs (if you don't know, then just leave it alone).
NOTE: Due to it's nature, this is not a benchmark governor. It is meant as a governor that gives you a smooth experience while saving battery.
Created by kernel developer "Imoseyon," the InteractiveX governor is based heavily on the Interactive governor, enhanced with tuned timer parameters to better balance battery vs. performance. The InteractiveX governor's defining feature, however, is that it locks the CPU frequency to the user's lowest defined speed when the screen is off.
This governor from Ezekeel is basically an ondemand with an additional parameter min_time_state to specify the minimum time CPU stays on a frequency before scaling up/down. The Idea here is to eliminate any instabilities caused by fast frequency switching by ondemand. Lazy governor polls more often than ondemand, but changes frequency only after completing min_time_state on a step overriding sampling interval. Lazy also has a screenoff_maxfreq parameter which when enabled will cause the governor to always select the maximum frequency while the screen is off.
GPU is stock clocked at 3D@320 & 2D@266 (default).
Example: To increase maximum GPU frequency in 3D mode to 320 MHz:
echo 320000000 > /sys/devices/platform/kgsl-3d0.0/kgsl/kgsl-3d0/max_gpuclk
Example: To increase maximum GPU frequency in 2D mode to 266 MHz:
echo 266667000 > /sys/devices/platform/kgsl-2d0.0/kgsl/kgsl-2d0/max_gpuclk
echo 266667000 > /sys/devices/platform/kgsl-2d1.1/kgsl/kgsl-2d1/max_gpuclk
3D: 320000000, 300000000, 266667000, 228571000, 200000000, 177778000, 27000000
2D: 266667000, 228571000, 200000000
100% kernel-based multi-core decision! (should cpu1 be online or not?)
This replaces your /system/bin/mpdecision binary which is disabled by the CWM flashable.
Check /sys/kernel/msm_mpdecision/conf/ for the configuration.
startdelay = time until mpdecision starts doing it's magic (70000)
delay = time between checks (500)
pause = if something else plugs in the cpu, fall asleep for 10000
scroff_single_core = if the screen is off, don't plug in cpu1 (1)
nwns_threshold_up = runqueue threshold, if this is reached cpu1 will be hotplugged (35)
nwns_threshold_down = runqueue threshold, if this is reached cpu1 will be unplugged (5)
twts_threshold_up = time threshold, this amount of time must have passed (250)
twts_threshold_down = same as above (250)
enabled = enable(1) or disable(0) mpdecision. This does not affect scroff_single_core!
(all times are in ms)
Version 6.3.6 - http://tinyw.in/L1BW <-- JB: CM10 or AOKP 4.1.x
Version 6.3.4 - http://d-h.st/L8K <-- JB: CM10 or AOKP 4.1.x
Version 6.2.1 - http://d-h.st/NWo <-- JB: CM10 or AOKP 4.1.x
Version 6.0.3 - http://d-h.st/hEI <-- ICS: CM9 or AOKP 4.0.4 <- Updated 8/22 - WiFi fixes
Version 5.4.5 - http://d-h.st/ngT <-- ICS: CM9 or AOKP 4.0.4
NOTE: Not needed for v6.0.2 or v6.2 and beyond
These scripts will set the CPU0 & CPU1 governors correctly. Using a tool like System Tuner only sets CPU0 to the selected governor, but leaves CPU1 running the default. This was the only way I found to ensure both CPUs had the correct governor set. Basically this overwrites your init.qcom.post_boot.sh script with one that sets both CPUs to the same governor.
SmartAssV2 - http://d-h.st/zeQ
Badass - http://d-h.st/2CU
OnDemand - http://d-h.st/GAH
Non-CM9 Camera Fix
http://db.tt/vvMoadEo <-- Thanks endlessevo for this and thanks eliminat for pointing it out!
Battery life problems?
Read this first...http://forum.xda-developers.com/show....php?t=1759541
Then go here to grab Better Battery Stats (BBS) ... http://forum.xda-developers.com/show....php?t=1179809
Mega thanks to...
...and the other many countless kernel devs that I've Kang'd from