Related
- Main feauteres
SELinux Permissive.
init.d support.
SM-N910, SM-N916, SM-N915 model, concurrent support.
CPU Clock: A53 - 300 ~ 1600MHz, A57 - 500 ~ 2000MHz.
GPU Clock: 160 ~ 700MHz (default 160 ~ 600).
IO-SCHEDULER Add: SIO, FIFO, ZEN, BFQ, FIOPS, ROW.
Advanced TCP / IP Congestion (Westwood & etc).
Memory Bus, Internal Bus, Image Signal Processor voltage control.
CPU Voltage control.
GPU Voltage control.
GPU DVFS Control.
KSM (Kernel Sempage Merging, kernel shared memory, RAM usage optimization)
Logger mode enable / disable.
Fast Charge (by Yank555.lu) & Battery Calibration.
Synapse App Support.
Improve the graphics, memory management, and power management as N916S merged source code.
N916S merge source code of open source graphics issues resolved with the latest firmware.
PowerSuspend Driver (by faux123)
Dynamic FSync
Z-RAM (with LZ4 compression)
Dynamic Dirty Page Writeback.
faster memcopy & string
EXT4 partition optimization.
Frandom.
SELinux Tweak.
Interactive Governor Tweak.
Linaro Toolchain compiled the latest build that is optimized for the ARM family of cpu.
Considering tweaking the kernel configuration and application of power efficiency and reliability.
- Change log
Re-adjust the CPU clock range, A53 @ 300 ~ 1600MHz, A57 @ 500 ~ 2000MHz
, so feedback if there is a wide range of devices to reboot the clock ... (The one minutes ...)
Re-adjust GPU clock range (160 ~ 700MHz)
In WQHD resolution touch ssiphim & Trek phenomenon fix
GPU throttle change the initial value, the pure state.
Change some of the default values of the tuning items (For optimal Please change directly the app will not write Juicy hitter.)
Display Hibernation on / off the log removal (too hard deogunyo many roots ;;
Z-Ram device for increasing the number from one to four existing
synapses You put words not only to create a script yet zram0 device.
You can split four scripts at improvements to organize a raid.
Sound re-add ZeneTune disappeared without a rumor.
Add to kill ten seconds after GooglePlay service after boot complete (/system/etc/init.d-post/killapps).
Data / WiFi internet is the main culprit of such yiraseo of battery life in standby device is not being use to initialize a time. If the problem please delete the files in that path.
SM-N915 support start (test version has not been confirmed, even if the boot)
* The reason behind the final version is attached to a private beta version was published a few times.
- How to Apply
Philz Touch, will flash in the recovery of such TWRP. (Author Philz recovery test only.)
Kernel configuration application: from Play Store Synapse Download.
* Note: If you flash the kernel is initialized the data on the Synapse Apps.
- We just kept asking me when.
1. Do not ask what you can to save time, know yourself.
2. The single-line Q & Feedback strictly prohibited.
3. Short (no sex) Do not ask. Why do that symptoms occur (overly) Please explain in detail.
- Notices
1. The responsibility for any problems arising out of your use of the kernel is at your own risk.
2. may cause Knox (security) and features that are relevant are issues such as private mode, do not recommend the use of those who think of these features is important.
3. masigil not even like to ask questions about the problems with the device after flashing the route not.
- Credit (Thanks to.)
da4kgr3y, Mcaserg - n910c Ultimate Kernel source code
AndreiLux - universal exynos 5433 kernel tech info
UpInTheAir - SkyHigh Kernel (N915S / K / L)
faux123, yank555.lu
Samsung Opensource Developers
Link download:
Code:
https://mega.co.nz/#!WJgyDYDC!UJJbSLX0Xz7PfXs3bFexD2Xj2a0i3Wb8H00FmZJhR-E
XDA:DevDB Information
DQ, Kernel for all devices (see above for details)
Contributors
nuoitiec19, nuoitiec19
Kernel Special Features:
Version Information
Status: Alpha
Current Beta Version: 20
Created 2015-04-20
Last Updated 2015-04-20
A replacement for SONY's STAMINA MODE. Also a SMARTER GUIDE.
YOU DON'T NEED TO BLOCK WAKELOCKS, USE BATTERY SAVERS, XPOSED, AMPLIFY, etc.
Recommended for:
CM Based ROMS/Custom kernel users/Wifi users.
For those who want high SoT.:angel:
I am not going ask you for a beer or a cup of coffee, only read this guide and thanks me later. [emoji14]
(Recommended) CLEAN FLASH only ROM first, then proceed.
This guide is divided into 2 parts
Moto G 2014 Index of Threads. Thanks @Mister Magister (Easy to search all roms for G 2014).
1. CM based roms.
2. Stock based roms.
KERNELS -
Halogen - Battery/ Balanced/ Performance.
Spirit - Performance.
Optimus - Balanced.
decipher_simple - More battery/Balanced.[I prefer this]
BLOATWARE REMOVAL.
CM Based: Use ES Explorer. Grant SU permission (Root Explorer). Migrate to root.
OR use the Debloat Script. Supports all devices.
In SYSTEM/APP, delete these folders:
Basic Dreams, Browser, CellBroadcastReceiver, CM File Manager, Dash Clock, Eleven, Email, Exchange2, Galaxy4, HoloSpiralWallpaper, LiveWallpapers, LiveWallpaperPicker, NoiseField, PhaseBeam, PhotoPhase, PhotoTable, VisualizationWallpapers, WAPPush/WhisperPush.
Reboot the phone immediately.
BLOATWARE REMOVAL ZIP ADDED: Flash it through TWRP immediatedly after clean flashing the ROM. It will also clear the dalvik.
Now flash Minimal/Pico GAPPS for first time and kernel. (I prefer DECIPHER KERNELL- His own-my.zip recommended)
This kernel is simple one without useless tweaks and hence recommended for more juice saving!
Also flash L SPEED MOD @Paget96. Really working like a charm!! High savings!
YOU CAN UNDERCLOCK WITH L MOD INSTALLED! IT'S TOTALLY LAG FREE!
Stock Based: Rooted
Delete LIVE WALLPAPERS the same way. You can use Juice Defender Ultimate (Don't grant it SU permission).
FOR STOCK, ONE HAS TO USE XPOSED FOR AMPLIFY AND POWERNAP. There are too many wakelocks.
Basic Settings(Common for both)
Settings:
1. Wifi > Advanced - Scanning always available - OFF, Keep wifi on during sleep - Never.
2. Mobile networks: 2G (Wifi users).
3. Display - Sleep - 30 seconds, Daydream - Off.
4. Sound&Notifications - Other sounds - All OFF (your choice).
5. Battery : Turn on bat. saver - NEVER.
6. Location - OFF.
7. Keyboard - Popup, Sound, Vibrate - OFF.
8. Lockscreen -Display Music Visualizer - OFF.
9. Developer Options - Window, Transition animation scale - 0x (or 0.2x) and Animation Duration Scale - 0.2x
These settings should be tuned according to your needs.
If you wish keep AMBIENT DISPLAY to OFF and DOUBLE TAP TO SLEEP on nav bar.
For RESURRECTION ROM or any other cm based rom -
Don't use BATTERY BAR, SLIM RECENTS/ OMNI SWITCH, SLIM PIE, CLEAR ALL BUTTON, SUPERUSER INDICATOR, RR LOGO.
Keep it clean. Default animations.
Now the interesting part, TWEAKS
Recommended Apps - Drive Link below.
1. Kernel Adiutor.
2. SetCPU.
3. Greenify.
4. SDMaid Pro.
Start with
SET CPU;
Install the app, open it, grant SU permission.
Go to PROFILES tab, add a new profile.
My PROFILES BACKUP given in DRIVE LINK. Place it in root of internal storage and restore from SET CPU. {Updated}
Use min freq of kernels flashed! Either 96MHz or 300Mhz.
1. Turn this profile on when - Screen Off.
CPU Governor: On Demand
Min: 96Mhz Max: 600MHz
Priority: 100, EXCLUSIVE
2. Add a new profile - Battery Saver.
Turn profile on when - Battery 5%
CPU Governor: zzmove
Min: 96MHz Max: 787MHz
Notificaton: Persistent, Battery.
Priority: 99, EXCLUSIVE.
3. Again a new profile
Turn profile on when - Any of these are true. ( in it, add your CAMERA apps)
CPU Governor: Interactive.
Min: 96MHz Max: 1190MHz
Priority: 97, EXCLUSIVE.
4. New one
Turn profile on when - Screen ON.
CPU Govenor: zzmove (2).
Min: 96MHz Max: 1190MHz
Priority: 96, NOT EXCLUSIVE.
Below this priority you can add per app profiles as per your wish.
GRANT SU permission to SET PROFILES (UID)
KERNEL ADIUTOR
Settings for HALOGEN KERNEL, DECIPHER_SIMPLE (Do this after setting up SET CPU)
Open app,
CPU -
Min: 96MHz Max: 1190MHz
CPU Governor: Don't change. It will be as per SET CPU.
Multicore Power Saving: Enabled (Not Aggressive).
CPU Boost -Interval (Both) to 40ms.
Input Boost Freq: 787MHz
CPU Hotplug
Intelliplug -OFF.
MSMHotplug -OFF.
Alucard Hotplug -ON.
You can use INTELLIPLUG Balanced/ Eco Conservative/ Strict(1 core) Halogen too.
GPU
Max: 320MHz (if you are not a gamer or else 450)
Governor: Simple_OnDemand. (Gaming - Performance or msm-adreno_tz)
Save this profile. Allow the phone to rest for 15 mins.
Change the governor to IMPULSE and save another profile for performance. Use widget for applying.
Note - CPU Governors in SET CPU and Kernel Adiutor should match. Don't change the CPU Governor from Kernel Adiutor. Do it from Set CPU Profiles. Also you need to apply the profile after reboot.
GREENIFY - Root Mode.
Add all apps except Set Cpu, Kernel adiutor.
.
Don't use Xposed. It runs everytime you start module app., after all you are using custom rom.
Google Backup off, and all tracking services of GOOGLE PLAY SERVICES should be off.[emoji14]
No wakelock blocks. Auto Sync OFF after syncing - This does more saving.
With above tricks, I have achieved 0% percent drain. ( At night too.), 6hrs SoT :fingers-crossed:
If your phone reboots on unlocking, it means you have something wrong. Then change Set CPU SCREEN OFF profile governor to zzmove.
Code:
[U]CPU Governor Tunables[/U]-
* currently available profiles by ZaneZam and Yank555:
* ------------------------------------------------------------------------------------------------------------------------------------------
* - (1)'def' -> Default -> will set governor defaults -
* ------------------------------------------------------------------------------------------------------------------------------------------
* - (2)'ybat -> Yank Battery -> a very good battery/performance balanced setting -
* - DEV-NOTE: highly recommended! -
* ------------------------------------------------------------------------------------------------------------------------------------------
* - (3)'ybatext'-> Yank Battery Extreme -> like yank battery but focus on battery saving -
* ------------------------------------------------------------------------------------------------------------------------------------------
* - (4)'zzbat' -> ZaneZam Battery -> a more 'harsh' setting strictly focused on battery saving -
* - DEV-NOTE: might give some lags! -
* ------------------------------------------------------------------------------------------------------------------------------------------
* - (5)'zzbatp' -> ZaneZam Battery Plus -> NEW! reworked 'faster' battery setting -
* - DEV-NOTE: recommended too!:) -
* ------------------------------------------------------------------------------------------------------------------------------------------
* - (6)'zzopt' -> ZaneZam Optimized -> balanced setting with no focus in any direction -
* - DEV-NOTE: relict from back in the days, even though some people still like it! -
* ------------------------------------------------------------------------------------------------------------------------------------------
* - (7)'zzmod' -> ZaneZam Moderate -> NEW! setting based on 'zzopt' which has mainly (but not strictly only!) 2 cores online -
* ------------------------------------------------------------------------------------------------------------------------------------------
* - (8)'zzperf' -> ZaneZam Performance -> all you can get from zzmoove in terms of performance but still has the fast -
* - down scaling/hotplugging behaving -
* ------------------------------------------------------------------------------------------------------------------------------------------
* - (9)'zzinz' -> ZaneZam InZane -> NEW! based on performance with new insane scaling active. a new experience! -
* ------------------------------------------------------------------------------------------------------------------------------------------
* - (10)'zzgame' -> ZaneZam Gaming -> NEW! based on performance with scaling block enabled to avoid cpu overheating during gameplay -
* ------------------------------------------------------------------------------------------------------------------------------------------
* profile_number 0 means that you can tune the tunables according to your own liking. ;)
Thanks to zakee94. :good:
SDMaid Pro
Check all boxes in Corpse finder settings, and scan and remove all corpse. ( LEFTOVER Dalvik of removed bloatware).
For Stock Based roms/ Stock rooted: Use STELLAR Kernel
zzmove is preconfigured in all kernels above.
If you face lag using zzmove post in here.
RECOMMENDED APPS:
These are best apps
MUSIC PLAYER - Phonograph.
CAMERA - Open Camera. (Better than CM Camera)
NOTE MAKING - Google KEEP.
FILE EXPLORER - ES Explorer.
INSTALLER- Easy Installer.
CLOCK- Timely.
CALENDAR - Sunrise.
Disable this apps: Clock, Google App, Google Calendar Sync, Google Partner Setup, Market Feedback Agent, OTA (if you wish), PICO tts, Print Spooler.
Force Stop this apps at night: Calendar , Calendar Storage, Google Contacts Sync, Google Play Store, Key Chain, Location Services, Themes Provider. (For 0% drain also switch to FLIGHT MODE at night)
Use PICO GAPPS.
No BETTER BATTERY STATS, WAKELOCK DETECTOR, AMPLIFY, and BATTERY SAVERS.
Power Cycle - Charge from 5% to 100% and 10 min more to 100. Give up using phone while charging.
Thanks to all Devs for their support to G 2014. @zakee94 @-decipher-
Next time if anyone says that G 2014 has got 2070mAh battery only. Just reply them that " Since Motorola is grandtechy company they have certain quotas to maintain device ergonomics, so there's odd numbered 2070mAh battery!"
Any SUGGESTIONS will be appreciated. Hit thanks.
Thanks @Azmat Roomi for suggestion of L Speed Mod.
Link to DRIVE.
For OTHERS PHONES you can use the profiling and settings, set cpu.
HIT THANKS and ANSWER THE POLL if YOU have LIKED the THREAD!
Latest screenshot - 8hrs SoT:highfive:
ROM: cm-12.1-20151102-NIGHTLY-titan.zip
KERNEL: Decipher's Drive - [151101]my.zip
No Battery Savers, Xposed, Wakelock Blocker, L Speed Mod etc.
Only GREENIFIED some GCM apps, not all apps. This works. You shouldn't FORCE STOP apps unless they aren't responding. Reloading them takes more battery and memory. Only force stop apps with GCM and the ones you don't use.
Drain was 0% - Since it was 3%, the CPU governor was POWERSAVE. It may be 2-3% at night.
Attached- New SET CPU profiles backup - In the Drive.
Code:
[B]Kernel Adiutor Settings[/B]:
[B]CPU[/B] :
Min - 300MHz.
Max - 1190MHz.
[B]CPU Hotplug[/B] :
MPDecision - Max Cores - 2.
[B]GPU[/B] :
Max - 200MHz.
Governor - simple_ondemand.
[B]Virtual Memory[/B] :
dirty ratio - 70 .
dirty background ratio - 9.
dirty expire centisecs - 350.
dirty writeback centisecs - 500.
min free kbytes - 2857.
over commit ratio - 50.
swapiness - 90.
vfs cache pressure - 130.
[B]TCP Congestion Algorithm[/B] : westwood.
I don't know about the settings. I tried certain combinations and got good results.
Default zzmove profile was 8 - zzperf.
All other settings were at default.
DISABLE PER-APP PROFILES in BATTERY SETTINGS. Recommended.
Minimize HEAVY APPS before screen goes off - If you face lag while unlocking the phone with set cpu profiles screen-off active.
Nice guide and awesome battery life. Thank's for sharing.
-decipher- said:
Nice guide and awesome battery life. Thank's for sharing.
Click to expand...
Click to collapse
Very Nice Guide.I normally use to get 3-4hrs SOT.But after following this guide i am now easily getting 5-6hrs SOT.Guys give it a try it works like charm.
Azmat Roomi said:
Very Nice Guide.I normally use to get 3-4hrs SOT.But after following this guide i am now easily getting 5-6hrs SOT.Guys give it a try it works like charm.
Click to expand...
Click to collapse
Thanks for the review.:highfive:
@Abhishek Bhagwat Alucard seems to keep only one core active the whole time. What do you think about using MSM Hotplug instead?
Also ZZMOVE is a little bit sluggish for me, do you recommend any other governor for screen on?
godoy.rafa said:
@Abhishek Bhagwat Alucard seems to keep only one core active the whole time. What do you think about using MSM Hotplug instead?
Click to expand...
Click to collapse
One core is economy.
Also it delivers smooth performance with zzmove if you have followed the guide as above.
You can try INTELLIPLUG with STRICT profile since it uses 1 core.
Abhishek Bhagwat said:
One core is enough. Smooth performance on zzmove profile 2.
MSM Hotplug in Halogen R7 plugs 4 cores . Could be a bug. So I use Alucard!
Click to expand...
Click to collapse
This is what happens in my device:
Hotplugs:
- Intelliplug plugs only 2 cores, not more os less than that, so I don't use it
- Alucard only plugs one core, and it makes apps like Facebook to become very slow
- MSM Hotplug plugs 1, 2, 3 or 4 cores depending on my usage, and it seems to be the best hotplug in my case
Governor
- ZZMOVE gives my device a very slow response, seems like I am using a much older device, and apps become slow as well
- INTERACTIVE might use more CPU, but makes the device very smooth, fast and responsive. I understand that it might use more battery
@godoy.rafa
The above GUIDE is to give smoothest performance while using ZZMOVE.
In my device -
- Intelliplug plugs
1 Core - Strict , 2 Cores - Eco Conservative/Eco Performance, 3 Cores - Tri, 4Cores - Balanced.
-MSM Hotplug
Variable plugs, mostly 2,3,4 cores.
-Alucard
1 Core.
Try IMPULSE instead of zzmove or interactive. But I won't guarantee BATTERY SAVINGS on it.
Two questions: how do I disable Google backup and Google Play Services' tracking stuff services?
Also, I plan to install Resurrection Remix. The animations which should be kept as default are the ones you change at developer settings?
One question, after clean install ~ we woudn't have the es file explorer without play store right?Then how is it possible to delete those things then flash gapps?
theserpent said:
One question, after clean install ~ we woudn't have the es file explorer without play store right?Then how is it possible to delete those things then flash gapps?
Click to expand...
Click to collapse
Take the backup of es file explorer apk to your sd card.After flashing cm based rom you will get cm file manager just install es file explorer through it and remove bloatware:good:
josfr4ncisco said:
Two questions: how do I disable Google backup and Google Play Services' tracking stuff services?
Also, I plan to install Resurrection Remix. The animations which should be kept as default are the ones you change at developer settings?
Click to expand...
Click to collapse
1. Pause all ACTIVITIES in Google Play Services App.
Ex. Web History, Youtube History, etc.
2. Settings/Backup and Restore - Untick Backup.
Note: This will delete all the backups except that of CONTACTS, KEEP, etc.
3. All animations should be default at DURATION SCALE of 0.2x.
theserpent said:
One question, after clean install ~ we woudn't have the es file explorer without play store right?Then how is it possible to delete those things then flash gapps?
Click to expand...
Click to collapse
Right answer by @azmat!
Awesome guide bro
Cheers
Thanks for the review!
Did it work for you? @Vatsal
Abhishek Bhagwat said:
Thanks for the review!
Did it work for you? @Vatsal
Click to expand...
Click to collapse
Yes bro it did quiet a lot
Why is this thread closed? It was a
Nice guide...
ishubhamsingh said:
Why is this thread closed? It was a
Nice guide...
Click to expand...
Click to collapse
No feedbacks [emoji28]
Abhishek Bhagwat said:
No feedbacks [emoji28]
Click to expand...
Click to collapse
Dont expect feedbacks on huge basis. But ppl do follow this guide.
Guys share ur feedback on regular basis in order to keep thread alive and people wil have solutions for problems in their battery life
Sent from my Moto G 2014 using XDA Free mobile app
Custom kernel for Samsung Galaxy S Advance
Code:
/*
* Your (probably expired) warranty is now void.
*
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this kernel
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at me for messing up your device, I will laugh at you.
*/
Features:
Universal kernel for JB, KK, LP and MM-based ROMs
CPU, GPU and DDR OC support
more governors and I/O schedulers
Lite kernel - some kernel features moved as modules
F2FS support
ABB-charger tweaks
many others features and tweaks...
Credits:
@dh.harald and @hafidzduddin for contribution on U8500 platform sources
@ Team Canjica for a base for this kernel
@ Nova Fusion for F2FS implementation
@zwliew for contribution on TC kernel
@cocafe for LiveOPP, GPU OC, abbamp and abb-charger tweaks and many cool patches which I've used from his kernel
@faux123 for dynamic Fsync implementation
@Christopher83 for dynamic management of dirty page writebacks implementation
@KINGbabasula for contribution on TC kernel sources
@boype for SIOPlus tweaks and OndemandPlus governor
@Adi_Pat for abbamp, kernel tweaks
@PolishVodka for initramfs scripts for 4.2.x and 5.0.x
@Rox for help in fixing initramfs scripts for 4.1.2
@ace2nutzer for optimization CPU OC and for whatever scripts which I have used in my kernel
@Meticulus for BLN, Sweep2wake and Doubletap2wake
@mkaluza for huge LiveOPP/Mali improvements and Dynamic governor
@yanpol199 for help with F2FS support in TWRP
@ all users who tests this kernel and directs the development along the right path
@ all those users, who I forgot to mention (PM me if so)
Team Win for TWRP recovery
Samsung for opening kernel source
Linus Torvalds for Linux sources
Special Thanks:
@isaak, @enkflr, @Pdevo, @prometej-zg for donating this phone!
[*]@S.AMU for providing FTP-Server
Source Code:
LK 3.10.y based releases
r5.7.x (LK 3.4.y based releases)
Installation:
Flash temporary kernel (if coming from other recoveries than TWRP 3.1.1)
Reboot recovery
Flash kernel zip
Compatibility:
I only add those ROMs that are confirmed to work by me or someone else:
Stock 4.1.2 ROM
LineageOS 11
CyanogenMod 13
Notice: this kernel is not compatible with NovathorSettings app, be sure to remove it before installing a kernel!
Download:
FTP
XDA:DevDB Information
Chrono Kernel, Kernel for the Samsung Galaxy S Advance I9070
Contributors
ChronoMonochrome, cocafe, faux123, zwliew, mkaluza, Meticulus, KINGbabasula, ace2nutzer, TeamCanjica
Source Code: https://github.com/ChronoMonochrome/Chrono_Kernel-1/commits/master
Kernel Special Features:
Version Information
Status: Stable
Current Stable Version: R5.7.1
Stable Release Date: 1974-11-11
Beta Release Date: 1974-11-11
Created 2018-03-09
Last Updated 2018-04-16
Changelogs and features
Changelog
R5.9.1
Resolved (hopefully) deepsleep issues *
Fixed touchkey not working issue **
* tested in about 24 hours so far with ~6 hours of deep sleep on UltimateROM 6.0.1 without any issues with wakelocks.
** It seems that in r5.9 was introduced a bug - touch keys weren't working (at least, on 6.0.1) after device wake up.
R5.9
Bring up all the latest CK code from Codina kernel
Fix a severe performance issue on r5.8.2 build
BLN is finally FIXED! *
* Apparently, issues with BLN were related to Janice touchkey driver that was putting the device to sleep (when the display is off) regardless of a BLN wakelock usage. Reverting this behavior seemed to enable BLN to work.
R5.8.2
In-kernel vibrator fix for Android 6.0+
R5.8.1
PowerHAL fixes for 4.4.4
Experimental fix for CPU governor issue on 4.4.4
LCDCLK: revert to TeamCanjica kernel implementation
R5.8
Memory management hugely improved (finally LMK works properly)
Fixed powersave interface on JB 4.1.2 stock
Experimental fixes to PowerHAL on 4.4.4
LiveOPP: merged changes from refresh kernel (removed some CPU freq steps)
Dynamic: adjust tunables (same like in refresh kernel)
Possible vibrator fix on 6.0+ (not tested)
(old changelog)
R5.7.1
Initial build for janice (kernel sources based on LineageOS 15.1 kernel for Codina)
Fixed bluetooth issue on 4.1.2
Squash-reverted GPU-related code logic from CPU governor Dynamic
J4FS module code cleanup
Reverted forcing minimum CPU freq to 800 MHz
Enabled CONFIG_CPUSETS (required by Android 6.0.x+ ROMs to function properly)
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:
Code:
echo *cpufreq* varm=xx > /sys/kernel/liveopp/arm_summary
for example, following sets voltage varm=0x10 for 200 MHz:
Code:
echo 200000 varm=0x10 > /sys/kernel/liveopp/arm_summary
or
Code:
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:
Code:
echo x vape=yy > /sys/kernel/mali/mali_dvfs_config
Example:
Code:
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
Code:
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:
Code:
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 @borkins for this nice editor LiveOPP ARM steps: http://forum.xda-developers.com/showpost.php?p=60311291&postcount=2921
(CPU freq management tweaks)
CPU freq. limiter for screen OFF, adjust it via:
Code:
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.
Code:
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):
Code:
echo bln_ondelay=500 > /sys/kernel/bln/blink_mode
echo bln_offdelay=6000 > /sys/kernel/bln/blink_mode
Make sure BLN enabled:
Code:
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):
Code:
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:
Code:
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:
Code:
echo x > /sys/kernel/mcde/lcdclk
use
Code:
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":
Code:
echo 0 > /sys/kernel/mcde/lcdclk
(ABB charger tweaks)
added tweakable interfaces for termination current. To adjust it type(just an example):
Code:
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)
This feature has been developed by Faux123 and allows to dynamically manage the synchronous writes performed on file system (FSync).
It uses asynchronous writes when the screen is on, instead of synchronous writes, to have better performance and a slightly lower battery drain, while when the screen is off the synchronous writes are re-enabled to flush all the outstanding writes and prevent possible data loss.
How to enable/disable the Dynamic FSync (default enabled):
1) By downloading and using Trickster MOD
2) By directly editing the file /sys/kernel/dyn_fsync/Dyn_fsync_active and setting 1 to enable the dynamic fsync, 0 to disable it (note that set value will be lost after a reboot/shutdown)
3) 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 fsync feature
Code:
su
echo 0 > /sys/kernel/dyn_fsync/Dyn_fsync_active
- Or run this command to re-enable the dynamic fsync feature
Code:
su
echo 1 > /sys/kernel/dyn_fsync/Dyn_fsync_active
Click to expand...
Click to collapse
(Software CRCs)
Disabling software CRCs gives you a slight bump(10-30% is what they say) of MMC performance, at the cost of a possibility of your Ace 2 freezing randomly.
Code:
echo 0 > /sys/module/mmc_core/parameters/use_spi_crc
Click to expand...
Click to collapse
(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
Code:
echo 0 > /proc/sys/vm/dynamic_dirty_writeback
- Or run this command to re-enable the dynamic dirty page writebacks feature
Code:
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)
Code:
echo "3000" > /proc/sys/vm/dirty_writeback_active_centisecs
echo "1000" > /proc/sys/vm/dirty_writeback_suspend_centisecs
(Tweak app)
ChronoKernel settings
Thanks mars_army for this app!
Bug reports:
after experiencing a random reboot, type in terminal:
Code:
su
cat /proc/last_kmsg > /storage/sdcard0/last_kmsg.txt
report it in the thread and attach the last_kmsg.txt
Misc
Storages switch
By default, this kernel comes with internal and external storages switched. You can revert this behavior, by changing the line
Code:
use_swap=1
to
Code:
use_swap=0
in file /ramdisk/fstab_specs.txt and flashing the kernel package. This setting will remain until you format /ramdisk partition.
@ChronoMonochrome
I tested "chrono_kernel_r5.7.1-test-40-g169a68f4f29d-janice.zip" on Lineage OS 11.
Result: I have the same hiccups in the youtube video like before.
I think that you can revert the LCDCLK frequency to the default 60 Hz value, because I didn't notice any significant difference.
And I had an isolated crash while I was navigating in settings.
My usual running apps & services are: Should I answer?, Nova Launcher, Tesla Unread, Google Play Services 11.9.75, Ginger Keyboard, Skype 7.46.0.596 (old version from apkmirror), Quickpic, Terminal Emulator, CCleaner, Google Play Store 9.0.15, Tubemate 3.0.11, My Vodafone, Naked Browser, Titanium Backup, Fx File Explorer, Gmail, Google News & Weather, MX Player.
I hope that these logs can help you.
isaak said:
@ChronoMonochrome
I tested "chrono_kernel_r5.7.1-test-40-g169a68f4f29d-janice.zip".
Result: I have the same hiccups in the youtube video like before.
I think that you can revert the LCDCLK frequency to the default 60 Hz value, because I didn't notice any significant difference.
And I had an isolated crash while I was navigating in settings.
My usual running apps & services are: Should I answer?, Nova Launcher, Tesla Unread, Google Play Services 11.9.75, Ginger Keyboard, Skype 7.46.0.596 (old version from apkmirror), Quickpic, Terminal Emulator, CCleaner, Google Play Store 9.0.15, Tubemate 3.0.11, My Vodafone.
I hope that these logs can help you.
Click to expand...
Click to collapse
Thanks for the report! Unfortunately, the last_kmsg log appears to be taken from MaxiCM kernel, so the crash isn't captured here. In the meantime I'll install some of those apps to test how it goes under increased memory pressure. Was /proc/meminfo log taken before or after reboot? It would be useful to check this sysfs interface when the phone is encountering laggs (if it does), but after reboot this info won't help. About lowmemorykiller changes: were apps running faster / slower? So far Youtube playback is the only issue or phone laggs too?
ChronoMonochrome said:
Thanks for the report! Unfortunately, the last_kmsg log appears to be taken from MaxiCM kernel, so the crash isn't captured here. In the meantime I'll install some of those apps to test how it goes under increased memory pressure. Was /proc/meminfo log taken before or after reboot? It would be useful to check this sysfs interface when the phone is encountering laggs (if it does), but after reboot this info won't help. About lowmemorykiller changes: were apps running faster / slower? So far Youtube playback is the only issue or phone laggs too?
Click to expand...
Click to collapse
/proc/meminfo log was taken before the reboot. Youtube playback is not the only issue. I can just say that the best way to reproduce a crash or a slowdown is switching from an app to another as quick as possible and/or try a cleaning with CCleaner. Ah, in that list I forgot some apps, so I've updated my previous post.
So far I've tested as much as possible on stock 4.1.2 rom and everything is working fine.
-Bluetooth is definitely fixed, working like a charm.
-CRC, FSYNC and other tweaks give me no issue at all and work good.
-Tested a bit of undervolting, firstly cpu, then gpu, and DDR OC, and here too, no problems.
-Really great the supension min and max cpufreq, tested it with some init.d scripts.
Overall stability and responsiveness of the system is impressive, really positive, you really made a big surprise
These instead are the few things I noticed not working, I think the first two are really not a major problem at all and maybe I am messing with something:
1. I have noticed that trying to set governor by init.d script doesn't seem to take effect and at boot completed I find performance setted as governor:
busybox echo dynamic > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor;
Click to expand...
Click to collapse
Running then the script manually set dynamic as governor correctly.
(SOLVED WITH A BUSYBOX CHMOD COMMAND BEFORE EVERY PARAMETER SET)
2. I tryed using exfat support, loaded fuse.ko and exfat.ko modules on boot, then used the same binary from cocafe twrp kernel I was using fine (and here I think there is the issue) with this command:
exfat-fuse /dev/block/mmcblk1p1 /storage/extSdCard;
Click to expand...
Click to collapse
Sdcard isn't recognized and android is asking to format it as usual.
3. I guess should be the number one: Recovery doesn't seem to work, tryed many times, also removing battery first, but I can't enter in recovery. Next time I flash kernel I will do it manually from terminal, or Universal Kernel Flash app
EDIT1:
I found that the path where lcd parameters are located would be:
/sys/kernel/s6e63m0/panel/lcd_clk
Click to expand...
Click to collapse
instead of:
/sys/kernel/mcde/lcdclk
Click to expand...
Click to collapse
EDIT2:
Seems like deepsleep is broken, because in my situation phone doesn't enter in deepsleep mode and having a look at /d/supsend_stats and d/suspend directory confirm my issue.
I found at first strange the absence of /d/cpuidle directory and so the deepest_state configuration file, like something is missing here.
EDIT3:
I think I found another last issue, BLN is not working, but I think could be again something to do with files and folder structure, for example I can't find:
/sys/class/misc/backlightnotification/enabled
Click to expand...
Click to collapse
Again, this is still something not so important tough
EDIT4:
I was experiencing before issues with phone calls, making phone app freezing and signal loss, going to "no service" mode. Had to flash backup kernel for now, tomorrow as I get some time again I will provide logs
Pdevo said:
So far I've tested as much as possible on stock 4.1.2 rom and everything is working fine.
-Bluetooth is definitely fixed, working like a charm.
-CRC, FSYNC and other tweaks give me no issue at all and work good.
-Tested a bit of undervolting, firstly cpu, then gpu, and DDR OC, and here too, no problems.
-Really great the supension min and max cpufreq, tested it with some init.d scripts.
Overall stability and responsiveness of the system is impressive, really positive, you really made a big surprise
Click to expand...
Click to collapse
Thanks for a review!
2. I tryed using exfat support, loaded fuse.ko and exfat.ko modules on boot, then used the same binary from cocafe twrp kernel I was using fine (and here I think there is the issue) with this command:
Sdcard isn't recognized and android is asking to format it as usual.
Click to expand...
Click to collapse
Honestly I didn't test exfat for a long time. These issues might come due to the filesystem driver updates. Anyway I need to test things myself before I'll have clues on how to fix it.
3. I guess should be the number one: Recovery doesn't seem to work, tryed many times, also removing battery first, but I can't enter in recovery. Next time I flash kernel I will do it manually from terminal, or Universal Kernel Flash app
Click to expand...
Click to collapse
Are you sure you have followed the installation guide to flash the kernel? Especially, using TWRP is required to flash a kernel (other recoveries aren't tested and can be a cause for a bugs) I was returning to a stock for a short time to test if bluetooth works and recovery was working for me when I was returning to UltimateROM 6.0.1 afterwards.
Don't use manual flashing or UKF app to flash the kernel! The installation method is quite complicated (compared to installation of other kernels), so a full and proper installation is only possible if you flash it from recovery.
EDIT1:
I found that the path where lcd parameters are located would be:
instead of:
Click to expand...
Click to collapse
I have moved the interface to match the implementation of LCDCLK management on codina.
EDIT2:
Seems like deepsleep is broken, because in my situation phone doesn't enter in deepsleep mode and having a look at /d/supsend_stats and d/suspend directory confirm my issue.
I found at first strange the absence of /d/cpuidle directory and so the deepest_state configuration file, like something is missing here.
Click to expand...
Click to collapse
This is entirely possible due to deepsleep driver changes in a kernel. I never tested if it works on stock, I guess I'll have to return to stock once again.
EDIT3:
I think I found another last issue, BLN is not working, but I think could be again something to do with files and folder structure, for example I can't find:
Again, this is still something not so important tough
Click to expand...
Click to collapse
I was thinking BLN isn't working on this phone at all, so I disabled the kernel support. Is the stock ROM only where BLN works?
Yes sir, I flashed your kernel exactly from twrp, coming from cocore refresh24, I referred to UKF or terminal emulator to say I would use that method now that I can't enter recovery mode, but I never use these ways at all, always from recovery, because I know that kernel come with scripts and other files that without recovery wouldn't be installed
Tomorrow I will do further testing
ChronoMonochrome said:
I was thinking BLN isn't working on this phone at all, so I disabled the kernel support. Is the stock ROM only where BLN works?
Click to expand...
Click to collapse
As far as I know no dev on Janice introduced BLN, but I don't see any reason why it shouldn't be technically possible if it works on Ace II.
Please don't give up on this unless you're sure at 100%.
@cocafe had it on his todo list, but at the end he didn't implement it for unknown reasons. I asked to him but he never explained it.
ChronoMonochrome said:
I was thinking BLN isn't working on this phone at all, so I disabled the kernel support. Is the stock ROM only where BLN works?
Click to expand...
Click to collapse
Until now, BLN never been working or supported on custom and stock roms, as said by @isaak, the reason behing that I think is properly known by developers such as cocafe.
Yesterday I made a little try using the commands you point in the thread, a little go, but in fact is not working. Would be a cool feature, but nothing so important at all for me, at least for now
UPDATE:
I flashed again the kernel, starting from freshly downloaded zip, and I got an infinite bootloop trying to get to recovery, the only way to go back working was flashing stock rom with odin.
I can now safely say there is an issue with recovery using the stock rom.
UPDATE 19:30
I took two logs, one for incoming call and one for outgoing call, reproducing the issue I was referring in previous post.
In the first case, incoming call, notification appear but scrolling to accept call make phone unusable and I could just shutdown it to solve the situation.
In the second case, outgoing call, after I start the call the phone app isn't responding, I see the notification widget but tapping on every possible button, to terminate call or enter in dialog, doesn't work and phone is very unstable until a sort of a timeout is running out and call stop itself.
Hi @ everyone!
Because of th numerous issues found with the current release, I'm starting to work on a fresh kernel sources (3.0.101), almost from scratch. My primary focus for now will be a multitasking, that is the main issue with the current release. Because of yet unknown root cause of the issue it could take a while to reveal it, but I hope to release a new build these days (and after playing with some kernel configuration find out more appropriate one for a multitasking). Stay tuned!
For sure we stay tuned!, thank you so much for the efforts and take all the time you need Chrono
isaak said:
My usual running apps & services are: Should I answer?, Nova Launcher, Tesla Unread, Google Play Services 11.9.75, Ginger Keyboard, Skype 7.46.0.596 (old version from apkmirror), Quickpic, Terminal Emulator, CCleaner, Google Play Store 9.0.15, Tubemate 3.0.11, My Vodafone, Naked Browser, Titanium Backup, Fx File Explorer, Gmail, Google News & Weather, MX Player.
I hope that these logs can help you.
Click to expand...
Click to collapse
I have set up all these apps about 10-12 days ago. I should say, removing CCleaner seemed to help a lot to increase the phone performance. It's doing a lot of background CPU and I/O work, making the phone almost unusable on r5.7.1 and severely affects performance on r4.1 / r4.6.
ChronoMonochrome said:
I have set up all these apps about 10-12 days ago. I should say, removing CCleaner seemed to help a lot to increase the phone performance. It's doing a lot of background CPU and I/O work, making the phone almost unusable on r5.7.1 and severely affects performance on r4.1 / r4.6.
Click to expand...
Click to collapse
The new CCleaner version is on the heavy side, so I had to freeze some background services with My Android Tools app. Anyway I've just uninstalled it definitively.
New build r5.8 is up!
R5.8
Memory management hugely improved (finally LMK works properly)
Fixed powersave interface on JB 4.1.2 stock
Experimental fixes to PowerHAL on 4.4.4
LiveOPP: merged changes from refresh kernel (removed some CPU freq steps)
Dynamic: adjust tunables (same like in refresh kernel)
Possible vibrator fix on 6.0+ (not tested)
ChronoMonochrome said:
R5.8
Memory management hugely improved (finally LMK works properly)
Fixed powersave interface on JB 4.1.2 stock
Experimental fixes to PowerHAL on 4.4.4
LiveOPP: merged changes from refresh kernel (removed some CPU freq steps)
Dynamic: adjust tunables (same like in refresh kernel)
Possible vibrator fix on 6.0+ (not tested)
Click to expand...
Click to collapse
I tried 5.8.5 and I have still issues with LineageOS 11:
1) I've got a screen flicker issue while I was browsing in Naked Browser with the new LCDCLK frequency.
Tried to set echo 1 > /sys/kernel/mcde/lcdclk, but I've noticed that this value is not kept after a reboot.
Very annoying, because I can't restore 60 Hz permanently.
2) There are still issues about some values not kept in the performance UI of Lineage Os.
For example:
- Try to set Zenx as governor, min. 200 max 1000, Noops scheduler. Reboot. Scheduler will be resetted to Deadline.
- There is still a bug with max clock value of Dynamic governor (I can reproduce it with ZenX governor too). I set it to 800 MHz, I go back to the settings screen, then I return to the Performance -> Processor section to check if the 800 MHz value is maintained. But the UI automatically restored the max clock to 1000 MHz without my consent.
For your information, these issues occur only randomly and with particular combinations. So, if you can't reproduce them, the best way is to set these, one at a time:
1) Zenx as governor, min. 200 max 800, Noops scheduler. Reboot.
2) Zenx as governor, min. 200 max 800, Fiops scheduler. Reboot.
2) Zenx as governor, min. 200 max 800, Sioplus scheduler. Reboot.
After the first, the second or the third reboot, some of these values you've set will change spontaneously on their own.
"Set on boot" options are correctly set for both Processor and I/O Scheduler.
And I keep "Enable per-app profiles" option turned off.
3) On the Performance UI, performance profile results automatically set on Balanced after any reboot. But if you cannot fix it, I can live with that, don't worry. It doesn't keep "Power save" or "Performance" profile between reboots.
PS: I would appreciate if you could update the installation steps in this thread with the same steps of the refresh topic:
Flash temporary kernel (if coming from other recoveries than TWRP 3.1.1)
Reboot recovery
Flash kernel zip
isaak said:
I tried 5.8.5 and I have still issues with LineageOS 11:
1) I've got a screen flicker issue while I was browsing in Naked Browser with the new LCDCLK frequency.
Tried to set echo 1 > /sys/kernel/mcde/lcdclk, but I've noticed that this value is not kept after a reboot.
Very annoying, because I can't restore 60 Hz permanently.
Click to expand...
Click to collapse
Sorry, I thought I've reverted this change. Can you confirm that setting old LCDCLK freq fixes issue? As a temporary solution you can use init.d script to set the appropriate LCDCLK freq index.
2) There are still issues about some values not kept in the performance UI of Lineage Os.
For example:
- Try to set Zenx as governor, min. 200 max 1000, Noops scheduler. Reboot. Scheduler will be resetted to Deadline
Click to expand...
Click to collapse
Can confirm now. I have a guess for that, for now the solution as follows:
remove /ramdisk/modules/autoload/sioplus-iosched.ko, reboot. I have to test this a bit more time to be sure 100%, but so far I couldn't reproduce an issue after removing this module (no other CPUfreq governor or I/O scheduler must be loaded as well).
- There is still a bug with max clock value of Dynamic governor (I can reproduce it with ZenX governor too). I set it to 800 MHz, I go back to the settings screen, then I return to the Performance -> Processor section to check if the 800 MHz value is maintained. But the UI automatically restored the max clock to 1000 MHz without my consent.
Click to expand...
Click to collapse
It's not a bug, but rather intended behavior - due to PowerHAL changes implemented, CPUfreq can only be changed via script (see /ramdisk/perf.sh). I've previously asked if anyone would prefer to adjust CPUfreq usual way, In this case I can just remove the corresponding lines from the PowerHal script. This will make PowerHAL settings a bit more useless, but will gave easier control over CPUfreq.
3) On the Performance UI, performance profile results automatically set on Balanced after any reboot. But if you cannot fix it, I can live with that, don't worry. It doesn't keep "Power save" or "Performance" profile between reboots.
Click to expand...
Click to collapse
The script actually works, though you're right, it works buggy and everytime shows the default profile (you can set, e.g. Powersave profile and check min/max CPU freq, to check if it actually works).
PS: I would appreciate if you could update the installation steps in this thread with the same steps of the refresh topic:
Flash temporary kernel (if coming from other recoveries than TWRP 3.1.1)
Reboot recovery
Flash kernel zip
Click to expand...
Click to collapse
Done!
isaak said:
I've got a screen flicker issue while I was browsing in Naked Browser with the new LCDCLK frequency.
Tried to set echo 1 > /sys/kernel/mcde/lcdclk, but I've noticed that this value is not kept after a reboot.
Very annoying, because I can't restore 60 Hz permanently.
ChronoMonochrome said:
Sorry, I thought I've reverted this change. Can you confirm that setting old LCDCLK freq fixes issue? As a temporary solution you can use init.d script to set the appropriate LCDCLK freq index.
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Yes, I can confirm that setting old LCDCLK freq fixed the flicker issue for my screen. I think it would be better to set it as default in the next release.
isaak said:
There are still issues about some values not kept in the performance UI of Lineage Os.
For example:
- Try to set Zenx as governor, min. 200 max 1000, Noops scheduler. Reboot. Scheduler will be resetted to Deadline
etc etc....
ChronoMonochrome said:
Can confirm now. I have a guess for that, for now the solution as follows:
remove /ramdisk/modules/autoload/sioplus-iosched.ko, reboot. I have to test this a bit more time to be sure 100%, but so far I couldn't reproduce an issue after removing this module (no other CPUfreq governor or I/O scheduler must be loaded as well).
Click to expand...
Click to collapse
Click to expand...
Click to collapse
I tried your steps, unfortunately they didn't work for me.
ChronoMonochrome said:
It's not a bug, but rather intended behavior - due to PowerHAL changes implemented, CPUfreq can only be changed via script (see /ramdisk/perf.sh). I've previously asked if anyone would prefer to adjust CPUfreq usual way, In this case I can just remove the corresponding lines from the PowerHal script. This will make PowerHAL settings a bit more useless, but will gave easier control over CPUfreq.
Click to expand...
Click to collapse
Personally I would prefer more control over CPUfreq. Could you list the main advantages to limit CPUfreq changes only via script? Is it a sort of auto-optimization? This point is not clear to me. If you think that any change to this mechanism would affect negatively the battery life, then don't change anything.
isaak said:
On the Performance UI, performance profile results automatically set on Balanced after any reboot. But if you cannot fix it, I can live with that, don't worry. It doesn't keep "Power save" or "Performance" profile between reboots.
ChronoMonochrome said:
The script actually works, though you're right, it works buggy and everytime shows the default profile (you can set, e.g. Powersave profile and check min/max CPU freq, to check if it actually works).
Click to expand...
Click to collapse
Click to expand...
Click to collapse
I tried Powersave and Performance profiles, in both cases the maximum freq varies between 400 MHz and 1000 MHz, rarely reaching 800 MHz. Minimum freq is always 200 MHz and it doesn't change visually like the maximum freq. Balanced profile is always shown visually after a reboot.
isaak said:
Personally I would prefer more control over CPUfreq. Could you list the main advantages to limit CPUfreq changes only via script? Is it a sort of auto-optimization? This point is not clear to me. If you think that any change to this mechanism would affect negatively the battery life, then don't change anything.
Click to expand...
Click to collapse
Because of some CPUfreq scaling tunables were changed (in the case of Dynamic governor), it makes sense to implement a PowerHAL profiles, which would limit / restore the max CPUfreq. But I think I've found a solution - I will make it possible to change CPUfreq for a Balanced profile.
I tried Powersave and Performance profiles, in both cases the maximum freq varies between 400 MHz and 1000 MHz, rarely reaching 800 MHz. Minimum freq is always 200 MHz and it doesn't change visually like the maximum freq. Balanced profile is always shown visually after a reboot.
Click to expand...
Click to collapse
Ok, I found some logical errors in the script, should be fixed in upcoming release.
Custom kernel for Samsung Galaxy S Advance
Code:
/*
* Your (probably expired) warranty is now void.
*
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this kernel
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at me for messing up your device, I will laugh at you.
*/
Hi there!
Because of numerous issues found in 3.4.113 kernel, I'm temporarily moving to development on 3.0.101 base.
What is difference between chrono kernel (CK) and CK refresh build? CK was mostly tested on MM-based ROMs, but appeared not to work stably on Android 4.4.x. Aim of this build is to properly enable support for older ROMs (like kitkat), and when done, merge these changes to 3.4.113 kernel.
This build is based upon chrono kernel r4.1 build, so to avoid versions confusion, I'm creating a separate topic.
Features:
CPU, GPU and DDR OC support
more governors and I/O schedulers
Lite kernel - some kernel features moved as modules
F2FS support
ABB-charger tweaks
many others features and tweaks...
Credits:
@dh.harald and @hafidzduddin for contribution on U8500 platform sources
@ Team Canjica for a base for this kernel
@ Nova Fusion for F2FS implementation
@zwliew for contribution on TC kernel
@cocafe for LiveOPP, GPU OC, abbamp and abb-charger tweaks and many cool patches which I've used from his kernel
@faux123 for dynamic Fsync implementation
@Christopher83 for dynamic management of dirty page writebacks implementation
@KINGbabasula for contribution on TC kernel sources
@boype for SIOPlus tweaks and OndemandPlus governor
@Adi_Pat for abbamp, kernel tweaks
@PolishVodka for initramfs scripts for 4.2.x and 5.0.x
@Rox for help in fixing initramfs scripts for 4.1.2
@ace2nutzer for optimization CPU OC and for whatever scripts which I have used in my kernel
@Meticulus for BLN, Sweep2wake and Doubletap2wake
@mkaluza for huge LiveOPP/Mali improvements and Dynamic governor
@yanpol199 for help with F2FS support in TWRP
@ all users who tests this kernel and directs the development along the right path
@ all those users, who I forgot to mention (PM me if so)
Team Win for TWRP recovery
Samsung for opening kernel source
Linus Torvalds for Linux sources
Special Thanks:
@isaak, @enkflr, @Pdevo, @prometej-zg for donating this phone!
[*]@S.AMU for providing FTP-Server
Source Code:
LK 3.0.y based releases
Installation:
Flash temporary kernel (if coming from other recoveries than TWRP 3.1.1)
Reboot recovery
Flash kernel zip
Notice: this kernel is not compatible with NovathorSettings app, be sure to remove it before installing a kernel!
Download:
FTP
XDA:DevDB Information
Chrono Kernel Refresh, Kernel for the Samsung Galaxy S Advance I9070
Contributors
ChronoMonochrome, cocafe, faux123, zwliew, mkaluza, Meticulus, KINGbabasula, ace2nutzer, TeamCanjica
Source Code: https://github.com/ChronoMonochrome/Chrono_Kernel-1/commits/refresh-3.0.101
Kernel Special Features:
Version Information
Status: Testing
Stable Release Date: 1974-11-11
Beta Release Date: 1974-11-11
Created 2018-03-22
Last Updated 2018-03-23
Changelogs
Changelog
R4.6.2
rebased to CM14.1 branch (added support for 6.0.1 and 7.1.2 ROMs)
R4.6.1
fixed CPU OC instabilities
LCDCLK is adjusted to fix tearing issues *
adjusted Dynamic CPU governor tunables for a better battery live
adjusted PowerHAL profiles **
genfstab: storages swap is disabled by default (remove /ramdisk/fstab_specs.txt before flashing to take this change in an effect)
updated temporary kernel zip
* tested with apps like Impossible Game, a display tearings are mostly resolved here. Apps like Youtube, though, might still causing tearings when playing video.
** the minimum CPU freq is set to 400 MHz. I've decided to use it as a default since 200 and 400 MHz CPUfreq steps are anyway using the same voltage, so unless you're undervolting the CPU, there won't be any significant difference in a battery drain.
R4.6
updated to r4.6 LowMemoryKiller implementation - best so far!
Disabled HighMem
removed some CPUfreq steps *
Dynamic governor: parameters are tuned for the better performance (credits: @ace2nutzer)
Added performance profiles (the corresponding parameters can be found in /ramdisk/perf.profiles.rc)
Other updates from r4.6 (various updates from LK 3.4, tweaks etc)
* Avalable CPU frequency steps are: 200, 800, 1000, 1100, 1200, 1215 Mhz. I've decided just to give it a try - this is a necessary part of tuning the CPU governor. If anyone doesn't like that frequencies between 200 and 800 MHz were removed I can add them back, but until performance-related issues are not resolved I'd suggest just leave as it is.
R4.1
Initial build for janice (kernel sources based on Chrono Kernel r4.1)
LiveOPP: updated to r5.7.1 kernel version
Exfat: test fixes for Stock 4.1.2 ROM (not tested)
Enabled CONFIG_STE_TRACE_MODEM (test fix for Stock ROM incoming / outgoing calls)
Kexec: added janice support
Misc
Storages switch
By default, this kernel comes with internal and external storages switched. You can revert this behavior, by changing the line
Code:
use_swap=1
to
Code:
use_swap=0
in file /ramdisk/fstab_specs.txt and flashing the kernel package. This setting will remain until you format /ramdisk partition.
Thank you Chrono again.
So far I am still having issues with calls on 4.1.2 stock, I took another logcat in case would help you, and seems like phone can't enter deepsleep mode, but I will investigate further this issue with some days of usage.
I couldn't get exfat working, I took the exfat-fuse binary from /sbin in TWRP, then ran "exfat-fuse /dev/block/mmcblk1p1 /storage/extSdCard", tryed also with "mount.exfat-fuse etc etc", the fact is the card is correctly mounted and usable from recovery, but this does not matter after all.
The nice thing is I find multitasking working far better, phone seems to be more responsive in situations where more apps are running at the same time, this is very good to me!.
Another big point is installation went fine and recovery is working perfectly, so problems with possible bootloops are solved (and after some more usage I will go further to your more updated roms )
If there is something more to provide you, test or informations missing, please ask me Chrono
I tested chrono kernel r4.1 on Lineage OS 11.
-Compared to the previous chrono_kernel_r5.7.1, this is considerably slow, especially during the opening of apps like Settings, Contacts, Google News, Play store.
-If I set 1000 Mhz as maximum clock of the dynamic governor, the phone becomes slower and a bit hot on the back.
Multitasking is severely affected by that clock. Multitasking is more stable at 800 Mhz, despite it's still slow.
-If I reboot the phone, the maximum clock of 1000 Mhz is automatically resetted at 800 Mhz.
-If I attempt to reboot the phone in recovery mode from Lineage Os 11 ROM with the PC USB charging cable on, phone will shutdown instead. Disconnecting the charging cable before rebooting the phone in recovery mode is the only workaround. It doesn't happen with the Epirex Kernel, so I think it's related to your kernel.
In my attachment there is a meminfo that I took while the phone was under load.
If it isn't enough, I attached a full logcat. There are some errors and crashes.
@Pdevo, @isaak, thanks for testing!
I tested chrono kernel r4.1 on Lineage OS 11.
-Compared to the previous chrono_kernel_r5.7.1, this is considerably slow, especially during the opening of apps like Settings, Contacts, Google News, Play store.
Click to expand...
Click to collapse
Probably I've rushed things, or sort of. I had a hard time trying to find a considerably stable kernel 3.0.101 base (this one appeared to work stably, though not best, in terms of the performance). Nevertheless, the multitasking should already be better (at least better than in r5.7.1, as in this one LowMemoryKiller appeared not to work at all). I'm updating the sources to a new kernel base, r4.6 which should be even better in multitasking term.
-If I reboot the phone, the maximum clock of 1000 Mhz is automatically resetted at 800 Mhz.
Click to expand...
Click to collapse
Should be fixed in upcoming release.
-If I attempt to reboot the phone in recovery mode from Lineage Os 11 ROM with the PC USB charging cable on, phone will shutdown instead. Disconnecting the charging cable before rebooting the phone in recovery mode is the only workaround. It doesn't happen with the Epirex Kernel, so I think it's related to your kernel.
Click to expand...
Click to collapse
It's a bug in CM11 ramdisk, I've took another one from Codina, and now this issue should be resolved as well.
Pdevo said:
So far I am still having issues with calls on 4.1.2 stock, I took another logcat in case would help you, and seems like phone can't enter deepsleep mode, but I will investigate further this issue with some days of usage.
I couldn't get exfat working, I took the exfat-fuse binary from /sbin in TWRP, then ran "exfat-fuse /dev/block/mmcblk1p1 /storage/extSdCard", tryed also with "mount.exfat-fuse etc etc", the fact is the card is correctly mounted and usable from recovery, but this does not matter after all.
Click to expand...
Click to collapse
I'm afraid that exfat driver built in the kernel is not compatible with this userspace mount.exfat-fuse utility. I won't be able to fix it, until I find a time to return to stock & rebuild either mount.exfat-fuse or kernel driver in order to make them compatible each with other.
As for the deepsleep issue, I can say that at least 4.4.4 is not affected by this bug. Try making sure that no apps are preventing deep sleep (Better battery stats or Wakelock detector can help in that).
New build r4.6 is up!
Changelog
updated to r4.6 LowMemoryKiller implementation - best so far!
Disabled HighMem
removed some CPUfreq steps *
Dynamic governor: parameters are tuned for the better performance (credits: @ace2nutzer)
Added performance profiles (the corresponding parameters can be found in /ramdisk/perf.profiles.rc)
Other updates from r4.6 (various updates from LK 3.4, tweaks etc)
* Avalable CPU frequency steps are: 200, 800, 1000, 1100, 1200, 1215 Mhz. I've decided just to give it a try - this is a necessary part of tuning the CPU governor. If anyone doesn't like that frequencies between 200 and 800 MHz were removed I can add them back, but until performance-related issues are not resolved I'd suggest just leave as it is.
ChronoMonochrome said:
Changelog
updated to r4.6 LowMemoryKiller implementation - best so far!
Disabled HighMem
removed some CPUfreq steps *
Dynamic governor: parameters are tuned for the better performance (credits: @ace2nutzer)
Added performance profiles (the corresponding parameters can be found in /ramdisk/perf.profiles.rc)
Other updates from r4.6 (various updates from LK 3.4, tweaks etc)
* Avalable CPU frequency steps are: 200, 800, 1000, 1100, 1200, 1215 Mhz. I've decided just to give it a try - this is a necessary part of tuning the CPU governor. If anyone doesn't like that frequencies between 200 and 800 MHz were removed I can add them back, but until performance-related issues are not resolved I'd suggest just leave as it is.
Click to expand...
Click to collapse
Tested on Lineage Os 11 without CCleaner.
After flashing this new kernel I had to force a Media scan with Fx File Explorer (that detected over 300 changed files) because the phone was really slow. That was sufficient to speed up the multitasking that now it's much better than previous 4.1 build.
Additional observations:
- Do you think it's possible to improve Media scanner reactivity via kernel?
- Fx File Explorer detects my external sd card as Main storage and Media card as internal storage. This doesn't happen on Epirex kernel.
- Battery usage is higher than previous kernel. If I stay on a webpage in idle, after 30 seconds my battery decreases of one percentage point (i.e. from 70% to 69%). I noticed that a simple swipe on the screen jumps the current clock directly to the maximum frequency, this could be one of the reasons.
- There is only FIOPS as I/O Scheduler and I miss all the other schedulers.
I think you're on the right track!
isaak said:
- Do you think it's possible to improve Media scanner reactivity via kernel?
Click to expand...
Click to collapse
I don't think it's possible. The only possible way is to overclock CPU, though it won't help much.
- Fx File Explorer detects my external sd card as Main storage and Media card as internal storage. This doesn't happen on Epirex kernel.
Click to expand...
Click to collapse
This is a default behaviour in Chrono Kernel. Because on codina we have only 4 Gb of available space, it makes sense just to remove internal storage partition and use the external one as primary. If anyone wants, I can revert this behavior. It's possible to switch storages back by editing file /ramdisk/fstab_specs.txt (set use_swap value to 0) and flashing a kernel package.
- Battery usage is higher than previous kernel. If I stay on a webpage in idle, after 30 seconds my battery decreases of one percentage point (i.e. from 70% to 69%). I noticed that a simple swipe on the screen jumps the current clock directly to the maximum frequency, this could be one of the reasons.
Click to expand...
Click to collapse
Ok, I'll consider of tuning CPU governor in order to provide more battery friendly setup. I was afraid that the battery usage might be too high, but that was a necessary evil, I guess. In the meantime, as a temporary workaround, the maximum CPU frequency can even be lowered to 800 MHz, it should be still fast enough.
- There is only FIOPS as I/O Scheduler and I miss all the other schedulers.
I think you're on the right track!
Click to expand...
Click to collapse
To load more I/O schedulers, you can copy (or symlink) a module file to /system/lib/modules/autoload, then reboot the phone. This doesn't seem to work, a script that loads modules, is broken.
Because usually I don't change I/O scheduler, by default, no more I/O scheds are loaded. Do you have any preferred I/O scheds?
ChronoMonochrome said:
I don't think it's possible. The only possible way is to overclock CPU, though it won't help much.
Click to expand...
Click to collapse
Nevermind.
ChronoMonochrome said:
This is a default behaviour in Chrono Kernel. Because on codina we have only 4 Gb of available space, it makes sense just to remove internal storage partition and use the external one as primary. If anyone wants, I can revert this behavior. It's possible to switch storages back by editing file /ramdisk/fstab_specs.txt (set use_swap value to 0) and flashing a kernel package.
Click to expand...
Click to collapse
I'd like to revert the behavior, so I would appreciate If you could provide the same instructions here and in the other kernel thread..
ChronoMonochrome said:
To load more I/O schedulers, you can copy (or symlink) a module file to /system/lib/modules/autoload, then reboot the phone. This doesn't seem to work, a script that loads modules, is broken.
Because usually I don't change I/O scheduler, by default, no more I/O scheds are loaded. Do you have any preferred I/O scheds?
Click to expand...
Click to collapse
I would suggest deadline, noop, sioplus, zen (plus the existent FIOPS).
ChronoMonochrome said:
This is a default behaviour in Chrono Kernel. Because on codina we have only 4 Gb of available space, it makes sense just to remove internal storage partition and use the external one as primary. If anyone wants, I can revert this behavior. It's possible to switch storages back by editing file /ramdisk/fstab_specs.txt (set use_swap value to 0) and flashing a kernel package.
To load more I/O schedulers, you can copy (or symlink) a module file to /system/lib/modules/autoload, then reboot the phone. This doesn't seem to work, a script that loads modules, is broken.
Because usually I don't change I/O scheduler, by default, no more I/O scheds are loaded. Do you have any preferred I/O scheds?
Click to expand...
Click to collapse
Personally I really appreciate and find useful the external sdcard storage as primary one, should be the default behaviour for me, it makes sense and also I never liked to have some files on one unit and some files on another one (download, pictures, recordings on extsdcard, apps folders, screens, other apps downloads etc on internal), I really like the idea of sdcard as main, like the old times of galaxy mini
Fiops to me is a fair good scheduler, maybe also noop would be useful, but I guess having as much things as modules as possible can help load only the strictly necessary, but I say this without dev knowledge.
I will test this build and especially the deepsleep issues, to see if there are apps causing phone not to sleep, the problem is I didn't add any app, just using the same enviroment that with cocore was going to deepsleep. I will report soon, anyway, good job chrono, keep it up
Pdevo said:
Fiops to me is a fair good scheduler, maybe also noop would be useful, but I guess having as much things as modules as possible can help load only the strictly necessary, but I say this without dev knowledge.
Click to expand...
Click to collapse
Yes, FIOPS is good. I just think that having 2 or 3 additional schedulers to select would be better for different uses.
In my previous post I replaced sioplus with zen, according to the conclusions of this guide. There is an useful (up to date) list of recommended IO schedulers, ordered for everyday usage, battery life, heavy multitasking, etc.
New build r4.6.1 is up!
Hey guys and sorry for having to wait that long for a new releases!
I'm still working on 3.4.x kernel - no great news here, but at least I've found a more less stable sources base, so the only what needed now, is a time to bring up some stability fixes and feature changes.
For now releasing a 3.0.101 kernel with some minor changes:
R4.6.1
fixed CPU OC instabilities
LCDCLK is adjusted to fix tearing issues *
adjusted Dynamic CPU governor tunables for a better battery live
adjusted PowerHAL profiles **
genfstab: storages swap is disabled by default (remove /ramdisk/fstab_specs.txt before flashing to take this change in an effect)
updated temporary kernel zip
* tested with apps like Impossible Game, a display tearings are mostly resolved here. Apps like Youtube, though, might still causing tearings when playing video.
** the minimum CPU freq is set to 400 MHz. I've decided to use it as a default since 200 and 400 MHz CPUfreq steps are anyway using the same voltage, so unless you're undervolting the CPU, there won't be any significant difference in a battery drain.
ChronoMonochrome said:
** the minimum CPU freq is set to 400 MHz. I've decided to use it as a default since 200 and 400 MHz CPUfreq steps are anyway using the same voltage
Click to expand...
Click to collapse
On Lineage OS 11:
Using more accurately the Performance function in Lineage Os Settings (an example here), there are different bugs:
1) Minimum CPU freq here is still set at 200 MHz after I flashed chrono kernel 4.6.1.. but this time I forgot to flash the temporary kernel before your kernel.
Anyway chrono kernel 4.6.1 was flashed without issue using TWRP 2.8.7.0.
2) Maximum CPU freq is automatically restored at 1000 Mhz after any reboot, even if I set 1200 Mhz (with any governor).
3) Deadline scheduler is automatically set after any reboot, even if I set FIOPS as default scheduler.
4) Dynamic governor is automatically set after any reboot, even if I set Zenx as default governor.
5) On the Performance UI, performance profile results automatically set on Balanced after any reboot, even if I set Power save as default (it may be reproducible with "Performance" option too, I didn't check).
UPDATE: I've reinstalled chrono kernel again and these behaviors still happen.
For me the minimum freq was correctly 400 mhz as expected, as always running on stock 4.1.2.
After two days of use I can say you are following the right path.
This time I wanted to remove every possible source of doubts and I went for a clean installation, so doing a complete reset and flashing your kernel, of course after the temporary one. I still have the phone not going to deepsleep and the call issues (basically it is impossible to do and receive phone calls on stock rom).
A part from these I can say I didn't noticed any other issue at all, finding memory management a little improved compared to previous release and battery life still good, considering the phone isn't going to sleep mode.
I think this will continue to improve and soon all these glitches will just be gone away, thank you so much chrono also hoping to settle for a bit on your ultimateROM, only waiting for the vibration working, because that is basically the only notification for me
isaak said:
On Lineage OS 11:
Using more accurately the Performance function in Lineage Os Settings (an example here), there are different bugs:
1) Minimum CPU freq here is still set at 200 MHz after I flashed chrono kernel 4.6.1.. but this time I forgot to flash the temporary kernel before your kernel.
Anyway chrono kernel 4.6.1 was flashed without issue using TWRP 2.8.7.0.
2) Maximum CPU freq is automatically restored at 1000 Mhz after any reboot, even if I set 1200 Mhz (with any governor).
3) Deadline scheduler is automatically set after any reboot, even if I set FIOPS as default scheduler.
4) Dynamic governor is automatically set after any reboot, even if I set Zenx as default governor.
5) On the Performance UI, performance profile results automatically set on Balanced after any reboot, even if I set Power save as default (it may be reproducible with "Performance" option too, I didn't check).
UPDATE: I've reinstalled chrono kernel again and these behaviors still happen.
Click to expand...
Click to collapse
1) Isn't an issue here, the showed CPU frequency is 200 MHz, but the actual CPU pll clock set at 400 MHz. Might be confusing, but yet that is better for a battery life.
2) These aren't really bugs, it's how LOS 11.0 performance profiles works. To change min / max CPU freq, you either need to edit /ramdisk/perf.profiles.rc (and set a custom values) or disable perf profiles. Actually there is one more way - to remove CPUfreq adjusting lines completely from that script - would anyone like this change introduced in a new release?
3-4) I've checked it right now - no issues for me... Have you set "apply on boot" checkbox?
5) It's a known bug of CM11 perf profiles. AFAIK, @ace2nutzer fixed this bug in his CM11 builds. @ace2nutzer, can you please remind how this could be worked around?
ChronoMonochrome said:
2) Maximum CPU freq is automatically restored at 1000 Mhz after any reboot, even if I set 1200 Mhz (with any governor).
Click to expand...
Click to collapse
2) These aren't really bugs, it's how LOS 11.0 performance profiles works. To change min / max CPU freq, you either need to edit /ramdisk/perf.profiles.rc (and set a custom values) or disable perf profiles. Actually there is one more way - to remove CPUfreq adjusting lines completely from that script - would anyone like this change introduced in a new release?
Click to expand...
Click to collapse
Honestly I don't know how to disable perf profiles. If it's a simple thing to do (like a command or two to execute), please tell me how to do it because it's enough for me, otherwise I'd like to try the third way and see.
ChronoMonochrome said:
3) Deadline scheduler is automatically set after any reboot, even if I set FIOPS as default scheduler.
4) Dynamic governor is automatically set after any reboot, even if I set Zenx as default governor.
Click to expand...
Click to collapse
3-4) I've checked it right now - no issues for me... Have you set "apply on boot" checkbox?
Click to expand...
Click to collapse
Yes, "Set on boot" options are correctly set for both Processor and I/O Scheduler.
And I keep "Enable per-app profiles" option turned off.
@ChronoMonochrome
UPDATE 1: It occurs only randomly and with particular combinations. The best way to reproduce is to set these, one at a time:
1) Zenx as governor, min. 200 max 800, Noops scheduler. Reboot.
2) Zenx as governor, min. 200 max 800, Fiops scheduler. Reboot.
2) Zenx as governor, min. 200 max 800, Sioplus scheduler. Reboot.
After the first, the second or the third reboot, some of these values you've set will change spontaneously on their own.
UPDATE 2: I've got a screen flicker issue while I was browsing in Naked Browser with the new LCDCLK frequency.
Tried to set echo 1 > /sys/kernel/mcde/lcdclk, it's ok now, but I've noticed that this value is not kept after a reboot.
Do you need a specific log?
In case please write me any command and I'll give you the output.
isaak said:
On Lineage OS 11:
Using more accurately the Performance function in Lineage Os Settings (an example here), there are different bugs: .....
Click to expand...
Click to collapse
I suggest to keep it unchecked, otherwise it'll change the profile randomly, and that's probably not what u want.
ChronoMonochrome said:
....
5) It's a known bug of CM11 perf profiles. AFAIK, @ace2nutzer fixed this bug in his CM11 builds. @ace2nutzer, can you please remind how this could be worked around?
Click to expand...
Click to collapse
There's still no fix ! But what i did is to add the perf. profile in my control app ... that works fully independently.
But that's probably not what u guys want.
My last try was to do that over build.prop .. this works only for around 15 seconds (after wiping dalvik cache it's around 30 sec.) and then it sets back to "balanced" .. so i use it anyway just for speeding up the boot sequence:
Code:
# CM Performance Profiles (only during boot)
# 0= powersave; 1= balanced; 2= performance - default
sys.perf.profile=2
IMO the best way is to add the perf. profiles button to the quick settings, then it's very easy to switch between the 3 profiles.
Using the same profile for everything is for sure not the best option if u want performance + powersave at the same time.
Personally i use performance, and when i read an pdf or watch a YouTube Video then i switch to powersave.
Using powersave or even balanced for normal usage isn't recommended as it can drain even more battery than using performance, because it's slower and the CPU will stay too long on max. freq and the LCD also will stay longer ON, which leads both to increase power consumption.
So the faster the cpu is, the quicker it'll go on idle (min cpu 200) which is powersaving freq and the faster u'll turn OFF the screen, and logical bigger time on suspend --> deep sleep :highfive:
ace2nutzer said:
I suggest to keep it unchecked, otherwise it'll change the profile randomly, and that's probably not what u want.
There's still no fix ! But what i did is to add the perf. profile in my control app ... that works fully independently.
But that's probably not what u guys want.
My last try was to do that over build.prop .. this works only for around 15 seconds (after wiping dalvik cache it's around 30 sec.) and then it sets back to "balanced" .. so i use it anyway just for speeding up the boot sequence:
Code:
# CM Performance Profiles (only during boot)
# 0= powersave; 1= balanced; 2= performance - default
sys.perf.profile=2
IMO the best way is to add the perf. profiles button to the quick settings, then it's very easy to switch between the 3 profiles.
Using the same profile for everything is for sure not the best option if u want performance + powersave at the same time.
Personally i use performance, and when i read an pdf or watch a YouTube Video then i switch to powersave.
Using powersave or even balanced for normal usage isn't recommended as it can drain even more battery than using performance, because it's slower and the CPU will stay too long on max. freq and the LCD also will stay longer ON, which leads both to increase power consumption.
So the faster the cpu is, the quicker it'll go on idle (min cpu 200) which is powersaving freq and the faster u'll turn OFF the screen, and logical bigger time on suspend --> deep sleep :highfive:
Click to expand...
Click to collapse
Sorry for so late response, I had to take a break in a development because suddenly got sick with a flu (I'm fine now, btw) :silly:
I think I've found a temporary solution to this bug, take a look if you're interested:
https://github.com/ChronoMonochrome...mmit/bd0dcce403633543f1bf11e5f8b476a3e88322cb
New build is up!
Changelog
R4.6.2
rebased to CM14.1 branch (added support for 6.0.1 and 7.1.2 ROMs) *
Hey there! I've been testing 6.0.1 / 7.1.2 ROMs and I've recently got some issues with camera on 3.4.x kernel build, so I've decided to release a new refresh build (based on 3.0.101 sources).
I've rebased the most of recent changes to CM14.1 branch in order to support these ROMs (so if you're using older ROMs like stock 4.1.2 then better to use previous release cause some patches might be missing here).
Another "kernel optimizer"?
No. Well, yes. However, a "kernel optimizer" is a poor way to put it. KTweak performs kernel adjustments based on facts and evidence, unlike other optimizers with poorly written or heavily obfuscated code. For example:
LSpeed is almost 4000 lines long; completely unnecessary.
NFS Injector uses compiled binaries that are closed source... yuck. Not to mention the typos in the README. This one is hard to look at.
LKT sets random nonsensical build.props that likely don't even exist.
MAGNETAR uses (you guessed it) compiled binaries that install themselves to your /system/etc/ directory (???). Great idea, install an external closed source, compiled binary to the system partition.
Need I go on?
What's different about KTweak?
Unlike other "kernel optimizers", KTweak is:
Concice, at around 200 lines long,
Entirely open source with no compiled components,
Backed by logic and evidence,
Designed by an experienced kernel developer,
Non-intrusive, being completely systemless.
Benchmarks
The following benchmarks were performed on a OnePlus 7 Pro running the stock kernel provided by the OEM on Android 10.
hackbench -pTl 4000 (lower is better)
Without KTweak: ~20-50 seconds on average
With KTweak: ~4-6 seconds on average
perf bench mem memcpy (lower is better) (average of 50 iters)
Without KTweak: 14.01 ms
With KTweak: 10.40 ms
synthmark (voicemark) (higher is better)
Without KTweak: 374.94
With KTweak: 383.556
synthmark (latencymark little) (lower is better)
Without KTweak: 10
With KTweak: 10
synthmark (latencymark big) (lower is better)
Without KTweak: 12
With KTweak: 10
The Tweaks
In order to remain genuine, I have commited to explaining each and every kernel tweak that KTweak applies. Grab your coffee, this could take a while.
kernel.perf_cpu_time_max_percent: 25 --> 5
This is the maximum CPU time long perf event processing can take as a percentage. If this percentage is exceeded (meaning perf event processing used too much CPU time), the polling rate is throttled. This is reduced from 25% to 5%. We can afford inaccuracies with perf events in exchange for more time that a foreground task can use.
kernel.sched_autogroup_enabled: 0 --> 1
The Linux Kernel scheduler (CFS) distributes timeslices to each active task. For example, if the scheduling period is 10ms, and there are 5 tasks running, CFS will give each task 2ms of runtime for that scheduling cycle. However, this means that a SCHED_OTHER task may compete with a SCHED_FIFO task. Autogrouping groups task groups together during scheduling. For example, if the scheduling period is 10ms, and there are 6 SCHED_OTHER tasks running and 4 SCHED_FIFO tasks running, the SCHED_OTHER tasks will get 50% of the runtime and the SCHED_FIFO tasks will get the other 50%. For each task group, the timeslices are once again divided. The SCHED_FIFO tasks will get 12.5% runtime and the SCHED_OTHER tasks will get ~8.3% runtime. This usually offers better interactivity on multithreaded platforms. See scheduling priority documentation: https://man7.org/linux/man-pages/man7/sched.7.html See autogrouping off: https://www.youtube.com/watch?v=uk70SeGA7pg See autogrouping on: https://www.youtube.com/watch?v=prxInRdaNfc
kernel.sched_enable_thread_grouping: 0 --> 1
To my knowledge using the limited documentation of this tunable, this is basically autogrouping for thread groups.
kernel.sched_child_runs_first: 0 --> 1
When forking a child process from the parent, execute the child process before the parent process. This usually shaves down some latency on task initializations, since most of the time the child process is doing some form of heavy lifting.
kernel.sched_downmigrate: 20 20
Do not allow tasks to migrate back down to a lower-power CPU until the estimated CPU utilization would go below 20% on said CPU. This means tasks will stay on higher-performance CPUs for longer than usual.
kernel.sched_upmigrate: 80 80
Similar to the previous tunable, do not allow CPUs to migrate to the higher-performance CPUs unless the utilization goes above 80%.
kernel.sched_group_downmigrate: 20
The same as kernel.sched_downmigrate, except for whole task groups.
kernel.sched_group_upmigrate: 80
The same as kernel.sched_upmigrate, except for whole task groups.
kernel.sched_tunable_scaling: 0
This is more of a precaution than anything. Since the next few tunables will be scheduler timing related, we don't want the scheduler to scale our values for multiple CPUs, as we will be providing CPU-agnostic values.
kernel.sched_latency_ns: 10000000 (10ms)
Set the default scheduling period to 10ms. If this value is set too low, the scheduler will switch contexts too often, spending more time internally than executing the waiting tasks.
kernel.sched_min_granularity_ns: 1000000 (1ms)
Set the minimum task scheduling period to 1ms. With kernel.sched_latency_ns set to 1ms, this means that 10 tasks may execute within the 10ms scheduling period before we exceed it.
kernel.sched_migration_cost_ns: 500000 (0.5ms) --> 1000000 (1ms)
Increase the time that a task is considered to be cache hot. According to RedHat, increasing this tunable reduces the number of task migrations. This should reduce time spent balancing tasks and increase per-task performance. See RedHat: https://www.redhat.com/files/summit...tuning-of-Red-Hat-Enterprise-Linux-Part-1.pdf
kernel.sched_min_task_util_for_boost: 25
This value effects if tasks should be migrated to a higher performant CPU if it's utilization is above this amount. Allow tasks to be migrated upwards if the user is triggering a touch boost and the task is above 25% utilization.
kernel.sched_min_task_util_for_colocation: 50
This value is the same as the former, except it occurs when the user is not touching the screen. We shouldn't upmigrate tasks if the user isn't actively interacting with them (i.e. video streaming).
kernel.sched_nr_migrate: 32 --> 64
When migrating tasks between CPUs, allow the scheduler to migrate twice as many as usual. This should increase scheduling latency marginally, but increase the performance of SCHED_OTHER tasks.
kernel.sched_schedstats: 1 --> 0
Disable scheduler statistics accounting. This is just for debugging, but it adds overhead.
kernel.sched_wakeup_granularity_ns: 1000000 (1ms) --> 5000000 (5ms)
Require the current task to be surpassing the new task in vmruntime by 5ms instead of 1ms before preemption occurs. This should reduce jitter due to less frequent task interruptions.
kernel.timer_migration: 1 --> 0
Disable the migration of timers among CPUs. Usually, when a timer is created on one CPU, it would be able to be migrated to another CPU. However, this increases realtime latencies and scheduling interrupts. It can be turned off.
net.ipv4.tcp_ecn: 2 --> 1
Enable Explicit Congestion Notification for incoming and outgoing negotiations. This reduces packet losses.
net.ipv4.tcp_fastopen: 3
Enable data transmission during the SACK exchange point in TCP negotiation. This reduces packet latencies. Enable it for senders and receivers.
net.ipv4.tcp_syncookies: 1 --> 0
This tunable, when enabled, prevents denial of service attacks by allowing connection ACKs to be tracked. However, this is more-or-less unnecessary for a mobile device. It is more applicable for servers. Disable it.
net.ipv4.tcp_timestamps: 1 --> 0
RedHat claims that TCP timestamps may cause performance spikes due to time accounting code on high-performance connections. Disable it. See RedHat: https://access.redhat.com/documenta...ml/tuning_guide/reduce_tcp_performance_spikes
vm.compact_unevictable_allowed: 1 --> 0
Do not allow compaction of unevictable pages. With this set to 1, more compactions can happen at the cost of small page fault stalls. Turn this off to compact less but avoid aforementioned stalls.
vm.dirty_background_ratio: 5 --> 10
Start writing back dirty pages (pages that have been modified but not yet written to the disk) asynchronously at 10% memory dirtied instead of 5%. Writing dirty pages back too early can be inefficient and overutilize the storage device.
vm.dirty_ratio: 20 --> 30
This tunable is the same as the former, but it is the ceiling for synchronous dirty writeback, meaning all I/O will stall until all dirty pages are written out to the disk. We usually won't need to worry about hitting this value, as the background writeback can catch up before we reach 20% memory dirtied. But as a precaution (i.e. heavy file transfers), increase this value to a 30% ceiling to prevent visible system stalls. We are sacrificing available memory in exchange for a reduced change of a brief system stall.
vm.dirty_expire_centisecs: 300 (3s) --> 1000 (10s)
This is the longest that dirty pages can remain in the system before they are forcefully written out to the disk. By increasing this value, we can allow the dirty background writeback to take its time asynchronously, and avoid unnecessary writebacks that can clog the flusher thread.
vm.dirty_writeback_centisecs: 500 (5s) --> 0 (0s)
Do not periodically writeback data every 5 seconds. Instead, leave it to the dirty background writeback to wake up when the dirty memory of the system hits 10%. This allows the dirty pages to stay in memory for longer, possibly increasing cache locality as the page cache is still available in memory.
vm.extfrag_threshold: 500 --> 750
Compact memory more often, even if the memory allocation was estimated to be due to a low-memory status. This lets us put more data into RAM at the expense of running compation more often. This is a worthy tradeoff, as it reduces memory fragmentation, which is incredibly important for ZRAM.
vm.oom_dump_tasks: 1 --> 0
Do not dump debug information when (or if) we run out of memory. If we have a lot of tasks running, and are OOMing often, then this overhead can add up.
vm.page-cluster: 3 --> 0
Disable reading additional pages from the swap device (in most cases, ZRAM). This is the same philosophy as disabling readahead.
vm.reap_mem_on_sigkill: 0 --> 1
When we kill a task, clean its memory footprint to free up whatever amount of RAM it was consuming.
vm.stat_interval: 1 --> 10
Update /proc/stat information every 10 seconds instead of every second, reducing jitter on loaded systems.
vm.swappiness: 100 --> 80
Swap to ZRAM less often if we don't have to. ZRAM can become expensive due to constant compression and decompression. If we can keep some of the memory uncompressed in regular RAM, we can avoid that overhead.
vm.vfs_cache_pressure: 100 --> 200
This tunable controls the kernel's tendency to reclaim inodes and dentries over page cache. Inodes and dentries are information about file metadata and directory structures, while page cache is the actual cached contents of a file. By increasing this value to 200, we tell the kernel to prefer claiming inodes and dentries over the page cache, increasing the chance of a cache hit when referencing recently used data, while not polluting the RAM with less-important information.
Next Buddy
By scheduling the last woken task first, we can increase cache locality since that task is likely to touch the same data as before.
No Strict Skip Buddy
Usually, the scheduler will always choose to skip tasks that call yield(). However, these yeilding tasks may be of higher importance than the last or next buddy that are available. Do not always skip the skip buddy if we don't have to.
No Nontask Capacity
The scheduler decrements the perceived CPU capacity that longer the CPU has been idle for. This means that an idle CPU may be skipped during task placement, and a task can be grouped with a busier CPU. Disable this to improve task start latency.
TTWU Queue
Allow the scheduler to place tasks on their origin CPU, increasing cache locality if the CPU is non-local (i.e. a cache hit would definitely have been missed).
Governor Tweaks
hispeed_load: 90 --> 80: Jump to a higher frequency if we are approaching the end of the frequency list, where a task may begin to starve or begin to stutter.
hispeed_freq: : Set the "higher freq" (referencing hispeed_load) to the maximum frequency available to take advantage of Race-To-Idle.
CAF CPU Boost Tweaks
input_boost_freq: 1.4 GHz (closest freq) as a generic, universal boost frequency to the little cluster.
input_boost_ms: 250 ms, not consuming too much power but boosting for important, interactive events such as clicking on things.
I/O
iostats: 1 --> 0: Disable I/O statistics accounting, which adds overhead.
readahead: 0: Disable readahead, which is intended for disks with long seek times (HDD), whereas mobile devices use flash storage with zero seek time.
nr_requests: 128 --> 512: Allow more I/O requests to be issued before flushing the queue, slightly increasing latencies but allowing more requests to be executed before being put to sleep.
noop / none: Use a scheduler with little CPU overhead to reduce I/O latencies, which is essential for fast flash storage (eMMC & UFS).
ZRAM
ZRAM reduces disk wear by reducing disk writes, and also increases cache locality by allowing more data to fit in RAM at once. KTweak configures ZRAM to take up at most half of the available RAM on the system, which is a good ratio of RAM to ZRAM for a mobile device.
Other Notes
You should know that KTweak applies after 60s of uptime as to prevent Android's init from overwriting any values.
Contact
You can find me on telegram at @tytydraco. Feel free to email me at [email protected].
Downloads
All releases and the entire source code for KTweak is available on GitHub:
Downloads
XDA:DevDB Information
KTweak, Tool/Utility for all devices (see above for details)
Contributors
tytydraco, tytydraco
Source Code: https://github.com/tytydraco/ktweak
Version Information
Status: Stable
Current Stable Version: v1.0.7
Stable Release Date: 2020-08-16
Created 2020-08-16
Last Updated 2020-08-16
What are the requirements to use this? Root with Magisk is a given - but Linux kernel version, Android OS version, device, etc?
MishaalRahman said:
What are the requirements to use this? Root with Magisk is a given - but Linux kernel version, Android OS version, device, etc?
Click to expand...
Click to collapse
The script adjusts only the tweaks that are compatible with your version. It contains tweaks for EAS, HMP, and supports 3.18 and above in testing. It likely supports even lower. Otherwise, it's totally universal.
KTweak now has an official Telegram channel for release information and changelogs: @ktweak
Thank you for your work and great explanation ?
This will work on lineage kernel?
Hello there. Im using ver 1.0.9. I updated and tried 1.1.0 but ended up in reboots after boot complete. I am using NX kernel which seta vfs cache pressure to 100. May that be the case?
Now back to 1.0.9 and everything seems fine. However, I had to uninstall and reinstall magisk, because when Ive flashed 1.0.9 ober 1.1.0, I was still experiwncing problems.
lapirado said:
Thank you for your work and great explanation ?
This will work on lineage kernel?
Click to expand...
Click to collapse
This should work on any kernel
myaslioglu said:
Hello there. Im using ver 1.0.9. I updated and tried 1.1.0 but ended up in reboots after boot complete. I am using NX kernel which seta vfs cache pressure to 100. May that be the case?
Now back to 1.0.9 and everything seems fine. However, I had to uninstall and reinstall magisk, because when Ive flashed 1.0.9 ober 1.1.0, I was still experiwncing problems.
Click to expand...
Click to collapse
Hi! Thanks for the report. Which device and Android version are you using? I have an idea of why this could be happening.
myaslioglu said:
Hello there. Im using ver 1.0.9. I updated and tried 1.1.0 but ended up in reboots after boot complete. I am using NX kernel which seta vfs cache pressure to 100. May that be the case?
Now back to 1.0.9 and everything seems fine. However, I had to uninstall and reinstall magisk, because when Ive flashed 1.0.9 ober 1.1.0, I was still experiwncing problems.
Click to expand...
Click to collapse
Hi myaslioglu,
I've released v1.1.1 which adds an additional 20 second sleep after Android reports that it has been initialized. This should prevent init and any post-boot init scripts from running alongside ktweak. I believe your issue stems from ZRAM resizing itself alongside bootup, where memory is most scarce, possibly causing your device to think it failed to bootup correctly.
Please let me know if v1.1.1 fixes your issue. It is live on GitHub releases and Telegram.
tytydraco said:
Hi myaslioglu,
I've released v1.1.1 which adds an additional 20 second sleep after Android reports that it has been initialized. This should prevent init and any post-boot init scripts from running alongside ktweak. I believe your issue stems from ZRAM resizing itself alongside bootup, where memory is most scarce, possibly causing your device to think it failed to bootup correctly.
Please let me know if v1.1.1 fixes your issue. It is live on GitHub releases and Telegram.
Click to expand...
Click to collapse
Hello. Sorry I forgot to report my device, it is s8 exynos just in case. But 1.1.1 fixed the issue. Works perfect! Thanks
myaslioglu said:
Hello. Sorry I forgot to report my device, it is s8 exynos just in case. But 1.1.1 fixed the issue. Works perfect! Thanks
Click to expand...
Click to collapse
1.1.2 got me reboots again. What has changed? Only the swappiness? Worked fine on 1.1.1 and did not work on 1.1.0 as aforementioned.
Can zram be the issue?
1.1.1 made my op7pro freeze with weeb kernel ??* and we have the same device draco
Doesn't work on stock kernel of redmi note 9s, freezes a few seconds after boot,forcing me to hard restart
It compatible with j5 (2015)?
To those of you getting freezes, I have identified the cause to be related to ZRAM. I will push an update today that will remove ZRAM tweaking from the script.
The reason I believe this is happening is because ktweak tries to resize the ZRAM. That requires all data that is currently in ZRAM to decompress and enter your main memory unit. If we run out of memory during this process, we will freeze.
The solution is to not adjust the zram size when using ktweak. Sorry for the inconveniences that may have been caused. I'll get straight to fixing this as soon as possible.
I've heard about your work from xda Telegram channel.
I read the info and thought to test it, but as some users reported as latest update having freeze issue. I'll test with freeze issue fixed update.?
tytydraco said:
To those of you getting freezes, I have identified the cause to be related to ZRAM. I will push an update today that will remove ZRAM tweaking from the script.
The reason I believe this is happening is because ktweak tries to resize the ZRAM. That requires all data that is currently in ZRAM to decompress and enter your main memory unit. If we run out of memory during this process, we will freeze.
The solution is to not adjust the zram size when using ktweak. Sorry for the inconveniences that may have been caused. I'll get straight to fixing this as soon as possible.
Click to expand...
Click to collapse
I ever disabled ZRAM on my OP7 PRO feels more fluid
Is working on mi 10 pro?
Vivo v9
How can I root vivo v9 1723?
I tried many methods but nothing work for me.
Please help
tyagis777 said:
How can I root vivo v9 1723?
I tried many methods but nothing work for me.
Please help
Click to expand...
Click to collapse
Really? You created an account for this post?