[TIPS & TWEAKS][SIYAH] Battery optimization without compromising performance

Search This thread

Armisael

Member
Dec 3, 2007
18
9
This is how i solved my problems of excessive battery drain. I don't know if is gonna work for everyone, but I really hope so. Let me know :D

MY CONFIG

MODEL: GT-I9100
ROM: CheckROM RevoHD™ V4 XWKK5
KERNEL: SiyahKernel v2.6.11
MODEM: I9100NEKI2*

*I'm using this because, for now, is the best one for my Italian carrier (TRE H3G). Although I9100XWKI1 should be better for battery. Give it a try.

TWEAKS

Use one of the following CMW flashable scripts for SiyahKernel v2.6.7+.

  • SiyahKernel ArmConfig Extreme v2 = Extreme CPU/GPU undervolt (need a bit of luck)
  • SiyahKernel ArmConfig Normal v2 = Optimal CPU/GPU undervolt (suitable for most users)
  • SiyahKernel ArmConfig Compatibility v2 = Low CPU/GPU undervolt (safe UV values)
  • SiyahKernel ArmConfig No UV v2 = No CPU/GPU undervolt (default voltages & charge currents)

SiyahKernel ArmConfig Extreme v2
Code:
#!/system/bin/sh

sleep 5

# ============================
# 1°) CPU Frequency & Voltages
# ============================

# Set frequency steps according to the number of steps in your kernel.
echo "1600 1400 1200 1000 800 500 200 100" > /sys/devices/system/cpu/cpu0/cpufreq/freq_table

# Sets global scaling min&max frequencies as 100 and 1000 mhz
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

# Set voltages for frequency steps. Changes possible at +/-25mV steps
echo "1375 1250 1150 1075 975 875 800 825" > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table

# ==================
# 2°) I/O Schedulers
# ==================

echo bfq > /sys/block/mmcblk0/queue/scheduler

# ================================================
# 3°) Scaling Governor & Smooth Scaling Parameters
# ================================================

# Set scaling governor, according to available governors in your kernel
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
echo 85 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential

# Smooth scaling parameters to control any governor jumping to higher frequency directly.
echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_target
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_offset
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_step

# ====================================
# 4°) GPU Clock, Voltages & Thresholds
# ====================================

# Set GPU clocks (Valid values are: 100 114 133 160 200 267 300 400 )
echo "100 160 267" > /sys/class/misc/gpu_clock_control/gpu_control

# Set GPU Up and Down thresholds
echo "90% 50% 90% 50%" > /sys/class/misc/gpu_clock_control/gpu_control

# Set GPU voltages (Changes possible at +/-50mV ie at 50000 steps)
echo "800000 800000 950000" > /sys/class/misc/gpu_voltage_control/gpu_control

# ===================
# 5°) Bus Frequencies
# ===================

# Set bus frequencies for highest-to-lowest cpu frequencies and enable static bus frequency scaling
echo "0 0 0 1 1 2 2 2" > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
echo enabled > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static

# ======================================================
# 6°) Hot Plug Thresholds, Sampling Interval & Frequency
# ======================================================

# Set second core kick-in threshold for screen-on state
echo 25 > /sys/module/pm_hotplug/parameters/loadl
echo 70 > /sys/module/pm_hotplug/parameters/loadh

# Set second core kick-in threshold for screen-off state
echo 45 > /sys/module/pm_hotplug/parameters/loadl_scroff
echo 90 > /sys/module/pm_hotplug/parameters/loadh_scroff

# Set frequency below which second core will not be turned on, regardless of thresholds.
echo 500000 > /sys/module/pm_hotplug/parameters/freq_cpu1on

# Set hot plug sampling intervals for screen-on state
echo 200 > /sys/module/pm_hotplug/parameters/rate
echo 400 > /sys/module/pm_hotplug/parameters/rate_cpuon

# Set hot plug sampling intervals for screen-off state 
echo 800 > /sys/module/pm_hotplug/parameters/rate_scroff

# ====================================
# 7°) Schedule Multi Core & Idle Modes
# ====================================

# Enable sched_mc
echo 1 > /sys/devices/system/cpu/sched_mc_power_savings

# Enable AFTR
echo 3 > /sys/module/cpuidle/parameters/enable_mask

# ======================================
# 8°) Switch Hotplug/DualCore/SingleCore
# ======================================

# Set Dynamic hotplug mode
echo "on" > /sys/devices/virtual/misc/second_core/hotplug_on

# ================================================================
# 9°) Deepsleep Levels
#     cpulevel = 4 (100Mhz - 800Mhz, default), 5 (100Mhz - 500Mhz)
#     buslevel = 0 (400MHz, default), 1 (266MHz), 2 (133MHz)
# ================================================================

# Set deep sleep frequency & bus speed: 
echo 5 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_cpulevel
echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_buslevel

# ==============================
# 10°) Brightness Curve Settings
# ==============================

# Brightness settings (Possible values for min_bl = 0 to 255 | min_gamma = 0 to 24 | max_gamma = 0 to 24)
echo 30 > /sys/class/misc/brightness_curve/min_bl
echo 1 > /sys/class/misc/brightness_curve/min_gamma
echo 24 > /sys/class/misc/brightness_curve/max_gamma

# =================================
# 11°) Touch Sensitivity Parameters
# =================================

# Set touch sensitivity (Possible values are between 40 to 80. Lower value = higher sensitivity)
echo 45 > /sys/devices/virtual/sec/sec_touchscreen/tsp_threshold

# ===================
# 12°) Charge Current
# ===================

# Set AC, Misc & USB charge current (Do not set Ac & Misc more than 1000mA or Usb more than 450)
echo "900 900 450" > /sys/devices/virtual/misc/charge_current/charge_current

# ===================
# 13°) Disable logger
# ===================

if [ ! -d /data/.siyah ];
then
  mkdir /data/.siyah;
  chmod 777 /data/.siyah;
fi;
touch /data/.siyah/disable-logger;


# ====================
# 14°) Graphic tunings
# ====================

setprop debug.sf.hw 1;  # HARDWARE RENDERING (GPU) 
setprop video.accelerate.hw 1;
setprop debug.performance.tuning 1;

SiyahKernel ArmConfig Normal v2
Code:
#!/system/bin/sh

sleep 5

# ============================
# 1°) CPU Frequency & Voltages
# ============================

# Set frequency steps according to the number of steps in your kernel.
echo "1600 1400 1200 1000 800 500 200 100" > /sys/devices/system/cpu/cpu0/cpufreq/freq_table

# Sets global scaling min&max frequencies as 100 and 1000 mhz
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

# Set voltages for frequency steps. Changes possible at +/-25mV steps
echo "1400 1275 1175 1100 1000 900 875 850" > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table

# ==================
# 2°) I/O Schedulers
# ==================

echo bfq > /sys/block/mmcblk0/queue/scheduler

# ================================================
# 3°) Scaling Governor & Smooth Scaling Parameters
# ================================================

# Set scaling governor, according to available governors in your kernel
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
echo 85 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential

# Smooth scaling parameters to control any governor jumping to higher frequency directly.
echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_target
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_offset
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_step

# ====================================
# 4°) GPU Clock, Voltages & Thresholds
# ====================================

# Set GPU clocks (Valid values are: 100 114 133 160 200 267 300 400 )
echo "100 160 267" > /sys/class/misc/gpu_clock_control/gpu_control

# Set GPU Up and Down thresholds
echo "90% 50% 90% 50%" > /sys/class/misc/gpu_clock_control/gpu_control

# Set GPU voltages (Changes possible at +/-50mV ie at 50000 steps)
echo "850000 850000 950000" > /sys/class/misc/gpu_voltage_control/gpu_control

# ===================
# 5°) Bus Frequencies
# ===================

# Set bus frequencies for highest-to-lowest cpu frequencies and enable static bus frequency scaling
echo "0 0 0 1 1 2 2 2" > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
echo enabled > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static

# ======================================================
# 6°) Hot Plug Thresholds, Sampling Interval & Frequency
# ======================================================

# Set second core kick-in threshold for screen-on state
echo 25 > /sys/module/pm_hotplug/parameters/loadl
echo 70 > /sys/module/pm_hotplug/parameters/loadh

# Set second core kick-in threshold for screen-off state
echo 45 > /sys/module/pm_hotplug/parameters/loadl_scroff
echo 90 > /sys/module/pm_hotplug/parameters/loadh_scroff

# Set frequency below which second core will not be turned on, regardless of thresholds.
echo 500000 > /sys/module/pm_hotplug/parameters/freq_cpu1on

# Set hot plug sampling intervals for screen-on state
echo 200 > /sys/module/pm_hotplug/parameters/rate
echo 400 > /sys/module/pm_hotplug/parameters/rate_cpuon

# Set hot plug sampling intervals for screen-off state 
echo 800 > /sys/module/pm_hotplug/parameters/rate_scroff

# ====================================
# 7°) Schedule Multi Core & Idle Modes
# ====================================

# Enable sched_mc
echo 1 > /sys/devices/system/cpu/sched_mc_power_savings

# Enable AFTR
echo 3 > /sys/module/cpuidle/parameters/enable_mask

# ======================================
# 8°) Switch Hotplug/DualCore/SingleCore
# ======================================

# Set Dynamic hotplug mode
echo "on" > /sys/devices/virtual/misc/second_core/hotplug_on

# ================================================================
# 9°) Deepsleep Levels
#     cpulevel = 4 (100Mhz - 800Mhz, default), 5 (100Mhz - 500Mhz)
#     buslevel = 0 (400MHz, default), 1 (266MHz), 2 (133MHz)
# ================================================================

# Set deep sleep frequency & bus speed: 
echo 5 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_cpulevel
echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_buslevel

# ==============================
# 10°) Brightness Curve Settings
# ==============================

# Brightness settings (Possible values for min_bl = 0 to 255 | min_gamma = 0 to 24 | max_gamma = 0 to 24)
echo 30 > /sys/class/misc/brightness_curve/min_bl
echo 1 > /sys/class/misc/brightness_curve/min_gamma
echo 24 > /sys/class/misc/brightness_curve/max_gamma

# =================================
# 11°) Touch Sensitivity Parameters
# =================================

# Set touch sensitivity (Possible values are between 40 to 80. Lower value = higher sensitivity)
echo 45 > /sys/devices/virtual/sec/sec_touchscreen/tsp_threshold

# ===================
# 12°) Charge Current
# ===================

# Set AC, Misc & USB charge current (Do not set Ac & Misc more than 1000mA or Usb more than 450)
echo "900 900 450" > /sys/devices/virtual/misc/charge_current/charge_current

# ===================
# 13°) Disable logger
# ===================

if [ ! -d /data/.siyah ];
then
  mkdir /data/.siyah;
  chmod 777 /data/.siyah;
fi;
touch /data/.siyah/disable-logger;


# ====================
# 14°) Graphic tunings
# ====================

setprop debug.sf.hw 1;  # HARDWARE RENDERING (GPU) 
setprop video.accelerate.hw 1;
setprop debug.performance.tuning 1;

SiyahKernel ArmConfig Compatibility v2
Code:
#!/system/bin/sh

sleep 5

# ============================
# 1°) CPU Frequency & Voltages
# ============================

# Set frequency steps according to the number of steps in your kernel.
echo "1600 1400 1200 1000 800 500 200 100" > /sys/devices/system/cpu/cpu0/cpufreq/freq_table

# Sets global scaling min&max frequencies as 100 and 1000 mhz
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

# Set voltages for frequency steps. Changes possible at +/-25mV steps
echo "1400 1300 1200 1100 1000 925 900 875" > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table

# ==================
# 2°) I/O Schedulers
# ==================

echo bfq > /sys/block/mmcblk0/queue/scheduler

# ================================================
# 3°) Scaling Governor & Smooth Scaling Parameters
# ================================================

# Set scaling governor, according to available governors in your kernel
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
echo 85 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential

# Smooth scaling parameters to control any governor jumping to higher frequency directly.
echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_target
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_offset
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_step

# ====================================
# 4°) GPU Clock, Voltages & Thresholds
# ====================================

# Set GPU clocks (Valid values are: 100 114 133 160 200 267 300 400 )
echo "100 160 267" > /sys/class/misc/gpu_clock_control/gpu_control

# Set GPU Up and Down thresholds
echo "90% 50% 90% 50%" > /sys/class/misc/gpu_clock_control/gpu_control

# Set GPU voltages (Changes possible at +/-50mV ie at 50000 steps)
echo "850000 850000 950000" > /sys/class/misc/gpu_voltage_control/gpu_control

# ===================
# 5°) Bus Frequencies
# ===================

# Set bus frequencies for highest-to-lowest cpu frequencies and enable static bus frequency scaling
echo "0 0 0 1 1 2 2 2" > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
echo enabled > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static

# ======================================================
# 6°) Hot Plug Thresholds, Sampling Interval & Frequency
# ======================================================

# Set second core kick-in threshold for screen-on state
echo 25 > /sys/module/pm_hotplug/parameters/loadl
echo 70 > /sys/module/pm_hotplug/parameters/loadh

# Set second core kick-in threshold for screen-off state
echo 45 > /sys/module/pm_hotplug/parameters/loadl_scroff
echo 90 > /sys/module/pm_hotplug/parameters/loadh_scroff

# Set frequency below which second core will not be turned on, regardless of thresholds.
echo 500000 > /sys/module/pm_hotplug/parameters/freq_cpu1on

# Set hot plug sampling intervals for screen-on state
echo 200 > /sys/module/pm_hotplug/parameters/rate
echo 400 > /sys/module/pm_hotplug/parameters/rate_cpuon

# Set hot plug sampling intervals for screen-off state 
echo 800 > /sys/module/pm_hotplug/parameters/rate_scroff

# ====================================
# 7°) Schedule Multi Core & Idle Modes
# ====================================

# Enable sched_mc
echo 1 > /sys/devices/system/cpu/sched_mc_power_savings

# Enable AFTR
echo 3 > /sys/module/cpuidle/parameters/enable_mask

# ======================================
# 8°) Switch Hotplug/DualCore/SingleCore
# ======================================

# Set Dynamic hotplug mode
echo "on" > /sys/devices/virtual/misc/second_core/hotplug_on

# ================================================================
# 9°) Deepsleep Levels
#     cpulevel = 4 (100Mhz - 800Mhz, default), 5 (100Mhz - 500Mhz)
#     buslevel = 0 (400MHz, default), 1 (266MHz), 2 (133MHz)
# ================================================================

# Set deep sleep frequency & bus speed: 
echo 5 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_cpulevel
echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_buslevel

# ==============================
# 10°) Brightness Curve Settings
# ==============================

# Brightness settings (Possible values for min_bl = 0 to 255 | min_gamma = 0 to 24 | max_gamma = 0 to 24)
echo 30 > /sys/class/misc/brightness_curve/min_bl
echo 1 > /sys/class/misc/brightness_curve/min_gamma
echo 24 > /sys/class/misc/brightness_curve/max_gamma

# =================================
# 11°) Touch Sensitivity Parameters
# =================================

# Set touch sensitivity (Possible values are between 40 to 80. Lower value = higher sensitivity)
echo 45 > /sys/devices/virtual/sec/sec_touchscreen/tsp_threshold

# ===================
# 12°) Charge Current
# ===================

# Set AC, Misc & USB charge current (Do not set Ac & Misc more than 1000mA or Usb more than 450)
echo "900 900 450" > /sys/devices/virtual/misc/charge_current/charge_current

# ===================
# 13°) Disable logger
# ===================

if [ ! -d /data/.siyah ];
then
  mkdir /data/.siyah;
  chmod 777 /data/.siyah;
fi;
touch /data/.siyah/disable-logger;


# ====================
# 14°) Graphic tunings
# ====================

setprop debug.sf.hw 1;  # HARDWARE RENDERING (GPU) 
setprop video.accelerate.hw 1;
setprop debug.performance.tuning 1;

SiyahKernel ArmConfig No UV v2
Code:
#!/system/bin/sh

sleep 5

# ============================
# 1°) CPU Frequency & Voltages
# ============================

# Set frequency steps according to the number of steps in your kernel.
echo "1600 1400 1200 1000 800 500 200 100" > /sys/devices/system/cpu/cpu0/cpufreq/freq_table

# Sets global scaling min&max frequencies as 100 and 1000 mhz
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

# Set voltages for frequency steps. Changes possible at +/-25mV steps
# echo "1375 1250 1150 1075 975 875 800 825" > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table

# ==================
# 2°) I/O Schedulers
# ==================

echo bfq > /sys/block/mmcblk0/queue/scheduler

# ================================================
# 3°) Scaling Governor & Smooth Scaling Parameters
# ================================================

# Set scaling governor, according to available governors in your kernel
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
echo 85 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential

# Smooth scaling parameters to control any governor jumping to higher frequency directly.
echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_target
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_offset
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_step

# ====================================
# 4°) GPU Clock, Voltages & Thresholds
# ====================================

# Set GPU clocks (Valid values are: 100 114 133 160 200 267 300 400 )
echo "100 160 267" > /sys/class/misc/gpu_clock_control/gpu_control

# Set GPU Up and Down thresholds
echo "90% 50% 90% 50%" > /sys/class/misc/gpu_clock_control/gpu_control

# Set GPU voltages (Changes possible at +/-50mV ie at 50000 steps)
# echo "800000 800000 950000" > /sys/class/misc/gpu_voltage_control/gpu_control

# ===================
# 5°) Bus Frequencies
# ===================

# Set bus frequencies for highest-to-lowest cpu frequencies and enable static bus frequency scaling
echo "0 0 0 1 1 2 2 2" > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
echo enabled > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static

# ======================================================
# 6°) Hot Plug Thresholds, Sampling Interval & Frequency
# ======================================================

# Set second core kick-in threshold for screen-on state
echo 25 > /sys/module/pm_hotplug/parameters/loadl
echo 70 > /sys/module/pm_hotplug/parameters/loadh

# Set second core kick-in threshold for screen-off state
echo 45 > /sys/module/pm_hotplug/parameters/loadl_scroff
echo 90 > /sys/module/pm_hotplug/parameters/loadh_scroff

# Set frequency below which second core will not be turned on, regardless of thresholds.
echo 500000 > /sys/module/pm_hotplug/parameters/freq_cpu1on

# Set hot plug sampling intervals for screen-on state
echo 200 > /sys/module/pm_hotplug/parameters/rate
echo 400 > /sys/module/pm_hotplug/parameters/rate_cpuon

# Set hot plug sampling intervals for screen-off state 
echo 800 > /sys/module/pm_hotplug/parameters/rate_scroff

# ====================================
# 7°) Schedule Multi Core & Idle Modes
# ====================================

# Enable sched_mc
echo 1 > /sys/devices/system/cpu/sched_mc_power_savings

# Enable AFTR
echo 3 > /sys/module/cpuidle/parameters/enable_mask

# ======================================
# 8°) Switch Hotplug/DualCore/SingleCore
# ======================================

# Set Dynamic hotplug mode
echo "on" > /sys/devices/virtual/misc/second_core/hotplug_on

# ================================================================
# 9°) Deepsleep Levels
#     cpulevel = 4 (100Mhz - 800Mhz, default), 5 (100Mhz - 500Mhz)
#     buslevel = 0 (400MHz, default), 1 (266MHz), 2 (133MHz)
# ================================================================

# Set deep sleep frequency & bus speed: 
echo 5 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_cpulevel
echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_buslevel

# ==============================
# 10°) Brightness Curve Settings
# ==============================

# Brightness settings (Possible values for min_bl = 0 to 255 | min_gamma = 0 to 24 | max_gamma = 0 to 24)
echo 30 > /sys/class/misc/brightness_curve/min_bl
echo 1 > /sys/class/misc/brightness_curve/min_gamma
echo 24 > /sys/class/misc/brightness_curve/max_gamma

# =================================
# 11°) Touch Sensitivity Parameters
# =================================

# Set touch sensitivity (Possible values are between 40 to 80. Lower value = higher sensitivity)
echo 45 > /sys/devices/virtual/sec/sec_touchscreen/tsp_threshold

# ===================
# 12°) Charge Current
# ===================

# Set AC, Misc & USB charge current (Do not set Ac & Misc more than 1000mA or Usb more than 450)
# echo "900 900 450" > /sys/devices/virtual/misc/charge_current/charge_current

# ===================
# 13°) Disable logger
# ===================

if [ ! -d /data/.siyah ];
then
  mkdir /data/.siyah;
  chmod 777 /data/.siyah;
fi;
touch /data/.siyah/disable-logger;


# ====================
# 14°) Graphic tunings
# ====================

setprop debug.sf.hw 1;  # HARDWARE RENDERING (GPU) 
setprop video.accelerate.hw 1;
setprop debug.performance.tuning 1;

WARNING

Overclocking & Undervolting may cause system instability. Use these settings with caution and at your own risk :D. I personally use "ArmConfig Extreme" but my phone is a very lucky one ;).

  • Don't want to change any voltages? Install ArmConfig_No_UV_v2 through CMW recovery.
  • Want stock values? Simply remove S98SiyahArmConfig from system/etc/init.d folder ;).

TIPS

1) Use Titanium Backup for freezing "Samsung Push Service". It was causing me a lot of wakelocks (v1.0.1).

2) Calibrate your battery using the following method [all credits to ram3n].

  • Turn off your phone.
  • Fully Charge.
  • When getting 100% signal, unplug quickly.
  • Pull off the battery and put it anywhere.
  • Wait around 5 minutes.
  • Meanwhile, take this opportunity to dust off the internal compartment.
  • Put back the battery on the right side.
  • Turn on the phone.

3) Follow this guide to fix the StartingAlertService Wakelock [all credits to rodries]

This should considerably reduce your phone wakelocks, improving battery life.
BTW if you are using CheckROM RevoHD™ V4 or any other XWKK5 ROM, you can just install this CMW flashable update.

4) Disable Fast dormancy by using *#9900# code in phone app. This Tweak must be applied every time you reboot your smartphone.

CHANGELOG

ArmConfig v1 to v2:
  • Commented code
  • From bootscript to S98SiyahArmConfig
  • Changed deep sleep frequency to 500MHz
  • Fixed Dynamic hotplug (thanks evilive27)
  • Disabled logger
  • Graphic tunings
  • Several minor tweaks

CREDITS

LeoMar75 and GadgetCheck for CheckROM RevoHD™ V4
gokhanmoral for SiyahKernel v2.6.11
ram3n for Battery Calibration
droidphile for his wonderful thread
hausmanis for Disable Logger & Graphic tunings scripts
 

Attachments

  • SiyahKernel_ArmConfig_Extreme_v2.zip
    145.7 KB · Views: 199
  • SiyahKernel_ArmConfig_Normal_v2.zip
    145.7 KB · Views: 304
  • SiyahKernel_ArmConfig_Compatibility_v2.zip
    145.7 KB · Views: 132
  • SiyahKernel_ArmConfig_No_UV_v2.zip
    145.7 KB · Views: 86
Last edited:
S

Suarez7

Guest
Good job mate but battery calibration does not work on our phones and really whatever method you try means nothing. But anyway good job on your thread very good info you have.:)
 

Armisael

Member
Dec 3, 2007
18
9
Suarez7 I know that our smartphone uses MAX17042, which is auto-calibrating, but sometimes this feature doesn't work as expected and deleting Batterystats.bin in data/system folder doesn't work either. This method should force the MAX17042 to erase all calibration data allowing a fresh start. I personally tried this with a little skepticism and i was surprised with the results (don't thing is the so called placebo effect :p ).
Give it a try ;)
 
Last edited:
S

Suarez7

Guest
Suarez7 I know that our smartphone uses MAX17042, which is auto-calibrating, but sometimes this feature doesn't work as expected and deleting Batterystats.bin in data/system folder doesn't work either. This method should force the MAX17042 to erase all calibration data allowing a fresh start. I personally tried this with a little skepticism and i was surprised with the results (don't thing is the so called placebo effect :p ).
Give it a try ;)

Buddy i tried them all and honestly not noticed sod all. Anyway good luck with the thread. And FYI most kernel developers if you ask will say that calibration really means nothing lately. But anyway besides the point good luck on the thread well put info

Sent from my GT-I9100 using xda premium
 

Armisael

Member
Dec 3, 2007
18
9
Use the following as a reference to know which script is most suitable for you :)

  • SiyahKernel ArmConfig Extreme = Extreme CPU/GPU undervolt (need a bit of luck)
  • SiyahKernel ArmConfig Standard = Optimal CPU/GPU undervolt (suitable for most users)
  • SiyahKernel ArmConfig Compatibility = Low CPU/GPU undervolt (safe UV values)
  • SiyahKernel ArmConfig NO UV = No CPU/GPU undervolt (default voltages & charge currents)

*Also added to the first post
 
  • Like
Reactions: kaiser_tytnii

Armisael

Member
Dec 3, 2007
18
9
This is what I'm testing right now

Code:
#!/system/bin/sh

sleep 5

echo "1600 1400 1200 1000 800 600 400 200" > /sys/devices/system/cpu/cpu0/cpufreq/freq_table
echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo "1375 1250 1150 1075 975 875 875 800" > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table

echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
echo 5 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential

echo "100 160 267" > /sys/class/misc/gpu_clock_control/gpu_control
echo "90% 50% 90% 50%" > /sys/class/misc/gpu_clock_control/gpu_control
echo "800000 800000 950000" > /sys/class/misc/gpu_voltage_control/gpu_control

echo "0 0 0 1 1 2 2 2" > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
echo enabled > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static

echo 3 > /sys/module/cpuidle/parameters/enable_mask

echo 50 > /sys/devices/virtual/sec/sec_touchscreen/tsp_threshold

echo bfq > /sys/block/mmcblk0/queue/scheduler

echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_target
echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_offset
echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_step

echo 4 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_cpulevel
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_buslevel

echo 30 > /sys/class/misc/brightness_curve/min_bl
echo 1 > /sys/class/misc/brightness_curve/min_gamma
echo 24 > /sys/class/misc/brightness_curve/max_gamma

echo 25 > /sys/module/pm_hotplug/parameters/loadl
echo 70 > /sys/module/pm_hotplug/parameters/loadh
echo 45 > /sys/module/pm_hotplug/parameters/loadl_scroff
echo 90 > /sys/module/pm_hotplug/parameters/loadh_scroff
echo 599999 > /sys/module/pm_hotplug/parameters/freq_cpu1on
echo 200 > /sys/module/pm_hotplug/parameters/rate
echo 400 > /sys/module/pm_hotplug/parameters/rate_cpuon
echo 800 > /sys/module/pm_hotplug/parameters/rate_scroff

echo 1 > /sys/devices/system/cpu/sched_mc_power_savings

echo "900 900 450" > /sys/devices/virtual/misc/charge_current/charge_current

echo "on" > /sys/devices/virtual/misc/second_core/hotplug_on
echo "off" > /sys/devices/virtual/misc/second_core/hotplug_on
echo "off" > /sys/devices/virtual/misc/second_core/second_core_on
echo "off" > /sys/devices/virtual/misc/second_core/hotplug_on
echo "on" > /sys/devices/virtual/misc/second_core/second_core_on

Should be very energy efficient but I'm still unconvinced about performance

UPDATE

1) Testing battery consumption at 400MHz 0,875v & 600MHz 0,875v
2) I think 200-1400MHz is still the better solution for performance & battery... I will update my scripts as soon as I can :)
 
Last edited:
  • Like
Reactions: kaiser_tytnii

Armisael

Member
Dec 3, 2007
18
9
Updated first post with ArmConfig v2

Changelog:
* Commented code
* From bootscript to S98SiyahArmConfig
* Changed deep sleep frequency to 500MHz
* Fixed Dynamic hotplug (thanks evilive27)
* Disabled logger
* Graphic tunings
* Several minor tweaks
 
  • Like
Reactions: kaiser_tytnii

kaiser_tytnii

Senior Member
Nov 15, 2007
613
88
Toronto
Updated first post with ArmConfig v2

Changelog:
* Commented code
* From bootscript to S98SiyahArmConfig
* Changed deep sleep frequency to 500MHz
* Fixed Dynamic hotplug (thanks evilive27)
* Disabled logger
* Graphic tunings
* Several minor tweaks

gonna give it a try now! thanks! btw, min CPU was set to 200mhz, not 100mhz as per comment...
 

Armisael

Member
Dec 3, 2007
18
9
Unfortunately each CPU is different. The Extreme are my personal rock solid limits. If you want a hint on how to find yours, install Voltage Control from the market and try lowering the voltage by 25mV for one frequency step at a time (starting from Standard). Test it for at least a day ;)
 

Armisael

Member
Dec 3, 2007
18
9
Added, on the first post, a new TIP on how to disable Fast Dormancy (Should increase battery even more).
 

Armisael

Member
Dec 3, 2007
18
9
Kaiser thanks for the info :) (mine is resetting sometimes but maybe is due to something else)

P.S. added a new Tip to the first post

3) Follow this guide to fix the StartingAlertService Wakelock [all credits to rodries]

This should considerably reduce your phone wakelocks, improving battery life.
BTW if you are using CheckROM RevoHD™ V4 or any other XWKK5 ROM, you can just install this CMW flashable update.
 

xinfinityoO

Senior Member
May 14, 2011
2,209
574
Wellington
nice script.

i have seen u use onedemand governor.. could you please make similar scripts for conservative governor.. would really appreciate it.

thanks
 

Top Liked Posts

  • There are no posts matching your filters.
  • 6
    This is how i solved my problems of excessive battery drain. I don't know if is gonna work for everyone, but I really hope so. Let me know :D

    MY CONFIG

    MODEL: GT-I9100
    ROM: CheckROM RevoHD™ V4 XWKK5
    KERNEL: SiyahKernel v2.6.11
    MODEM: I9100NEKI2*

    *I'm using this because, for now, is the best one for my Italian carrier (TRE H3G). Although I9100XWKI1 should be better for battery. Give it a try.

    TWEAKS

    Use one of the following CMW flashable scripts for SiyahKernel v2.6.7+.

    • SiyahKernel ArmConfig Extreme v2 = Extreme CPU/GPU undervolt (need a bit of luck)
    • SiyahKernel ArmConfig Normal v2 = Optimal CPU/GPU undervolt (suitable for most users)
    • SiyahKernel ArmConfig Compatibility v2 = Low CPU/GPU undervolt (safe UV values)
    • SiyahKernel ArmConfig No UV v2 = No CPU/GPU undervolt (default voltages & charge currents)

    SiyahKernel ArmConfig Extreme v2
    Code:
    #!/system/bin/sh
    
    sleep 5
    
    # ============================
    # 1°) CPU Frequency & Voltages
    # ============================
    
    # Set frequency steps according to the number of steps in your kernel.
    echo "1600 1400 1200 1000 800 500 200 100" > /sys/devices/system/cpu/cpu0/cpufreq/freq_table
    
    # Sets global scaling min&max frequencies as 100 and 1000 mhz
    echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
    echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
    
    # Set voltages for frequency steps. Changes possible at +/-25mV steps
    echo "1375 1250 1150 1075 975 875 800 825" > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table
    
    # ==================
    # 2°) I/O Schedulers
    # ==================
    
    echo bfq > /sys/block/mmcblk0/queue/scheduler
    
    # ================================================
    # 3°) Scaling Governor & Smooth Scaling Parameters
    # ================================================
    
    # Set scaling governor, according to available governors in your kernel
    echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
    echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
    echo 85 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
    echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential
    
    # Smooth scaling parameters to control any governor jumping to higher frequency directly.
    echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_target
    echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_offset
    echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_step
    
    # ====================================
    # 4°) GPU Clock, Voltages & Thresholds
    # ====================================
    
    # Set GPU clocks (Valid values are: 100 114 133 160 200 267 300 400 )
    echo "100 160 267" > /sys/class/misc/gpu_clock_control/gpu_control
    
    # Set GPU Up and Down thresholds
    echo "90% 50% 90% 50%" > /sys/class/misc/gpu_clock_control/gpu_control
    
    # Set GPU voltages (Changes possible at +/-50mV ie at 50000 steps)
    echo "800000 800000 950000" > /sys/class/misc/gpu_voltage_control/gpu_control
    
    # ===================
    # 5°) Bus Frequencies
    # ===================
    
    # Set bus frequencies for highest-to-lowest cpu frequencies and enable static bus frequency scaling
    echo "0 0 0 1 1 2 2 2" > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
    echo enabled > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
    
    # ======================================================
    # 6°) Hot Plug Thresholds, Sampling Interval & Frequency
    # ======================================================
    
    # Set second core kick-in threshold for screen-on state
    echo 25 > /sys/module/pm_hotplug/parameters/loadl
    echo 70 > /sys/module/pm_hotplug/parameters/loadh
    
    # Set second core kick-in threshold for screen-off state
    echo 45 > /sys/module/pm_hotplug/parameters/loadl_scroff
    echo 90 > /sys/module/pm_hotplug/parameters/loadh_scroff
    
    # Set frequency below which second core will not be turned on, regardless of thresholds.
    echo 500000 > /sys/module/pm_hotplug/parameters/freq_cpu1on
    
    # Set hot plug sampling intervals for screen-on state
    echo 200 > /sys/module/pm_hotplug/parameters/rate
    echo 400 > /sys/module/pm_hotplug/parameters/rate_cpuon
    
    # Set hot plug sampling intervals for screen-off state 
    echo 800 > /sys/module/pm_hotplug/parameters/rate_scroff
    
    # ====================================
    # 7°) Schedule Multi Core & Idle Modes
    # ====================================
    
    # Enable sched_mc
    echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
    
    # Enable AFTR
    echo 3 > /sys/module/cpuidle/parameters/enable_mask
    
    # ======================================
    # 8°) Switch Hotplug/DualCore/SingleCore
    # ======================================
    
    # Set Dynamic hotplug mode
    echo "on" > /sys/devices/virtual/misc/second_core/hotplug_on
    
    # ================================================================
    # 9°) Deepsleep Levels
    #     cpulevel = 4 (100Mhz - 800Mhz, default), 5 (100Mhz - 500Mhz)
    #     buslevel = 0 (400MHz, default), 1 (266MHz), 2 (133MHz)
    # ================================================================
    
    # Set deep sleep frequency & bus speed: 
    echo 5 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_cpulevel
    echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_buslevel
    
    # ==============================
    # 10°) Brightness Curve Settings
    # ==============================
    
    # Brightness settings (Possible values for min_bl = 0 to 255 | min_gamma = 0 to 24 | max_gamma = 0 to 24)
    echo 30 > /sys/class/misc/brightness_curve/min_bl
    echo 1 > /sys/class/misc/brightness_curve/min_gamma
    echo 24 > /sys/class/misc/brightness_curve/max_gamma
    
    # =================================
    # 11°) Touch Sensitivity Parameters
    # =================================
    
    # Set touch sensitivity (Possible values are between 40 to 80. Lower value = higher sensitivity)
    echo 45 > /sys/devices/virtual/sec/sec_touchscreen/tsp_threshold
    
    # ===================
    # 12°) Charge Current
    # ===================
    
    # Set AC, Misc & USB charge current (Do not set Ac & Misc more than 1000mA or Usb more than 450)
    echo "900 900 450" > /sys/devices/virtual/misc/charge_current/charge_current
    
    # ===================
    # 13°) Disable logger
    # ===================
    
    if [ ! -d /data/.siyah ];
    then
      mkdir /data/.siyah;
      chmod 777 /data/.siyah;
    fi;
    touch /data/.siyah/disable-logger;
    
    
    # ====================
    # 14°) Graphic tunings
    # ====================
    
    setprop debug.sf.hw 1;  # HARDWARE RENDERING (GPU) 
    setprop video.accelerate.hw 1;
    setprop debug.performance.tuning 1;

    SiyahKernel ArmConfig Normal v2
    Code:
    #!/system/bin/sh
    
    sleep 5
    
    # ============================
    # 1°) CPU Frequency & Voltages
    # ============================
    
    # Set frequency steps according to the number of steps in your kernel.
    echo "1600 1400 1200 1000 800 500 200 100" > /sys/devices/system/cpu/cpu0/cpufreq/freq_table
    
    # Sets global scaling min&max frequencies as 100 and 1000 mhz
    echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
    echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
    
    # Set voltages for frequency steps. Changes possible at +/-25mV steps
    echo "1400 1275 1175 1100 1000 900 875 850" > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table
    
    # ==================
    # 2°) I/O Schedulers
    # ==================
    
    echo bfq > /sys/block/mmcblk0/queue/scheduler
    
    # ================================================
    # 3°) Scaling Governor & Smooth Scaling Parameters
    # ================================================
    
    # Set scaling governor, according to available governors in your kernel
    echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
    echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
    echo 85 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
    echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential
    
    # Smooth scaling parameters to control any governor jumping to higher frequency directly.
    echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_target
    echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_offset
    echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_step
    
    # ====================================
    # 4°) GPU Clock, Voltages & Thresholds
    # ====================================
    
    # Set GPU clocks (Valid values are: 100 114 133 160 200 267 300 400 )
    echo "100 160 267" > /sys/class/misc/gpu_clock_control/gpu_control
    
    # Set GPU Up and Down thresholds
    echo "90% 50% 90% 50%" > /sys/class/misc/gpu_clock_control/gpu_control
    
    # Set GPU voltages (Changes possible at +/-50mV ie at 50000 steps)
    echo "850000 850000 950000" > /sys/class/misc/gpu_voltage_control/gpu_control
    
    # ===================
    # 5°) Bus Frequencies
    # ===================
    
    # Set bus frequencies for highest-to-lowest cpu frequencies and enable static bus frequency scaling
    echo "0 0 0 1 1 2 2 2" > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
    echo enabled > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
    
    # ======================================================
    # 6°) Hot Plug Thresholds, Sampling Interval & Frequency
    # ======================================================
    
    # Set second core kick-in threshold for screen-on state
    echo 25 > /sys/module/pm_hotplug/parameters/loadl
    echo 70 > /sys/module/pm_hotplug/parameters/loadh
    
    # Set second core kick-in threshold for screen-off state
    echo 45 > /sys/module/pm_hotplug/parameters/loadl_scroff
    echo 90 > /sys/module/pm_hotplug/parameters/loadh_scroff
    
    # Set frequency below which second core will not be turned on, regardless of thresholds.
    echo 500000 > /sys/module/pm_hotplug/parameters/freq_cpu1on
    
    # Set hot plug sampling intervals for screen-on state
    echo 200 > /sys/module/pm_hotplug/parameters/rate
    echo 400 > /sys/module/pm_hotplug/parameters/rate_cpuon
    
    # Set hot plug sampling intervals for screen-off state 
    echo 800 > /sys/module/pm_hotplug/parameters/rate_scroff
    
    # ====================================
    # 7°) Schedule Multi Core & Idle Modes
    # ====================================
    
    # Enable sched_mc
    echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
    
    # Enable AFTR
    echo 3 > /sys/module/cpuidle/parameters/enable_mask
    
    # ======================================
    # 8°) Switch Hotplug/DualCore/SingleCore
    # ======================================
    
    # Set Dynamic hotplug mode
    echo "on" > /sys/devices/virtual/misc/second_core/hotplug_on
    
    # ================================================================
    # 9°) Deepsleep Levels
    #     cpulevel = 4 (100Mhz - 800Mhz, default), 5 (100Mhz - 500Mhz)
    #     buslevel = 0 (400MHz, default), 1 (266MHz), 2 (133MHz)
    # ================================================================
    
    # Set deep sleep frequency & bus speed: 
    echo 5 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_cpulevel
    echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_buslevel
    
    # ==============================
    # 10°) Brightness Curve Settings
    # ==============================
    
    # Brightness settings (Possible values for min_bl = 0 to 255 | min_gamma = 0 to 24 | max_gamma = 0 to 24)
    echo 30 > /sys/class/misc/brightness_curve/min_bl
    echo 1 > /sys/class/misc/brightness_curve/min_gamma
    echo 24 > /sys/class/misc/brightness_curve/max_gamma
    
    # =================================
    # 11°) Touch Sensitivity Parameters
    # =================================
    
    # Set touch sensitivity (Possible values are between 40 to 80. Lower value = higher sensitivity)
    echo 45 > /sys/devices/virtual/sec/sec_touchscreen/tsp_threshold
    
    # ===================
    # 12°) Charge Current
    # ===================
    
    # Set AC, Misc & USB charge current (Do not set Ac & Misc more than 1000mA or Usb more than 450)
    echo "900 900 450" > /sys/devices/virtual/misc/charge_current/charge_current
    
    # ===================
    # 13°) Disable logger
    # ===================
    
    if [ ! -d /data/.siyah ];
    then
      mkdir /data/.siyah;
      chmod 777 /data/.siyah;
    fi;
    touch /data/.siyah/disable-logger;
    
    
    # ====================
    # 14°) Graphic tunings
    # ====================
    
    setprop debug.sf.hw 1;  # HARDWARE RENDERING (GPU) 
    setprop video.accelerate.hw 1;
    setprop debug.performance.tuning 1;

    SiyahKernel ArmConfig Compatibility v2
    Code:
    #!/system/bin/sh
    
    sleep 5
    
    # ============================
    # 1°) CPU Frequency & Voltages
    # ============================
    
    # Set frequency steps according to the number of steps in your kernel.
    echo "1600 1400 1200 1000 800 500 200 100" > /sys/devices/system/cpu/cpu0/cpufreq/freq_table
    
    # Sets global scaling min&max frequencies as 100 and 1000 mhz
    echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
    echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
    
    # Set voltages for frequency steps. Changes possible at +/-25mV steps
    echo "1400 1300 1200 1100 1000 925 900 875" > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table
    
    # ==================
    # 2°) I/O Schedulers
    # ==================
    
    echo bfq > /sys/block/mmcblk0/queue/scheduler
    
    # ================================================
    # 3°) Scaling Governor & Smooth Scaling Parameters
    # ================================================
    
    # Set scaling governor, according to available governors in your kernel
    echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
    echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
    echo 85 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
    echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential
    
    # Smooth scaling parameters to control any governor jumping to higher frequency directly.
    echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_target
    echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_offset
    echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_step
    
    # ====================================
    # 4°) GPU Clock, Voltages & Thresholds
    # ====================================
    
    # Set GPU clocks (Valid values are: 100 114 133 160 200 267 300 400 )
    echo "100 160 267" > /sys/class/misc/gpu_clock_control/gpu_control
    
    # Set GPU Up and Down thresholds
    echo "90% 50% 90% 50%" > /sys/class/misc/gpu_clock_control/gpu_control
    
    # Set GPU voltages (Changes possible at +/-50mV ie at 50000 steps)
    echo "850000 850000 950000" > /sys/class/misc/gpu_voltage_control/gpu_control
    
    # ===================
    # 5°) Bus Frequencies
    # ===================
    
    # Set bus frequencies for highest-to-lowest cpu frequencies and enable static bus frequency scaling
    echo "0 0 0 1 1 2 2 2" > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
    echo enabled > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
    
    # ======================================================
    # 6°) Hot Plug Thresholds, Sampling Interval & Frequency
    # ======================================================
    
    # Set second core kick-in threshold for screen-on state
    echo 25 > /sys/module/pm_hotplug/parameters/loadl
    echo 70 > /sys/module/pm_hotplug/parameters/loadh
    
    # Set second core kick-in threshold for screen-off state
    echo 45 > /sys/module/pm_hotplug/parameters/loadl_scroff
    echo 90 > /sys/module/pm_hotplug/parameters/loadh_scroff
    
    # Set frequency below which second core will not be turned on, regardless of thresholds.
    echo 500000 > /sys/module/pm_hotplug/parameters/freq_cpu1on
    
    # Set hot plug sampling intervals for screen-on state
    echo 200 > /sys/module/pm_hotplug/parameters/rate
    echo 400 > /sys/module/pm_hotplug/parameters/rate_cpuon
    
    # Set hot plug sampling intervals for screen-off state 
    echo 800 > /sys/module/pm_hotplug/parameters/rate_scroff
    
    # ====================================
    # 7°) Schedule Multi Core & Idle Modes
    # ====================================
    
    # Enable sched_mc
    echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
    
    # Enable AFTR
    echo 3 > /sys/module/cpuidle/parameters/enable_mask
    
    # ======================================
    # 8°) Switch Hotplug/DualCore/SingleCore
    # ======================================
    
    # Set Dynamic hotplug mode
    echo "on" > /sys/devices/virtual/misc/second_core/hotplug_on
    
    # ================================================================
    # 9°) Deepsleep Levels
    #     cpulevel = 4 (100Mhz - 800Mhz, default), 5 (100Mhz - 500Mhz)
    #     buslevel = 0 (400MHz, default), 1 (266MHz), 2 (133MHz)
    # ================================================================
    
    # Set deep sleep frequency & bus speed: 
    echo 5 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_cpulevel
    echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_buslevel
    
    # ==============================
    # 10°) Brightness Curve Settings
    # ==============================
    
    # Brightness settings (Possible values for min_bl = 0 to 255 | min_gamma = 0 to 24 | max_gamma = 0 to 24)
    echo 30 > /sys/class/misc/brightness_curve/min_bl
    echo 1 > /sys/class/misc/brightness_curve/min_gamma
    echo 24 > /sys/class/misc/brightness_curve/max_gamma
    
    # =================================
    # 11°) Touch Sensitivity Parameters
    # =================================
    
    # Set touch sensitivity (Possible values are between 40 to 80. Lower value = higher sensitivity)
    echo 45 > /sys/devices/virtual/sec/sec_touchscreen/tsp_threshold
    
    # ===================
    # 12°) Charge Current
    # ===================
    
    # Set AC, Misc & USB charge current (Do not set Ac & Misc more than 1000mA or Usb more than 450)
    echo "900 900 450" > /sys/devices/virtual/misc/charge_current/charge_current
    
    # ===================
    # 13°) Disable logger
    # ===================
    
    if [ ! -d /data/.siyah ];
    then
      mkdir /data/.siyah;
      chmod 777 /data/.siyah;
    fi;
    touch /data/.siyah/disable-logger;
    
    
    # ====================
    # 14°) Graphic tunings
    # ====================
    
    setprop debug.sf.hw 1;  # HARDWARE RENDERING (GPU) 
    setprop video.accelerate.hw 1;
    setprop debug.performance.tuning 1;

    SiyahKernel ArmConfig No UV v2
    Code:
    #!/system/bin/sh
    
    sleep 5
    
    # ============================
    # 1°) CPU Frequency & Voltages
    # ============================
    
    # Set frequency steps according to the number of steps in your kernel.
    echo "1600 1400 1200 1000 800 500 200 100" > /sys/devices/system/cpu/cpu0/cpufreq/freq_table
    
    # Sets global scaling min&max frequencies as 100 and 1000 mhz
    echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
    echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
    
    # Set voltages for frequency steps. Changes possible at +/-25mV steps
    # echo "1375 1250 1150 1075 975 875 800 825" > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table
    
    # ==================
    # 2°) I/O Schedulers
    # ==================
    
    echo bfq > /sys/block/mmcblk0/queue/scheduler
    
    # ================================================
    # 3°) Scaling Governor & Smooth Scaling Parameters
    # ================================================
    
    # Set scaling governor, according to available governors in your kernel
    echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
    echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
    echo 85 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
    echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential
    
    # Smooth scaling parameters to control any governor jumping to higher frequency directly.
    echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_target
    echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_offset
    echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_step
    
    # ====================================
    # 4°) GPU Clock, Voltages & Thresholds
    # ====================================
    
    # Set GPU clocks (Valid values are: 100 114 133 160 200 267 300 400 )
    echo "100 160 267" > /sys/class/misc/gpu_clock_control/gpu_control
    
    # Set GPU Up and Down thresholds
    echo "90% 50% 90% 50%" > /sys/class/misc/gpu_clock_control/gpu_control
    
    # Set GPU voltages (Changes possible at +/-50mV ie at 50000 steps)
    # echo "800000 800000 950000" > /sys/class/misc/gpu_voltage_control/gpu_control
    
    # ===================
    # 5°) Bus Frequencies
    # ===================
    
    # Set bus frequencies for highest-to-lowest cpu frequencies and enable static bus frequency scaling
    echo "0 0 0 1 1 2 2 2" > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
    echo enabled > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
    
    # ======================================================
    # 6°) Hot Plug Thresholds, Sampling Interval & Frequency
    # ======================================================
    
    # Set second core kick-in threshold for screen-on state
    echo 25 > /sys/module/pm_hotplug/parameters/loadl
    echo 70 > /sys/module/pm_hotplug/parameters/loadh
    
    # Set second core kick-in threshold for screen-off state
    echo 45 > /sys/module/pm_hotplug/parameters/loadl_scroff
    echo 90 > /sys/module/pm_hotplug/parameters/loadh_scroff
    
    # Set frequency below which second core will not be turned on, regardless of thresholds.
    echo 500000 > /sys/module/pm_hotplug/parameters/freq_cpu1on
    
    # Set hot plug sampling intervals for screen-on state
    echo 200 > /sys/module/pm_hotplug/parameters/rate
    echo 400 > /sys/module/pm_hotplug/parameters/rate_cpuon
    
    # Set hot plug sampling intervals for screen-off state 
    echo 800 > /sys/module/pm_hotplug/parameters/rate_scroff
    
    # ====================================
    # 7°) Schedule Multi Core & Idle Modes
    # ====================================
    
    # Enable sched_mc
    echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
    
    # Enable AFTR
    echo 3 > /sys/module/cpuidle/parameters/enable_mask
    
    # ======================================
    # 8°) Switch Hotplug/DualCore/SingleCore
    # ======================================
    
    # Set Dynamic hotplug mode
    echo "on" > /sys/devices/virtual/misc/second_core/hotplug_on
    
    # ================================================================
    # 9°) Deepsleep Levels
    #     cpulevel = 4 (100Mhz - 800Mhz, default), 5 (100Mhz - 500Mhz)
    #     buslevel = 0 (400MHz, default), 1 (266MHz), 2 (133MHz)
    # ================================================================
    
    # Set deep sleep frequency & bus speed: 
    echo 5 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_cpulevel
    echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_buslevel
    
    # ==============================
    # 10°) Brightness Curve Settings
    # ==============================
    
    # Brightness settings (Possible values for min_bl = 0 to 255 | min_gamma = 0 to 24 | max_gamma = 0 to 24)
    echo 30 > /sys/class/misc/brightness_curve/min_bl
    echo 1 > /sys/class/misc/brightness_curve/min_gamma
    echo 24 > /sys/class/misc/brightness_curve/max_gamma
    
    # =================================
    # 11°) Touch Sensitivity Parameters
    # =================================
    
    # Set touch sensitivity (Possible values are between 40 to 80. Lower value = higher sensitivity)
    echo 45 > /sys/devices/virtual/sec/sec_touchscreen/tsp_threshold
    
    # ===================
    # 12°) Charge Current
    # ===================
    
    # Set AC, Misc & USB charge current (Do not set Ac & Misc more than 1000mA or Usb more than 450)
    # echo "900 900 450" > /sys/devices/virtual/misc/charge_current/charge_current
    
    # ===================
    # 13°) Disable logger
    # ===================
    
    if [ ! -d /data/.siyah ];
    then
      mkdir /data/.siyah;
      chmod 777 /data/.siyah;
    fi;
    touch /data/.siyah/disable-logger;
    
    
    # ====================
    # 14°) Graphic tunings
    # ====================
    
    setprop debug.sf.hw 1;  # HARDWARE RENDERING (GPU) 
    setprop video.accelerate.hw 1;
    setprop debug.performance.tuning 1;

    WARNING

    Overclocking & Undervolting may cause system instability. Use these settings with caution and at your own risk :D. I personally use "ArmConfig Extreme" but my phone is a very lucky one ;).

    • Don't want to change any voltages? Install ArmConfig_No_UV_v2 through CMW recovery.
    • Want stock values? Simply remove S98SiyahArmConfig from system/etc/init.d folder ;).

    TIPS

    1) Use Titanium Backup for freezing "Samsung Push Service". It was causing me a lot of wakelocks (v1.0.1).

    2) Calibrate your battery using the following method [all credits to ram3n].

    • Turn off your phone.
    • Fully Charge.
    • When getting 100% signal, unplug quickly.
    • Pull off the battery and put it anywhere.
    • Wait around 5 minutes.
    • Meanwhile, take this opportunity to dust off the internal compartment.
    • Put back the battery on the right side.
    • Turn on the phone.

    3) Follow this guide to fix the StartingAlertService Wakelock [all credits to rodries]

    This should considerably reduce your phone wakelocks, improving battery life.
    BTW if you are using CheckROM RevoHD™ V4 or any other XWKK5 ROM, you can just install this CMW flashable update.

    4) Disable Fast dormancy by using *#9900# code in phone app. This Tweak must be applied every time you reboot your smartphone.

    CHANGELOG

    ArmConfig v1 to v2:
    • Commented code
    • From bootscript to S98SiyahArmConfig
    • Changed deep sleep frequency to 500MHz
    • Fixed Dynamic hotplug (thanks evilive27)
    • Disabled logger
    • Graphic tunings
    • Several minor tweaks

    CREDITS

    LeoMar75 and GadgetCheck for CheckROM RevoHD™ V4
    gokhanmoral for SiyahKernel v2.6.11
    ram3n for Battery Calibration
    droidphile for his wonderful thread
    hausmanis for Disable Logger & Graphic tunings scripts
    1
    Use the following as a reference to know which script is most suitable for you :)

    • SiyahKernel ArmConfig Extreme = Extreme CPU/GPU undervolt (need a bit of luck)
    • SiyahKernel ArmConfig Standard = Optimal CPU/GPU undervolt (suitable for most users)
    • SiyahKernel ArmConfig Compatibility = Low CPU/GPU undervolt (safe UV values)
    • SiyahKernel ArmConfig NO UV = No CPU/GPU undervolt (default voltages & charge currents)

    *Also added to the first post
    1
    This is what I'm testing right now

    Code:
    #!/system/bin/sh
    
    sleep 5
    
    echo "1600 1400 1200 1000 800 600 400 200" > /sys/devices/system/cpu/cpu0/cpufreq/freq_table
    echo 200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
    echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
    echo "1375 1250 1150 1075 975 875 875 800" > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table
    
    echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    echo 100000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
    echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
    echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
    echo 5 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential
    
    echo "100 160 267" > /sys/class/misc/gpu_clock_control/gpu_control
    echo "90% 50% 90% 50%" > /sys/class/misc/gpu_clock_control/gpu_control
    echo "800000 800000 950000" > /sys/class/misc/gpu_voltage_control/gpu_control
    
    echo "0 0 0 1 1 2 2 2" > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
    echo enabled > /sys/devices/system/cpu/cpu0/cpufreq/busfreq_static
    
    echo 3 > /sys/module/cpuidle/parameters/enable_mask
    
    echo 50 > /sys/devices/virtual/sec/sec_touchscreen/tsp_threshold
    
    echo bfq > /sys/block/mmcblk0/queue/scheduler
    
    echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_target
    echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_offset
    echo 2 > /sys/devices/system/cpu/cpu0/cpufreq/smooth_step
    
    echo 4 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_cpulevel
    echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/deepsleep_buslevel
    
    echo 30 > /sys/class/misc/brightness_curve/min_bl
    echo 1 > /sys/class/misc/brightness_curve/min_gamma
    echo 24 > /sys/class/misc/brightness_curve/max_gamma
    
    echo 25 > /sys/module/pm_hotplug/parameters/loadl
    echo 70 > /sys/module/pm_hotplug/parameters/loadh
    echo 45 > /sys/module/pm_hotplug/parameters/loadl_scroff
    echo 90 > /sys/module/pm_hotplug/parameters/loadh_scroff
    echo 599999 > /sys/module/pm_hotplug/parameters/freq_cpu1on
    echo 200 > /sys/module/pm_hotplug/parameters/rate
    echo 400 > /sys/module/pm_hotplug/parameters/rate_cpuon
    echo 800 > /sys/module/pm_hotplug/parameters/rate_scroff
    
    echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
    
    echo "900 900 450" > /sys/devices/virtual/misc/charge_current/charge_current
    
    echo "on" > /sys/devices/virtual/misc/second_core/hotplug_on
    echo "off" > /sys/devices/virtual/misc/second_core/hotplug_on
    echo "off" > /sys/devices/virtual/misc/second_core/second_core_on
    echo "off" > /sys/devices/virtual/misc/second_core/hotplug_on
    echo "on" > /sys/devices/virtual/misc/second_core/second_core_on

    Should be very energy efficient but I'm still unconvinced about performance

    UPDATE

    1) Testing battery consumption at 400MHz 0,875v & 600MHz 0,875v
    2) I think 200-1400MHz is still the better solution for performance & battery... I will update my scripts as soon as I can :)
    1
    Updated first post with ArmConfig v2

    Changelog:
    * Commented code
    * From bootscript to S98SiyahArmConfig
    * Changed deep sleep frequency to 500MHz
    * Fixed Dynamic hotplug (thanks evilive27)
    * Disabled logger
    * Graphic tunings
    * Several minor tweaks