[Galaxy Ace II Android Development] ChronoMonochrome:
Changelogs and features

Bug list:

-

Changelog

(old changelog)

R2.10

Build from R2.6 sources with re-added all changes in LiveOPP, cpufreq_limits module, some interfaces from 2.9.x (usb sw reset, PonKey emulator on voldown/up).

R2.9

Mali OC module v2.0:

added interfaces boost_hispeed1, boost_hispeed2.

added interfaces mali_threshold_freq_down and mali_threshold_freq_up

(new interfaces manual)

1) mali_threshold_freq_down/up:

echo new value to tweak it:

echo 150 > /sys/kernel/mali/mali_threshold_freq_up

2) mali_boost_hispeed(2)

Use command

echo idx=X > /sys/kernel/mali/mali_boost_hispeed2

to tweak its freq.

following command is to tweak its threshold:

echo threshold=220 > /sys/kernel/mali/mali_boost_hispeed2

partially re-enabled touchboost (it actually was enabled even on 2.7.4, but I forgot to mention)

reverted suspend/hibernate/freezer etc. commits to hopefully fix reboots issue in deepsleep

fixed APE_25_OPP (in suspend it actually used APE50 previously)

minor fixes in cpufreq_limits driver

R2.8

Mali OC module v2.0(detailed description in 3rd post):

added interfaces boost_hispeed1, boost_hispeed2.

added interfaces mali_threshold_freq_down and mali_threshold_freq_up

partially re-enabled touchboost (it actually was enabled even on 2.7.4, but I forgot to mention)

reverted suspend/hibernate/freezer etc. commits to hopefully fix reboots issue in deepsleep

fixed APE_25_OPP (in suspend it actually used APE50 previously)

minor fixes in cpufreq_limits driver

(2.7.6)

- fixed broken GPU scaling algorithm (removed /sys/kernel/mali/mali_scaling_dynamic)

(2.7.5)

- partially reverted LiveOPP voltage autocalibration

- fixed unstable mali tunables and added interface mali_scaling_dynamic

echo 1 > /sys/kernel/mali/mali_scaling_dynamic

When mali_scaling_dynamic is used, mali will scale between mali_boost_low and mali_boost_high using all steps between these mentioned. mali_stats provides statistics about mali utilization on each step.

- removed some GPU freq steps

(2.7.4)

- new governor Dynamic (thanks to mkaluza)

- new GPU scaling algorithm (thanks to 1N4148 ) - ondemand-like GPU governor

- LiveOPP: reworked avs-based varm recalibration algorithm

(2.7.3)

added governor OndemandPlus (thanks to boype)

removed governors with hotplugging support

added interface to tweak PLLDDR freq on suspend:

echo on > /sys/kernel/cpufreq/pllddr_raw

To control freq are used raw PLLDDR register values:

echo suspend=0x000050158 > /sys/kernel/cpufreq/pllddr_raw # 675 MHz

echo resume=0x000050168 > /sys/kernel/cpufreq/pllddr_raw # 798 MHz

PLLDDR freq can be checked via

cat /sys/kernel/liveopp/pllddr

Settings applies after 3 sec after suspend/resume.

Too low suspend or too high resume value may cause reboot. Please note that this setting still experimental and unstable itself, so it's disabled by default.

adjusted some GPU OC defaults

fixed BT issues

(2.7.2)

- fixed pllddr_cross_clocks instability

- removed unneeded DDR_50_OPP requirement on screen on (should prolong battery lifetime).

2.7

many various commits from Linux 3.3 (thanks [MENTION=3332811]faux123[/MENTION])

improved hotplugging mechanism

updated RCU system

kernel scheduler

memory management

etc...

LiveOPP:

recalibrate varm and vbbx on boot (better stability)

added interface to OC some clocks that depends on PLLDDR

reimplemented sweep2wake and doubletap2wake (thanks [MENTION=4400604]Meticulus[/MENTION])

enabled UKSM (thanks [MENTION=4832589]cocafe[/MENTION])

- better RAM performance with tiny cost CPU. Boot time will be increased by 3 sec, it's ok.

uploaded kernel for s6d.

R2.6

ABB-charger:

reverted most of changes. It's only uses custom voltage table, termination current 150 mA and some other tweaks, provided by ace2nutzer.

added tweakable interfaces for termination current(better battery lifetime).

LiveOPP:

added most ape_25_opp switch interface

added steps 85, 350, 450 MHz.

ddrpll interface renamed to pllddr ;D

added input boost support for most of governors (thanks to zwliew for original patch)

R2.5

- only one kernel version for all ROMs/Filesystems/codina(p), please note that installation method is different from usual installation

- Switch to single platform RTC driver - AB500 (finally fixed all problems with clock freeze issue) [golden-guy]

- update LiveOPP from CoCore

- reworked and added DDRPLL boost [WIP]

R2.4

completely rewritten screenoff limits driver

added steps 30, 125, 150, 175 MHz, increased voltage on various steps for stability

enabled SELinux again

various fixes in FAT filesystem

re-added exFat support

re-added ZenX

abb charger fix v2 [ace2nutzer]

zRam script moved to init.d (to be able to change zRam size) on CM11

new package installation script, with little changes by me (thanks to borkins for help with this)

R2.3.2

improved battery live (full credit to ace2nutzer)

reduced liveopp table (too hard to search stable/optimal voltage)

Reverted all commits from tuna kernel (these changes are tested not well, may cause instability)

temporarily disabled SELinux

R2.2

LiveOPP 2.2:

no longer use setting ARM OPP (this previously caused lags)

simple algorithm for setting clock and voltages

use only pll, external clock no longer used

use only 1 varm selection

Big LiveOPP table (51 step: 46, 69,..., 1244 MHz)

Added and optimized new governor ZenX

Added FIFO I/O scheduler

Moved more kernel stuff to modules

TWRP 2.8.0.0

R2.1.5

Huge update from Tuna Hybrid kernel by [MENTION=3332811]faux123[/MENTION] ( a lot thanks to him! :) ) :

a lot various commits from Linux Kernel 3.3-rc3

various fixes backported from Linux 3.5

fixed 3G/WiFi data arrows again

reduced kernel: 628 Mb RAM is available

Reverted from R2.1:

update of device-specific drivers from Novathor 3.4 kernel

"ARM: 7493/1: use generic unaligned.h"

(R2.0.2)

update from TC kernel

moved all networking modules to kernel (fixed lost data usage, tethering, etc.)

added module autoload (read below)

renamed interface /sys/kernel/cpufreq/screenoff_cpufreq_limits -> /sys/kernel/cpufreq/cpufreq_limits_on_suspend

R2.0-refresh

Cleaned kernel source tree from some doubtful commits

moved some kernel features to modules(thanks to mkaluza for idea and most of changes)

9p, CIFS, NTFS file systems

some unneeded ipv6 features

HID drivers

most of governors

slightly decreased boot time(in my case, from 8500 to 8330 ms)

slightly increased available RAM - 628 MB (thanks to reduced kernel size)

Huge LiveOPP improvement by mkaluza:

improved overclock stability, added all extended steps

UV 100-400 MHz steps to 0x12-0x14 (lower power consumption)

added state APE_25_OPP, used only with screen off(originally introduced by mkaluza, adapted for codina by me)

allowed change APE_OPP and DDR_OPP from LiveOPP

changed step 1228 MHz -> 1248 MHz (may cause reboots, need to find out optimal voltage)

Mali improvements by mkaluza

temporarily removed 25 MHz step (don't know how to add it with new LiveOPP, all attempts is caused boot loop)

(R1.6.3)

revert "update sweep2wake and doubletap2wake by Meticulus"

add cpufreq steps: 25, 500, 700 MHz; remove: 1050, 1100, 1250 MHz (only 12 CPU freq step is allowed)

R1.6

ARM: 7493/1: use generic unaligned.h (This has the

benefit of better code generated especially for ARMv7 on gcc 4.7+

compilers.)

register rear cam flash as LED (for BLN) - thanks to [MENTION=4400604]Meticulus[/MENTION]

update sweep2wake and doubletap2wake by Meticulus

add LMK timeout interface - [MENTION=4832589]cocafe[/MENTION]

Fix max freq not capped on suspend bug on Lulzactive (it was conflicted with screenoff cpufreq limits driver)

(R1.5.2)

F2FS support in TWRP (thanks to yanpol199@4pda.ru for help with this)

R1.5.1

update from TC kernel

enabled SELinux (was disabled in r1.5 for testing)

ARM: 7006/1: Migrate to asm-generic wrapper support

added jRCU (thanks to cocafe)

Bugfixes

reverted to LK 3.2.0

fixed disappeared data usage monitor and probably data arrows also

fixed wifi/usb tethering - hopefully, need tests

fixed incorrect display of RAM occupied by some applications

fixed incorrect phone recognition on codina P in CWM/TWRP - thanks to [MENTION=5840412]ace2nutzer[/MENTION]

R1.5

Completely reworked file systems update:

fixed reboots, apps FC

fixed CWM loop

fixed huge battery drain (hopefully)

F2FS backported to Linux 3.2

R1.4

Bumped to Linux 3.2.9

File systems: big update from LK 3.2

Writeback: update from LK 3.2

Reduced wlan_rx_wake wakelock by half - zwliew

F2FS support in /system

Fixed more potential and real memory leaks in kernel

Removed u8500 hotplug driver again

R1.3

added BLN separate configuration of blink on and off delays

added MCDE tweaks (read below)

tweaked PegasusQ governor (based on script by ace2nutzer)

fixes:

reverted commits which caused most of random reboots reasons

finally fixed kernel panic in CFQ I/O scheduler (I hope so)

interactive governor reverted to stock TC

R1.2

workaround for s6d display bug (separate kernel version - soon)

CPU freq settings for screen off

Updates from linux kernel 3.2 (currently updated to 3.2):

File systems

Specific drivers

Security

Various core changes

Reverted:

Proportional Rate Reduction for TCP

Power management update from 3.2

1000 MHz messy workaround, provide another workaround instead

r1.1

Fixed 100 MHz bug

Added 300 MHz CPU step

Added VR I/O scheduler again (thanks to [MENTION=4832589]cocafe[/MENTION] for fixes compile errors)

Updates from Linux Kernel 3.2:

Process bandwith controller

Thin provisioning and recursive snapshots in the Device Mapper

I/O-less dirty throttling, reduce filesystem writeback from page reclaim

Proportional Rate Reduction for TCP

Memory management (Cross Memory Attach, "vmscan: add block plug for page reclaim", "thp: mremap support and TLB optimization", etc.)

Networking

Device Mapper

Virtualization

Crypto

Tracing/Profiling

r1

backport new zRam driver from 3.5 LK by [MENTION=3332811]faux123[/MENTION]. Also enables LZ4 compressor for zRam.

add u8500 hotplug driver by [MENTION=5604178]zwliew[/MENTION] again

revert voltage of display and other regulators to stock

add vpnclient.ko

a somewhat fixes and optimizations from CoCore - thanks to [MENTION=4832589]cocafe[/MENTION]

fix lagfree, lulzactiveq and interactive wrong tunables

adjust voltage(0x37) for 1200 and 1250 MHz

17.08.2014

Undervolt display from 1800 to 1400 mV

Undervolt various regulators

Revert CFQ to 3.0 branch to fix reboot issue

Add Lionheart governor, disable InteractiveQ and Hotplug

Support for 4.2.x ROMs (thanks to [MENTION=4881398]PolishVodka[/MENTION] for initramfs)

12.08.2014

fixed CFQ reboot issue (i hope so :) )

reboot into recovery from extended power menu should work (JB 4.1.2)- thanks to Rox

TWRP recovery instead CWM for ext4 kernel versions

Update to 3.1.10

9.08.2014

Fixed reboot issue (I hope so)

Add BFQ scheduler again

Fixed UMS bugs - thanks to cocafe

Upgrade kernel to 3.1.1

4.08.2014

Fixed bug of random change min CPU freq to 1Ghz.

Removed u8500 hotplug driver

Update sioplus from boype@github.com

Temporarily removed BFQ and VR I/O scheds because they are became broken for some reasons.

Update LMK from boype@github.com

Updates from 3.1 LK:

Sound cards, input devices, watchdogs, networking, staging, multifunctional devices, ... etc. See full list of changes on github.

29.07.2014

Added CPU 100MHz freq step

U8500 hotplug driver - zwliew

Universal exfat driver - zwliew

Switch to SLUB again

Updates from LK 3.1:

SLUB

Memory management (6/7 commits)

VFS (9/10 commits)

Dynamic writepage throttling

21.07.2014

revert CPU voltages to default for 0-3 steps

some changes in memory management

17.07.2014

Switch to SLQB memory allocator

Update BFQ I/O sched from v7r3 to v7r5

Enable UHID support (testing)

Some fixes in memory management

Remove some buggy "fixes" from last build

5.07.2014

fixed headset bug that appeared in last build

fixed the file permissions for CoCore Manager (for JB)

4.07.2014

F2FS support (still only KK version)

Usb drivers from STEXperia sola kernel instead stock samsung

(probably, UMS bug has been fixed. For me it works perfectly now.)

LZ4-compressed kernel support

minor fixes

27.06.2014

sources updated

enabled init.d support in kernel (JB)

added Lagfree governor

added ROW I/O scheduler

23.06.2014

fixed cpu oc via 3rd party apps

lowmemorykiller should be less aggressive

19.06.2014

cwm 6.0.48 instead stock recovery

14.06.2014

initial build

Kernel Tweaks

:

(GPU/CPU undervolting and related tweaks)

Undervolting the CPU/GPU will bring battery savings but possible instability.

1) to undervolt CPU use ChronoKernel app or via init.d scripts:

echo *cpufreq* varm=xx > /sys/kernel/liveopp/arm_summary

for example, following sets voltage varm=0x10 for 200 MHz:

echo 200000 varm=0x10 > /sys/kernel/liveopp/arm_summary

or

echo 200000 varm-=10 > /sys/kernel/liveopp/arm_summary

(default varm voltage for 200 MHz is 0x1a but, code above sets 0x1a - 0xa(10) = 0x10 )

2) to undervolt GPU use init.d script:

echo x vape=yy > /sys/kernel/mali/mali_dvfs_config

Example:

echo 2 vape=0x1c > /sys/kernel/mali/mali_dvfs_config

"2" stands for DVFS idx (look at mali_boost_high/mali_boost_low).

To prevent overriding of such settings by ChronoKernel app, add line to your init.d script after GPU undervolting

chmod 444 /sys/kernel/mali/mali_dvfs_config

Don't change voltage of both GPU/CPU at the same time - otherwise if you'll get reboot if won't know what it caused. The same is for different frequencies - if you'll change voltage of too many steps you won't know which frequency caused reboot. It's not easy process, though, following method simplifies it: https://github.com/mkaluza/i9070_kernel_CoCore-E/wiki/Undervolting-janice .

3) Custom LiveOPP table.

By default some LiveOPP steps such as 100, 200, 500 ... MHz aren't used. You can re-enable those by following way:

echo 200000 enable=1 > /sys/kernel/liveopp/arm_summary

Or use CK app instead. Don't enable it unless it uses the same voltage as 400 MHz. The same is for the rest frequencies - until some of them uses same voltage, no point to enable steps with lower freq. I've added 100 MHz just to further make some tests with it once again. It can't use lower varm than 200 MHz - that's why it's disabled by default. Furthermore, not all phones well keep undervoltage, that's why 100-400 MHz steps uses same stock voltage varm=0x1a.

UPD. thanks to [MENTION=5151049]borkins[/MENTION] for this nice editor LiveOPP ARM steps: http://xdaforums.com/showpost.php?p=60311291&postcount=2921

(CPU freq management tweaks)

CPU freq. limiter for screen OFF, adjust it via:

SYSFS=/sys/kernel/cpufreq/cpufreq_limits_on_suspend
echo min=100000 > $SYSFS
echo max=400000 > $SYSFS
echo on > $SYSFS

Too low frequency may cause freezes after wakeup and sound scrathes. If you use Dynamic govermor, it make no sense to use cpufreq limiter, because Dynamic already takes care about CPUfreq usage optimization. For more, read wiki.

Input boost

This feature has been originally written by zwliew.

Not all governors support input boost. Supported governors: ondemand, interactive, conservative, ZenX, lionheart and some others. Dynamic governor has its own boost interface.

Default boost frequency is 400 MHz.

echo 450000 > /sys/kernel/cpufreq/input_boost_freq # echo '0' to disable
echo 35 /sys/kernel/cpufreq/input_boost_ms

(BackLight Notification)

To configure time intervals of BLN blinking type(bln_ondelay stands for time of blink and bln_offdelay - delay between two blinks):

echo bln_ondelay=500 > /sys/kernel/bln/blink_mode
echo bln_offdelay=6000 > /sys/kernel/bln/blink_mode

Make sure BLN enabled:

echo 1 > /sys/class/misc/backlightnotification/enabled

# to enable bln_wakelock.
echo on > /sys/kernel/bln/bln_wakelock

Use /sys/devices/virtual/misc/backlightnotification/blink_mode to changes modes.

Blink modes:

0 = no blinking

1 = blink backlight only

2 = blink backlight + rear cam flash

3 = blink rear cam flash only

(Module autoload)

Now there is a simple way to load modules at boot. Just move needed modules to /system/lib/modules/autoload and reboot device(or execute /etc/init.d/00autoload)

(DDR overclock)

This feature has been developed by me and allows you to improve DDR and GPU performance. Please note, that DDR OC might work unstable and cause filesystem corruption. Though, DDR clock of 975 MHz has been highly tested and should work fairly stable on most devices.

Overclocking DDR over 975 MHz is highly NOT recommended, especially in case if you not sure that you can deal with possible consequences.

How to OC DDR:

1) by using

this script .

2) by using Terminal Emulator(in example below 975 MHz):

echo 0x5017f > /sys/kernel/liveopp/pllddr_oc_on_suspend

This setting will be applied right after disabling screen.

(Minimum APE/DDR OPP on screen on)

This feature has been developed by me and allows to set minimum APE/DDR OPP states which are used when screen is ON. APE controls many systems such as an image, video, audio system etc. DDR OPP determines performance of DDR. Default values are APE50 and DDR50. Lower states(APE25/DDR25) reduces power consumption, but may cause graphical glitches like screen blinking or filling it by vertical grey lines. If you don't have mentioned effects, it's recommended to use APE25/DDR25:

echo ddropp=25 > /sys/devices/pri_lcd_ws2401.0/mcde_screenon_opp
echo apeopp=25 > /sys/devices/pri_lcd_ws2401.0/mcde_screenon_opp

* if you don't have folder /sys/devices/pri_lcd_ws2401.0, use /sys/devices/pri_lcd_s6d27a1 instead.

(Screen refresh rate)

This feature has been developed by cocafe and modified by me. Lower lcdclk frequency cause less power usage, but too low values makes system unusable.

Following command allows to change screen refresh rate:

echo x > /sys/kernel/mcde/lcdclk

use

cat /sys/kernel/mcde/lcdclk

to see supported lcdclk modes. Default mode is 60 Hz which is recommended in most typical cases. If you've screen tearings, blinking etc. change resresh rate mode to "60+ Hz":

echo 0 > /sys/kernel/mcde/lcdclk

(ABB charger tweaks)

added tweakable interfaces for termination current. To adjust it type(just an example):

echo 90 > /sys/kernel/abb-chargalg/termination_curr_1st
echo 70 > /sys/kernel/abb-chargalg/termination_curr_2nd

curr_2nd should be less or same as curr_1st. Lower values prolongs battery lifetime, but also slows battery charging.

Default values are curr_1st == curr_2nd == 150 mA. Please note, too low values maybe aren't usable.

(Dynamic FSync)

(Software CRCs)

(Dynamic dirty page writebacks)

This feature has been developed by Christopher83 and allows to dynamically manage the dirty page writebacks with two different intervals, one when the screen is on and another when the screen is off.

It is based on a commit of Francisco Franco, but instead of using hard coded values and of disabling at all the dirty page writebacks while the screen is on (possibility of data loss).

By using a higher interval we have better performance and less battery consumption, with a very low risk of data loss.

How to customize the dynamic dirty page writebacks feature (default disabled):

Three new procfs parameters are exposed inside /proc/sys/vm path:

- dynamic_dirty_writeback is the activation status of this feature, set 1 to enable it, set 0 to disable it and use the standard behaviour

- dirty_writeback_active_centisecs is the interval for the dirty page writebacks when the system is active (screen on), the default value is 1500 centisecs (15 seconds)

- dirty_writeback_suspend_centisecs is the interval for the dirty page writebacks when the system is suspended (screen off), the default value is 500 centisecs (5 seconds)

1) By directly editing one of the file written above inside /proc/sys/vm and setting the preferred value (note that set value will be lost after a reboot/shutdown)

2) By using Terminal Emulator (note that set value will be lost after a reboot/shutdown)

- Open Terminal Emulator

- Run this command to disable the dynamic dirty page writebacks feature

echo 0 > /proc/sys/vm/dynamic_dirty_writeback

- Or run this command to re-enable the dynamic dirty page writebacks feature

echo 1 > /proc/sys/vm/dynamic_dirty_writeback

- Run this command to set customize the two intervals (30 seconds while the screen is on, 10 seconds when the screen is off)

echo "3000" > /proc/sys/vm/dirty_writeback_active_centisecs
echo "1000" > /proc/sys/vm/dirty_writeback_suspend_centisecs

(Storages switch)

By default, this kernel comes with internal and external storages switched. You can revert this behavior, by changing the line

use_swap=1

to

use_swap=0

in file /ramdisk/fstab_specs.txt and flashing the kernel package. This setting will remain until you format /ramdisk partition.

(Tweak app)

ChronoKernel settings

Thanks mars_army for this app!

Bug reports:

after experiencing a random reboot, type in terminal:

su
cat /proc/last_kmsg > /storage/sdcard0/last_kmsg.txt

report it in the thread and attach the last_kmsg.txt