[Desire Android Development] EViollet:
Version history :

11/01/12 ManU-V2.1:

HAVS only. The voltages run from 1000mV to 1350mV which means that they should be stable on all phones. Feel free to play around with the voltages using a script, or IncrediControl

LED notification should now work on GingerVillain 2.8 and upwards thanks to Richard Trip.

Added smartassV2, thanks to erasmux.

Fixed VPN on MIUI (and perhaps other ROMs) thanks to mondilv@xda

Fixed "adb devices" id name bug

Fixed battery calibration

Added lazy governor thanks to Ezekeel : http://xdaforums.com/showthread.php?t=1276092

Added system files to display the current state of the vdd levels

Optimized onDemand governor: ondemand: Remove the iowait-is-busy tunable code. Thanks to someone (I don't know who, sorry...)

Changed the Lazy governor default values to the ones recommended by Dr Byte (80/30000)

Added debug information in the AVS module when voltage changes occur. Especially if they fail.

Added working VPN back again (credits go to mondilv)

Started changing the AVS vdd changing logic. Now only changes the frequencies that are directly impacted.

Add WiFi screen off power level switch

Fix sound issue when using voice commands when bluetooth is connected (??)

28/05/11 ManU-V2.0:

kernel rebased on V2.6.35.13

07/04/11 ManU-V1.4:

added 2-way call recording thanks to avs333 (http://xdaforums.com/showthread.php?t=993793)

updated the battery driver to be compatible with "Battery Calibrator" (https://market.android.com/details?id=net.jonrichards.batterycalibrator.ui)

ZIPs are now signed

128Mhz is now available even when the screen is on with AXI kernels

Higher BlueTooth audio sound

ManU-V1.3:

added CPU Vdd levels sysfs interface for HAVS kernels as well

changed the audio settings

changed the modules location

ManU-V1.2:

added CPU Vdd levels ("undervolt") sysfs interface for SVS kernels (http://xdaforums.com/showthread.php?t=821372)

fixed video recording crashes

updated most of the drivers to most recent versions

changed the kernel name in the Android about box (now reports version number as well)

changed the zip flash to (hopefully) fix problems when flashing on phones with bad sectors

fixed some kernel versions having CPU governor performance by default

ManU-V1.1:

fix battery charging issue between 90% and 100%

disable 128Mhz when the screen is on, in the AXI kernels

ManU-V1.0: Kernel based on an old version (approx. October 2010)

V1 : Fix for IPV6 on MIUI. 6.1 and 6.1se kernels

V0 : First version : 6.1 and 6.1se kernels

FAQ:

How do I know which version I'm running? : Look at the "About the phone" screen at the kernel version. It should display which options you're currently using.

Which kernel do you recommend? : I'd say ManU-HAVS-AXI-CFS. On my phone on idle, I'm using up approx. 2-3ma/h instead of 6-7 with the default kernels with this kernel. So I'm very happy with it, and am currently using it as my main kernel. If you do any testing, feel free to tell us about your own experience! :)

Do you recommend any settings with SetCPU? : I currently use 128-440 conservative governor when the screen is off, and 128-1130 interactive when the screen is on and it gives good results.

After some time my phone feels sluggish. Why? : Apparently there seems to be an issue when switching governors, especially with "interactive". I recommend not to use it, or stick with it and don't change. This may be fixed in the future.

*Something* doesn't work with this kernel. Can you fix it? : First of all, my knowledge of the current state of the kernel is very limited. I just changed a few things in the DeFrost kernel to suit my taste and thought that this kernel may be of interest to some other people. If you have a problem, try explaining it, and give the following details : Name and version of your current ROM, previous kernel that worked, which version of the kernel you are now trying and any other details that may be of interest. I can't guarantee that I'll be able to fix it, because I don't develop the kernel, but I can try to help.

If you have a problem, try disabling the 128Mhz and overclocking options. They may be the culprits.

If 128Mhz saves battery, why isn't it enabled by default in other kernels? : Good question, and I don't know exactly. why. Apparently it causes issues on some phones. So, if you have a problem, try disabling 128Mhz. Also, 1190Mhz is a very high value and can also cause issues. So try lowering the maximum frequencies if you have issues.

On which ROMs do these kernels work? : 1.x series work on DeFrost 6.1, probably earlier versions as well, MIUI and GingerVillain, Redux, and probably others. The 2.x series only work on GingerBread.

On which ROMs do these kernels NOT work? : Oxygen 2. I recommend directly using _thalamus' kernels for Oxygen 2 : http://thalamus.ineige.org/kernels/2.6.35/

Here is a description of how to use the sysfs interface to configure voltage levels :

For SVS kernels, the file name is "/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels" and on HAVS kernels, the file name is "/sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs".

This file is used to read the current voltage state of write new voltage settings.

How to read the settings with the HAVS interface:

connect to the phone using a terminal, or adb shell, and type "cat /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs". The phone will display the frequencies and the associated high and low voltages.

If you want to change the voltages, just send "echo 128000 875 1000 > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs". This will configure the minimum voltage to 875mV and max to 1000mV for the 128000 frequency.

Another useful command is "echo -25 +25 > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels_havs". This will lower the minimum voltage by 25mV and raise the maximum voltage by 25mV on ALL frequencies.

As for the SVS interface, the commands are similar.

"cat /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels" will display the frequencies and the voltages, and "echo 128000 900 > /sys/devices/system/cpu/cpu0/cpufreq/vdd_levels" will set the voltage to 900mV when the CPU is at 128Mhz.

Please note that voltages are multiples of 25mV. So, accepted values are 800, 825, 850, etc. Other values will be rounded.

There is also the possibility to visualize how the kernel is managing the HAVS voltages by using the following system files: /sys/devices/system/cpu/cpu0/cpufreq/vdd_table_havs and /sys/devices/system/cpu/cpu0/cpufreq/vdd_tables_havs

The first file lists the voltages being used for each frequency at the current temperature range.

The second file first displays the current temperature range index (starting at 0) and then the voltages being used for each frequency and for each temperature range.

The WiFi screen off power level can be configured by modifying the following file: /sys/module/bcm4329/parameters/wlLowPower

By sending 'echo 1 > /sys/module/bcm4329/parameters/wlLowPower' the WiFi will switch to low power level when the screen is switched off. By default maximum power is used at all times.

Test versions:

The following section contains test materiel. This means that I need feedback on this version, as it may (or may not) become the next official version.

For the moment, no beta/test version available.