• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!
Search This thread

show-p1984

Inactive Recognized Developer
Jul 30, 2011
3,700
11,805



SENSE Bricked-Kernel-3.0 Sensation (pyramid)

The first kernel with kernel mpdecision & 3-phase kernel thermal control
no need for those binaries anymore :p


Highlights:

Default clocks: 1566Mhz max / 192Mhz min
OverClockable till 1944Mhz !NOT ALL DEVICES CAN HANDLE THIS!
3D GPU Overclock @ 320Mhz (if selected during install)
2D GPU Overclock @ 266.667Mhz (if selected during install)
5 Stages 3D GPU scaling, variable io_fraction
3 Stages 2D GPU scaling, io_fraction 100
Increased bus bandwidth
L2 Performance Boost
cmdline options!
maximum screen off frequency
(configurable through cmdline options)
Sweep2Wake! (if selected during install)
>badass governor<
3-phase kernel cpu thermal control
>100% kernel based mpdecision<
The first kernel with interactive install using Aroma Installer by amarullz
with more customizations than you can dream of on any other kernel!


Features:

Code:
[U]* CM (AOSP) compatible version: See below![/U]
* 3.0.36
* based on HTCs-3.0.16-Sources
* Tested with Sense 3.6 ICS (no known problems)
* Tested with Sense 4 ICS (animations work, thx to virtuous)
* Command Line Options - innovative!
__ Rename the zip to change your settings!
* Sweep2Wake
* badass governor
* 3-phase kernel cpu thermal control
* 100% kernel based mpdecision
* Optimized
* Built with highest Optimization Level (O3)
* Strongly improved UI-performance
* KGSL Early Suspend GPU slumber
* Increased 3D/2D-Performance (GPUOC)
* CAF Bluetooth stack (newer) - faux123
* CIFS
* UTF8 encoding (included for CIFS)
* wifi pm=fast
* Tweaked ondemand governor
* Undervoltage
* Overclocking to 1566Mhz default
* Min Clock @ 192Mhz default
* Boot time optimization. CPU will have 1566Mhz clocks during boot to ensure a fast bootup
* Flashlight and Camera-Flash will now be useable until battery reaches 5%
* Tree-based preemptible RCU
* Fast scheduler for CPU hotplug
* optimized preemptive settings
* basic NTFS support
* Userspace driven configuration filesystem
* Allow CPU-supported unaligned accesses
* Global CPU Voltage table used for adjusting voltage table for SnapDragon Dual Core. Inspired by Snq- modified by faux123 for SnapDragon fixed by show-p1984
* Improved Mobile Connection (fixed possible freezes introduced by HTC)
* ~8% Undervolted till 1566Mhz
* L2 Performance Push
* 3D GPU Overclock @ 320Mhz
* 2D GPU Overclock @ 266.667Mhz
* 6 Stages 3D GPU scaling, variable io_fraction
* 3 Stages 2D GPU scaling, io_fraction 100
* Tweaked ondemand to raise frequencies with higher load only (should contribute to battery life)
* Increased writing performance (lowers that annoying lag when updating 2 apps at the same time)
* Git's Sha1 implementation significantly decreases boot time
* CRC-optimizations
* ZRAM
* Fudgeswap 
* PPP over standard asynchronous serial ports
* PPP over synchronous (HDLC) tty devices
* [URL="http://dl.dropbox.com/u/44206202/CallRecorder_v.1.0.20_alpha_2.apk"]Two-Way-Call-Recording[/URL]
* basic NTFS support
* increased bus frequency
* Improved WIFI - WLAN detection
* Automatic process group scheduling
* Lowered wifi-voltage
* cleaned code, improved performance
* Dropped debug code, was slowing things down

Changelog @ bricked.dehttp://bricked.de/compat.php?action=changelogs&device=pyramid&type=sense


What is sweep2wake?


Since this function collides with HTC's screenshot function (PWR+HOME) it will be disabled. Use the AOSP screenshot instead. (PWR+VOL.DOWN at the same time and hold it for about a sec)
This has a few advantages, one is a nice animation ;) the second would be that it is hardcoded by google into any ICS firmware you can find. That means: no matter which device you will pick up, as long as it has ICS this function should work out of the box.

How to change your frequency/governor before flashing?

That's new. Sounds strange, but it works. I am proud to present a truly innovative concept:
cmdline_khz / cmdline_gov / cmdline_maxscroff
What does this do for you?

Have you ever wished you could set the default min/max/gov/scroff frequency on your own?
Without having to rely on the dev to recompile?
Or doing it yourself?
Or even bothering to learn how to do that?
Or using OC apps that are just in the way?

(governor set able in setup from version 1.0)

Well, your prayers have been heard!

It simplifies any kernel install to the bare minimum. You download the zip, and just change the values to your liking. The kernel will obey you, it's magic!
you will download this file for example:
Bricked-3.0-v0.61-ics-maxkhz=1566000-minkhz=192000-maxscroff=432000.zip
now it is possible that you don't want to oc to 1566Mhz, or your preferred min freq is higher, or or or...
Just rename the file!
Bricked-3.0-v0.61-ics-maxkhz=1188000-minkhz=384000-maxscroff=540000.zip
The kernel will now boot from second 0 with this settings:
Max freq: 1188Mhz
Min freq: 384Mhz
maxscroff: 540Mhz
Cool, isn't it?

Now one could say, hell that's too dangerous, what if I write something wrong in there? No problem, your show-p1984 thought of everything. I have built in that much security measures that it is not even remotely imaginable that something could go wrong. I am serious. Whoever manages to break it gets a golden pile of **** from me.
Now what does it "autocorrect" exactly?
It corrects mhz instead of khz values for you, so you can actually flash this:
Code:
Bricked-3.0-v0.61-ics-maxkhz=1188-minkhz=384-maxscroff=540.zip
and it will still work.
Or it corrects wrong acpu frequencies. You can find a table @ the second post, but if you mistype sth, no fear, it will still work!
Code:
Bricked-3.0-v0.61-ics-maxkhz=1190-minkhz=390-maxscroff=545.zip
for example will let the kernel boot with 1188Mhz max and 384Mhz min (maximum screen off frequency 540Mhz). It always falls back to the next lower step. Actually you won't need to bother for the acpu table anymore, just type anything in there, it will automatically correct it for you! If you still want to enter the correct values, just look in the second post ;)
Now what if you write a letter in there? Like this:
Code:
Bricked-3.0-v0.61-ics-maxkhz=II88000-minkhz=38A000-maxscroff=5A0O00.zip
Well, the kernel will detect that and fall back to default settings read out of my .config. Which means the kernel will boot @ 1566Mhz max and 192Mhz min and maxscroff will be set to 1566Mhz (=disabled).

What to do if you just want to change your clocks?
Rename the zip file, boot into recovery, flash, and enjoy ;)
There is also a sysfs interface for the maxscroff frequency, for simplicity I kept the common name for it.
/sys/devices/system/cpu/cpu0/cpufreq/screen_off_max_freq

Currently there is only one limitation:
You can't have two files with the same base on your scard. that means:
Code:
Bricked-3.0-v0.61-ics-maxkhz=1566000-minkhz=192000-maxscroff=432000.zip
Bricked-3.0-v0.61-ics-maxkhz=1188000-minkhz=384000-maxscroff=540000.zip
are not allowed to be on the sdcard at the same time, the kernel would boot with defaults: 1566/192 if you flash either one of those files.
The "base" of the filename is this: Bricked-3.0-v0.61-ics-
So you can have 2 files (or more) on the sdcard with names like this:
Bricked-3.0-v0.55-b4-ics-****
Bricked-3.0-v0.7-ics-****
Bricked-3.0-v0.8-ics-****
(****=etc etc etc etc)
Furthermore it must be followed by maxkhz=VALUE-minkhz=VALUE-maxscroff=VALUE.zip It is not possible to switch the positions of the options. But you can leave them out of there completely, the kernel will then boot with 1566/192/1566.


Ah btw: We now see our set max mhz under Settings->About Phone->HW->Cpu ;) (it actually changes when you change your maxkhz)

This is genuine innovative code from me. I didn't even occasional glance at someone elses work. So if sth like this is already out there, SCREW THE DEV :p because I did not see it and wrote it from scratch! :D

And since 0.6 comes with the awesome Aroma installer you can now choose from 3 gpuoc versions!
GPU OC disabled, [email protected] & [email protected]
GPU low overclock, [email protected] & [email protected]
GPU high overclock, [email protected] & [email protected] + Bandwidth push


The source for this is split into two parts, Kernel & bash script. The script finds the zip on your sdcard, parses the filename and modifies the kernels cmdline inside the boot.img. The Kernel is parsing the cmdline, checking if everything is valid and setting your options.

How to install?

Just flash from recovery. Because it creates a boot.img out of the one on your phone while flashing, it should work with the majority of ROMs out there.
Interactive install, enjoy the ride! ;)

Where to complain about errors/bugs?

Please use the Issuetracker for bugs/errors/feature wishes!
Issuetracker @ https://code.google.com/p/bricked/issues/entry

[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 <<<

XDA Discussion/Download for AOSP (ICS): Click me

Old Downloads (gcode): Click Me




Use System Tuner to undervolt!
Setting min/max frequencies should be done over the zips name instead.




Source:



 
Last edited:

show-p1984

Inactive Recognized Developer
Jul 30, 2011
3,700
11,805
Changelog moved to bricked.dehttp://bricked.de/index.php?action=changelogs&device=pyramid&type=sense

What does PREEMPTIBLE mean?

Preemptive built kernels are favoring the userinterface over everything else! That means: An app in the background is using 50% of you CPU to spy on you. You want to move fast through the user interface/watch a video, whatever. The kernel will now favor your action over the app in the background. That's all the magic that's happening ;)
What is badass?

Well good question. With ICS I decided to rework my gb badass which never got released because it was always pushed aside. To break down what it is:

Badass removes all of this "fast peaking" to the max frequency. On a typical system the cpu won't go above 918Mhz and therefore stay cool and will use less power. To trigger a frequency increase, the system must run a bit @ 918Mhz with high load, then the frequency is bumped to 1188Mhz. If that is still not enough the governor gives you full throttle. (this transition should not take longer than 1-2 seconds, depending on the load your system is experiencing)
Badass will also take the gpu load into consideration. If the gpu is moderately busy it will bypass the above check and clock the cpu with 1188Mhz. If the gpu is crushed under load, badass will lift the restrictions to the cpu.

Please remember: 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, lots of it ;)
What is msm_thermal?

Kernel based 3-phase thermal control!
This replaces your /system/bin/thermald binary which is renamed by the installer to thermald_backup.

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)
Default: 1000ms (=1sec)

If you want to see msm_thermal doing it's job:
Code:
adb shell
cat /proc/kmsg | grep 'msm_thermal'
What is msm_mpdecision?

100% kernel based multi core decision! (should cpu1 be online or not?)
This replaces your /system/bin/mpdecision binary which is renamed by the installer to mpdecision_backup.

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!
idle_freq = a value against that will be checked if a core +/- is requested. (486000)
If cpu0 is below that value and a core up of cpu1 is requested, nothing will happen.
If cpu1 is above that value and a core down of cpu1 is requested, nothing will happen. (otherwise it would now put down cpu1 even though it is still working)


(all times are in ms)

If you want to see the mpdecision magic happening:
Code:
adb shell
cat /proc/kmsg | grep 'MPDEC'



Frequency/Voltage Table:

192000: 800000
310500: 825000
384000: 825000
432000: 850000
486000: 850000
540000: 875000
594000: 875000
648000: 900000
702000: 900000
756000: 925000
810000: 950000
864000: 975000
918000: 975000
972000: 1000000
1026000: 1000000
1080000: 1025000
1134000: 1025000
1188000: 1050000
1242000: 1075000
1296000: 1100000
1350000: 1125000
1404000: 1150000
1458000: 1150000
1512000: 1175000
1566000: 1175000
1620000: 1200000
1674000: 1225000
1728000: 1250000
1782000: 1275000
1836000: 1300000
1890000: 1325000
1944000: 1350000
Available CPU governors:
badass <-- !recommended!
lazy
interactive
lagfree
conservative
userspace
powersave
ondemand
performance​


Stock Kernel for ICS. Unsecured boot.img.
 
Last edited:

BrokenWall

Senior Member
Feb 16, 2011
602
180
Atlanta
I have a couple questions, why still use governors or give options when ondemand is the only one that works properly on aSMP?

Or have you found a way to make governors still on both cores?

And this line:
Code:
Synchronous Multicore Threading

Android itself doesn't support true Multi threading at the core OS level, though it allows for apps to be multi-threaded.

What changes have you made to make this statement true.
 

show-p1984

Inactive Recognized Developer
Jul 30, 2011
3,700
11,805
I have a couple questions, why still use governors or give options when ondemand is the only one that works properly on aSMP?

Or have you found a way to make governors still on both cores?

Android itself doesn't support true Multi threading at the core OS level, though it allows for apps to be multi-threaded.
1. Because ppl asked me to include Smartassv2. (ppl = baadnwz xD)
2. Android 2.3.4 has a bit of Honeycomb in it. It supports Multithreading.
 

undercover

Senior Member
Oct 10, 2010
14,726
4,435
London, UK
Smartass doesn't seem to work as well as it used to on Bravo. Ondemand seems to be the way forward, plus CPU load balancing once threshold is reached. IMHO.

Sent from my HTC Sensation Z710e using XDA App
 

undercover

Senior Member
Oct 10, 2010
14,726
4,435
London, UK
Re. your post in IC thread. With 0.2 I was getting 13k+, and other values higher than yours, just can't remember what they were exactly. How do I revert to 0.2, just flash it on top? Just for test purpose.

Again. No UI improvement over stock with either of them.

Sent from my HTC Sensation Z710e using XDA App
 
  • Like
Reactions: epsix

show-p1984

Inactive Recognized Developer
Jul 30, 2011
3,700
11,805
Re. your post in IC thread. With 0.2 I was getting 13k+, and other values higher than yours, just can't remember what they were exactly. How do I revert to 0.2, just flash it on top? Just for test purpose.

Again. No UI improvement over stock with either of them.

Sent from my HTC Sensation Z710e using XDA App

Yes, just flash it on top.
 

undercover

Senior Member
Oct 10, 2010
14,726
4,435
London, UK
Re. your post in IC thread. With 0.2 I was getting 11k+, and other values higher than yours, just can't remember what they were exactly. How do I revert to 0.2, just flash it on top? Just for test purpose.

Again. No UI improvement over stock with either of them.

Edited, sorry, typo.

Sent from my HTC Sensation Z710e using XDA App

Oh crap, why do i keep quoting myself when I want edit. 11k+ that was.

Sent from my HTC Sensation Z710e using XDA App
 

undercover

Senior Member
Oct 10, 2010
14,726
4,435
London, UK
Ok.

v0.2

ondemand 11568,1946(???),5794 (392-1.5); 11744,1982,5886 (1.3-1.5)

performance 11621,3368,6669 (1.3-1.5) 11399,3010,6365 (392-1.5)



BTW, System Tuner is able to adjust frequency ;)

Damn, Cf is killing my battery. Mind you, been flashing, benchmarking, xda-ing etc since 7am, so 10.5h in and i'm still at 21%. :)
 

baadnewz

Recognized Developer
Sep 2, 2008
14,340
34,069
37
Bucharest
insertcoin-roms.org
Ok.

v0.2

ondemand 11568,1946(???),5794 (392-1.5); 11744,1982,5886 (1.3-1.5)

performance 11621,3368,6669 (1.3-1.5) 11399,3010,6365 (392-1.5)



BTW, System Tuner is able to adjust frequency ;)

Damn, Cf is killing my battery. Mind you, been flashing, benchmarking, xda-ing etc since 7am, so 10.5h in and i'm still at 21%. :)


i feel advertising for IC :B
 

xl DIGITAL lx

Senior Member
May 13, 2010
1,045
301
Los Angeles
Great job on the kernel, I just wanted to ask if you can include call recording maybe in the next release? That would be nice. Thanks and keep up the great work!

Sent from my HTC Sensation Z710e using xda premium
 

undercover

Senior Member
Oct 10, 2010
14,726
4,435
London, UK
well 2.2.5 is still IC :))

Baad, seriously, revert to 2.2.5 and close the thread LOL

Just ran bench on v0.2 with 2.2.5 again

noooooow, i'm shocked actually.

ondemand, (392-1.5 default freq) 11662,3376,6690 :p



Will run it for few days, and if battery is close to stock (which it should be) it's a keeper for me, will replace my current stable nandroid :)
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 823



    SENSE Bricked-Kernel-3.0 Sensation (pyramid)

    The first kernel with kernel mpdecision & 3-phase kernel thermal control
    no need for those binaries anymore :p


    Highlights:

    Default clocks: 1566Mhz max / 192Mhz min
    OverClockable till 1944Mhz !NOT ALL DEVICES CAN HANDLE THIS!
    3D GPU Overclock @ 320Mhz (if selected during install)
    2D GPU Overclock @ 266.667Mhz (if selected during install)
    5 Stages 3D GPU scaling, variable io_fraction
    3 Stages 2D GPU scaling, io_fraction 100
    Increased bus bandwidth
    L2 Performance Boost
    cmdline options!
    maximum screen off frequency
    (configurable through cmdline options)
    Sweep2Wake! (if selected during install)
    >badass governor<
    3-phase kernel cpu thermal control
    >100% kernel based mpdecision<
    The first kernel with interactive install using Aroma Installer by amarullz
    with more customizations than you can dream of on any other kernel!


    Features:

    Code:
    [U]* CM (AOSP) compatible version: See below![/U]
    * 3.0.36
    * based on HTCs-3.0.16-Sources
    * Tested with Sense 3.6 ICS (no known problems)
    * Tested with Sense 4 ICS (animations work, thx to virtuous)
    * Command Line Options - innovative!
    __ Rename the zip to change your settings!
    * Sweep2Wake
    * badass governor
    * 3-phase kernel cpu thermal control
    * 100% kernel based mpdecision
    * Optimized
    * Built with highest Optimization Level (O3)
    * Strongly improved UI-performance
    * KGSL Early Suspend GPU slumber
    * Increased 3D/2D-Performance (GPUOC)
    * CAF Bluetooth stack (newer) - faux123
    * CIFS
    * UTF8 encoding (included for CIFS)
    * wifi pm=fast
    * Tweaked ondemand governor
    * Undervoltage
    * Overclocking to 1566Mhz default
    * Min Clock @ 192Mhz default
    * Boot time optimization. CPU will have 1566Mhz clocks during boot to ensure a fast bootup
    * Flashlight and Camera-Flash will now be useable until battery reaches 5%
    * Tree-based preemptible RCU
    * Fast scheduler for CPU hotplug
    * optimized preemptive settings
    * basic NTFS support
    * Userspace driven configuration filesystem
    * Allow CPU-supported unaligned accesses
    * Global CPU Voltage table used for adjusting voltage table for SnapDragon Dual Core. Inspired by Snq- modified by faux123 for SnapDragon fixed by show-p1984
    * Improved Mobile Connection (fixed possible freezes introduced by HTC)
    * ~8% Undervolted till 1566Mhz
    * L2 Performance Push
    * 3D GPU Overclock @ 320Mhz
    * 2D GPU Overclock @ 266.667Mhz
    * 6 Stages 3D GPU scaling, variable io_fraction
    * 3 Stages 2D GPU scaling, io_fraction 100
    * Tweaked ondemand to raise frequencies with higher load only (should contribute to battery life)
    * Increased writing performance (lowers that annoying lag when updating 2 apps at the same time)
    * Git's Sha1 implementation significantly decreases boot time
    * CRC-optimizations
    * ZRAM
    * Fudgeswap 
    * PPP over standard asynchronous serial ports
    * PPP over synchronous (HDLC) tty devices
    * [URL="http://dl.dropbox.com/u/44206202/CallRecorder_v.1.0.20_alpha_2.apk"]Two-Way-Call-Recording[/URL]
    * basic NTFS support
    * increased bus frequency
    * Improved WIFI - WLAN detection
    * Automatic process group scheduling
    * Lowered wifi-voltage
    * cleaned code, improved performance
    * Dropped debug code, was slowing things down

    Changelog @ bricked.dehttp://bricked.de/compat.php?action=changelogs&device=pyramid&type=sense


    What is sweep2wake?


    Since this function collides with HTC's screenshot function (PWR+HOME) it will be disabled. Use the AOSP screenshot instead. (PWR+VOL.DOWN at the same time and hold it for about a sec)
    This has a few advantages, one is a nice animation ;) the second would be that it is hardcoded by google into any ICS firmware you can find. That means: no matter which device you will pick up, as long as it has ICS this function should work out of the box.

    How to change your frequency/governor before flashing?

    That's new. Sounds strange, but it works. I am proud to present a truly innovative concept:
    cmdline_khz / cmdline_gov / cmdline_maxscroff
    What does this do for you?

    Have you ever wished you could set the default min/max/gov/scroff frequency on your own?
    Without having to rely on the dev to recompile?
    Or doing it yourself?
    Or even bothering to learn how to do that?
    Or using OC apps that are just in the way?

    (governor set able in setup from version 1.0)

    Well, your prayers have been heard!

    It simplifies any kernel install to the bare minimum. You download the zip, and just change the values to your liking. The kernel will obey you, it's magic!
    you will download this file for example:
    Bricked-3.0-v0.61-ics-maxkhz=1566000-minkhz=192000-maxscroff=432000.zip
    now it is possible that you don't want to oc to 1566Mhz, or your preferred min freq is higher, or or or...
    Just rename the file!
    Bricked-3.0-v0.61-ics-maxkhz=1188000-minkhz=384000-maxscroff=540000.zip
    The kernel will now boot from second 0 with this settings:
    Max freq: 1188Mhz
    Min freq: 384Mhz
    maxscroff: 540Mhz
    Cool, isn't it?

    Now one could say, hell that's too dangerous, what if I write something wrong in there? No problem, your show-p1984 thought of everything. I have built in that much security measures that it is not even remotely imaginable that something could go wrong. I am serious. Whoever manages to break it gets a golden pile of **** from me.
    Now what does it "autocorrect" exactly?
    It corrects mhz instead of khz values for you, so you can actually flash this:
    Code:
    Bricked-3.0-v0.61-ics-maxkhz=1188-minkhz=384-maxscroff=540.zip
    and it will still work.
    Or it corrects wrong acpu frequencies. You can find a table @ the second post, but if you mistype sth, no fear, it will still work!
    Code:
    Bricked-3.0-v0.61-ics-maxkhz=1190-minkhz=390-maxscroff=545.zip
    for example will let the kernel boot with 1188Mhz max and 384Mhz min (maximum screen off frequency 540Mhz). It always falls back to the next lower step. Actually you won't need to bother for the acpu table anymore, just type anything in there, it will automatically correct it for you! If you still want to enter the correct values, just look in the second post ;)
    Now what if you write a letter in there? Like this:
    Code:
    Bricked-3.0-v0.61-ics-maxkhz=II88000-minkhz=38A000-maxscroff=5A0O00.zip
    Well, the kernel will detect that and fall back to default settings read out of my .config. Which means the kernel will boot @ 1566Mhz max and 192Mhz min and maxscroff will be set to 1566Mhz (=disabled).

    What to do if you just want to change your clocks?
    Rename the zip file, boot into recovery, flash, and enjoy ;)
    There is also a sysfs interface for the maxscroff frequency, for simplicity I kept the common name for it.
    /sys/devices/system/cpu/cpu0/cpufreq/screen_off_max_freq

    Currently there is only one limitation:
    You can't have two files with the same base on your scard. that means:
    Code:
    Bricked-3.0-v0.61-ics-maxkhz=1566000-minkhz=192000-maxscroff=432000.zip
    Bricked-3.0-v0.61-ics-maxkhz=1188000-minkhz=384000-maxscroff=540000.zip
    are not allowed to be on the sdcard at the same time, the kernel would boot with defaults: 1566/192 if you flash either one of those files.
    The "base" of the filename is this: Bricked-3.0-v0.61-ics-
    So you can have 2 files (or more) on the sdcard with names like this:
    Bricked-3.0-v0.55-b4-ics-****
    Bricked-3.0-v0.7-ics-****
    Bricked-3.0-v0.8-ics-****
    (****=etc etc etc etc)
    Furthermore it must be followed by maxkhz=VALUE-minkhz=VALUE-maxscroff=VALUE.zip It is not possible to switch the positions of the options. But you can leave them out of there completely, the kernel will then boot with 1566/192/1566.


    Ah btw: We now see our set max mhz under Settings->About Phone->HW->Cpu ;) (it actually changes when you change your maxkhz)

    This is genuine innovative code from me. I didn't even occasional glance at someone elses work. So if sth like this is already out there, SCREW THE DEV :p because I did not see it and wrote it from scratch! :D

    And since 0.6 comes with the awesome Aroma installer you can now choose from 3 gpuoc versions!
    GPU OC disabled, [email protected] & [email protected]
    GPU low overclock, [email protected] & [email protected]
    GPU high overclock, [email protected] & [email protected] + Bandwidth push


    The source for this is split into two parts, Kernel & bash script. The script finds the zip on your sdcard, parses the filename and modifies the kernels cmdline inside the boot.img. The Kernel is parsing the cmdline, checking if everything is valid and setting your options.

    How to install?

    Just flash from recovery. Because it creates a boot.img out of the one on your phone while flashing, it should work with the majority of ROMs out there.
    Interactive install, enjoy the ride! ;)

    Where to complain about errors/bugs?

    Please use the Issuetracker for bugs/errors/feature wishes!
    Issuetracker @ https://code.google.com/p/bricked/issues/entry

    [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 <<<

    XDA Discussion/Download for AOSP (ICS): Click me

    Old Downloads (gcode): Click Me




    Use System Tuner to undervolt!
    Setting min/max frequencies should be done over the zips name instead.




    Source:



    209
    Changelog moved to bricked.dehttp://bricked.de/index.php?action=changelogs&device=pyramid&type=sense

    What does PREEMPTIBLE mean?

    Preemptive built kernels are favoring the userinterface over everything else! That means: An app in the background is using 50% of you CPU to spy on you. You want to move fast through the user interface/watch a video, whatever. The kernel will now favor your action over the app in the background. That's all the magic that's happening ;)
    What is badass?

    Well good question. With ICS I decided to rework my gb badass which never got released because it was always pushed aside. To break down what it is:

    Badass removes all of this "fast peaking" to the max frequency. On a typical system the cpu won't go above 918Mhz and therefore stay cool and will use less power. To trigger a frequency increase, the system must run a bit @ 918Mhz with high load, then the frequency is bumped to 1188Mhz. If that is still not enough the governor gives you full throttle. (this transition should not take longer than 1-2 seconds, depending on the load your system is experiencing)
    Badass will also take the gpu load into consideration. If the gpu is moderately busy it will bypass the above check and clock the cpu with 1188Mhz. If the gpu is crushed under load, badass will lift the restrictions to the cpu.

    Please remember: 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, lots of it ;)
    What is msm_thermal?

    Kernel based 3-phase thermal control!
    This replaces your /system/bin/thermald binary which is renamed by the installer to thermald_backup.

    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)
    Default: 1000ms (=1sec)

    If you want to see msm_thermal doing it's job:
    Code:
    adb shell
    cat /proc/kmsg | grep 'msm_thermal'
    What is msm_mpdecision?

    100% kernel based multi core decision! (should cpu1 be online or not?)
    This replaces your /system/bin/mpdecision binary which is renamed by the installer to mpdecision_backup.

    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!
    idle_freq = a value against that will be checked if a core +/- is requested. (486000)
    If cpu0 is below that value and a core up of cpu1 is requested, nothing will happen.
    If cpu1 is above that value and a core down of cpu1 is requested, nothing will happen. (otherwise it would now put down cpu1 even though it is still working)


    (all times are in ms)

    If you want to see the mpdecision magic happening:
    Code:
    adb shell
    cat /proc/kmsg | grep 'MPDEC'



    Frequency/Voltage Table:

    192000: 800000
    310500: 825000
    384000: 825000
    432000: 850000
    486000: 850000
    540000: 875000
    594000: 875000
    648000: 900000
    702000: 900000
    756000: 925000
    810000: 950000
    864000: 975000
    918000: 975000
    972000: 1000000
    1026000: 1000000
    1080000: 1025000
    1134000: 1025000
    1188000: 1050000
    1242000: 1075000
    1296000: 1100000
    1350000: 1125000
    1404000: 1150000
    1458000: 1150000
    1512000: 1175000
    1566000: 1175000
    1620000: 1200000
    1674000: 1225000
    1728000: 1250000
    1782000: 1275000
    1836000: 1300000
    1890000: 1325000
    1944000: 1350000
    Available CPU governors:
    badass <-- !recommended!
    lazy
    interactive
    lagfree
    conservative
    userspace
    powersave
    ondemand
    performance​


    Stock Kernel for ICS. Unsecured boot.img.
    40


    New beta: v0.955
    3 new changes ;)
    -Bluetooth Caf backport from faux123
    -Badass governor
    -allow lower min. brightness (display)


    What is badass?
    Well good question. With ICS I decided to rework my gb badass which never got released because it was always pushed aside. To break down what it is:

    Badass removes all of this "fast peaking" to the max frequency. On a typical system the cpu won't go above 918Mhz and therefore stay cool and will use less power. To trigger a frequency increase, the system must run a bit @ 918Mhz with high load, then the frequency is bumped to 1188Mhz. 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)
    Badass will also take the gpu load into consideration. If the gpu is moderately busy it will bypass the above check and clock the cpu with 1188Mhz. If the gpu is crushed under load, badass will lift the restrictions to the cpu.

    This is work in progress. I spent the past 6 hours trying to find sweetspots for the configuration and I think I nailed it in this version ;) (finally... :rolleyes:)

    Please remember: 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, lots of it ;)

    After that long text, here is the download:

    Download: Click me

    This is the perfect place to hide an ad, therefore:
    HTC One X - Piggy bank!
    Your support is highly appreciated!
    http://bricked.de/

    If you can't donate anything, no problem. Just click on the ad instead ;)
    If you won't click on the ad, my kernel will turn your device into a decepticon that will crawl up your nose when you sleep! NO KIDDING! CLICK THAT AD! :D

    38
    New beta in town with loads of caf changes ;)
    Also patched in thermal stuff in preparation of kernel thermal control, but not yet used because I am still trying to figure out if we can use mpdecision without thermald. I would not like to ditch mpdecision, it provides way better battery life than any other solution I have yet seen. (that's not a dislike on anyone's accomplishments, just a fact ;) )
    + merged linux kernel with upstream 3.0.26...
    Details below.

    Bricked-3.0-v0.55-b2: Click me

    Changelog: (from 0.5)
    Code:
    * 5ca5935 : config: enable bfp jit
    * b637217 : include: linux: filter.h: fix missing rcupdate.h include
    * 3169240 : config: increase usb gadget vbus draw to 500
    * 2b4b3ee : config: enable usb otg wakelocks
    * c353183 : config: update with autogen
    * 57cc678 : msm: kgsl: Add supporting code for 2d dcvs
    * dc16b34 : Linux 3.0.26
    * 8090c01 : powerpc/pmac: Fix SMP kernels on pre-core99 UP machines
    * c8c6786 : iwl3945: fix possible il->txq NULL pointer dereference in delayed works
    * 9284e42 : ipv6: Don't dev_hold(dev) in ip6_mc_find_dev_rcu.
    * dedb848 : tcp: fix syncookie regression
    * 342c078 : perf tools: Incorrect use of snprintf results in SEGV
    * 7d99642 : afs: Remote abort can cause BUG in rxrpc code
    * 615567b : afs: Read of file returns EBADMSG
    * ab12e43 : nilfs2: fix NULL pointer dereference in nilfs_load_super_block()
    * 7d1f547 : thermal: msm8960_tsens: Read TSENS temperature
    * a881ee2 : thermal: tsens: Add tsens notify callback
    * ff4f3ef : thermal: msm8960_tsens: Fix reading the correct sensor4 address
    * fe918d1 : tsens: msm8960: Split write ordering for TSENS Enable
    * c9b0c6b : thermal: tsens8960: Fix setting initial return value
    * 617c974 : thermal: tsens: Use Calibration offset data from QFPROM
    * 0ba824a : thermal: tsens: Add support for MDM9615
    * 7851012 : thermal: msm8960: Check for SOC version
    * d3dc239 : thermal: tsens: Add platform information for 9615
    * 009b0a6 : thermal: msm: Update TSENS for 8960_V2
    * 14caa18 : drivers/usb/misc: add ehset.c for OTG operations
    * be703bc : [PATCH] usb: otg: Temporarily grab wakelock on charger and  disconnect events
    * 9ad0728 : USB: OTG: Take wakelock when VBUS present
    * 62d713c : msm: msm_xo: Set the correct bits for XO_CORE on 8660
    * c3407bb : msm: pm-8x60: Add clock debug to idle code path.
    * 1eaa81f : msm: pm-8x60: Move hotplug related code out of pm code.
    * c30553e : msm: hotplug: Support cpu hotplug in no PM cases
    * f971d96 : msm: cpufreq: Check cpufreq_frequency_table NULL
    * 7e0094c : cpufreq: interactive governor: default 20ms timer
    * e32e728 : power: cpufreq interactive governor: use default sample time 20ms
    * 848c5bc : cpufreq: interactive governor: default timer 10ms, maxspeed load 95%
    * b0b34e3 : cpufreq: interactive: fix possible Division by zero.
    * 727a7b8 : cpufreq : Fix crash input event handler on governor switch
    * 81fcdd8 : msm_thermal: Remove error messages from log when core is offline
    * 3dccf0f : thermal: Fix hotplug race condition leading to memory corruption.
    * 4159bfc : msm: thermal: Add MSM thermal sensing and limiting
    * 253b0eb : scheduler: minor improvement to pick_next_highest_task_rt
    * 1480dc6 : mmc: msm_sdcc: Power down slots after reboot
    * 2958104 : hdmi_msm: Power down PHY register during suspend
    * 93712f7 : cpufreq: Extend ondemand powersave_bias for negative range
    * becdb83 : msm: kgsl: disable irq when adreno device is stopped
    * 7f37a49 : msm: kgsl: convert sg allocation to vmalloc
    * bd08355 : msm: kgsl: Make sure SLUMBER is the requested state
    * 9aa9c5f : msm: kgsl: Clarify the circumstances to enable SLUMBER state
    * e1243e5 : msm: kgsl: Be explicit about what states may access hw
    * 8a47885 : msm: Config option to enable idle stats device
    * ea61106 : msm: kgsl: only poke once during adreno_idle
    * 33f99fd : msm: kgsl: Modify only the pending idle timer in ISR.
    * 59c4f2b : msm: kgsl: flush device workqueue before stop
    * 564ff64 : msm: IDLE_TIMER wakes up waiting processes
    * 0459155 : msm: kgsl: Collect a sample only if GPU is active
    * 5da28701 : msm: kgsl: call device->irqctrl from start/stop
    * 2e84670 : msm: kgsl: Power scale policy needs at least three power levels.
    * 02bf9a1 : msm: kgsl: Don't wake core to check if it is idle.
    * 85cf4a8 : msm: kgsl: Move the GPU register lists to a common location
    * 345d6ec : msm: kgsl: Do not ramp to turbo if the screen is off.
    * 754515b : msm: kgsl: add power tracepoints
    * 9ac487b : msm: kgsl: power state cleanup
    * 909af7b : msm: kgsl: Eventually transition to SLUMBER
    * 9d41c04 : msm: kgsl: in postmortem, log powerstate before changing it
    * 52bf797 : msm: kgsl: adreno_isidle shouldn't BUG()
    * 14a8125 : msm: kgsl: fix infinite loop in adreno_find_region()
    * 58ee6d0 : msm: kgsl: Allow device attributes to be re-created
    * e2e92ba : acpu: use config variable here instead of static value
    * cc7fc34 : ARM: net: JIT compiler for packet filters
    * 9be1d23 : Optimized ARM RWSEM algorithm
    * d701b86 : lib/string: use glibc version
    * 14c5661 : lib/memcopy: use glibc version
    * 6a96ee2 : msm: kgsl: correct amount of scaling steps
    * 7dd2dcb : board: increase the rpm regulator constraints
    * 504eff8 : config: update with generated stuff
    * e10f7d8 : base: genlock: Remove genlock_release_lock and associated ioctl
    * f54adc0 : governor: Added CPUfreq governor 'lazy'
    * e41dbc3 : ARM: entry: no need to increase preempt count for IRQ handlers
    * 854481b : sched: Remove unlikely() from ttwu_post_activation
    * 06d9d20 : sched: Remove unlikely() from rt_policy() in sched.c
    * f1e8e4b : sched: Change pick_next_task_rt from unlikely to likely
    * 169384a : sched: Cleanup pre_schedule_rt
    * 9260908 : Add LagFree CPU Governor
    * 1796f64 : sched: disable GENTLTE_FAIR_SLEEPERS for better performance on Android
    * a8f2169 : Make vfs_cache_pressure configurable
    * 9d95e8b : msm: kgsl: add GPUOC config variable
    * 488092e : acpu/avs: push POSSIBLE max voltage, wider scaling range for the user
    * 980ed38 : acpu: slightly push voltages above 1566 to make it more oc happy
    * cc33fb2 : msm: deactivate notification led timeout
    * ba10ae1 : kgsl: eliminate not used scaling steps
    * 8e49ddf : Revert "kgsl: increase max allowed power levels"
    * e86aa21 : kgsl: 2D: increase bandwidth to avoid bottlenecking the gpu
    * 1288640 : kgsl: 3D: increase bandwidth to avoid bottlenecking the gpu
    * 49c0c7a : drivers: input: cy8c_tma_ts: properly fix touchscreen issues. (HTC)

    Support my night-shifts (this time from 20pm-06am ;))! Download and test! ;)
    37
    New beta release,
    Codename: Legends of Awesomeness! ;)



    Bricked-3.0-v0.55-b4-ics
    Click Me, at the bottom of this post so I can be 50% sure you actually read this :p


    What has changed from b3?
    Actually "only" one thing. But that is truly innovative and will make things a lot easier for devs and users. Took me the whole night and I am awake since 19 hours so excuse any typos. My monitor is only one white blur atm :D

    Have you ever wished you could set the default min/max frequency on your own?
    Without having to rely on the dev to recompile?
    Or doing it yourself?
    Or even bothering to learn how to do that?


    Well guys, your prayers have been heard!

    This Beta 4 has the ability to set your default min/max cpuclocks over the zips filename with which you flash it!
    Stop drooling, it's no fake, it works.
    So what the **** do I mean by that?
    Well usually a kernel dev sets one default boot setting, like Bricked's defaults are: 1566/192. Sometimes this is not what you want, so you need to install an OC app, under or over clock, etc. In this case you just edit the zip file, flash, and you are good to go! No need to change anything with an oc app!

    Let me explain this on an example:
    The name of the file you guys download is:
    Code:
    Bricked-3.0-v0.55-b4-ics-maxkhz=1566000-minkhz=192000.zip
    That means the kernel will boot with 1566 Mhz max & 192 Mhz min. Now if you want to change that you just need to edit the zips name, and reflash. Done! Like this:
    Code:
    Bricked-3.0-v0.55-b4-ics-maxkhz=1188000-minkhz=384000.zip
    Now one could say, hell that's too dangerous, what if I write something wrong in there? No problem, your show-p1984 thought of everything. I have built in that much security measures that it is not even remotely imaginable that something could go wrong. I am serious. Whoever manages to break it gets a golden pile of **** from me.
    Now what does it "autocorrect" exactly?
    It corrects mhz instead of khz values for you, so you can actually flash this:
    Code:
    Bricked-3.0-v0.55-b4-ics-maxkhz=1188-minkhz=384.zip
    and it will still work.
    Or it corrects wrong acpu frequencies. You can find a table @ the second post, but if you mistype sth, no fear, it will still work!
    Code:
    Bricked-3.0-v0.55-b4-ics-maxkhz=1190-minkhz=390.zip
    for example will let the kernel boot with 1188Mhz max and 384Mhz min. It always falls back to the next lower step. (Actually you won't need to bother for the acpu table anymore, just type anything in there, it will automatically correct it for you!)

    Now what if you write a letter in there? Like this:
    Code:
    Bricked-3.0-v0.55-b4-ics-maxkhz=II88000-minkhz=38A000.zip
    Well, the kernel will detect that and fall back to default settings read out of my .config. Which means the kernel will boot @ 1566Mhz max and 192Mhz min.

    What to do if you just want to change your clocks?
    Rename the zip file, boot into recovery, flash, and enjoy ;)

    Currently there is only one limitation:
    You can't have two files with the same base on your scard. that means:
    Code:
    Bricked-3.0-v0.55-b4-ics-maxkhz=1190-minkhz=390.zip
    Bricked-3.0-v0.55-b4-ics-maxkhz=1188-minkhz=192.zip
    are not allowed to be on the sdcard at the same time, the kernel would boot with defaults: 1566/192 if you flash either one of those files. (I am too tired to program a check for that right now ^^)
    The "base" of the filename is this: Bricked-3.0-v0.55-b4-ics-
    So you can have 2 files on the sdcard with names like this:
    Bricked-3.0-v0.55-b4-ics-****
    Bricked-3.0-v0.55-b5-ics-****
    Bricked-3.0-v0.6-ics-****
    (****=etc etc etc etc)
    Furthermore it must be followed by maxkhz=VALUE-minkhz=VALUE.zip It is not possible to switch the positions of max and min. But you can leave them out of there completely, the kernel will then boot with 1566/192.

    This is genuine innovative code from me. I didn't even occasional glance at someone elses work. So if sth like this is already out there, SCREW THE DEV :p because I did not see it and wrote it from scratch! :D

    Source is split into two parts, zip and kernel. Kernel will come online with the official release of 0.6 (got some cleanup to do ^^). The zip can be studied by all the bash ppl out there ;)


    Download
    STOCK GPU CLOCKS ([email protected], [email protected]): CLICK ME
    MAX GPU CLOCKS ([email protected], [email protected]): CLICK ME