MIUI Debloat + Optmizations - Redmi K20 / Xiaomi Mi 9T Themes, Apps, and Mods

Hey Guys, i've made a script to debloat MIUI and to install some Kernel optimizations at the INIT.D folder plus anti Google Play Services Wakelock Script (at INIT.D as well).
Usually i use it on mi-globe and MIUI-MIX but it should work for Xiaomi.eu, Global and Chinese ROMs too (both beta and stable).
Thanks to @kevp75 for the line:
Code:
ifelse(
(is_mounted("/system")), (
assert(run_program("/sbin/mount", "-o", "remount,rw", "/system"));
), (
assert(run_program("/sbin/mount", "-o", "rw", "/dev/block/bootdevice/by-name/system", "/system_root"));
)
);
ATTENTION!! I ONLY RECOMMEND USING THE OFFICIAL TWRP, ORANGEFOX AND MAURONO UNOFFICIAL DOES NOT WORK!!
https://twrp.me/xiaomi/xiaomimi9t.html
Instalation:
1 - Reboot in to TWRP after first boot and setup.
2 - Make a nanodroid full system Backup for safety.
3 - Go to Mount and make sure SYSTEM is mounted!
4 - Run the script.
5 - Reboot in to system.
6 - Profit.
If you wipe the system partition, you will need to reboot in to the OS and back to TWRP before flash the debloat script.
Download:
https://androidfilehost.com/?fid=4349826312261796697
What will it debloat:
Code:
delete_recursive("/system/app/AiAsstVision");
delete_recursive("/system/app/AnalyticsCore");
delete_recursive("/system/app/BTProductionLineTool");
delete_recursive("/system/app/BasicDreams");
delete_recursive("/system/app/BookmarkProvider");
delete_recursive("/system/app/BuiltInPrintService");
delete_recursive("/system/app/CatchLog");
delete_recursive("/system/app/Cit");
delete_recursive("/system/app/CloudPrint2");
delete_recursive("/system/app/Email");
delete_recursive("/system/app/FM");
delete_recursive("/system/app/GooglePrintRecommendationService");
delete_recursive("/system/app/GoogleTTS");
delete_recursive("/system/app/GuardProvider");
delete_recursive("/system/app/Health");
delete_recursive("/system/app/Joyose");
delete_recursive("/system/app/KSICibaEngine");
delete_recursive("/system/app/Lens");
delete_recursive("/system/app/MarkupGoogle");
delete_recursive("/system/app/MiLinkService");
delete_recursive("/system/app/MiPlayClient");
delete_recursive("/system/app/MiRadio");
delete_recursive("/system/app/MiuiBugReport");
delete_recursive("/system/app/MiuiCompass");
delete_recursive("/system/app/MiuiContentCatcher");
delete_recursive("/system/app/MiuiDaemon");
delete_recursive("/system/app/MiuiAccessibility");
delete_recursive("/system/app/MiuiSuperMarket");
delete_recursive("/system/app/MiuiVideoGlobal");
delete_recursive("/system/app/NextPay");
delete_recursive("/system/app/PartnerBookmarksProvider");
delete_recursive("/system/app/PaymentService");
delete_recursive("/system/app/PrintRecommendationService");
delete_recursive("/system/app/PrintSpooler");
delete_recursive("/system/app/SoundPickerPrebuilt");
delete_recursive("/system/app/Stk");
delete_recursive("/system/app/WPS_lite");
delete_recursive("/system/app/XMCloudEngine");
delete_recursive("/system/app/YellowPage");
delete_recursive("/system/app/YouDaoEngine");
delete_recursive("/system/app/greenguard");
delete_recursive("/system/app/lens");
delete_recursive("/system/app/mi_connect_service");
delete_recursive("/system/app/wps_lite");
delete_recursive("/system/app/Zman");
delete_recursive("/system/data-app/");
delete_recursive("/system/data-app/BaiduIME");
delete_recursive("/system/data-app/Email");
delete_recursive("/system/data-app/MiFinance");
delete_recursive("/system/data-app/MiMobileNoti");
delete_recursive("/system/data-app/MiShop");
delete_recursive("/system/data-app/XiaomiSpeechEngine");
delete_recursive("/system/data-app/cn.wps.moffice_eng");
delete_recursive("/system/data-app/com.eg.android.AlipayGphone");
delete_recursive("/system/data-app/com.taobao.taobao");
delete_recursive("/system/data-app/com.xunmeng.pinduoduo");
delete_recursive("/system/priv-app/BATestApp");
delete_recursive("/system/priv-app/CleanMaster");
delete_recursive("/system/priv-app/DynamicSystemInstallationService");
delete_recursive("/system/priv-app/GoogleFeedback");
delete_recursive("/system/priv-app/GooglePartnerSetup");
delete_recursive("/system/priv-app/HotwordEnrollmentOKGoogleWCD9340");
delete_recursive("/system/priv-app/HotwordEnrollmentXGoogleWCD9340");
delete_recursive("/system/priv-app/MiMoverGlobal");
delete_recursive("/system/priv-app/MiRecycle");
delete_recursive("/system/priv-app/MiService");
delete_recursive("/system/priv-app/MiShare");
delete_recursive("/system/priv-app/PersonalAssistant");
delete_recursive("/system/priv-app/QuickSearchBox");
delete_recursive("/system/priv-app/Updater");
delete_recursive("/system/priv-app/Velvet");
delete_recursive("/system/priv-app/VpnDialogs");
delete_recursive("/system/priv-app/WellbeingPrebuilt");
delete_recursive("/system/priv-app/YellowPage");
delete_recursive("/system/product/app/GoogleLocationHistory");
delete_recursive("/system/product/app/GoogleTTS");
delete_recursive("/system/product/app/SoundPickerPrebuilt");
delete_recursive("/system/product/app/uceShimService");
delete_recursive("/system/product/app/xdivert");
delete_recursive("/system/product/priv-app/CarrierServices");
delete_recursive("/system/product/priv-app/GoogleAssistant");
delete_recursive("/system/product/priv-app/GoogleFeedback");
delete_recursive("/system/product/priv-app/HotwordEnrollmentOKGoogleHEXAGON");
delete_recursive("/system/product/priv-app/HotwordEnrollmentXGoogleHEXAGON");
delete_recursive("/system/product/priv-app/Launcher3QuickStep");
delete_recursive("/system/product/priv-app/Velvet");
delete_recursive("/system/vendor/app/CneApp");
delete_recursive("/system/vendor/app/aiasst_service");
delete_recursive("/system/vendor/data-app/");
delete_recursive("/system/vendor/data-app/SmartHome");
delete_recursive("/system/vendor/data-app/aiasst_service");
delete_recursive("/system/vendor/data-app/wps-lite");
Kernel Optimization Script:
Code:
#!/system/bin/sh
setenforce 0
set enforce 0
echo 'Y' > /sys/module/sync/parameters/fsync_enabled
sysctl -w net.ipv4.tcp_congestion_control=cubic
#echo '254 255 256' > /sys/devices/platform/kcal_ctrl.0/kcal
#echo '1' > /sys/devices/platform/kcal_ctrl.0/kcal_enable
#echo '290' > /sys/devices/platform/kcal_ctrl.0/kcal_sat
#echo '261' > /sys/devices/platform/kcal_ctrl.0/kcal_val
#echo '264' > /sys/devices/platform/kcal_ctrl.0/kcal_cont
#echo '35' > /sys/devices/platform/kcal_ctrl.0/kcal_min
#echo '0' > /sys/devices/platform/kcal_ctrl.0/kcal_hue
echo 'Y' > /sys/module/wakeup/parameters/enable_timerfd_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_qcom_rx_wakelock_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_netlink_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_ipa_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_wlan_wake_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_wlan_ctrl_wake_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_wlan_rx_wake_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_msm_hsic_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_si_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_smb135x_wake_ws
#echo '0' > /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk
#chmod 666 /sys/module/lowmemorykiller/parameters/minfree
#chown root /sys/module/lowmemorykiller/parameters/minfree
echo '16384,20736,24576,32256,85296,120640' > /sys/module/lowmemorykiller/parameters/minfree
echo '75' > /proc/sys/vm/swappiness
echo '17' > /proc/sys/vm/dirty_ratio
#echo '0' > /sys/kernel/sched/gentle_fair_sleepers
#echo '2830' > /sys/class/timed_output/vibrator/vtg_level
echo '3' > /sys/kernel/power_suspend/power_suspend_mode
echo '1' > /sys/kernel/fast_charge/force_fast_charge
Google Play Services Anti-Wakelock Script:
Code:
#!/system/bin/sh
setenforce 0
powerService.goToSleep(SystemClock.uptimeMillis() + 1);
echo disable_pm_suspend > /sys/power/wake_unlock
android.permission.WAKE_UNLOCK
/sys/power/wake_unlock
killall -9 android.process.media
killall -9 mediaserver
for apk in $(pm list packages -3 | sed 's/package://g' | sort); do
# Analytics
pm disable $apk/com.google.android.gms.analytics.AnalyticsService
pm disable $apk/com.google.android.gms.analytics.AnalyticsJobService
pm disable $apk/com.google.android.gms.analytics.CampaignTrackingService
pm disable $apk/com.google.android.gms.measurement.AppMeasurementService
pm disable $apk/com.google.android.gms.measurement.AppMeasurementJobService
pm disable $apk/com.google.android.gms.analytics.AnalyticsReceiver
pm disable $apk/com.google.android.gms.analytics.CampaignTrackingReceiver
pm disable $apk/com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver
pm disable $apk/com.google.android.gms.measurement.AppMeasurementReceiver
pm disable $apk/com.google.android.gms.measurement.AppMeasurementContentProvider
pm disable $apk/com.crashlytics.android.CrashlyticsInitProvider
# Ads
pm disable $apk/com.google.android.gms.ads.AdActivity
# Firebase
pm disable $apk/com.google.firebase.iid.FirebaseInstanceIdService
done
exit 0
"I don't want to debloat an app that it does"
To fix that, you will need to update the script your self, but it's quite easy.
1 - Download the script on a Windows based PC that has 7zip and notepad++ installed.
2 - Open the script with zip and navigate to: "META-INF\com\google\android"
3 - Extract the file "updater-script"
4 - Edit it with notepad++ and look at the app you wish it would not debloat (for example, Clean Master)
5 - The delete the line that says "delete_recursive" and the app path (ex: delete_recursive("/system/priv-app/CleanMaster"); )
6 - Save the script and push it back to the zip file
Some apps such as maps, Google Assistant and Android Auto may be debloated on the script, but if you install it via the playstore after, the script will not debloat it, as it wont be a system app anymore.
Current version: v10 (05/03/2020)

Seems to work but phone gets a bit laggy sometimes...

mejgs said:
Seems to work but phone gets a bit laggy sometimes...
Click to expand...
Click to collapse
It may be the VM and OOM, i'll take off those "optimizations" on the next release tomorrow.
What TWRP did you use, if you don't mind me asking.

New Build Up!
Lag should stop now that i disable the VM and OOM custom parameters, plus i added CatchLog to uninstall.

Pupet_Master said:
It may be the VM and OOM, i'll take off those "optimizations" on the next release tomorrow.
What TWRP did you use, if you don't mind me asking.
Click to expand...
Click to collapse
I used 4pda's

Pupet_Master said:
Hey Guys, i've made a script to debloat MIUI and to install some Kernel optimizations at the INIT.D folder plus anti Google Play Services Wakelock Script (at INIT.D as well) and full hosts for adblock without any external app.
Now, i may add more things to debloat since this script was optimized for Redmi Note 5 Pro Whyred and even though it work on that device, on the Redmi 4X Santoni and even on a Moto G LTE Peregrine.. on 4PA TWRP it didn't work. I'm still troubleshooting why. Once i figure out another TWRP that allow me to flash it or what i'm doing wrong (since it isn't a script issue, it's a recovery problem) i'll test other system apps to debloat specific from our Mi9t DaVinci.
That being said, i would like you guys to test it, see if it work for you guys and give me a feedback to what TWRP do you guys use/ what version of MIUI you guys debloated.
Usually i use it on mi-globe but it should work for Xiaomi.eu, Global and Chinese ROMs too (both beta and stable).
Instalation:
1 - Reboot in to TWRP after first boot and setup.
2 - Make a nanodroid full system Backup for safety.
3 - Run the script.
4 - Reboot in to system.
5 - Profit.
Download:
https://androidfilehost.com/?fid=1899786940962594365
What will it debloat:
Code:
"/system/app/AnalyticsCore"
"/system/app/BasicDreams"
"/system/app/BuiltInPrintService"
"/system/app/CatchLog"
"/system/app/CloudPrint2"
"/system/app/Email"
"/system/app/GooglePrintRecommendationService"
"/system/app/greenguard"
"/system/app/KSICibaEngine"
"/system/app/Lens"
"/system/app/MarkupGoogle"
"/system/app/MiDrive"
"/system/app/MiuiBugReport"
"/system/app/MiuiDaemon"
"/system/app/MiuiSuperMarket"
"/system/app/PrintRecommendationService"
"/system/app/PrintSpooler"
"/system/app/SoundPickerPrebuilt"
"/system/app/Stk"
"/system/app/YellowPage"
"/system/app/YouDaoEngine"
"/system/data-app/"
"/system/data-app/BaiduIME"
"/system/data-app/cn.wps.moffice_eng"
"/system/data-app/com.eg.android.AlipayGphone"
"/system/data-app/com.taobao.taobao"
"/system/data-app/com.xunmeng.pinduoduo"
"/system/data-app/Email"
"/system/data-app/MiFinance"
"/system/data-app/MiMobileNoti"
"/system/data-app/MiShop"
"/system/data-app/XiaomiSpeechEngine"
"/system/priv-app/BATestApp"
"/system/priv-app/Browser"
"/system/priv-app/GoogleBackupTransport"
"/system/priv-app/GoogleFeedback"
"/system/priv-app/MiRecycle"
"/system/priv-app/MusicFX"
"/system/priv-app/HotwordEnrollmentOKGoogleWCD9340"
"/system/priv-app/HotwordEnrollmentXGoogleWCD9340"
"/system/priv-app/Velvet"
"/system/priv-app/WellbeingPrebuilt"
"/system/priv-app/YellowPage"
"/system/vendor/data-app/"
"/system/vendor/data-app/SmartHome"
"/system/vendor/data-app/wps-lite"
"/system/vendor/data-app/aiasst_service"
"/system/vendor/app/aiasst_service"
"/system/app/lens"
"/vendor/data-app/SmartHome"
"/vendor/data-app/wps-lite"
"/data/app/SmartHome"
"/data/app/wps-lite"
"/data/app/aiasst_service"
Full Hosts by Masik ROM (thank Masik Devs)
Kernel Optimization Script:
Code:
#!/system/bin/sh
setenforce 0
set enforce 0
echo 'Y' > /sys/module/sync/parameters/fsync_enabled
sysctl -w net.ipv4.tcp_congestion_control=westwood
#echo '254 255 256' > /sys/devices/platform/kcal_ctrl.0/kcal
#echo '1' > /sys/devices/platform/kcal_ctrl.0/kcal_enable
#echo '290' > /sys/devices/platform/kcal_ctrl.0/kcal_sat
#echo '261' > /sys/devices/platform/kcal_ctrl.0/kcal_val
#echo '264' > /sys/devices/platform/kcal_ctrl.0/kcal_cont
#echo '35' > /sys/devices/platform/kcal_ctrl.0/kcal_min
#echo '0' > /sys/devices/platform/kcal_ctrl.0/kcal_hue
echo 'Y' > /sys/module/wakeup/parameters/enable_timerfd_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_qcom_rx_wakelock_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_netlink_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_ipa_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_wlan_wake_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_wlan_ctrl_wake_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_wlan_rx_wake_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_msm_hsic_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_si_ws
echo 'Y' > /sys/module/wakeup/parameters/enable_smb135x_wake_ws
#echo '0' > /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk
#chmod 666 /sys/module/lowmemorykiller/parameters/minfree
#chown root /sys/module/lowmemorykiller/parameters/minfree
#echo '19712,22272,36864,58368,65792,108494' > /sys/module/lowmemorykiller/parameters/minfree
#echo '0' > /sys/kernel/sched/gentle_fair_sleepers
#echo '2830' > /sys/class/timed_output/vibrator/vtg_level
echo '3' > /sys/kernel/power_suspend/power_suspend_mode
echo '1' > /sys/kernel/fast_charge/force_fast_charge
Google Play Services Anti-Wakelock Script:
Code:
#!/system/bin/sh
setenforce 0
powerService.goToSleep(SystemClock.uptimeMillis() + 1);
echo disable_pm_suspend > /sys/power/wake_unlock
android.permission.WAKE_UNLOCK
/sys/power/wake_unlock
killall -9 android.process.media
killall -9 mediaserver
for apk in $(pm list packages -3 | sed 's/package://g' | sort); do
# Analytics
pm disable $apk/com.google.android.gms.analytics.AnalyticsService
pm disable $apk/com.google.android.gms.analytics.AnalyticsJobService
pm disable $apk/com.google.android.gms.analytics.CampaignTrackingService
pm disable $apk/com.google.android.gms.measurement.AppMeasurementService
pm disable $apk/com.google.android.gms.measurement.AppMeasurementJobService
pm disable $apk/com.google.android.gms.analytics.AnalyticsReceiver
pm disable $apk/com.google.android.gms.analytics.CampaignTrackingReceiver
pm disable $apk/com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver
pm disable $apk/com.google.android.gms.measurement.AppMeasurementReceiver
pm disable $apk/com.google.android.gms.measurement.AppMeasurementContentProvider
pm disable $apk/com.crashlytics.android.CrashlyticsInitProvider
# Ads
pm disable $apk/com.google.android.gms.ads.AdActivity
# Firebase
pm disable $apk/com.google.firebase.iid.FirebaseInstanceIdService
done
exit 0
Click to expand...
Click to collapse
Seems very nice I will test it. I think it's like L-Speed, NFS, FDE.AI or LKT kernel improvements but for MIUI while You are debloating stuff.
Is it working on MIUI 11?

Ky0sHiR0 said:
Seems very nice I will test it. I think it's like L-Speed, NFS, FDE.AI or LKT kernel improvements but for MIUI while You are debloating stuff.
Is it working on MIUI 11?
Click to expand...
Click to collapse
First, thanks for the feedback guys
Yes, you got it right but it go beyond lkt once se get kcal on our device as i tune the colors too (currently disabled though).
And yes it work on miui11

New Build Up!!
Added these apps on the list to be debloated:
/system/app/XMCloudEngine
/system/app/MiLinkService
Re Enabled the OOM setting for memory Management (report if phone get sluggish or not please, as it should not).
echo '19712,22272,36864,58368,65792,108494' > /sys/module/lowmemorykiller/parameters/minfree

The transitions is getting slower. (EU ROM 10.3.15)

someone tested the script with the latest weekly miui 11, EU 9.9.26 ?

stefano alegnini said:
someone tested the script with the latest weekly miui 11, EU 9.9.26 ?
Click to expand...
Click to collapse
Should work fine as it don't mod the rom, just debloat and add scripts

I'm testing new parameters for ram management and virtual memory. Next new build should be smoother

New Build Up!
Changes on Kernel tuneup:
sysctl -w net.ipv4.tcp_congestion_control=cubic
echo '16384,20736,24576,32256,85296,120640' > /sys/module/lowmemorykiller/parameters/minfree
echo '75' > /proc/sys/vm/swappiness
echo '17' > /proc/sys/vm/dirty_ratio

Successfully installed on EU 9.9.26 everything is ok, let's show the battery statistics in a couple of days, thanks for your work

Pupet_Master said:
Hey Guys, i've made a script to debloat MIUI and to install some Kernel optimizations at the INIT.D folder plus anti Google Play Services Wakelock Script (at INIT.D as well) and full hosts for adblock without any external app.
Now, i may add more things to debloat since this script was optimized for Redmi Note 5 Pro Whyred and even though it work on that device, on the Redmi 4X Santoni and even on a Moto G LTE Peregrine.. on 4PA TWRP it didn't work. I'm still troubleshooting why. Once i figure out another TWRP that allow me to flash it or what i'm doing wrong (since it isn't a script issue, it's a recovery problem) i'll test other system apps to debloat specific from our Mi9t DaVinci.
That being said, i would like you guys to test it, see if it work for you guys and give me a feedback to what TWRP do you guys use/ what version of MIUI you guys debloated.
Usually i use it on mi-globe but it should work for Xiaomi.eu, Global and Chinese ROMs too (both beta and stable).
Instalation:
1 - Reboot in to TWRP after first boot and setup.
2 - Make a nanodroid full system Backup for safety.
3 - Run the script.
4 - Reboot in to system.
5 - Profit.
Download:
https://androidfilehost.com/?fid=1899786940962596493
Click to expand...
Click to collapse
Could you kindly drop a version without the hosts file?

ah.kh.ali1 said:
Could you kindly drop a version without the hosts file?
Click to expand...
Click to collapse
Sure I'll so it.in a couple of hours and I'll quote.you

ah.kh.ali1 said:
Could you kindly drop a version without the hosts file?
Click to expand...
Click to collapse
No hosts build up
https://androidfilehost.com/?fid=1899786940962597127

Pupet_Master said:
No hosts build up
https://androidfilehost.com/?fid=1899786940962597127
Click to expand...
Click to collapse
Thanks Alot.

Just flashed V4. I don't know what you did, but it's much smoother now

What does the no host means? Edit... No need I got it now

Related

[REF] Startup script speed tweaks

Hi guys,
UPDATE: Over time, I've modified some of these values in my SpeedMod kernel. The values here may not be the best ones.
NOTE: These tweaks are now included in kernels based on sztupy's Universal Lagfix, for example:
http://forum.xda-developers.com/showthread.php?t=822756
But they must be manually activated from the recovery menu.
I've been using Linux kernel tweaks in a startup script to make the phone smoother.
With these tweaks, the phone is quite smooth and fast even without using the filesystem lagfixes.
These settings are only useful for you if you know how to create and modify a startup script. I use the old playlogos hack myself, but I'm sure there are many new ways to do it now.
Code:
# Tweak cfq io scheduler
for i in $(ls -1 /sys/block/stl*) $(ls -1 /sys/block/mmc*) $(ls -1 /sys/block/bml*) $(ls -1 /sys/block/tfsr*)
do echo "0" > $i/queue/rotational
echo "1" > $i/queue/iosched/low_latency
echo "1" > $i/queue/iosched/back_seek_penalty
echo "1000000000" > $i/queue/iosched/back_seek_max
echo "3" > $i/queue/iosched/slice_idle
done
# Remount all partitions with noatime
for k in $(busybox mount | grep relatime | cut -d " " -f3)
do
sync
busybox mount -o remount,noatime $k
done
# Tweak kernel VM management
echo "0" > /proc/sys/vm/swappiness
#echo "10" > /proc/sys/vm/dirty_ratio
#echo "4096" > /proc/sys/vm/min_free_kbytes
# Tweak kernel scheduler, less aggressive settings
echo "18000000" > /proc/sys/kernel/sched_latency_ns
echo "3000000" > /proc/sys/kernel/sched_wakeup_granularity_ns
echo "1500000" > /proc/sys/kernel/sched_min_granularity_ns
# Misc tweaks for battery life
echo "2000" > /proc/sys/vm/dirty_writeback_centisecs
echo "1000" > /proc/sys/vm/dirty_expire_centisecs
EDIT: Explanations:
# Remount all partitions with noatime
atime is a setting where the filesystem updates the access time of a file. This creates a write-after-every-read which slows things down. By default all partitions are mounted with relatime, which is an optimized version of atime. noatime is the fastest, and afaik we don't need atime.
# Tweak cfq io scheduler
Tweaked settings of the disk io scheduler more for flash memory. Defaults are optimized for spinning harddisks. Lowered the idle wait, re-enable the low latency mode of cfq, removed the penalty for back-seeks and explicitly tell the kernel the storage is not a spinning disk.
# Tweak kernel VM management
Set tendency of kernel to swap to minimum, since we don't use swap anyway.
Lower the amount of unwritten write cache to reduce lags when a huge write is required.
Increase tendency of kernel to keep block-cache to help with slower RFS filesystem.
Increase minimum free memory, in theory this should make the kernel less likely to suddenly run out of memory.
# Tweak kernel scheduler
Make the task scheduler more 'fair' when multiple tasks are running. This has a huge effect on UI and App responsiveness. These values (less aggressive settings) are 20% of the Linux defaults, and about half of the Android defaults.
# Miscellaneous tweaks
Increase the write flush timeouts to save some battery life.
___________________________________
EDIT: How to create/use a startup script:
You need root and busybox for this.
This procedure is adapted from the old OCLF which used this method to create a startup script in /system/userinit.sh
Check if the file /system/userinit.sh exists. If it does, u should just edit that file as the startup script and DO NOT do the procedure below.
Here's how to do it manually. Do this only if some other lagfix/patch has not already done the playlogos hack, otherwise u might overwrite the other script!
Create the startup script on your PC. Use adb to push it to /sdcard/userinit.sh
adb push userinit.sh /sdcard/userinit.sh
On your PC, create a file called playlogos1 with this content:
#!/system/bin/sh
sh /data/userinit.sh
playlogosnow
Use adb to push the playlogos1 file to /sdcard/playlogos1
adb push playlogos1 /sdcard/playlogos1
Now use adb shell, su and do this:
busybox mount -o remount,rw /system;
busybox cp /sdcard/userinit.sh /data/userinit.sh;
busybox mv /system/bin/playlogos1 /system/bin/playlogosnow;
busybox cp /sdcard/playlogos1 /system/bin/playlogos1;
chmod 755 /system/bin/playlogos1;
chmod 755 /data/userinit.sh;
The startup script will be /data/userinit.sh
The reason I put the startup script in /data is so that if you mess up the startup script and get stuck during boot, you can do a "clear data" from recovery, and the startup script will be erased.
Could you explain what this actually does for the non linux savvy, also maybe you could make a script/app for this so everyone else can try it ?
hardcore said:
Hi guys,
I've been using Linux kernel tweaks in a startup script to make the phone smoother.
With these tweaks, the phone is quite smooth and fast even without using the filesystem lagfixes.
These settings are only useful for you if you know how to create and modify a startup script. I use the old playlogos hack myself, but I'm sure there are many new ways to do it now.
Code:
# Remount all partitions with noatime
for k in $(mount | cut -d " " -f3)
do
sync
mount -o remount,noatime $k
done
# Tweak cfq io scheduler
for i in $(ls -1 /sys/block/stl*) $(ls -1 /sys/block/mmc*) $(ls -1 /sys/block/bml*) $(ls -1 /sys/block/tfsr*)
do echo "0" > $i/queue/rotational
echo "1" > $i/queue/iosched/low_latency
echo "1" > $i/queue/iosched/back_seek_penalty
echo "1000000000" > $i/queue/iosched/back_seek_max
echo "3" > $i/queue/iosched/slice_idle
done
# Tweak kernel VM management
echo "0" > /proc/sys/vm/swappiness
echo "10" > /proc/sys/vm/dirty_ratio
echo "1000" > /proc/sys/vm/vfs_cache_pressure
echo "4096" > /proc/sys/vm/min_free_kbytes
# Tweak kernel scheduler
echo "2000000" > /proc/sys/kernel/sched_latency_ns
echo "500000" > /proc/sys/kernel/sched_wakeup_granularity_ns
echo "400000" > /proc/sys/kernel/sched_min_granularity_ns
# Miscellaneous tweaks
setprop dalvik.vm.startheapsize 8m
setprop wifi.supplicant_scan_interval 90
setprop windowsmgr.max_events_per_sec 68
Click to expand...
Click to collapse
VERY interesting
EarlZ said:
you could make a script/app for this so everyone else can try it ?
Click to expand...
Click to collapse
+1, pretty plz, also, is this compatible with voodoo?
INeedYourHelp said:
+1, pretty plz, also, is this compatible with voodoo?
Click to expand...
Click to collapse
Should be compatible, although u need to know how to add it into voodoo's startup script.
Hello
Values description for each one and why is welcome
supercurio said:
Hello
Values description for each one and why is welcome
Click to expand...
Click to collapse
Hey supercurio! Great job on Voodoo, I am particularly keen on the Sharpness, Video and future Sound fixes. I think its very cool that you found out how to modify the sharpness (S-AMOLED's PenTile matrix software algorithms?).
Edited the starting post with explanations. Most of them should be documented somewhere in the Linux sources / documents.
I've been using them for a while, tweaking values here n there. I think I've finally reached a stage where I'm confident enough to recommend them to others to try. There could be more optimum values with further testing, but these work well for me with Froyo.
hardcore said:
Hey supercurio! Great job on Voodoo, I am particularly keen on the Sharpness, Video and future Sound fixes. I think its very cool that you found out how to modify the sharpness (S-AMOLED's PenTile matrix software algorithms?).
Edited the starting post with explanations. Most of them should be documented somewhere in the Linux sources / documents.
I've been using them for a while, tweaking values here n there. I think I've finally reached a stage where I'm confident enough to recommend them to others to try. There could be more optimum values with further testing, but these work good for me so far with Froyo.
Click to expand...
Click to collapse
Yeah thank you so much for taking the time and sharing, i'll integrate them after a bit of testing
About the sharpness filter yes this is the main difference between S-AMOLED and AMOLED panel wise.
It's a hardware sharpness filter which is here to fight the fuzziness introduced by the pentile pattern but.. they overdid it a bit.
The "perfect" values are of course closer than the one with the same radius that the one of the blur introduced itself with the pixel pattern.
I feel it can maybe be improved a hair
I'll soon publish a version that allow write to the mDNIe register so you'll be able to play *live* with it too
Nice, could these be modified post-startup? like I go adb and copy paste some of them for testing?
I've tested setprop windowsmgr.max_events_per_sec 68, no difference. Set it to
setprop windowsmgr.max_events_per_sec 10 and still, no difference.
xan said:
Nice, could these be modified post-startup? like I go adb and copy paste some of them for testing?
I've tested setprop windowsmgr.max_events_per_sec 68, no difference. Set it to
setprop windowsmgr.max_events_per_sec 10 and still, no difference.
Click to expand...
Click to collapse
hey xan, you made me remember to add run-parts support.
i'll do that and you'll be able to set it without special hack very soon with voodoo
xan said:
Nice, could these be modified post-startup? like I go adb and copy paste some of them for testing?
I've tested setprop windowsmgr.max_events_per_sec 68, no difference. Set it to
setprop windowsmgr.max_events_per_sec 10 and still, no difference.
Click to expand...
Click to collapse
I don't think the setprop values can be modified post-startup. You can check if the value was modified by doing a getprop. (The default value for that prop is 55.)
The rest of them can be modified post-startup though.
Excuse my noobiness on Android, I would like an explanation on this command:
hardcore said:
# Tweak kernel VM management
echo "0" > /proc/sys/vm/swappiness
Click to expand...
Click to collapse
On my GNU/Linux system I've set vm.swappiness to 10, because I've got plenty MiB of RAM and I don't want my system to swap a lot. Is this swappiness the same as Linux? Because that would mean having the system to use more RAM, and since we don't have much of that available by default, I'm just surprised you didn't set a higher value. (I'm not saying you don't know what you're doing, I just want to learn how it works!)
By the way, this script is going to be a must-have, I think you've put an excellent effort on i9000 Android development! Thanks for sharing!
xan said:
Nice, could these be modified post-startup? like I go adb and copy paste some of them for testing?
I've tested setprop windowsmgr.max_events_per_sec 68, no difference. Set it to
setprop windowsmgr.max_events_per_sec 10 and still, no difference.
Click to expand...
Click to collapse
The aosp windowmanager (android framework) ignores values <35. (Samsung could have changed something here, but that is very unlikely).
That value does not affect the framerate, but how many touch events are reported to the apps; this saves some cpu if the user keeps touching the screen.
Fr4gg0r said:
The aosp windowmanager (android framework) ignores values <35. (Samsung could have changed something here, but that is very unlikely).
That value does not effect the framerate, but how many touch events are reported to the apps; this saves some cpu if the user keeps touching the screen.
Click to expand...
Click to collapse
Yes, i tried on Eclair to set it to 56fps (real fps is 55.5555555555555) but touch scrolling were not smoother.
I hope it can be improved in some way!
Fr4gg0r said:
The aosp windowmanager (android framework) ignores values <35. (Samsung could have changed something here, but that is very unlikely).
That value does not affect the framerate, but how many touch events are reported to the apps; this saves some cpu if the user keeps touching the screen.
Click to expand...
Click to collapse
Thanks for the info. Looks like default settings are best unless we can actually change the refresh rate.
supercurio said:
Yeah thank you so much for taking the time and sharing, i'll integrate them after a bit of testing
Click to expand...
Click to collapse
We are eagerly waiting for it =) I don't know when you manage to sleep since you have so many things to do in voodoo =)
hardcore said:
Hi guys,
I've been using Linux kernel tweaks in a startup script to make the phone smoother.
With these tweaks, the phone is quite smooth and fast even without using the filesystem lagfixes.
These settings are only useful for you if you know how to create and modify a startup script. I use the old playlogos hack myself, but I'm sure there are many new ways to do it now.
Code:
# Remount all partitions with noatime
for k in $(mount | cut -d " " -f3)
do
sync
mount -o remount,noatime $k
done
# Tweak cfq io scheduler
for i in $(ls -1 /sys/block/stl*) $(ls -1 /sys/block/mmc*) $(ls -1 /sys/block/bml*) $(ls -1 /sys/block/tfsr*)
do echo "0" > $i/queue/rotational
echo "1" > $i/queue/iosched/low_latency
echo "1" > $i/queue/iosched/back_seek_penalty
echo "1000000000" > $i/queue/iosched/back_seek_max
echo "3" > $i/queue/iosched/slice_idle
done
# Tweak kernel VM management
echo "0" > /proc/sys/vm/swappiness
echo "10" > /proc/sys/vm/dirty_ratio
echo "1000" > /proc/sys/vm/vfs_cache_pressure
echo "4096" > /proc/sys/vm/min_free_kbytes
# Tweak kernel scheduler
echo "2000000" > /proc/sys/kernel/sched_latency_ns
echo "500000" > /proc/sys/kernel/sched_wakeup_granularity_ns
echo "400000" > /proc/sys/kernel/sched_min_granularity_ns
# Miscellaneous tweaks
setprop dalvik.vm.startheapsize 8m
setprop wifi.supplicant_scan_interval 90
EDIT: Explanations:
# Remount all partitions with noatime
atime is a setting where the filesystem updates the access time of a file. This creates a write-after-every-read which slows things down. By default all partitions are mounted with relatime, which is an optimized version of atime. noatime is the fastest, and afaik we don't need atime.
# Tweak cfq io scheduler
Tweaked settings of the disk io scheduler more for flash memory. Defaults are optimized for spinning harddisks. Lowered the idle wait, re-enable the low latency mode of cfq, removed the penalty for back-seeks and explicitly tell the kernel the storage is not a spinning disk.
# Tweak kernel VM management
Set tendency of kernel to swap to minimum, since we don't use swap anyway.
Lower the amount of unwritten write cache to reduce lags when a huge write is required.
Increase tendency of kernel to keep block-cache to help with slower RFS filesystem.
Increase minimum free memory, in theory this should make the kernel less likely to suddenly run out of memory.
# Tweak kernel scheduler
Make the task scheduler more 'fair' when multiple tasks are running. This has a huge effect on UI and App responsiveness. These values are 10% of the Linux defaults, and about half of the Android defaults.
# Miscellaneous tweaks
Manually set the starting dalvik heap size.
Increase wifi scanning gap to reduce battery usage.
Click to expand...
Click to collapse
I'm interested in doing this but I'm not sure where should I put the file. I checked playlogos1 from /system/bin but it's a binary file.. Tried to find playlogos hack on the forum but can't really find anything...
i have a jpm with voodoo, and i have copy this code into /voodoo/scripts/init.sh
just simplely add to the end of it, of course, before the last line.
the system reboot is ok, but i havent see the effects yet.
btw, "ls -1 /sys/block/mmc*" in adb give us:
Code:
ls -1 /sys/block/mmc*
-1: No such file or directory
/sys/block/mmcblk0
/sys/block/mmcblk1
so, "-1" key is useless
[kab] said:
btw, "ls -1 /sys/block/mmc*" in adb give us:
Code:
ls -1 /sys/block/mmc*
-1: No such file or directory
/sys/block/mmcblk0
/sys/block/mmcblk1
so, "-1" key is useless
Click to expand...
Click to collapse
it should be -l, not one

init.d performance startup script

I've adapted the original performance tweaks by 'hardcore' @ XDA for my overclocked/undervolted Galaxy Tab. The tweaked values are pretty much the same as the ones recommended by the original poster, but my simple init.d/ script allows me to log default system values when pushing new values, which is useful for debugging. The script also contains comments to describe the role of each setting. Note that if you don't have init.d/ support in your kernel / initramfs, you can still run the script manually at each system start (use an app like GScript).
Code:
#!/system/bin/sh
#
# Original tweaks by 'hardcore' @ XDA
# http://forum.xda-developers.com/showthread.php?t=813309
# This is a startup script designed for /system/etc/init.d/.
# Note that "run-parts" support (for init.d/ scripts) is normally provided by custom a initramfs,
# which should bundle busybox in /sbin/. The /sbin/run-parts.sh script should take care of
# running init scripts (by calling /sbin/runparts), and it should subsequently trigger
# the device startup (using "setprop filesystem.ready 1", or similar).
# Note that the recovery mode typically doesn't run /system/etc/init.d/ startup scripts.
# Ensure /sbin/busybox takes precedence.
# Normally this is redundant, because the /init.rc startup script already sets the correct path.
export PATH=/sbin:$PATH
# Logging of old/new sysfs values, useful for double-checking.
logFile=/data/local/tmp/S_perf_tweaks.log
if [ -f $logFile ]
then
rm $logFile
fi
touch $logFile
# This function logs the old value and writes the new value.
echo_()
{
echo '' >> $logFile
echo -n "${2}${3} (${1}): " >> $logFile
#head -1 ${2}${3} >> $logFile
#read $firstLine < ${2}${3}
#echo -n $firstLine >> $logFile
contents=`echo -n $(cat ${2}${3})`
echo -n $contents >> $logFile
echo -n " ---> " >> $logFile
echo $1 > ${2}${3}
contents=`echo -n $(cat ${2}${3})`
echo -n $contents >> $logFile
}
# Note that the settings pushed by VoltageControl.apk
# could also be managed here (this only applies to kernels with clock/frequency tables and undervolt sysfs support):
#echo_ "50 50 50 25 25 25 25 " "/sys/devices/system/cpu/cpu0/cpufreq" "/UV_mV_table"
#echo_ 1400000 "/sys/devices/system/cpu/cpu0/cpufreq" "/scaling_max_freq"
echo "---------" >> $logFile
# Remount all partitions that use relatime with noatime and nodiratime instead.
# Note: atime generates a write-after-every-read, relatime is an optimized version of atime.
for k in $(mount | grep relatime | cut -d " " -f3)
do
echo "mount -o remount,noatime,nodiratime $k" >> $logFile
sync
mount -o remount,noatime $k
done
# Here is a sample test to measure read/write performance on rfs partitions:
### test for write: dd if=/dev/zero of=/data/test count=30000
### test for read: dd if=/data/test of=/dev/zero
echo "---------" >> $logFile
# Log the mount table
mount >> $logFile
echo "---------" >> $logFile
# Optimize the cfq/bfq I/O scheduler for flash memory (defaults are designed for spinning harddisks).
# Lower the idle wait, re-enable the low latency mode, remove the penalty for back-seeks,
# and explicitly tell the kernel that the storage is not a spinning disk.
for i in $(ls -1 /sys/block/stl*) $(ls -1 /sys/block/mmc*) $(ls -1 /sys/block/bml*) $(ls -1 -d /sys/block/tfsr*)
#for i in `ls /sys/block/stl* /sys/block/mmc* /sys/block/bml* /sys/block/tfsr*`;
do
# DEF noop anticipatory deadline cfq [bfq]
echo_ "bfq" $i "/queue/scheduler"
# DEF 1 ?
echo_ "0" $i "/queue/rotational"
# DEF 1 ?
echo_ "1" $i "/queue/iosched/low_latency"
# DEF 2 ?
echo_ "1" $i "/queue/iosched/back_seek_penalty"
# DEF 16384 ?
echo_ "1000000000" $i "/queue/iosched/back_seek_max"
# DEF 6 ?
echo_ "3" $i "/queue/iosched/slice_idle"
sync
done
# Set tendency of kernel to swap to minimum, since swap isn't used anyway.
# (swap = move portions of RAM data to disk partition or file, to free-up RAM)
# (a value of 0 means "do not swap unless out of free RAM", a value of 100 means "swap whenever possible")
# (the default is 60 which is okay for normal Linux installations)
# DEF 60
echo_ "0" "/proc/sys/vm" "/swappiness"
# Lower the amount of unwritten write cache to reduce lags when a huge write is required.
# DEF 20
echo_ "10" "/proc/sys/vm" "/dirty_ratio"
# Increase minimum free memory, in theory this should make the kernel less likely to suddenly run out of memory.
# DEF 3102
echo_ "4096" "/proc/sys/vm" "/min_free_kbytes"
# Increase tendency of kernel to keep block-cache to help with slower RFS filesystem.
# DEF 100
echo_ "1000" "/proc/sys/vm" "/vfs_cache_pressure"
# Increase the write flush timeouts to save some battery life.
# DEF 250
echo_ "2000" "/proc/sys/vm" "/dirty_writeback_centisecs"
# DEF 200
echo_ "1000" "/proc/sys/vm" "/dirty_expire_centisecs"
# Make the task scheduler more 'fair' when multiple tasks are running,
# which improves user-interface and application responsiveness.
# DEF 10000000
echo_ "20000000" "/proc/sys/kernel" "/sched_latency_ns"
# DEF 2000000
echo_ "2000000" "/proc/sys/kernel" "/sched_wakeup_granularity_ns"
# DEF 1000000
echo_ "1000000" "/proc/sys/kernel" "/sched_min_granularity_ns"
sync
# Miscellaneous tweaks
setprop dalvik.vm.startheapsize 8m
#setprop wifi.supplicant_scan_interval 90
echo '' >> $logFile
echo "---------" >> $logFile
#This apply a tweaked deadline scheduler to all RFS (and ext2/3/4, if existent) partitions.
#for i in /sys/block/*
#do
# DEF noop anticipatory deadline cfq [bfq]
#echo deadline > $i/queue/scheduler
#echo 4 > $i/queue/iosched/writes_starved
#echo 1 > $i/queue/iosched/fifo_batch
#echo 256 > $i/queue/nr_requests
#done
Thanks for this Daniel - since I know absolutely nothing about anything Android, all I can say is that I have 2 questions
1 - Would this script be any benefit to someone running a custom ROM (Overcome 1.1.3 in my case) and a custom kernel (Richard Trip's 1.4gHz EXT4)? I ask because I don't know if these guys have already including these tweaks or not... but maybe I should ask them instead...
2 - Is there any way you could put that script - in its most efficient, non-debugging form - in to a script file that us speed-freaks can just toss in to init.d and reboot?
Please do forgive me for any newbishness I have displayed here.
So should I put this script in /system/etc/init.d/ ?
UPDATE: Ok, I've done the script(without extension at the back of the file name) and put it in ~/init.d/, it runs well. I comment out the remount and logging function tho Tested it on some games that required load time like gangstar which lags alot previously, now just dnt have any lag time in it! Thanks!
Anyway, im running Overcome rom with richard's kernel, other than voltage script, i saw 2 more script that does the following:
10fixsh does:
"#!/system/bin/sh
busybox mount -o remount,rw /
find /sbin -maxdepth 1 -type l -exec rm {} \;
busybox mount -o remount,ro /
"
99done does:
"#!/system/bin/sh
sync;
setprop mcr.filesystem.ready 1;
"
So I just add your script as userinit since they do not have conflicting calls
Personally thinks that similar tweaks should be included in custom kernels so that those who wish to do more extreme settings can go with it while those who just wants increased performance as it is can still have the boost provided by such init script.
fastcx said:
Personally thinks that similar tweaks should be included in custom kernels so that those who wish to do more extreme settings can go with it while those who just wants increased performance as it is can still have the boost provided by such init script.
Click to expand...
Click to collapse
so basically just copy and paste the whole "code" in the first post, and create it as userinit.sh and put the userinit.sh file in /system/etc/init.d ?
am i right?
kay_kiat88 said:
so basically just copy and paste the whole "code" in the first post, and create it as userinit.sh and put the userinit.sh file in /system/etc/init.d ?
am i right?
Click to expand...
Click to collapse
still need more time to test, after some verification, none of the "/proc/sys/kernel" setting works with any of the kernel i'm using. thats y i need more time to rectify..
used richard's kernel and overcome kernel, both dont do anything now..perhaps wrong command in the script? Cause run-parts.sh does specify where to run script, and init.d does have 2 script in there that runs. So i'll need more time to make sure it works now..
Dont need to have .sh as extension, just a name for your script like the other 2 script that i posted in previous reply. And I did not copy the whole script to run, as the script seems questionable in some part..
fastcx said:
still need more time to test, after some verification, none of the "/proc/sys/kernel" setting works with any of the kernel i'm using. thats y i need more time to rectify..
used richard's kernel and overcome kernel, both dont do anything now..perhaps wrong command in the script? Cause run-parts.sh does specify where to run script, and init.d does have 2 script in there that runs. So i'll need more time to make sure it works now..
Dont need to have .sh as extension, just a name for your script like the other 2 script that i posted in previous reply. And I did not copy the whole script to run, as the script seems questionable in some part..
Click to expand...
Click to collapse
okay.. so basically just copy everything under the "code" and create it as userinit?
edit: hmmm okay thanks for you help. i don't think it's of any use for me now as my tab is quite fast and i don't do any intensive stuff on it. thanks anyway!
kay_kiat88 said:
okay.. so basically just copy everything under the "code" and create it as userinit?
edit: hmmm okay thanks for you help. i don't think it's of any use for me now as my tab is quite fast and i don't do any intensive stuff on it. thanks anyway!
Click to expand...
Click to collapse
Now i'm editing init.rc file instead, but it's not the safest thing to do
Wow all the best.. lol.
Sent from my GT-P1000 using Tapatalk
fastcx said:
Now i'm editing init.rc file instead, but it's not the safest thing to do
Click to expand...
Click to collapse
The init.rc file gets extracted from the initramfs ramdisc (packaged inside the zImage kernel) at each device startup. Changing this file's content is not a good idea. Regards, Dan
fastcx said:
So should I put this script in /system/etc/init.d/ ?
UPDATE: Ok, I've done the script(without extension at the back of the file name) and put it in ~/init.d/, it runs well.
Click to expand...
Click to collapse
Yes, the filename of the startup script must start with "S_" and must not end with ".sh". This is standard Linux stuff.
fastcx said:
find /sbin -maxdepth 1 -type l -exec rm {}
Click to expand...
Click to collapse
Removing the symlinks from "/sbin/" ... why ?
Normally Busybox should be installed properly in "/sbin/" by your kernel provider, you shouldn't have to touch this folder.
fastcx said:
99done does:
"#!/system/bin/sh
sync;
setprop mcr.filesystem.ready 1;
"
Click to expand...
Click to collapse
The "mcr.filesystem.ready" is only relevant if the "init.rc" file in the kernel zImage's initramfs ramdisc responds to a change to the "mcr.filesystem.ready" property (for example, when its value changes from 0 to 1). This is typically used to start the device normally, after *all* of the "/system/etc/init.d/" startup scripts have been executed.
The line of code "setprop mcr.filesystem.ready 1" is therefore typically included in "/sbin/runparts.sh", not in one of the "S_startup_scripts" (as this may trigger the device normal startup prematurely).
It really depends on your kernel, so it should be documented by your kernel provider.
daniel.weck said:
Yes, the filename of the startup script must start with "S_" and must not end with ".sh". This is standard Linux stuff.
It really depends on your kernel, so it should be documented by your kernel provider.
Click to expand...
Click to collapse
Great! thanks for clarifying! Sadly none of the kernel provider states any info on such matter. Will try your script again, as previously running thru gscript not all command works..
Copied your script 100%, put it in init.d with chmod 755, named it S_userinit, doesnt run..i double checked by cat value that I stated to change in the script.
Help? It obviously runs the UV script in init.d tho.
EDIT: Got it to work by editing the UV script, now settings are in! Great! Time to test anyway, nodiratime is not needed, noatime already has it
So how can I use this script - I want to
Hi, Just connected to my galaxy tab running froyo, and went looking in my filesystem for the init.d folder and yeah there isn't one
do i create one? where? and what permissions?
I try to keep this brief and not waste too much of your time.
many thanks for the script
Ttime & effort ++
andytof46 said:
Hi, Just connected to my galaxy tab running froyo, and went looking in my filesystem for the init.d folder and yeah there isn't one
do i create one? where? and what permissions?
I try to keep this brief and not waste too much of your time.
many thanks for the script
Ttime & effort ++
Click to expand...
Click to collapse
you will need a kernel that support init script, after that, /etc/init.d(or /system/etc/init.d) will be created
fastcx said:
Copied your script 100%, put it in init.d with chmod 755, named it S_userinit, doesnt run..i double checked by cat value that I stated to change in the script.
Help? It obviously runs the UV script in init.d tho.
EDIT: Got it to work by editing the UV script, now settings are in! Great! Time to test anyway, nodiratime is not needed, noatime already has it
Click to expand...
Click to collapse
Don't suppose you could post a copy of your trimmed & tweaked version of Daniel's script for us to use?
Cuz I, for example, have no idea what's useful in the original script, and what's not useful. But I at least know how to edit the UV script, heh.
jeebspawnshop said:
Don't suppose you could post a copy of your trimmed & tweaked version of Daniel's script for us to use?
Cuz I, for example, have no idea what's useful in the original script, and what's not useful. But I at least know how to edit the UV script, heh.
Click to expand...
Click to collapse
LOL here it goes
Code:
#!/system/bin/sh
#set UV
echo "0 0 0 0 0 0 0 0 " > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table
echo 1000000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
#select enabled states
echo "0 0 0 0 0 0 0 0 " > /sys/devices/system/cpu/cpu0/cpufreq/states_enabled_table
#set scheduler for stl, bml and mmc
for i in `ls /sys/block/stl*` /sys/block/bml* /sys/block/mmcblk*
do
echo "bfq" > $i/queue/scheduler
echo "0" > $i/queue/rotational
echo "1" > $i/queue/iosched/low_latency
echo "1" > $i/queue/iosched/back_seek_penalty
echo "1000000000" > $i/queue/iosched/back_seek_max
echo "3" > $i/queue/iosched/slice_idle
done
# Remount all partitions with noatime
for k in $(busybox mount | grep relatime | cut -d " " -f3)
do
sync
busybox mount -o remount,noatime $k
done
# Tweak kernel VM management
echo "0" > /proc/sys/vm/swappiness
echo "10" > /proc/sys/vm/dirty_ratio
echo "4096" > /proc/sys/vm/min_free_kbytes
# Tweak kernel scheduler, less aggressive settings
echo "18000000" > /proc/sys/kernel/sched_latency_ns
echo "3000000" > /proc/sys/kernel/sched_wakeup_granularity_ns
echo "1500000" > /proc/sys/kernel/sched_min_granularity_ns
# Misc tweaks for battery life
echo "2000" > /proc/sys/vm/dirty_writeback_centisecs
echo "1000" > /proc/sys/vm/dirty_expire_centisecs
# Miscellaneous tweaks
setprop dalvik.vm.startheapsize 8m
done
NOTE: If you change any settings in uv app, u'll revert S_volt_scheduler to ONLY UV settings, so It's recommended to edit your UV setting on this file instead of using uv app from now on if you wants to keep your other settings
Thanks dude!
I hit your Thanks Button too.
jeebspawnshop said:
Thanks dude!
I hit your Thanks Button too.
Click to expand...
Click to collapse
Thanks U should thanks the thread starter too U should just take it as reference, modify any that you feels ok, and perhaps post here as feedback on which makes things better, especially disc scheduler and task scheduler settings.
UPDATE: Made some changes to suggested value by daniel for "fairness", these setting really deals with multitasking better
echo "20000000" > /proc/sys/kernel/sched_latency_ns
echo "2000000" > /proc/sys/kernel/sched_wakeup_granularity_ns
echo "1000000" > /proc/sys/kernel/sched_min_granularity_ns
hey fastcx, i copied and pasted your script in the UV scheduler file in init.d but it seems that it's not working as the values don't apply. any ideas why?

[Q] Modifying Gideonx's OC/UV script

Since my values for the CPU would never stick with System Tuner, I decided to learn how to modify scripts to get the desired effect. I decided that I wanted to modify Gideonx's OC/UV script.
I want to use the GideonX_OC_UV_VM_Tweaked_for_Battery.zip - CPUs @ 384/918Mhz | -75mV | OnDemand | VM tweaked | Not all phones can take -75mV.
Except rather than having a 918Mhz max, I want to use 1.35Ghz max. I heard the script makes your CPU really slow and I'm hoping increasing the max will make it smoother (I don't know too much about this, haha).
I opened up the script with notepad and changed the values from 918000 to 1350000. It now looks like this:
#########################
# GideonX kernel tweaks #
#########################
# Set CPU voltage in microvolts
echo "-75000" > /sys/devices/system/cpu/cpufreq/vdd_table/vdd_levels
# Set min/max and governor for CPU0
echo 384000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 1350000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# Set min/max and governor for CPU0
echo 1 > /sys/devices/system/cpu/cpu1/online
echo 384000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq
echo 1350000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq
echo ondemand > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
# Set kernel dirty data writes. Dirty just means changed data, don't freak out.
# By setting writeout times to be longer, there are less writes which may save more battery for you.
#
# /proc/sys/vm/dirty_expire_centisecs = how old is the data before kernel writes
# /proc/sys/vm/dirty_writeback_centisecs = how often should the kernel check for dirty data
# /proc/sys/vm/dirty_ratio = max memory in percent of data storage
# /proc/sys/vm/dirty_background_ratio = amount of memory in percent for a data writeout to stop
echo "500" > /proc/sys/vm/dirty_expire_centisecs
echo "1000" > /proc/sys/vm/dirty_writeback_centisecs
echo "90" > /proc/sys/vm/dirty_ratio
echo "5" > /proc/sys/vm/dirty_background_ratio
When I zipped it back up and tried to install the zip, however, it crashed and didn't install. What did I do wrong? (Total newbie here)
Link to the script: http://forum.xda-developers.com/showpost.php?p=20946429&postcount=574
bump
Anyone have any idea why it's not working?
The way I did it was by using 7zip and notepad++
I didn't unzip the zip file. I juat openes it qith 7zip and draged the file onto my desktop. Then opened it with notepad++ and made the changes I wanted. After that I just draged that file back into the opened zip closed the program ans flashed it. Maybe the way you zipped it back messed up something.
Sent from my SAMSUNG-SGH-T989 using xda premium

Easy set Vsel and instant wakeup for CM11(recent nightly built by Quarx) & TWRP 2.8

Easy set Vsel and instant wakeup for CM11(recent nightly built by Quarx) & TWRP 2.8
Hi,all
Recently,I‘ve upgrade defy to CM11 nightly built that Qurax released everyday.And I'm using cm-11-20160628-NIGHTLY-mb52x.zip such a great rom works almost everything and smooth.
MANY THANKS to Quarx!
The rom is using TWRP 2.8.0.0, so I can't find setting CPU Vsel at boot.After some search,it can be done by adding some scripts to /system/etc/init.d/09overclock .(or using AeroControl )
Also,the rom delays to wakeup up to 3 seconds when you click the power button .
And I tried the same CPU governor & I/O schedul that used with 4.1.2 & 4.3.1,and it worked.These two settings built in the rom setting are sometimes failed to work and back to default, so I added them to script too.
Add these scripts to /system/etc/init.d/09overclock ,remember to leave a blank line at the end and set the same right (555) to the file.
Code:
#!/system/bin/sh
#
# Module location
MODULE_DIR="/system/lib/modules"
MODULE="/system/lib/modules/overclock_defy.ko"
SYMSEARCH_MODULE="/system/lib/modules/symsearch.ko"
/system/xbin/insmod $SYMSEARCH_MODULE
/system/xbin/insmod $MODULE_DIR/cpufreq_stats.ko
cpufreq_table=`grep -e omap2_clk_init_cpufreq_table /proc/kallsyms | sed -e "s/\([0-9A-Fa-f]\{8\}\).*/\1/"`
stats_update=`grep -e cpufreq_stats_freq_update /proc/kallsyms | sed -e "s/\([0-9A-Fa-f]\{8\}\).*/\1/"`
/system/xbin/insmod $MODULE omap2_clk_init_cpufreq_table_addr=0x$cpufreq_table
echo 0x$stats_update > /proc/overclock/cpufreq_stats_update_addr
# setVsel at boot,BACKUP your ROM first and use it caution with the stable vsel of your phone!
/system/xbin/busybox echo 55 > /proc/overclock/max_vsel
/system/xbin/busybox echo 1000000 > /proc/overclock/max_rate
/system/xbin/busybox echo 1 300000000 25 > /proc/overclock/mpu_opps
/system/xbin/busybox echo 2 600000000 35 > /proc/overclock/mpu_opps
/system/xbin/busybox echo 3 800000000 45 > /proc/overclock/mpu_opps
/system/xbin/busybox echo 4 1000000000 55 > /proc/overclock/mpu_opps
/system/xbin/busybox echo 0 1000000 > /proc/overclock/freq_table
/system/xbin/busybox echo 1 800000 > /proc/overclock/freq_table
/system/xbin/busybox echo 2 600000 > /proc/overclock/freq_table
/system/xbin/busybox echo 3 300000 > /proc/overclock/freq_table
# avoid wakeup delay when your settings fails sometime in /Settings/Performance/Processor & I/O scheduler.
sleep 60
/system/xbin/busybox echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
/system/xbin/busybox echo sio > /sys/block/mmcblk0/queue/scheduler
# Always check /Settings/Performance/Memory management/Allow purging of assets.
# While select ART runtime in Developer options and check Allow purging of assets ,using following minfree to max performance .
# Should put them below sleep 60,use as your choice.
# /system/xbin/busybox echo "0,1,2,4,7,15" > /sys/module/lowmemorykiller/parameters/adj
# /system/xbin/busybox echo "2464,3712,5632,7392,8608,9856" > /sys/module/lowmemorykiller/parameters/minfree
Also,set this to /system/build.prop ,to bring up income call interface much more fast.
ro.telephony.call_ring.delay=0
FYI,
about the last minfree part(other VM sets are ok by default ),I've done some test below.
ALL tested under ART runtime (its bugfree to me and ART is way much better than Dalvik,using Dalvik,browser crashed at 11-12 gifs no matter what ).
1.uncheck Allow purging of assets ,browser crashed loading 7 - 8 gifs picture in the webpage
2.check Allow purging of assets ,browser crashed loading 14 - 15 gifs picture (including the gifs above) in the webpage
3.check Allow purging of assets ,and using the minfree above ,browser crashed up to 24 gifs picture (including the gifs above) in the webpage(browser using nearly 320M ram...)
All behaviors the same delay switching to other apps when browser approaching to crash.
After done above ,there are only left 2 bugs to me
1.the menu & search button remap.(menu button can't be remapped to other function in the launcher ,and search button only works as search )
2.call recording not working (still searching method)

KFinally found the answer to bad battery life on our beloved htc 10's/works with Oreo

Save much reading and go to page 61. Answers to bad battery on the HTC 10 are worked out there. It's simplifies everything. Many posts here are works in progress kind of back and forth.
Guides I used for amplify are at the bottom of page 13.
(Remember to thank me in the op if anything here helped.)
After numerous hours of research and testing . Just wanted to reveal what I found. This is made for the OP-3 which is also a snapdragon 820 chipset device.
Ive been using on my Verizon HTC 10 with zero issues so far/ Lee-droid oreo rom/Elemental X -3.02 kernel. Much copy and pasting going on, just wanted to share my find.I take no credit for any of this : other than being willing to test on my device. After flashing the final version of (AKT.V1.6/FinalZIP )through twrp/ located on next page I ticked for the Op3 OR SNAPDRAGON 820 DEVICE from a terminul emilator, then I choose "Project Zhana battery" . I used rom toolbox pro's terminal emulator. Choose whatever profile you desire but the one I picked works fine/zero lag. Our other options (as of now) are soilwork scripts made for the HTC 10 or the helix engine now that pnpmgr has been disabled.
. First link is a huge thread on profiles from AKT. Go find which ever works best for your situation.
( I'm not telling you to flash anything. I'm showing you possible routes that have been tested by me. If you do not like results simply Ruu back to stock or dirty flash rom being used to get rid of it all.)
I'm about to tell you how to get buttery smooth, lag-free performance with insanely good battery life, using an old school governor featured in practically every kernel... This tweak is applicable to every phone with any ROM or kernel--stock or custom--that provides the Interactive Governor.
Yeah, yeah... everyone promises good battery with great performance, but who actually delivers? Maybe it isn't as smooth as you want, or maybe it requires something your kernel or ROM don't support. Or maybe the battery life promises just aren't what you expected. There's always some awful compromise. Not here!
This isn't a guide to get 36 hour battery life... provided you never use your phone. That's deep sleep optimization, which is lovely and all, but what good is the phone if you can never use it?! And with the new Marshmallow Doze feature, this strategy is becoming a thing of the past. What I'm talking about is 7-14 hour screen on, actual hands-on usage times! Without compromising anything, you can get 7-8 hour screen on usage with regular, no-compromise usage habits: daytime visible screen brightness, both radios on, sync on, network location on, all the regular usage features, the whole kit and kaboodle... all smooth as a baby's butt and snappy as a Slim Jim! (Up to 14+ hours if you can stand minimum brightness and WiFi-only with a custom ROM and other stuff turned off! And this is with stock voltages and full frequency range--you'll likely get even more if you choose to optimize those as well!)
However, it should be noted that this does not apply to gaming, heavy camera use, etc. Anything that is an automatic battery killer in and of itself. There's nothing that can be done about anything that forces the phone to utilize its maximum resources all the time. But you should know that by now. Further, this guide is about optimizing the CPU as much as possible. It does not cover things like eliminating wakelocks so your phone sleeps well, removing unnecessary and battery draining stock apps, keeping your screen brightness down*, and all that stuff that's been covered in other posts ad infinitum. Those optimizations are up to you.
If you really want to know the principles of this tweaks, please go to this thread since there everything is really well explained and I know you guys just want to apply the tweak and forget about everything behind it, so just keep scrolling!
Voltages and Frequencies:
So recently I have been investigating about the Voltages of our device (since that is a really useful information to know) before that we only have the Nominal frequencies (If you don't know what I am talking about go ahead and read @soniCron thread because I won't explain it) we could develop some tweaks with that, but we were pretty much making blind shots, guessing and hoping that all will be right. Well, now that we have all this information we can optimize our tweaks even more so expect new updates and rework for the current tweaks and of course new ones.
What About Touchboost?
Since I've noticed that a lot of people was asking about Touchboost, I decided to add this little explanation from @soniCron
" Touchboost is a nifty feature in a lot of kernels (including stock on Nexus 5X) that jumps up the frequency so that you experience minimal lag. However, with all the above settings, touchboost is usually detrimental to the efficiency of the device!
We generally want to keep the CPU on the lowest possible frequency as much as possible, and touchboost interferes with that. Further, because we've set up the maximal and minimal efficient clock rates, as well as burst processing from the 2nd CPU core, we don't need touchboost!
If your kernel allows you to shut it off, try to do so and see if the responsiveness of your device is acceptable. On the OP3 (and pretty much all the devices), touchboost adds no perceptual performance gain and only hurts efficiency and battery life. If your kernel doesn't allow you to turn off touchboost, try another one.
Your battery life will thank you! "
With all that been said, you shouldn't confuse Touchboost with CPU Boost and more specifically Input boost. Both are used to boost the clock speed of our device whenever we touch the touchscreen, so we don't suffer any lags.
The difference is that Input boost can be configured and Touchboost cannot, making it a really inefficient.
MY DEVICE LAGS!!! WHY?!?!
First of all, it's a "normal" thing, as I have stated before, all these tweaks have been done for fit my usage or certain usage which is most likely not the same as yours. Because this, when the are put on a certain scenario the might stutter or lag just a bit (If you are experimenting huge lags, you have done something wrong)
And yes, this can be fixed. We have a couple of ways of fixing it:
First of all, Check If the tweaks have been applied correctly
Our first one is modifying the Input boost (not touchboost) most of our tweaks have an already established Input boost clock speeds and time, you can incise does too a bit. For example, we have 960(Mhz) for all the CPU at 40ms you could bump it up to ~1036(Mhz) and 42ms, don't modify too much this values since it will potentially increase your battery drain.
Our second tool for fixing lags is min_sample_time , my recommendation is to increase the value by 5000 each time till you no longer suffer any stutter or lag.
Try another tweak, for example;
If you are using Project X.A.N.A Battery, try using Balanced option...
Still having lag?
Get rid of unnecessary (background-)apps
Try a different IO-Scheduler
Try another profile
My phone still uses too much battery
First of all, Check If the tweaks have been applied correctly
Make sure that you have disabled touchboost.
Set brightness to a lower level.
Use a dark / black theme
Don't play games all day
Try other tweak, for example;
If you are using Project Zhana Balanced, try using Battery option...
How to install:
A flashable zip to be flashed via recovery, which installs scripts of the latest iterations of most profiles (some legacy profiles had to be eliminated for more convenience) and a master script that takes control of all the installed scripts and applies your desired profile at will as soon as you recall it via Terminal Emulator app and get guided by the on-screen instructions.
So to wrap it up:
1- Download the latest AKT_Profile_vX.x.zip file
2- Reboot into TWRP recovery and flash the .zip file
3- After you boot up the phone, leave it to settle for a minute
4- Open up your favorite Terminal Emulator app
5- Grant it superuser permissions by typing in "su" without the quotes
6- After superuser permissions are granted, type in "AKT" without the quotes (yes capitalized)
Download link for AKT
https://forum.xda-developers.com/showpost.php?p=70352820&postcount=2146
Xposed with magic information and downloads.
This is where the rubber meets the road. Amplify and greenify for Oreo!!!
https://forum.xda-developers.com/xposed/unofficial-systemless-xposed-t3388268
(Save yourself some time and jump to page 61 Finally found the answers there. Long live the HTC 10. My device is finally a beast.)
Sounds interesting - might give it a try
It's running like a totally different phone. I'm amazed almost 2 hours of screen on time and still at 70% battery. And I'm casting to my living room TV as well. Still zero lag. So phone is running tasks as well. And I'm back and forth on here. Works nicely.
mattie_49 said:
It's running like a totally different phone. I'm amazed almost 2 hours of screen on time and still at 70% battery. And I'm casting to my living room TV as well. Still zero lag. So phone is running tasks as well. And I'm back and forth on here. Works nicely.
Click to expand...
Click to collapse
Are you using stock elemental x settings or other ?
Code:
#!/system/bin/sh
#Author: Asiier
#Settings By: Asiier
#Device: One Plus 3
#Codename: Project Zhana (BT)
#Build Status: Stable
#Version: 4.2
#Last Updated: 22/01/2017
#Notes: Please give credit when using this in your work!
#TWEAKS_BEGIN
echo ""
echo --------------------------------------------------------
echo Applying 'Project Zhana (Battery variant)' v4.3
echo Advanced Kernel Settings
echo --------------------------------------------------------
sleep 0.5
echo Author: Asiier
echo Settings By: Asiier
echo "Device: One Plus 3 & SD820 Devices"
echo Codename: 'Project Zhana (BT)'
echo Build Status: Stable
echo Last Updated: 19/09/2017
echo For more information go to the XDA theard
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sleep 0.3
echo Checking Android version...
if grep -q 'ro.build.version.sdk=25' /system/build.prop; then
echo Android Nougat 7.1.X detected!
sleep 0.3
echo N detected... Applying proper settings
fi
if grep -q 'ro.build.version.sdk=24' /system/build.prop; then
echo Android Nougat 7.0.X detected!
sleep 0.3
echo N detected... Applying proper settings
fi
if grep -q 'ro.build.version.sdk=23' /system/build.prop; then
echo Android Marshmallow 6.0.1 detected!
sleep 0.3
echo MM detected... Applying proper settings
fi
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sleep 0.3
#Apply settings to LITTLE cluster
echo Applying settings to LITTLE Cluster...
sleep 0.5
#Temporarily change permissions to governor files for the LITTLE cluster to enable Interactive governor
chmod 644 /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo interactive > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
chmod 444 /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
#Grab Maximum Achievable Frequency for the LITTLE Cluster
maxfreq=$(cat "/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq")
if test "$maxfreq" -eq 1593600; then
#Temporarily change permissions to governor files for the Big cluster to set the maximum frequency to 1593MHz
echo No LITTLE Cluster Overclocking detected.
echo Applying appropriate values.
chmod 644 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 1593600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq #Core 0 Maximum Frequency = 1593MHz
chmod 444 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
chmod 644 /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
echo 70 480000:65 556800:75 729600:82 960000:86 1036800:2 1228800:99 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
chmod 444 /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
fi
if test "$maxfreq" -eq 1728000; then
#Temporarily change permissions to governor files for the Little cluster to set the maximum frequency to 1728MHz
echo LITTLE Cluster Overclocking detected.
echo Applying appropriate values.
chmod 644 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 1728000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq #Core 0 Maximum Frequency = 1728MHz
chmod 444 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
chmod 644 /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
echo 70 480000:65 556800:75 729600:82 960000:86 1036800:2 1228800:99 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
chmod 444 /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
maxfreq=$(cat "/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq")
fi
if test "$maxfreq" -lt 1593600; then
#Temporarily change permissions to governor files for the Big cluster to set the maximum frequency to 1593MHz
echo LITTLE Cluster Underclocking detected!!
sleep 1
echo We recommend not to UnderClock the CPU as the tweaks already will take care of that If needed
echo The tweaks will continue getting applied but we recommend setting the CPU to Max frequency!
sleep 4
#chmod 644 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
#echo 1593600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq #Core 0 Maximum Frequency = 1593MHz
#chmod 444 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
chmod 644 /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
echo 70 480000:65 556800:75 729600:82 960000:86 1036800:2 1228800:99 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
chmod 444 /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
elif test $maxfreq -gt 1728000; then
#Temporarily change permissions to governor files for the Little cluster to set the maximum frequency to 1728MHz
echo LITTLE Cluster Overclocking detected.
sleep 1
echo This OverClock is higher than normal and only possible on Xceed Kernel
echo The tweak will continue getting applyed
echo " Althought it might no reach the maximum frequency you have setted as it haven't been made to work with frecuencies higher than 1728 Mhz "
#chmod 644 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
#echo 1728000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq #Core 0 Maximum Frequency = 1728MHz
#chmod 444 /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
chmod 644 /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
echo 70 480000:65 556800:75 729600:82 960000:86 1036800:2 1228800:99 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
chmod 444 /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
fi
chmod 644 /sys/devices/system/cpu/cpu0/cpufreq/interactive/*
echo 220000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_slack
echo 307200 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
echo 100000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
echo 0 729600:76000 960000:99000 1228800:150000 1478400:170000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
echo 155 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
echo 22000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/boost
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/fast_ramp_down
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/align_windows
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/boostpulse_duration
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
if [ -e "/sys/devices/system/cpu/cpu0/cpufreq/interactive/enable_prediction" ]; then
chmod 644 /sys/devices/system/cpu/cpu0/cpufreq/interactive/enable_prediction
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/enable_prediction
fi
sleep 0.5
#Apply settings to Big cluster
echo Applying settings to BIG Cluster
sleep 0.2
#Temporarily change permissions to governor files for the LITTLE cluster to enable Interactive governor
chmod 644 /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
echo interactive > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
chmod 444 /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
#Grab Maximum Achievable Frequency for the Big Cluster
maxfreq=$(cat "/sys/devices/system/cpu/cpu2/cpufreq/cpuinfo_max_freq")
if test $maxfreq -eq 2150400; then
#Temporarily change permissions to governor files for the Big cluster to set the maximum frequency to 2150MHz
echo No BIG Cluster Overclocking detected.
echo Applying appropriate values.
chmod 644 /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
echo 2150400 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq #Core 2 Maximum Frequency = 2150MHz
chmod 444 /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
chmod 644 /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
echo 65 940800:80 1036800:2 1401600:95 1824000:98 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
chmod 444 /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
#Set overclock max frequency compatible target_loads
elif test $maxfreq -eq 2265600; then
#Temporarily change permissions to governor files for the Big cluster to set the maximum frequency to 2265MHz
echo BIG Cluster Overclocking detected.
echo Applying appropriate values.
chmod 644 /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
echo 2265600 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq #Core 2 Maximum Frequency = 2265MHz
chmod 444 /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
chmod 644 /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
echo 65 940800:80 1036800:2 1401600:95 1824000:98 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
chmod 444 /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
fi
if test $maxfreq -lt 2150400; then
#Temporarily change permissions to governor files for the Big cluster to set the maximum frequency to 1593MHz
echo BIG Cluster Underclocking detected!!
sleep 1
echo We recommend not to UnderClock the CPU as the tweaks already will take care of that If needed
echo The tweaks will continue getting applied but we recommend setting the CPU to Max frequency!
sleep 4
#chmod 644 /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
#echo 1593600 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq #Core 0 Maximum Frequency = 1593MHz
#chmod 444 /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
chmod 644 /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
echo 65 940800:80 1036800:2 1401600:95 1824000:98 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
chmod 444 /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
elif test $maxfreq -gt 2265600; then
#Temporarily change permissions to governor files for the Little cluster to set the maximum frequency to 1728MHz
echo BIG Cluster Overclocking detected.
sleep 1
echo This OverClock is higher than normal and only possible on Xceed Kernel
echo The tweak will continue getting applyed
echo " Althought it might no reach the maximum frequency you have setted as it haven't been made to work with frecuencies higher than 2265600 Mhz "
sleep 4
#chmod 644 /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
#echo 1728000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq #Core 0 Maximum Frequency = 1728MHz
#chmod 444 /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq
chmod 644 /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
echo 65 940800:80 1036800:99 1401600:95 1824000:98 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
chmod 444 /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
fi
sleep 0.5
#Tweak Interactive Governor
chmod 644 /sys/devices/system/cpu/cpu2/cpufreq/*
echo 140000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/timer_slack
echo 1401600 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/hispeed_freq
echo 65000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/timer_rate
echo 32000 940800:85000 1248000:96000 1401600:88000 1632000:80000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/above_hispeed_delay
echo 99 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/go_hispeed_load
echo 11000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/min_sample_time
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/max_freq_hysteresis
echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/ignore_hispeed_on_notif
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/boost
echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/fast_ramp_down
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/align_windows
echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_migration_notif
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_sched_load
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/boostpulse_duration
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/io_is_busy
if [ -e "/sys/devices/system/cpu/cpu2/cpufreq/interactive/enable_prediction" ]; then
chmod 644 /sys/devices/system/cpu/cpu2/cpufreq/interactive/enable_prediction
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/enable_prediction
fi
echo "=========================================="
echo Checking whether you are using a Sultanxda based ROM or not
echo "=========================================="
#Checking whether you are using a Sultanxda based ROM or not
echo Checking ROM...
sleep 0.2
echo Applying appropriate values.
if [ -e "/sys/kernel/cpu_input_boost/enabled" ]; then
echo Enabling Input Boost for the LITTLE cluster @556 MHz and for the BIG Cluster @0Mhz and Custom thermal driver of Sultanxda
chmod 644 /sys/kernel/cpu_input_boost/*
echo 1 > /sys/kernel/cpu_input_boost/enabled
echo 66 > /sys/kernel/cpu_input_boost/ib_duration_ms
echo 556800 0 > /sys/kernel/cpu_input_boost/ib_freqs
chmod 444 /sys/kernel/cpu_input_boost/*
chmod 644 /sys/kernel/msm_thermal/enabled
echo 0 > /sys/kernel/msm_thermal/enabled
chmod 444 /sys/kernel/msm_thermal/enabled
else
#Checking whether you are using a Lineage based ROM or not
echo Checking ROM...
sleep 0.2
if grep -q 'ro.build.flavor=lineage_oneplus3-userdebug' /system/build.prop; then
#Enable Input Boost for LITTLE cluster @556MHz and for BIG cluster @729MHz for 66ms
echo Lineage Based ROM detected
echo Applying appropriate values.
echo Enabling Input Boost at 556 MHz for the LITTLE cluster and at 0 MHz for the BIG Cluster
if [ -e "/sys/module/cpu_boost/parameters/input_boost_freq" ]; then
chmod 644 /sys/module/cpu_boost/parameters/input_boost_freq
echo 0:556800 1:0 2:0 3:0 > /sys/module/cpu_boost/parameters/input_boost_freq
chmod 644 /sys/module/cpu_boost/parameters/input_boost_ms
echo 55 > /sys/module/cpu_boost/parameters/input_boost_ms
else
echo "*Input Boost is not avalible for your Kernel*"
fi
if [ -e "/sys/module/cpu_boost/parameters/boost_ms" ]; then
chmod 644 /sys/module/cpu_boost/parameters/boost_ms
echo 0 > /sys/module/cpu_boost/parameters/boost_ms
else
echo "*Cpu_Boost is not avalible for your Kernel*"
fi
else
#Enable Input Boost for LITTLE cluster @729MHz and for BIG cluster @729Hz for 100ms
echo Non-Lineage ROM detected
echo Applying appropriate values.
echo Enabling Input Boost at 729 MHz for the LITTLE cluster and at 0 MHz for the BIG Cluster
if [ -e "/sys/module/cpu_boost/parameters/input_boost_freq" ]; then
chmod 644 /sys/module/cpu_boost/parameters/input_boost_freq
echo 0:729600 1:0 2:0 3:0 > /sys/module/cpu_boost/parameters/input_boost_freq
chmod 644 /sys/module/cpu_boost/parameters/input_boost_ms
echo 77 > /sys/module/cpu_boost/parameters/input_boost_ms
else
echo "*Input Boost is not avalible for your Kernel*"
fi
if [ -e "/sys/module/cpu_boost/parameters/boost_ms" ]; then
chmod 644 /sys/module/cpu_boost/parameters/boost_ms
echo 0 > /sys/module/cpu_boost/parameters/boost_ms
else
echo "*Cpu_Boost is not avalible for your Kernel*"
fi
fi
fi
sleep 0.3
echo "=========================================="
#Disable TouchBoost
echo Disabling TouchBoost
if [ -e "/sys/module/msm_performance/parameters/touchboost" ]; then
chmod 644 /sys/module/msm_performance/parameters/touchboost
echo 0 > /sys/module/msm_performance/parameters/touchboost
else
echo "*Not supported for your current Kernel*"
fi
#Disable BCL
echo Disabling BCL and Removing Perfd
if [ -e "/sys/devices/soc/soc:qcom,bcl/mode" ]; then
echo -n disable > /sys/devices/soc/soc:qcom,bcl/mode
fi
#Enable Core Control and Disable MSM Thermal Throttling allowing for longer sustained performance
echo Disabling Aggressive CPU Thermal Throttling
if [ -e "/sys/module/msm_thermal/core_control/enabled" ]; then
echo 1 > /sys/module/msm_thermal/core_control/enabled
fi
if [ -e "/sys/module/msm_thermal/parameters/enabled" ]; then
echo N > /sys/module/msm_thermal/parameters/enabled
fi
#Tweak HMP Scheduler to feed the Big cluster more tasks
sleep 0.3
#echo Tweaking HMP Scheduler for correcting BIG Cluster utilization
echo 2 > /proc/sys/kernel/sched_window_stats_policy
echo 85 > /proc/sys/kernel/sched_upmigrate
echo 62 > /proc/sys/kernel/sched_downmigrate
echo 5 > /proc/sys/kernel/sched_spill_nr_run
echo 100 > /proc/sys/kernel/sched_spill_load
echo 30 > /proc/sys/kernel/sched_init_task_load
if [ -e "/proc/sys/kernel/sched_heavy_task" ]; then
echo 65 > /proc/sys/kernel/sched_heavy_task
fi
if [ -e "/proc/sys/kernel/sched_enable_power_aware" ]; then
echo 1 > /proc/sys/kernel/sched_enable_power_aware
fi
echo 10 > /proc/sys/kernel/sched_upmigrate_min_nice
echo 4 > /proc/sys/kernel/sched_ravg_hist_size
if [ -e "/proc/sys/kernel/sched_small_wakee_task_load" ]; then
echo 7 > /proc/sys/kernel/sched_small_wakee_task_load
fi
if [ -e "/proc/sys/kernel/sched_wakeup_load_threshold" ]; then
echo 110 > /proc/sys/kernel/sched_wakeup_load_threshold
fi
if [ -e "/proc/sys/kernel/sched_small_task" ]; then
echo 7 > /proc/sys/kernel/sched_small_task
fi
if [ -e "/proc/sys/kernel/sched_big_waker_task_load" ]; then
echo 35 > /proc/sys/kernel/sched_big_waker_task_load
fi
echo 950000 > /proc/sys/kernel/sched_rt_runtime_us
echo 1000000 > /proc/sys/kernel/sched_rt_period_us
if [ -e "/proc/sys/kernel/sched_migration_fixup" ]; then
echo 1 > /proc/sys/kernel/sched_migration_fixup
fi
if [ -e "/proc/sys/kernel/sched_freq_dec_notify" ]; then
echo 410000 > /proc/sys/kernel/sched_freq_dec_notify
fi
if [ -e "/proc/sys/kernel/sched_freq_inc_notify" ]; then
echo 600000 > /proc/sys/kernel/sched_freq_inc_notify
fi
if [ -e "/proc/sys/kernel/sched_boost" ]; then
echo 0 > /proc/sys/kernel/sched_boost
fi
#Tweaks for other various Settings
sleep 0.5
echo "=========================================="
echo Tweaking other various Settings
echo ·I/O Values
if [ -d /sys/block/dm-0 ] || [ -d /sys/devices/virtual/block/dm-0 ]; then
if [ -e /sys/devices/virtual/block/dm-0/queue/scheduler ]; then
DM_PATH=/sys/devices/virtual/block/dm-0/queue
fi
if [ -e /sys/block/dm-0/queue/scheduler ]; then
DM_PATH=/sys/block/dm-0/queue
fi
string=/sys/devices/virtual/block/dm-0/queue/scheduler;
Zen_Available=false;
if $BB grep 'zen' $string; then
Zen_Available=true;
fi
if [ "$Zen_Available" == "true" ]; then
if [ -e $DM_PATH/scheduler_hard ]; then
echo zen > $DM_PATH/scheduler_hard
fi
echo zen > $DM_PATH/scheduler
sleep 2
echo 300 > $DM_PATH/iosched/sync_expire
echo 2800 > $DM_PATH/iosched/async_expire
echo 14 > $DM_PATH/iosched/fifo_batch
chmod 644 $DM_PATH/iosched/sync_expire
echo 300 > $DM_PATH/iosched/sync_expire
fi
if [ "$Zen_Available" = "false" ]; then
if grep -q 'ro.build.flavor=lineage_oneplus3-userdebug' /system/build.prop; then
echo ZEN not avalible, setting 'Noop' instead...
if [ -e $DM_PATH/scheduler_hard ]; then
echo noop > $DM_PATH/scheduler_hard
fi
echo noop > $DM_PATH/scheduler
else
echo ZEN not avalible, setting 'CFQ' instead...
if [ -e $DM_PATH/scheduler_hard ]; then
echo cfq > $DM_PATH/scheduler_hard
fi
echo cfq > $DM_PATH/scheduler
fi
fi
fi
for i in /sys/block/../devices/soc/624000.ufshc/host0/target0:0:0/0:0:0:[0-4]/block/*/queue; do
string4=$($BB readlink -f $i/scheduler | cut -d 'q' -f1 | cut -d 'k' -f2 | cut -d '/' -f2 | tr a-z A-Z)
string5=$($BB cat $i/scheduler | cut -d ']' -f1 | cut -d '[' -f2 | $BB tr a-z A-Z)
if [ "$string5" == "NOOP" ]; then
echo "Leaving $string4 block at default $string5"
echo ""
sleep 0.1
fi
if [ "$string5" != "NOOP" ]; then
echo "Changing $string4 block I/O scheduler"
if [ -e $i/scheduler_hard ]; then
echo zen > $i/scheduler_hard
fi
echo zen > $i/scheduler
echo ""
sleep 2
# Initialize string 6 to avoid reference conflicts
string6=$($BB cat $i/scheduler | cut -d ']' -f1 | cut -d '[' -f2)
if [ "$string6" == "zen" ]; then
echo 300 > $i/iosched/sync_expire
echo 2800 > $i/iosched/async_expire
echo 14 > $i/iosched/fifo_batch
chmod 644 $i/iosched/sync_expire
echo 300 > $i/iosched/sync_expire
fi
fi
done
if [ -e "$DM_PATH/iostats" ]; then
echo 0 > $DM_PATH/iostats
fi
if [ -e "$DM_PATH/rq_affinity" ]; then
echo 1 > $DM_PATH/rq_affinity
fi
if [ -e "/sys/block/dm-0/bdi/read_ahead_kb" ]; then
echo 512 > /sys/devices/virtual/block/dm-0/bdi/read_ahead_kb
fi
if [ -e "/sys/block/sda/bdi/read_ahead_kb" ]; then
echo 512 > /sys/block/sda/bdi/read_ahead_kb
fi
echo ·Memory Values
echo 0 > /proc/sys/vm/swappiness
echo 100 > /proc/sys/vm/vfs_cache_pressure
echo 80 > /proc/sys/vm/dirty_ratio
echo 20 > /proc/sys/vm/dirty_background_ratio
echo 4096 > /proc/sys/vm/min_free_kbytes
echo 100 > /proc/sys/vm/dirty_expire_centisecs
echo 250 > /proc/sys/vm/dirty_writeback_centisecs
echo 0 > /proc/sys/vm/oom_kill_allocating_task
echo 3 > /proc/sys/vm/page-cluster
if [ -e "/sys/module/lowmemorykiller/parameters/enable_adaptive_lmk" ]; then
chmod 666 /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk
chown root /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk
echo 0 > /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk
fi
if [ -e "/sys/module/lowmemorykiller/parameters/enable_adaptive_lmk" ]; then
echo 0 > /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk
else
echo ' *Adaptive LMK is not present on your Kernel* '
fi
if [ -e "/sys/module/lowmemorykiller/parameters/minfree" ]; then
echo 23939,44091,58788,73485,88182,102879 > /sys/module/lowmemorykiller/parameters/minfree
else
echo ' *LMK cannot currently be modified on your Kernel* '
fi
echo ·TCP Values
string2=/proc/sys/net/ipv4/tcp_available_congestion_control
if grep 'westwood' $string2; then
echo westwood > /proc/sys/net/ipv4/tcp_congestion_control
else
echo Westwood not avilable, using Cubic
echo cubic > /proc/sys/net/ipv4/tcp_congestion_control
fi
#Tweaking GPU
sleep 0.4
echo GPU Tweaking
echo msm-adreno-tz > /sys/devices/soc/b00000.qcom,kgsl-3d0/devfreq/b00000.qcom,kgsl-3d0/governor
if grep -q 'ro.build.version.sdk=25' /system/build.prop; then
if grep -q 'ro.build.flavor=lineage_oneplus3-userdebug' /system/build.prop; then
echo 510000000 > /sys/class/kgsl/kgsl-3d0/max_gpuclk
else
echo 560000000 > /sys/class/kgsl/kgsl-3d0/max_gpuclk
fi
fi
if grep -q 'ro.build.version.sdk=24' /system/build.prop; then
if grep -q 'ro.build.flavor=lineage_oneplus3-userdebug' /system/build.prop; then
echo 510000000 > /sys/class/kgsl/kgsl-3d0/max_gpuclk
else
echo 560000000 > /sys/class/kgsl/kgsl-3d0/max_gpuclk
fi
fi
if grep -q 'ro.build.version.sdk=23' /system/build.prop; then
if grep -q 'ro.build.flavor=lineage_oneplus3-userdebug' /system/build.prop; then
echo 560000000 > /sys/devices/soc/b00000.qcom,kgsl-3d0/devfreq/b00000.qcom,kgsl-3d0/max_freq
else
echo 560000000 > /sys/devices/soc/b00000.qcom,kgsl-3d0/devfreq/b00000.qcom,kgsl-3d0/max_freq
fi
else
if grep -q 'ro.build.flavor=lineage_oneplus3-userdebug' /system/build.prop; then
echo 510000000 > /sys/devices/soc/b00000.qcom,kgsl-3d0/devfreq/b00000.qcom,kgsl-3d0/max_freq
else
echo 560000000 > /sys/devices/soc/b00000.qcom,kgsl-3d0/devfreq/b00000.qcom,kgsl-3d0/max_freq
fi
fi
sleep 1
echo ------------------------------------------------------------
echo 'Project Zhana v4.3' Successfully Applied!
echo "Project Zhana Battery" > /data/system/current_profile
echo You may now tweak them further
echo using EXKM or Kernel Adiutor
echo ------------------------------------------------------------
echo ""
echo " Done, this will be automatically closed..."
sleep 4
#################################################
#Modded by Asiier
#Please say thanks and give proper credits if you're using this profile.
#Credits
#*soniCron *Alcolawl *RogerF81 *Patalao *Mostafa Wael *Senthil360 and all of those that have share their profiles on Nexus 5X/6P Advanced Interactive Tweaks respective threads.
Important are:
Small Cores Tweaks.
echo 70 480000:65 556800:75 729600:82 960000:86 1036800:2 1228800:99 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
echo 220000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_slack
echo 307200 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
echo 100000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
echo 0 729600:76000 960000:99000 1228800:150000 1478400:170000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
echo 155 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
echo 22000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/boost
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/fast_ramp_down
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/align_windows
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/boostpulse_duration
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
if [ -e "/sys/devices/system/cpu/cpu0/cpufreq/interactive/enable_prediction" ]; then
chmod 644 /sys/devices/system/cpu/cpu0/cpufreq/interactive/enable_prediction
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/enable_prediction
fi
Big Cores Tweaks:
echo 65 940800:80 1036800:2 1401600:95 1824000:98 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
echo 140000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/timer_slack
echo 1401600 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/hispeed_freq
echo 65000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/timer_rate
echo 32000 940800:85000 1248000:96000 1401600:88000 1632000:80000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/above_hispeed_delay
echo 99 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/go_hispeed_load
echo 11000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/min_sample_time
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/max_freq_hysteresis
echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/ignore_hispeed_on_notif
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/boost
echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/fast_ramp_down
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/align_windows
echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_migration_notif
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_sched_load
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/boostpulse_duration
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/io_is_busy
if [ -e "/sys/devices/system/cpu/cpu2/cpufreq/interactive/enable_prediction" ]; then
chmod 644 /sys/devices/system/cpu/cpu2/cpufreq/interactive/enable_prediction
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/enable_prediction
fi
#Enable Input Boost for LITTLE cluster @729MHz and for BIG cluster @729Hz for 100ms
echo Non-Lineage ROM detected
echo Applying appropriate values.
echo Enabling Input Boost at 729 MHz for the LITTLE cluster and at 0 MHz for the BIG Cluster
if [ -e "/sys/module/cpu_boost/parameters/input_boost_freq" ]; then
chmod 644 /sys/module/cpu_boost/parameters/input_boost_freq
echo 0:729600 1:0 2:0 3:0 > /sys/module/cpu_boost/parameters/input_boost_freq
chmod 644 /sys/module/cpu_boost/parameters/input_boost_ms
echo 77 > /sys/module/cpu_boost/parameters/input_boost_ms
else
echo "*Input Boost is not avalible for your Kernel*"
fi
#echo Tweaking HMP Scheduler for correcting BIG Cluster utilization
echo 2 > /proc/sys/kernel/sched_window_stats_policy
echo 85 > /proc/sys/kernel/sched_upmigrate
echo 62 > /proc/sys/kernel/sched_downmigrate
echo 5 > /proc/sys/kernel/sched_spill_nr_run
echo 100 > /proc/sys/kernel/sched_spill_load
echo 30 > /proc/sys/kernel/sched_init_task_load
it prefers Zen, if not available goes to noop or CFQ
Some Memory tweaks..
cho ·Memory Values
echo 0 > /proc/sys/vm/swappiness
echo 100 > /proc/sys/vm/vfs_cache_pressure
echo 80 > /proc/sys/vm/dirty_ratio
echo 20 > /proc/sys/vm/dirty_background_ratio
echo 4096 > /proc/sys/vm/min_free_kbytes
echo 100 > /proc/sys/vm/dirty_expire_centisecs
echo 250 > /proc/sys/vm/dirty_writeback_centisecs
echo 0 > /proc/sys/vm/oom_kill_allocating_task
echo 3 > /proc/sys/vm/page-cluster
tries to set TCP to westwood if not cubic.
echo msm-adreno-tz > /sys/devices/soc/b00000.qcom,kgsl-3d0/devfreq/b00000.qcom,kgsl-3d0/governor
Oh... and the whole zip is made for SDK25 or lower so not really O compatible.
So yeah... you'd better set the values you'd want manually instead of relying on a outdated all in one wonder script.
timbohobbs said:
Are you using stock elemental x settings or other ?
Click to expand...
Click to collapse
Stock
Haldi4803 said:
Important are:
Small Cores Tweaks.
echo 70 480000:65 556800:75 729600:82 960000:86 1036800:2 1228800:99 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads
echo 220000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_slack
echo 307200 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq
echo 100000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate
echo 0 729600:76000 960000:99000 1228800:150000 1478400:170000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay
echo 155 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load
echo 22000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/boost
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/fast_ramp_down
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/align_windows
echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/boostpulse_duration
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy
if [ -e "/sys/devices/system/cpu/cpu0/cpufreq/interactive/enable_prediction" ]; then
chmod 644 /sys/devices/system/cpu/cpu0/cpufreq/interactive/enable_prediction
echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/enable_prediction
fi
Big Cores Tweaks:
echo 65 940800:80 1036800:2 1401600:95 1824000:98 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads
echo 140000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/timer_slack
echo 1401600 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/hispeed_freq
echo 65000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/timer_rate
echo 32000 940800:85000 1248000:96000 1401600:88000 1632000:80000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/above_hispeed_delay
echo 99 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/go_hispeed_load
echo 11000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/min_sample_time
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/max_freq_hysteresis
echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/ignore_hispeed_on_notif
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/boost
echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/fast_ramp_down
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/align_windows
echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_migration_notif
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_sched_load
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/boostpulse_duration
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/io_is_busy
if [ -e "/sys/devices/system/cpu/cpu2/cpufreq/interactive/enable_prediction" ]; then
chmod 644 /sys/devices/system/cpu/cpu2/cpufreq/interactive/enable_prediction
echo 0 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/enable_prediction
fi
#Enable Input Boost for LITTLE cluster @729MHz and for BIG cluster @729Hz for 100ms
echo Non-Lineage ROM detected
echo Applying appropriate values.
echo Enabling Input Boost at 729 MHz for the LITTLE cluster and at 0 MHz for the BIG Cluster
if [ -e "/sys/module/cpu_boost/parameters/input_boost_freq" ]; then
chmod 644 /sys/module/cpu_boost/parameters/input_boost_freq
echo 0:729600 1:0 2:0 3:0 > /sys/module/cpu_boost/parameters/input_boost_freq
chmod 644 /sys/module/cpu_boost/parameters/input_boost_ms
echo 77 > /sys/module/cpu_boost/parameters/input_boost_ms
else
echo "*Input Boost is not avalible for your Kernel*"
fi
#echo Tweaking HMP Scheduler for correcting BIG Cluster utilization
echo 2 > /proc/sys/kernel/sched_window_stats_policy
echo 85 > /proc/sys/kernel/sched_upmigrate
echo 62 > /proc/sys/kernel/sched_downmigrate
echo 5 > /proc/sys/kernel/sched_spill_nr_run
echo 100 > /proc/sys/kernel/sched_spill_load
echo 30 > /proc/sys/kernel/sched_init_task_load
it prefers Zen, if not available goes to noop or CFQ
Some Memory tweaks..
cho ·Memory Values
echo 0 > /proc/sys/vm/swappiness
echo 100 > /proc/sys/vm/vfs_cache_pressure
echo 80 > /proc/sys/vm/dirty_ratio
echo 20 > /proc/sys/vm/dirty_background_ratio
echo 4096 > /proc/sys/vm/min_free_kbytes
echo 100 > /proc/sys/vm/dirty_expire_centisecs
echo 250 > /proc/sys/vm/dirty_writeback_centisecs
echo 0 > /proc/sys/vm/oom_kill_allocating_task
echo 3 > /proc/sys/vm/page-cluster
tries to set TCP to westwood if not cubic.
echo msm-adreno-tz > /sys/devices/soc/b00000.qcom,kgsl-3d0/devfreq/b00000.qcom,kgsl-3d0/governor
Oh... and the whole zip is made for SDK25 or lower so not really O compatible.
So yeah... you'd better set the values you'd want manually instead of relying on a outdated all in one wonder script.
Click to expand...
Click to collapse
That would work if I knew how to set all those values. For me though I do not.
So i was checking this out and in the FAQ thread here: https://forum.xda-developers.com/showpost.php?p=69037152&postcount=3
Near the top it mentions the HTC10 with a link that explains why it doesn't work or doesn't work as well on an HTC device, linked here: https://forum.xda-developers.com/showpost.php?p=70815496&postcount=2864
The long and short of it is I guess HTC uses there own proprietary pnp manager. But it does go on to say that someone else took the work being done with AKT and made a unified kernel tweak, linked here: https://forum.xda-developers.com/htc-10/development/advanced-interactive-governor-tweaks-t3543589 Which i guess works for anything including HTC's stock kernel.
whew........ So i guess my question first of all is are you using AKT, or are you using Soilwork: Unified kernel-tweaks?
I guess the next question is those of us using modded kernel (cleanslate and Elemental X) Do those kernels have HTC's proprietary pnp manager turned on and they are just tweaking it, or do they shut it off completely and go there own route.
If they shut it off completely then it sounds like AKT is the way to go, but if they don't are are just tweaking HTC's pnp manager, it sounds like the Soilwork tweak is the way to go.
BTW i also use Leedoird, but i'm rocking the CleanSlate kernel atm.
Void4ever
void4ever said:
So i was checking this out and in the FAQ thread here: https://forum.xda-developers.com/showpost.php?p=69037152&postcount=3
Near the top it mentions the HTC10 with a link that explains why it doesn't work or doesn't work as well on an HTC device, linked here: https://forum.xda-developers.com/showpost.php?p=70815496&postcount=2864
The long and short of it is I guess HTC uses there own proprietary pnp manager. But it does go on to say that someone else took the work being done with AKT and made a unified kernel tweak, linked here: https://forum.xda-developers.com/htc-10/development/advanced-interactive-governor-tweaks-t3543589 Which i guess works for anything including HTC's stock kernel.
whew........ So i guess my question first of all is are you using AKT, or are you using Soilwork: Unified kernel-tweaks?
I guess the next question is those of us using modded kernel (cleanslate and Elemental X) Do those kernels have HTC's proprietary pnp manager turned on and they are just tweaking it, or do they shut it off completely and go there own route.
If they shut it off completely then it sounds like AKT is the way to go, but if they don't are are just tweaking HTC's pnp manager, it sounds like the Soilwork tweak is the way to go.
BTW i also use Leedoird, but i'm rocking the CleanSlate kernel atm.
Void4ever
Click to expand...
Click to collapse
Using AKT. And enabled through terminal.And no I didn't disable pnp mgr, I'm guessing it overrides it. And soilwork won't flash. Akt is working fine for me no reboots or massive drains or wakelocks.No excessive heat either running cool as a cucumber,so until pnp is updated I chose to use this route. I'm getting better averages than I was on Nougat. 4.5 hrs on screen currently 27% battery remaining and 16 hours off charger. Try it and see what you think.
mattie_49 said:
Using AKT. And enabled through terminal.And no I didn't disable pnp mgr, I'm guessing it overrides it. And soilwork won't flash. Akt is working fine for me no reboots or massive drains or wakelocks.No excessive heat either running cool as a cucumber,so until pnp is updated I chose to use this route. I'm getting better averages than I was on Nougat. 4.5 hrs on screen currently 27% battery remaining and 16 hours off charger. Try it and see what you think.
Click to expand...
Click to collapse
Hi, do you think this would work on Nougat? I have random reboots at 40% battery left.
NickDVS said:
Hi, do you think this would work on Nougat? I have random reboots at 40% battery left.
Click to expand...
Click to collapse
I'm sure. Try and see
I've done all of this before & it only helps slightly. The drain is related to HTC's framework & it's dialer, and the only way to truly stop the drain is to use airplane mode...which kind of defeats the purpose of it being a phone.
This battery issue is non-existent with LineageOS 15.1 & AOSiP 8.1, running on Oreo firmware. Both of those ROMs work fine, but still have bugs: bottom speaker barely works & Bluetooth issues.
mattie_49 said:
Using AKT. And enabled through terminal.And no I didn't disable pnp mgr, I'm guessing it overrides it. And soilwork won't flash. Akt is working fine for me no reboots or massive drains or wakelocks.No excessive heat either running cool as a cucumber,so until pnp is updated I chose to use this route. I'm getting better averages than I was on Nougat. 4.5 hrs on screen currently 27% battery remaining and 16 hours off charger. Try it and see what you think.
Click to expand...
Click to collapse
I am o. Leedroid 5.2 with stock kernel tweaked by leedroid, can I install a stock stock kernel and what rom do you have?
Is this AKT still work after reboot? Or we must re-enable it after reboot?
fresh777 said:
Is this AKT still work after reboot? Or we must re-enable it after reboot?
Click to expand...
Click to collapse
Must use a terminal emulator. Type su enter
Then type AKT then it's self explainable, choose your profile.
mattie_49 said:
Must use a terminal emulator. Type su enter
Then type AKT then it's self explainable, choose your profile.
Click to expand...
Click to collapse
Thanks for the reply. I mean after run AKT from terminal and done. For the next reboot, i must repeat the step or not?
fresh777 said:
Thanks for the reply. I mean after run AKT from terminal and done. For the next reboot, i must repeat the step or not?
Click to expand...
Click to collapse
No. All done till you wanna change profiles if at all. Terminal will tell you what profile is active after AKT enter
mattie_49 said:
No. All done till you wanna change profiles if at all. Terminal will tell you what profile is active after AKT enter
Click to expand...
Click to collapse
Thank you. I just use this in aosip 8.1 rom. Don't see any improvement for battery life. But for hot issue, i didn't got this issue when use AKT.
Ninja X said:
I am o. Leedroid 5.2 with stock kernel tweaked by leedroid, can I install a stock stock kernel and what rom do you have?
Click to expand...
Click to collapse
the stock kernel in leedroid is not tweaked, you either have the actual stock kernel or the cleanslate kernel.
Oooh.

Categories

Resources