What is Skinny Pro?
This is not for NOOBS - it breaks functionality in Xiaomi apps that try to communicate back to head office. This is an intentional feature and is for people who are not interested in being part of the Xiaomi ecosphere. LEAVE NOW if you have, or intend to log on to Xiaomi and use their services!!!!
Skinny does not magically fix poor choice of ROMs, Apps or lack of knowledge.
It is not a custom Kernel - it is a custom boot.img containing modified initialization scripts for the stock kernel.
There are 2 distinct versions:
Based on 7.1.4.0 - Use for 7.1.xx to 7.3.20 (MIUI7) Support discontinued since V7 (O.P no longer applies to this version)
Based on MIUI8 - use for MIUI7.5.x and MIUI8
Design Brief:
No Placebos
To overcome the limitations of Stock MIUI being:
Poor battery life
Poor performance
Chronic invasion of privacy
Boot.img mods:
Disable starting of non-present devices and services
Disable stock recovery overwriting TWRP
Disable OTA services (no use on a modified ROM)
Disable starting of invasive (spying) services
Disable fingerprint sensor infrastructure (not for our device)
Disable find device infrastructure
Disable second space infrastructure
Build in init.d support
Enable zram swap creation (disable conflicting "mcd" service infrastructure)
Mass Storage Device mode added for external SDCard
Improved TCP Buffer values
Reconfigured internal SDCard suppport to remove uneccessary symlinks
Reduce cpu scheduler, foreground and background tasks deadtime (throttling)
Add some Android 6.0 TCP tweaks
Expose LMK and HPS settings for user configuration
What you will see:
Faster boot
Less background activity at idle
Less RAM usage
Less spying/reporting activity
Better battery life
Better Performance
More reliable and faster data speeds
Install your chosen ROM and get it past the first setup screens before flashing a Skinny Boot image.
If you really must install Xposed, install this after the Skinny boot image.
Do not install "kernel" tweaking apps - they will conflict with the inherent settings in Skinny!
No wipes are necessary after installing the boot.img
What else do I need to do?
First, an explanation as to why we need to set everything the way it is:
The cpu is controlled by 4 separate mechanisms:
1. Thermal throttling - will limit frequencies and shut down cores to stay within safe operating temperatures - will override all other mechanisms. Settings available: High Performance (less strict) or Balanced (default)
2. Performance Server - will temporarily boost freqs and cores depending on detected conditions such as screen touch, screen update or rotate, app open. Limited settings available via /etc/perfservscntbl.txt
3. Hotplugging Service - will add or remove cpu cores as load requires. Some settings are accessible through /proc/hps/
4. Interactive Governor - will throttle freqs up and down based on load and add or remove cores also. Some settings are accessible through /sys/devices/system/cpu/cpufreq/interactive/
You will notice there are competing and often contradicting mechanisms. The factory defaults essentially disable the Interactive governor as being the primary source of initial boosting cpu freqs. The "boost" setting normally found in the governor is non-functional - instead, the Perf Server will boost to 2 cores @ 1183MHz when a potential demand for processing power is detected apart from a simple screen touch. The interactive governor will take over scaling the freq and number of cores after the perf server boost period expires or load demands more cpu power than the boost caters for.
Since the Performance Server tends to over-react, setting 2 cores @ 1183MHz for the smallest of events, we disable it completely by manually editing the existing line in /system/build.prop from:
ro.mtk_perfservice_support=1 to ro.mtk_perfservice_support=0
You must do this yourself - this is vital since all further Governor and Hotplug settings rely upon it being disabled.
Editing /etc/perfservscntbl.txt is not required since this file will no longer be processed.
The settings for the Interactive Governor and Hotplug are modified from factory default to correct a couple of serious problems:
1. The cpu will not reliably throttle back to idle at 403MHz. This has a huge impact on battery.
This is caused by the timer_rate setting being too short allowing transient background activities to trigger scaling the freq up. Increasing the time effectively averages out the transient load spikes so the cpu will not break idle unnecessarily.
2. The cpu does not respond to increasing or decreasing load fast enough creating micro-lags and consuming battery. Reducing the min_sample_time will shorten the time taken for the cpu to lower in freq when load drops off. Reducing the above_hispeed_delay will reduce the response time to increase the cpu freq in response to a load. Both of these settings also compensate for the longer than standard timer_rate that introduces some sluggishness by necessity.
All other values are set to encourage the frequency and number of cores to rapidly and reliably return to idle to save battery while still providing sufficient responsiveness to sudden load demands.
Create an init.d script exactly as follows: (premade file 01_init also available to download)
Code:
#!/system/bin/sh
### CPU freqs standard RN2: 403000, 806000, 1183000, 1326000, 1469000, 1625000, 1781000, 1950000
### CPU freqs PRIME RN2: 403000, 806000, 1183000, 1326000, 1482000, 1664000, 1885000, 2158000
### GPU freqs standard RN2: 253500, 299000, 390000, 442000, 546000
### GPU freqs PRIME RN2: 253500, 338000, 390000, 546000, 676000
# Stop running boot-time services (enable the lines for services you want to stop)
#stop sn # USB serial number allocation
#stop wifi2agps # WiFi assisted GPS (for fine location)
#stop agpsd # Mobile Network assisted GPS (for fine locastion)
#stop emsvr_user # Engineering Mode server
#stop PPLAgent # Privacy Protection Lock
#stop mtkbt # MTK Bluetooth
#stop batterywarning # Battery warning service
#stop debuggerd64 # debug logging
#stop debuggerd # debug logging
#stop logd # logging
#stop autokd # autotune for WiFi
#Set to permissive (enable this line if SE permissive mode is required)
# setenforce 0
# Tweak Interactive Governor (now set in boot.img - enable here to override values)
#echo 403000 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq # factory default 1183000
#echo 99 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load # factory default 99
#echo 99 > /sys/devices/system/cpu/cpufreq/interactive/target_loads # factory default 90
#echo 25000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate # factory default 20000
#echo 10000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time # factory default 20000
#echo 5000 > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay # factory default 20000
#echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/timer_slack # factory default 80000
# Limit CPU max freqs (To limit the maximum cpu freq, enable both of these lines. Select a valid freq for your device from table at start)
#echo 1781000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
#echo 1781000 > /proc/cpufreq/cpufreq_limited_max_freq_by_user
# Limit foreground CPU cores (set in boot.img - enable here to override values) 0-1 min, 0-7 max Example shows 5 cores (also needs to be set in Hotplug)
#echo 0-4 > /dev/cpuset/foreground/cpus
# Hotplug settings (set in boot.img - enable here to override values) Note: num_limit values are 1-8
#echo 5 > /proc/hps/num_limit_low_battery # factory default 8
#echo 5 > /proc/hps/num_limit_power_serv # factory default 8
#echo 5 > /proc/hps/num_limit_thermal # factory default 8
#echo 5 > /proc/hps/num_limit_ultra_power_saving # factory default 8
#echo 99 > /proc/hps/up_threshold # factory default 95
#echo 87 > /proc/hps/down_threshold # factory default 85
#echo 0 > /proc/hps/rush_boost_enabled # factory default 1
#echo 0 > /proc/hps/input_boost_enabled # factory default 1
# Tweak GPU Settings (Look in /proc/gpufreq/gpufreq_power_dump for power usage at different freqs)
# To disable GPU touch boost:
#echo 0 > /proc/gpufreq/gpufreq_input_boost # factory default 1 (enabled)
# To limit max GPU freq: (Select a valid freq for your device from table at start)
#echo 442000 > /proc/gpufreq/gpufreq_opp_max_freq # factory default 0 (disabled)
# Tweak VM (set in boot.img - enable here to override values)
#echo 300 > /proc/sys/vm/dirty_expire_centisecs # factory default 200
#echo 500 > /proc/sys/vm/dirty_writeback_centisecs # factory default 300
# Tweak LMK (set in boot.img - enable here to override values) 18 37 56 75 93 112MB # factory default 72 90 108 126 219 317MB (MB x 256 = value)
#echo 4608,9472,14336,19200,23808,28672 > /sys/module/lowmemorykiller/parameters/minfree
#Enable zram (no zram set by default, enable first 4 lines if 1 zram required, all 7 lines if 2 zram required)
#echo 40 > /proc/sys/vm/swappiness
#echo 268435456 > /sys/block/zram0/disksize # for single zram: 536870912 = 512MB (for non-prime version) 1073741824=1GB (for prime version)
#/system/xbin/busybox mkswap /dev/block/zram0
#/system/xbin/busybox swapon /dev/block/zram0
#echo 268435456 > /sys/block/zram1/disksize # for 2 zrams: 268435456 = 256MB (for non-prime version) 536870912 = 512MB (for prime version)
#/system/xbin/busybox mkswap /dev/block/zram1
#/system/xbin/busybox swapon /dev/block/zram1
# Tweak IO Scheduler (set in boot.img - enable here to override values)
#echo deadline > /sys/block/mmcblk0/queue/scheduler # factory default cfq (choice: noop deadline cfq)
#echo 128 > /sys/block/mmcblk0/queue/read_ahead_kb # factory default 128 Choose between 128, 256, 512, 1024, 2048
#echo 0 > /sys/block/mmcblk0/queue/add_random # factory default 1
#echo 0 > /sys/block/mmcblk0/queue/iostats # factory default 1
#echo deadline > /sys/block/mmcblk1/queue/scheduler # for ext sdcard (sdcard1)
#echo 2048 > /sys/block/mmcblk1/queue/read_ahead_kb # for ext sdcard (sdcard1)
#echo 0 > /sys/block/mmcblk1/queue/add_random # for ext sdcard (sdcard1)
#echo 0 > /sys/block/mmcblk1/queue/iostats # for ext sdcard (sdcard1)
#Tweak Entropy (set in boot.img - enable here to override values)
#echo 384 > /proc/sys/kernel/random/read_wakeup_threshold # factory default 64
#echo 448 > /proc/sys/kernel/random/write_wakeup_threshold # factory default 128
#Tweak for wifi router connection issues
#echo 1 > /proc/sys/net/ipv6/conf/wlan0/disable_ipv6
# Disable debugging on some modules (set in boot.img - enable here to override values)
#echo 0 > /sys/module/alarm_dev/parameters/debug_mask;
#echo 0 > /sys/module/alarmtimer/parameters/debug_mask;
#echo 0 > /sys/module/binder/parameters/debug_mask;
#echo 0 > /sys/module/earlysuspend/parameters/debug_mask;
#echo 0 > /sys/module/sbsuspend/parameters/sbsuspend_debug_mask;
#echo 0 > /sys/module/snd/parameters/debug;
#echo 0 > /sys/module/pvrsrvkm/parameters/gPVRDebugLevel;
#echo 0 > /sys/module/musb_hdrc/parameters/debug_level;
#echo 0 > /sys/module/lowmemorykiller/parameters/debug_level;
#FSTRIM
busybox fstrim /data
busybox fstrim /system
busybox fstrim /cache
Update BusyBox to version 1.25.1-1 (available to download)
Reduce the number of apps and services needlessly starting automatically at boot. Uninstall or freeze bloat apps. Replace "noisy" apps with better written ones.
Use BetterBatteryStats, WakelockDetector Root or similar to understand what invisible activities are consuming battery.
Use SDMaid, DisableServices, MyAndroidTools or similar to disable autostarts (receivers)and app related services. Use with caution.
To see what boot services are running, type getprop in Terminal. You will see a bunch of entries like [init.svc.66xx_launcher]: [running]
These service must remain running do not stop!:
Code:
[init.svc.66xx_launcher]: [running]
[init.svc.MtkCodecService]: [running]
[init.svc.NvRAMAgent]: [running]
[init.svc.aal]: [running]
[init.svc.ccci_fsd]: [running]
[init.svc.ccci_mdinit]: [running]
[init.svc.drm]: [running]
[init.svc.fuelgauged]: [running]
[init.svc.gsm0710muxd]: [running]
[init.svc.guiext-server]: [running]
[init.svc.healthd]: [running]
[init.svc.installd]: [running]
[init.svc.keystore]: [running]
[init.svc.lmkd]: [running]
[init.svc.media]: [running]
[init.svc.mnld]: [running]
[init.svc.netd]: [running]
[init.svc.ril-daemon-mtk]: [running]
[init.svc.sdcard]: [running]
[init.svc.servicemanager]: [running]
[init.svc.shelld]: [running]
[init.svc.surfaceflinger]: [running]
[init.svc.thermal]: [running]
[init.svc.thermald]: [running]
[init.svc.ueventd]: [running]
[init.svc.vold]: [running]
[init.svc.zygote]: [running]
[init.svc.zygote_secondary]: [running]
[init.svc.bmi160d]: [running]
If you only have 1 SIM, it is highly recommended to go into single SIM mode to turn off the second modem service. Edit build.prop existing line from:
persist.radio.multisim.config=dsds to persist.radio.multisim.config=ss
Turn off Developer Options/Memory Optimization and MIUI Optimization. This is a legacy of the mcd service zram configuration that is disabled.
Removal of Apps that are created by symlinks: (Updated information for any ROM version can be found in ROM \META-INF\com\google\android\updater-script)
Uninstall the app where possible and then delete the leftover libs if they exist.
Code:
[B]MAB[/B]
/system/lib/libDToken.so
/system/lib/libNative.so
/system/lib/libShopSigned.so
/system/lib/libentryexpro.so
/system/lib/libsecuritysdk-3.1.27.so
[B]Jeejen[/B]
/system/lib/libJeejenAisound.so
/system/lib/libbspatch.so
/system/lib/libfamily_jni.so
/system/lib/libgetuiext.so
/system/lib/libjeejenmsc.so
[B]MIUI Video[/B]
/system/lib/libDecRes_sdk.so
/system/lib/libminivenus.so
/system/lib/libmresearch.so
/system/lib/libsecurities_sdk.so
[B]Cleanmaster[/B]
/system/lib/libTmsdk-2.0.9-mfr.so
/system/lib64/libTmsdk-2.0.9-mfr.so
/system/lib/libdce-1.1.14-mfr.so
/system/lib64/libdce-1.1.14-mfr.so
/system/lib/libkcmutil.so
/system/lib/libkcmutilex.so
/system/lib/libsic_helper.so
[B]SecondSpace[/B]
/system/lib/libspaces_jni.so
[B]Sogou Input[/B]
/system/lib/libwebp.so
/system/lib/libweibosdkcore_sogou.so
[B]AMAP Network Location[/B]
/system/lib64/libapssdk.so
[B]YellowPage[/B]
/system/lib64/libdidi_secure.so
[B]XMPass[/B]
/system/lib64/libxmpass_sdk_patcher.so
/system/lib64/xmpass_libweibosdkcore.so
[B]PicoTTS[/B]
/system/lib64/libttscompat.so
/system/lib64/libttspico.so
[B]Miui Gallery[/B]
/system/lib64/libwrapnexpcmcalbody.so
/system/lib64/libnexralbody_audio.so
/system/lib64/libnexcralbody_mc_jb.so
/system/lib64/libnexeditorsdk.so
/system/lib64/libPinguoImageSDK.so
/system/lib64/libMiuiGalleryNSGIF.so
/system/lib/libMiuiGalleryNSGIF.so
/system/lib64/libDexHelper.so
[B]MIUI Scanner[/B]
/system/lib64/libQuadrangleRecognizer.so
/system/lib64/libhw_instanttrans.so
/system/lib64/libhwocr_cntools_shared.so
/system/lib64/libsgmain.so
/system/lib64/libsgmainso-5.1.2011.so
/system/lib64/libtbdecode.so
Remove inbuilt virus scanner(s)
Remove GuardProvider.apk and SecurityAdd.apk plus:
Code:
/system/lib64/libams-1.1.7-m-mfr.so
/system/lib64/libams-1.1.7-mfr.so
/system/lib64/libavast-utils.so
/system/lib64/libavast-vps-interface.so
/system/lib64/libavlasys.so
/system/lib64/libavlm.so
/system/lib64/libavlurl.so
Extra libs that can be removed: (if associated apps are removed)
Code:
[B]Lib:[/B]
libfdpp.so Find Device
libfdpp_jni.so Find Device
libffmpeg-miplayer.so Music / MIUIVideo
libhotknot.so
libhotknot_vendor.so
libnfc_ndef.so
libpatcher_game_jni.so
libpatcher_jni.so
libvoicerecognition.so Voice Extensions
libvoicerecognition_jni.so Voice Extensions
libwhetstone_jni.so
libwhetstone_sdk.so
libxiaomimediaplayer.so Music / MIUIVideo
libxiaomiplayerwrapper.so Music / MIUIVideo
[B]Lib64:[/B]
libBaiduMapSDK_base_v4_0_0.so
libBaiduMapSDK_search_v4_0_0.so
libBaiduMapSDK_util_v4_0_0.so
libBankCardRecognizer.so
libduokantext.so
libfdpp.so Find Device
libfdpp_jni.so Find Device
libhotknot.so
libhotknot_vendor.so
libidcardquality_v1.0.3.so
libjni_latinimegoogle.so Google Keyboard
libjni_pacprocessor.so
libjni_unbundled_latinimegoogle.so Stock Keyboard
libnfc_ndef.so
libpatcher_game_jni.so
libpatcher_jni.so
libprintspooler_jni.so Print Spooler
libtbtv3312.so
libTrafficRadar.so
libttscompat.so Pico TTS
libttspico.so Pico TTS
libunipaychsec.so
libweibosdkcore.so
libwhetstone_jni.so
libwhetstone_sdk.so
[B]/vendor/lib64:[/B]
libcom_fingerprints_productiontestmanager.so
libcom_fingerprints_sensor.so
Skinny Pro All versions:
https://drive.google.com/folderview?id=0BwdRTuyj12_yRk9Kcm1pZkxuZzg&usp=sharing
Enjoy
@jajk Awesome work! Do you intend to work on the aosp boot.img much or are you more invested in the miui one (or is it mostly the same project with not many differences between the two types)?
@Sleepy_Augie There is little difference between the 2 flavors so it is easy to keep them in sync
All,
I cannot possibly know what customization other devs are adding to their boot.imgs and whether or not that will make their ROMs incompatible with my boot.imgs. I will try to keep the AOSP version up with current developments while still keeping it "Generic".
Could you include Selinux: Permissive? Zram is better than swap built-in miui ?
@efr07 The beauty of not embedding tweaks - you can choose to be permissive or enforcing in your init.d script rather than me dictating it to all.
setenforce=0 or 1
and to answer the second part....
MIUI uses what could be called a "dynamic swap" system utilizing 4 zram swaps of variable size. The system prioritizes what gets access to that extra memory and what doesn't. No surprises - Xiaomi apps get priority over your own apps. The complexity of this system is so great, it would negate any performance advantage completely but it does make the Xiaomi apps more tenacious than other apps.
@jajk
First things first thank you so much for the effort you have done improving Redmi Note 2,
But I have some question if you please,
I have Miui 7.2.2.0 Lite on my Redmi Note 2 Prime (2.2 ghz) (Rom Link http://en.miui.com/thread-244684-1-1.html)
I have flashed the file as img to boot, and I have done as you said until the int.d thing, I went to #/system/bin/ and I found sh file and opened it in text editor, deleted everything in it and paste what you mentioned, till now we are ok with the device.
I did not find the files that you said I should delete from /vendor/lib, so I went to /vendor/lib64 and deleted the first file, After I deleted it suddenly Root Explorer shut off and whenever I open it again I cant find anything, just blank screen with its symbol and name above and nothing else. Tried to delete Root Explorer and install again and nothing new. Please help, Have I done everything okay? and what should I do to fix this thing and continue deleting the remaining files?
Thank you.
@jajk delete folder /system/etc/radv <- do you mean radvd?
@aghr11 I think that you did not understand the method to create the init.d script and modified an important file instead. You will have to replace that script file you blanked with the original or restore from a good backup and try again. The list of files for deletion is only if they exist in the location as described. If you have enabled any fingerprint settings for some obscure reason, you will probably get locked out of your phone.
Now to creating the script.
Using a text editor, create a file named 01tweaks in /system/etc/init.d folder.
Paste the text (including the first line #!/system/bin/sh) into this file. Leave a blank line at the bottom of the file and make sure your editor is set to Unix end-of-line characters (not Windows)
Save the file and give it 0755 permissions (rwxr-xr-x)
@tonydeli7 Yes, typo I will fix..... done It is a folder to receive advertising pushed to your phone courtesy of Xiaomi!!!!
jajk said:
@tonydeli7 Yes, typo I will fix..... done It is a folder to receive advertising pushed to your phone courtesy of Xiaomi!!!!
Click to expand...
Click to collapse
Yeap, just saw the conf file... WTF are they doing?!
By the way, thanks a lot for this kernel! Nice work!:good::good:
UPDATE:
I edited the latest Multirom Stable (7.2.1.0) and added your kernel&tweaks,deleted the files and everything works great!
I only changed the touchboost value to 806000
jajk, many thanks for this brilliant work!
IIRC, your personal preference for a base ROM with the best behavior and performance with these tweaks was v7.1.4.0 (or was it 7.1.3.0). Is this so or has anything changed? My RN2p is long overdue for an update, still on dev 5.10.29!
If a have a weekly miui based on Miui V 7.3 beta, will it work?
@tonydeli7 Did you give it some time on touchboost 403? I find it does not contribute to lags perceptibly.
@algida79 The most bug free ROM I have come across is MR7.2.30 ID (ported from reno3). I think I had a link to that in the Skinny thread.
Don't load the preloader, uboot or logo from this ROM - edit the updater-script to remove flashing of these. You will need to do an intermediate flash of 7.1.3 or 7.1.4 using SP Flash tool to get all the partitions the way they need to be if coming from an ancient ROM.
@Dnxss Yes it will still work.
@jajk Half an hour I think. I had no lag,just my preference
The phone usage is mostly surfing,facebook,twitter,music playback etc etc with no gaming.
GPS SYNC 3G all on..
Installed app count is around 120..
Includes six reboots while testing ZRAM(disabled it), and if it's good to deactivate Whetstone app.
I also used the app Autostarts to disable useless receivers for many apps like FB etc,and disabled Mail,Voice Unlock,PicoTTS.
I am satisfied..[emoji14]
Sent from my Redmi Note 2 using Tapatalk
@tonydeli7 Whetstone app is a source of a lot of spyware but is not a straight forward removal but you will find that out...
can then also delete:
/etc/WhetstonePermission folder
/system/lib
libwhetstone_jni.so
libwhetstone_sdk.so
/system/lib64
libwhetstone_jni.so
libwhetstone_sdk.so
Yeap, I searched a bit. I am using the Multirom Stable and after flashing the kernel,Whetstone crashes sometimes.
Didn't notice anything weird after freezing it..
This rom doesn't have the line
persist.sys.whetstone.level=2
in the build.prop for some reason.
Sent from my Redmi Note 2 using Tapatalk
@tonydeli7 Whetstone is linked to the mcd service to make things harder to unravel as in all Xiaomi apps. The boot.img disables mcd which is why you will see Whetsone having a fit sometimes. Completely removing Whetstone is a very good thing to do - it may give you an FC on Battery app, delete that too - it chews battery and does not affect normal operation!!!
Anyone wanting to increase their privacy, rename /system/xbin/tunman to tunmanbak. This is the Xunlei data saver/spyware tunneling manager. It is disabled from starting in the boot.img but will still run if called upon like all of the disabled services - they still exist, but not started by default. Make sure it is disabled in the Download Manager Settings
There is another service /sbin/mdbd that appears to be a method of tunneling over usb connections to gain access to a network and on to P.R.C. It is disabled in the boot.img already but I will rename this one in a next revision to be doubly sure it will not start.
Discovered an issue of some apps not recognizing internal sdcard so new versions posted to fix this plus rename /sbin/mdbd to mdbdbak to prevent it from being started after boot. See previous post for the reason.
Back up your internal sdcard contents if you flashed the original images - you will loose everything on sdcard0.
No action needs to be taken if this is a first-time flash.
@jajk How come this version doesn't just dump sd to folder 0? What was merged between miui and pro boot images?
@Sleepy_Augie It is a very complex issue how Android provides a virtual filesystem for SDCards. I thought I could implement it in a simpler fashion as per Android 5.1 which worked well except apps like the stock Contacts are stuck in the dark ages and are hard-coded to still look for the emulated/0 folder for the internal sdcard - not storage/sdcard0.
So going from stock to my original mod leaves an orphaned folder which becomes named 0 because it belonged to user 0. Going back the other way the folder representing access to sdcard0 simply disappears.
The real location of files that appear on the internal emulated sdcard is always /data/media. All other folders that appear to be the same thing are only symlinks to this. Make sense:silly:
Hey @jajk ,
Thanks for the reply, but I have done exactly everything you said and followed all of your steps, but after one day using it, I do not notice any change on battery life, it is still so bad, I have tried everyrom (and every way that was suggested from other users on XDA and MIUI forums including every battery calibration thing) I came across since I bought my RN2p and the maximum battery life I got is nearly 4:30 hours on screen!! After I flashed the boot.img I noticed a slightly more speed booting up the device, the performance is the same (which is good because am all satisfied about the performance except for the battery life).
I have flashed smiui today and it's slightly better consuming energy than the previous ones...
Maybe I have done something wrong doing the 01tweaks thing, if you can upload me yours so I can try paste it in /system/etc/int.d folder, if that will work, then I will be so thankful to you. And if you have any suggestions that I could do to improve and enhance the crazy energy draining then I will be more thankful.
Related
First, let me say I am deeply sorry to open yet another thread on this subject. But I have made some investigations of my own and would like to make some clarifications which I think should not be buried on page 6 of some long thread....
This thread continues the discussion started by these threads:
http://forum.xda-developers.com/showthread.php?t=689829
http://forum.xda-developers.com/showthread.php?t=785988
From what I gather there about 5 different parameters which are purposed for tweaking:
- NEW_FAIR_SLEEPERS (default ON) - This is about the only parameter which I do feel some difference when disabling it (on Floyo 0.8) and for the worse. Hence currently I intend to leave it on.
- NORMALIZED_SLEEPER (default ON) - I found various recommendations to turn this off. I don't feel much difference but maybe there is a slight improvement. Currently I intend to turn it off.
- sched_latency_ns:
* Targeted preemption latency for CPU-bound tasks:
* (default: 20ms * (1 + ilog(ncpus)), units: nanoseconds)
*
* NOTE: this latency value is not the same as the concept of
* 'timeslice length' - timeslices in CFS are of variable length
* and have no persistent notion like in traditional, time-slice
* based scheduling concepts.
*
* (to see the precise effective timeslice length of your workload,
* run vmstat and monitor the context-switches (cs) field)
- sched_min_granularity_ns -
* Minimal preemption granularity for CPU-bound tasks:
* (default: 4 msec * (1 + ilog(ncpus)), units: nanoseconds)
- sched_wakeup_granularity_ns (not sure if this one was mentioned in previous threads but also related)
* SCHED_OTHER wake-up granularity.
* (default: 5 msec * (1 + ilog(ncpus)), units: nanoseconds)
*
* This option delays the preemption effects of decoupled workloads
* and reduces their over-scheduling. Synchronous workloads will still
* have immediate wakeup/sleep latencies.
Note the descriptions are from the kernel sources and default values are a bit different and also dependent on the init.rc in the ramdisk which is dependent on the ROM.
I tryed to play with the last 3 parameters in a very wide range and did not feel much difference. Based on my experience and searches over these forums and such I currently have these values:
sched_latency_ns 5000000
sched_wakeup_granularity_ns 1000000
sched_min_granularity_ns 1000000
They are somewhat arbitrary and if someone can bring up a scenario where the difference is noticeable I will happy to hear it.
Some technical notes:
- I have seen this "numerical" tweak in multiple places:
kernel.sched_features = 24188
This is not smart using a numerical value, as there are some new backports which I would like to incorporate into my kernel and they actually change the "correct" numerical value here.
The preferred way to tweak these settings was brought by androcheck here. Just a reminder:
Code:
# Step 1: Mount debugfs (which is a virtual filesystem like /proc/ or /sys/)
mount -t debugfs none /sys/kernel/debug
# Step 2 (optional): Display the current scheduler flags
cat /sys/kernel/debug/sched_features
# Step 3: Set the flag NO_NEW_FAIR_SLEEPERS
echo "NO_NEW_FAIR_SLEEPERS" > /sys/kernel/debug/sched_features
# Step 4: Unmount debugfs again
umount /sys/kernel/debug
I would actually skip the unmounting step since it doesn't bother to have it there and then you can play with the different parameters at /sys/kernel/debug directly.
I would like to emphasize my point about the kernel features tweaking, using an example with my current settings (only NORMALIZED_SLEEPER disabled):
Code:
# mount -t debugfs none /sys/kernel/debug
# echo NO_NORMALIZED_SLEEPER > /sys/kernel/debug/sched_features
# cat /sys/kernel/debug/sched_features | sed "s/ /\n/g"
NEW_FAIR_SLEEPERS
NO_NORMALIZED_SLEEPER
WAKEUP_PREEMPT
START_DEBIT
AFFINE_WAKEUPS
CACHE_HOT_BUDDY
SYNC_WAKEUPS
NO_HRTICK
NO_DOUBLE_TICK
ASYM_GRAN
LB_BIAS
LB_WAKEUP_UPDATE
ASYM_EFF_LOAD
NO_WAKEUP_OVERLAP
LAST_BUDDY
# cat /proc/sys/kernel/sched_features
24189
So I would highly recommend tweaking the sched_features only through the /sys/kernel/debug/sched_features where you actually know what you are doing.
Then to make it permanent you can grab the numerical value from /proc/sys/kernel/sched_features and write it, for example, to the sysctl.conf.
- One final technical note: f_padia in his post here detailed nicely how to make the changes permanent using sysctl.conf.
I find sysctl also very useful for temporary tweaking of the values, for example:
Code:
sysctl -w kernel.sched_latency_ns=5000000
sysctl -w kernel.sched_min_granularity_ns=1000000
sysctl -w kernel.sched_wakeup_granularity_ns=1000000
Alternatively you could also write them to the appropriate "file" at /proc/sys/kernel. Both these methods do not require the mount of the debug_fs but neither gives you the literal interface to the kernel features (which the debug_fs does - see above).
Removed the part about the OWNER_SPIN, apparently was using an experimental version of my kernel which has an additional OWNER_SPIN sched_feature which makes the numerical value of 24188 incorrect.
Most likely you have no idea what I am talking this was just one epic fail on my side - you can ignore it. Just read the first post it is now updated.
looks nice.. will give it a go
Thanks for your research and additional information to this topic!
this IS excellent work.. on my 2.1 dext these hacks, included in one .sh in init.d then chmod +x, improved a lot speed and I can even think there's a faster boot
you all rule man!
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
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
I want to tweak these settings for ondemand(found in sys/devices/system/cpu/cpufreq)
up_threshold
sampling_down_factor
sampling_rate
powersave_bias
To these values:
85
2
50000
1
The defaults
90
4
10000
0
Problem is I don't know what the init.d script is missing for it to work, as it shows errors in script manager. Here's what I have so far:
#!/system/bin/sh
echo 85 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
echo 2 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/powersave_bias
My question is how do I get the script to work so that on every boot the defaults for ondemand change to those?
What do I have add to the script?
I'm using voltage control btw.
This is for my personal use and experimenting purposes.
Just in case you say "search" I did and when I was doing this, here's the guide I followed:
http://forum.xda-developers.com/showthread.php?t=1369817
Control your Ascend P6 through Init.d
In this Thread i will provide you Guys an small Init.d Package, that will let you control the important stuff on your Device without using Third Party Applications. I created this Zip for private use, but i like to share it with you.
This is mainly for advanced Users, so if you're not confirmed with Scripts etc., please DON'T touch the Scripts!
I only tested on Stock Firmware!
I take no Credits for the Tweaks contained in the Zip. They goes out to all the Tweakers here @ xDa!
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Installation
! PLEASE MAKE AN NANDROID IN RECOVERY, BEVORE YOU FLASH THE ZIP !
! YOU'LL FLASH THIS @ YOUR OWN RISK !
I suggest you Guys to use TWRP by Surdu Petru, because it has Init.d Support by default.
Reboot in Recovery
Backup your Rom
Flash the Ascend_P6_Init.d_Control.zip
Wipe Cache & Dalvik Cache
Reboot
The Logger
I added an Logging System into the Zip, that will check and show you, if the Tweaks applied sucessfully and give you an positive (+) or negative (-) output. That way you don't have to check them manually.
You'll find it in /data/00_init.d_control_log
It should give you an Output like this
(Which also is an Overview about the Stuff you can handle with this ZIP)
>>> SetPerm
+ Init.d Permissions set to 755
@ 01-22-2014 00:55:36
>>> FileSystem
+ EXT4 Partitions present
+ Cache Partition optimized
+ Cust Partition optimized
+ Data Partition optimized
+ System Partition optimized
+ Remount Done
Please check the Remount.log! If this Script works, you'll see most of your Mounts being Noatime
+ Logger removed
+ File System cleaned
@ 01-22-2014 00:55:39
>>> SQLite -48 Hour Delay-
+ Wifi Sleep is active
+ SQLite Database VACUUM and REINDEX finished
Check the Sqlit.log to see, if SQLite was successful
@ 01-22-2014 00:57:13
>>> DarkyZipalign & Zipalign -48 Hour Delay-
+ DarkyZipalign applied
Check the DarkyZipalign.log to see, if everything was aligned
+ Zipalign finished
Check the Zipalign.log to see, if everything was completed
@ 01-22-2014 00:57:39
>>> Entropy
+ Haveged Binary is active
+ Entropy is active
@ 01-22-2014 00:57:40
>>> Alternative Scheduler & Governor by Surdu_Petru
+ SIO Scheduler present
+ SIOPLUS Scheduler present
+ VR Scheduler present
+ ZEN Scheduler present
+ MINMAX Governor present
@ 01-22-2014 00:57:41
>>> CPUconfig
+ Governor is set to k3hotplug
+ I/O Scheduler is set to zen
+ I/O Settings active
+ SD Cache is set to 2048 kb
+ MIN Frequency is set to 200000 mhz
+ MAX Frequency is set to 1500000 mhz
+ CPU Frequency locked @ 0
+ MIN CORES set to 1
+ MAX CORES set to 4
+ Active Cores locked @ 0
+ MIN GPU Frequency is set to 58000
+ MAX GPU Frequency is set to 480000
+ GPU Frequency locked @ 0
+ MIN DDR Frequency is set to 58000
+ MAX DDR Frequency is set to 450000
+ DDR Frequency locked @ 0
@ 01-22-2014 00:57:54
>>> SCREEN ON / OFF Profile
+ Screen On / Off Profile active
@ 01-22-2014 00:57:54
>>> Kernel
+ Kernel Values applied
+ VM Values applied
@ 01-22-2014 00:57:56
>>> Lowmemorykiller
+ Minfree Adj Values applied
+ Minfree Cost Values applied
+ Minfree Debug_Level Values applied
+ Minfree Values applied
@ 01-22-2014 00:57:57
The CPU Script
Probaply the most interessting Script 4 us is the 60CPUconfig - Script. It will let you:
Set CPU Governor
Set I/O Scheduler
Set SDCache
Set MIN/MAX CPU Frequencys
Lock active CPU Frequency
Set MIN/MAX abvailable Cores
Lock active Cores
Set MIN/MAX GPU Frequencys
Lock active GPU Frequency
Set MIN/MAX DDR Frequencys
Lock active DDR Frequency
Set Screen ON / OFF Profiles
I tried to keep it easy to handle, so all you have to do, is to set your Values on Top (one time for Screen On & one time for Screen Off)!
#---------------------------------------------#
# Configure your SCREEN ON Values #
#---------------------------------------------#
# Set Scaling Governor
# k3hotplug minmax ondemand performance
GOVERNOR=k3hotplug
#---------------------------------------------#
# Set I/O Scheduler
# cfq deadline noop sio sioplus vr zen
SCHEDULER=cfq
#---------------------------------------------#
# SDCache
# 128 256 512 1024 2048 4096
READ_AHEAD_KB=2048
#---------------------------------------------#
# Set MIN/MAX CPU Frequency
# 200000 400000 600000 800000 1000000 1200000 1399000 1400000 1500000
CPU_MIN=200000
CPU_MAX=1500000
#---------------------------------------------#
# Lock CPU Frequency
# 200000 400000 600000 800000 1000000 1200000 1399000 1400000 1500000
# Stock 0
CPU_FREQ=0
#---------------------------------------------#
# Set MIN/MAX available Cores
# 1-4
CORE_MIN=1
CORE_MAX=4
#---------------------------------------------#
# Lock active CPU Cores
# 0 - 4
# Stock 0
CORE_LOCK=0
#---------------------------------------------#
# Set MIN/MAX GPU Frequency
# 58000 120000 240000 360000 480000
GPU_MIN=58000
GPU_MAX=480000
#---------------------------------------------#
# Lock GPU Frequency
# 58000 120000 240000 360000 480000
# Stock 0
GPU_FREQ=0
#---------------------------------------------#
# Set MIN/MAX DDR Frequency
# 58000 120000 360000 450000
DDR_MIN=58000
DDR_MAX=450000
#---------------------------------------------#
# Lock DDR Frequency
# 58000 120000 360000 450000
# Stock 0
DDR_FREQ=0
#---------------------------------------------#
# Configure your SCREEN OFF Values #
#---------------------------------------------#
# Set Scaling Governor
# k3hotplug minmax ondemand performance
SLEEP_GOVERNOR=ondemand
#---------------------------------------------#
# Set I/O Scheduler
# cfq deadline noop sio sioplus vr zen
SLEEP_SCHEDULER=noop
#---------------------------------------------#
# Set MIN/MAX CPU Frequency
# 200000 400000 600000 800000 1000000 1200000 1399000 1400000 1500000
SLEEP_CPU_MIN=200000
SLEEP_CPU_MAX=600000
#---------------------------------------------#
# Lock CPU Frequency
# 200000 400000 600000 800000 1000000 1200000 1399000 1400000 1500000
# Stock 0
SLEEP_CPU_FREQ=0
#---------------------------------------------#
# Set Min/Max available Cores
# 1-4
SLEEP_CORE_MIN=1
SLEEP_CORE_MAX=1
#---------------------------------------------#
# Lock active CPU Cores
# 0 - 4
# Stock 0
SLEEP_CORE_LOCK=0
#---------------------------------------------#
# Set MIN/MAX GPU Frequency
# 58000 120000 240000 360000 480000
SLEEP_GPU_MIN=58000
SLEEP_GPU_MAX=120000
#---------------------------------------------#
# Lock GPU Frequency
# 58000 120000 240000 360000 480000
# Stock 0
SLEEP_GPU_FREQ=0
#---------------------------------------------#
# Set MIN/MAX DDR Frequency
# 58000 120000 360000 450000
SLEEP_DDR_MIN=58000
SLEEP_DDR_MAX=120000
#---------------------------------------------#
# Lock DDR Frequency
# 58000 120000 360000 450000
# Stock 0
SLEEP_DDR_FREQ=0
If you're not sure, that your Values are stable, let your modified Script run through SManager without the on Boot option for at least 24 Hours. After that you can add it back into the /system/etc/init.d - Folder.
I'll take care about the right Permissions, if you forgot to set them.
Uninstallation
The Zip contains an Uninstaller, so to get back to Stock you simply have to type this commands in the included Terminal Emulator
su [enter]
uninstall [enter]
and confirm your choice.
With v1.1 i added 3 CPU Profiles, that can be applied with the Terminal Emulator.
Simply type
su [enter]
battery, game or default[enter]
to switch between them. Of course you can edit them, to fit your needs. You'll find them in
/system/bin/
Alright, that's it for now. I'll edit this Post as soon as i got more Time.
Feel free to play around with the Scripts / Values and share your experience with us.
If you notice any Errors, let me know.
DOWNLOAD [ Official Huawei FW ]
DOWNLOAD [ Official Huawei FW + [URL="http://forum.xda-developers.com/showthread.php?t=2620421"]HA P6 Custom Kernel ][/URL]
DOWNLOAD [CM10 ]
Hallo HSD-Pilot,
I install yesterday the one for the CLEANROM_V1 from Petru.
Now the Software run very smooth. The Systemstart is very fast now!
But i have no possibility to start in to the Twrp-Recovery.
Need help.
Clean Rom replaces the Stock Recovery with TWRP. So to boot into Recovery you have to hold both Vol. Keys while Power on your Device. Just like you usually flash Stock Firmwares out of the dload Folder.
Gesendet von meinem HUAWEI P6-U06 mit Tapatalk
HSD-Pilot said:
Clean Rom replaces the Stock Recovery with TWRP. So to boot into Recovery you have to hold both Vol. Keys while Power on your Device. Just like you usually flash Stock Firmwares out of the dload Folder.
Gesendet von meinem HUAWEI P6-U06 mit Tapatalk
Click to expand...
Click to collapse
No! After Script install it don't do it.
But i have a solution.
Install ROM Manager v.5.5.3.4. Of course it is primay for cwm but there is the option "reboot into recovery system".
This function is a way to start into twrp.
The Zip shouldn't effect the Recovery Partition, so TWRP should boot. There's nothing contained, that touches the Recovery. You tried to uninstall the Pack (su > uninstall) ?
Gesendet von meinem HUAWEI P6-U06 mit Tapatalk
so I see it setsbthe freeq of the cpu. what willbhapen if I use setcpu now?
can you please provide us the coding of the scripts? I would like to paste them manualy in my inid.t folder. please
benna said:
so I see it setsbthe freeq of the cpu. what willbhapen if I use setcpu now?
can you please provide us the coding of the scripts? I would like to paste them manualy in my inid.t folder. please
Click to expand...
Click to collapse
SetCPU usually kicks in after the init. d Scripts, so it will overwrite the Values.
The Zip contains an Script called 80SetCPU, this will do the same like the App.
#!/system/bin/sh
LOG_FILE=/data/00_init.d_control_log/01Init.d_Control.log
echo ">>> SetCPU" | tee -a $LOG_FILE;
#---------------------------------------------#
# Configure your Values #
#---------------------------------------------#
# Set Scaling Governor
# k3hotplug minmax ondemand performance
GOVERNOR="k3hotplug"
#---------------------------------------------#
# Set IO Scheduler
# cfq deadline noop sio sioplus vr zen
SCHEDULER="zen"
#---------------------------------------------#
# Set Min & Max Frequency
# 200000 400000 600000 800000 1000000 1200000 1399000 1400000 1500000
CPU_MIN=200000
CPU_MAX=1500000
#---------------------------------------------#
# Apply Configuration #
#---------------------------------------------#
#Set CPU Governor
if [ -e /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ]; then
echo $GOVERNOR > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor; else
echo "- Unable to set CPU Governor. File NOT found!" | tee -a $LOG_FILE;
fi;
if [ -e /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor ]; then
echo $GOVERNOR > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor;
fi;
if [ -e /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor ]; then
echo $GOVERNOR > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor;
fi;
if [ -e /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor ]; then
echo $GOVERNOR > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor;
fi;
sleep 1
if [ /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor=$GOVERNOR ]; then
echo "+ $GOVERNOR Governor is running" | tee -a $LOG_FILE; else
echo "- $GOVERNOR Governor is NOT running" | tee -a $LOG_FILE;
fi;
#---------------------------------------------#
# Set Scheduler
dm=/sys/block/dm-*
loop=/sys/block/loop*
mmc=/sys/block/mmc*
mtd=/sys/block/mtd*
nbd=/sys/block/nbd*
ram=/sys/block/ram*
zram=/sys/block/zram*
for a in $dm $loop $mmc $mtd $nbd $ram $zram; do
if [ -e ${a}/queue ]; then
echo $SCHEDULER >> ${a}/queue/scheduler;
fi; done
sleep 1
if [ /sys/block/mmcblk0/queue/scheduler=$SCHEDULER ]; then
echo "+ $SCHEDULER Scheduler is running" | tee -a $LOG_FILE; else
echo "- $SCHEDULER Scheduler is NOT running" | tee -a $LOG_FILE;
fi;
#---------------------------------------------#
# Set MIN/MAX Frequency
if [ -e /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq ]; then
echo $CPU_MIN > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq; else
echo "- Unable to set MIN Frequency. File NOT found!" | tee -a $LOG_FILE;
fi;
if [ -e /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq ]; then
echo $CPU_MIN > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq;
fi;
if [ -e /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq ]; then
echo $CPU_MIN > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq;
fi;
if [ -e /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq ]; then
echo $CPU_MIN > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq;
fi;
if [ -e /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq ]; then
echo $CPU_MAX > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq; else
echo "- Unable to set MAX Frequency. File NOT found!" | tee -a $LOG_FILE;
fi;
if [ -e /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq ]; then
echo $CPU_MAX > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq;
fi;
if [ -e /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq ]; then
echo $CPU_MAX > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq;
fi;
if [ -e /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq ]; then
echo $CPU_MAX > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq;
fi;
sleep 1
if [ /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq=$CPU_MIN ]; then
echo "+ MIN Frequency is set to $CPU_MIN mhz" | tee -a $LOG_FILE; else
echo "- MIN Frequency is NOT set to $CPU_MIN mhz" | tee -a $LOG_FILE;
fi;
if [ /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq=$CPU_MAX ]; then
echo "+ MAX Frequency is set to $CPU_MAX mhz" | tee -a $LOG_FILE; else
echo "- MAX Frequency is NOT set to $CPU_MAX mhz" | tee -a $LOG_FILE;
fi;
#---------------------------------------------#
echo "@ $( date +"%m-%d-%Y %H:%M:%S" )" | tee -a $LOG_FILE;
echo " " | tee -a $LOG_FILE;
Just set your Values on top and reboot :thumbup:
Gesendet von meinem HUAWEI P6-U06 mit Tapatalk
Works flawlessly!!!
HUAWEIAscendP6
Uploaded an small Update
- cleaned some scripts
- added CPU / GPU LOCK Script
- rearranged the Build.prop Tweaks
- replaced Bootanimation (Nexus)
Use the uninstaller to revert back to Stock! It will handle everything 4 ya (incl. restore Stock Bootanimation).
Gesendet von meinem HUAWEI P6-U06 mit Tapatalk
HSD-Pilot said:
Uploaded an small Update
- cleaned some scripts
- added CPU / GPU LOCK Script
- rearranged the Build.prop Tweaks
- replaced Bootanimation (Nexus)
Use the uninstaller to revert back to Stock! It will handle everything 4 ya (incl. restore Stock Bootanimation).
Gesendet von meinem HUAWEI P6-U06 mit Tapatalk
Click to expand...
Click to collapse
hi
which app works best with this script
nARDOs said:
hi
which app works best with this script
Click to expand...
Click to collapse
What do you mean with "which App"¿
The meaning of this package is to avoid 3rd Party Apps.
To Edit the Scripts you can use any Root Explorer that contains an Text Editor and on an PC use Notepad++
Btw. I will release an Update as soon as i got time. I noticed, that the Max GPU / DDR frequencys and DDR lock are gettin overwritten by the system to the default values. I added an lil workaround to avoid that.
Also i added 3 CPU/GPU Profiles (Battery, Game & Default) that can easily gettin activated via Terminal Emulator.
Gesendet von meinem HUAWEI P6-U06 mit Tapatalk
HSD-Pilot said:
What do you mean with "which App"¿
The meaning of this package is to avoid 3rd Party Apps.
To Edit the Scripts you can use any Root Explorer that contains an Text Editor and on an PC use Notepad++
Btw. I will release an Update as soon as i got time. I noticed, that the Max GPU / DDR frequencys and DDR lock are gettin overwritten by the system to the default values. I added an lil workaround to avoid that.
Also i added 3 CPU/GPU Profiles (Battery, Game & Default) that can easily gettin activated via Terminal Emulator.
Gesendet von meinem HUAWEI P6-U06 mit Tapatalk
Click to expand...
Click to collapse
This package improves game performance significantly must i see. Big Thanks. :good:
Adding preset profiles will help alot
Question:
MIN/MAX GPU DDR frequency is higher than ur output on my phone. Is this because of the overwritting u mentioned ?
Nope, that's an typo. Max DDR should be 450000, it's already fixed in the next Update.
I guess i'm back @ home tomorrow, to upload it.
Edit: About the Min GPU & DDR Frequencys
They usually set to 360000 by default and we can't lower them through Scripts. The only way to lower the Min Freq is to lower the Max Freq! I couldn't find another solution :thumbdown:
So, when you set min 240000 & max 360000, min will always be 360000.
To set it lower you have to set min 240000 & max 240000.
The workaround i'm currently using is to make the max 240000 stick (by default it will not go/stick below 360000).
Gesendet von meinem HUAWEI P6-U06 mit Tapatalk
HSD-Pilot said:
Nope, that's an typo. Max DDR should be 450000, it's already fixed in the next Update.
I guess i'm back @ home tomorrow, to upload it.
Gesendet von meinem HUAWEI P6-U06 mit Tapatalk
Click to expand...
Click to collapse
Waiting for the update :fingers-crossed:
Me too!
Sent from my P6-U06
Update is up. Let me know how it works 4 ya :highfive:
HSD-Pilot said:
Update is up. Let me know how it works 4 ya :highfive:
Click to expand...
Click to collapse
can we just flash it over the previous version or do we need to unistall the previous one ?
will give feedback after installing it.
Just flash om top, the Update-Script will do everything 4 ya :good:
Btw: I finally had the time to switch to Surdu's Stock CM Version and will add an CM Edition after the Testflash of the Uploaded Zip :good:
And remember, to get back to Stock always use the uninstaller. After that your Device will reboot, like you had never flashed this Mod.
HSD-Pilot said:
Update is up. Let me know how it works 4 ya :highfive:
Click to expand...
Click to collapse
Many thanks, work good!
But I have a question.
I use smanager widget app.
How can I make a script that the toast notification list the set values like smanager?
Sorry for my bad english...
Sent from my P6-U06
Creating an Toast Notification out of an Script is not that easy, if even possible. As far as i know it needs some Java Stuff to create toasts.
Gesendet von meinem P6-U06 mit Tapatalk 2