A few tricks with stock ROM J510FN (Android 6.0.1) - Samsung Galaxy J5 Themes, Apps, and Mods

Here are a few tricks that work with stock ROM and some apps I use. Maybe you find something you like to use too.
Little note on text here, sometimes you see " " (spaces) appear in text/code. They shouldn't be there. You will know when you see them. Ignore!
A very quick summary.
What type of values can you find/change in Android?
0) Linux sysclt values, use sysctl -a to list them (stored in /proc/sys/...)
1) Android properties, use getprop en setprop, you find them in /etc/build.prop
2) Android Settings databases, use settings list [system][global][secure] etc
3) Samsung CSC values, specific for Samsung to hide or show extra GUI elements in /system/csc/feature.xml or /etc/feauture_default.xml
4) Samsung Floating features, like above in /etc/floating_feature.xml
How to find them (1+3)?
- root your phone (install busybox on Android 4 or less)
- goto adb shell and su
- find /system -type f -exec strings -f {} \; | grep "persist\."
if you are looking for perstist. variables. Or to find CSC values use "CscFeature_"
Caveats: some "persist." values are stored in /data/property folder. Keep that in mind.
For some you need to change /system/build.prop, some are Samsung CSC features with the /system/csc/feauture.xml file or Android system settings db.
For some I cannot remember if it was already visible without tweaks. Anyway lets go
I put feature.xml (with a lot of nonworking csc features too!!!), build.prop and disabled_services.txt in attachement.
Reboot after putting new feature.xml in /system/csc folder. Permissions of the file: root.root 644, same for build.prop
If your Samsung ROM has no csc feature create /system/csc and put content in other.xml instead of feature.xml
Call Recording: <CscFeature_VoiceCall_ConfigRecording>RecordingAllowed</CscFeature_VoiceCall_ConfigRecording>
Call blocking: <CscFeature_Setting_EnableMenuBlockCallMsg>TRUE</CscFeature_Setting_EnableMenuBlockCallMsg>
Voice Recorder Quality: <CscFeature_VoiceRecorder_SupportRecordingQualitySetting>TRUE</CscFeature_VoiceRecorder_SupportRecordingQualitySetting>
Camera Shutter Sound:
build.prop ro.camera.sound.forced=0
<CscFeature_Camera_ShutterSoundMenu>TRUE</CscFeature_Camera_ShutterSoundMenu>
Data Usage on Quickpanel: <CscFeature_SystemUI_SupportDataUsageViewOnQuickPanel>TRUE</CscFeature_SystemUI_SupportDataUsageViewOnQuickPanel>
Multi Window: (sort of working, use recent apps button to see effect, landscape and portrait)
build.prop persist.sys.debug.multi_window=1 or setprop persist.sys.debug.multi_window 1
<CscFeature_Framework_ConfigMultiWindowTrayBarFunction>TRUE</CscFeature_Framework_ConfigMultiWindowTrayBarFunction>
Smart Manager:
<CscFeature_SmartManager_ConfigDashboard>dual_dashboard</CscFeature_SmartManager_ConfigDashboard>
<CscFeature_SmartManager_ConfigSubFeatures>autoclean|trafficmanager|trafficmanager_auto|storageclean|devicesecurity|autolaunch|cstyle|powerplanning</CscFeature_SmartManager_ConfigSubFeatures>
<CscFeature_SmartManager_DisableAntiMalware>TRUE</CscFeature_SmartManager_DisableAntiMalware>
ps: don't use "backgroundapp", it will FC RAM Management button
FM Radio Hybrid mode (inet) and EPG
Add support for Auto Follow and inet Hybryd support. Edit /etc/floating_feature.xml
<SEC_FLOATING_FEATURE_FMRADIO_REMOVE_AF_MENU>FALSE</SEC_FLOATING_FEATURE_FMRADIO_REMOVE_AF_MENU><SEC_FLOATING_FEATURE_FMRADIO_SUPPORT_HYBRID_RADIO>TRUE</SEC_FLOATING_FEATURE_FMRADIO_SUPPORT_HYBRID_RADIO>
<SEC_FLOATING_FEATURE_FMRADIO_SUPPORT_RDS>TRUE</SEC_FLOATING_FEATURE_FMRADIO_SUPPORT_RDS>
Smooth scroll of surface flinger
In /etc/floating_feature.xml
<SEC_FLOATING_FEATURE_FRAMEWORK_SUPPORT_SMOOTH_SCROLL>TRUE</SEC_FLOATING_FEATURE_FRAMEWORK_SUPPORT_SMOOTH_SCROLL>
Google installer overlay permission fix
For annoying overlay warning if using Lux for example (only for 6.0.1): here on xda
Apps that I use:
Xperia Keyboard: https://forum.xda-developers.com/android/apps-games/app-sony-xperia-keyboard-phones-t3346736
ZenUI Weather: http://www.apkmirror.com/apk/zenui-asus-computer-inc/
Samsung Apps: https://www.sammobile.com/apk/
Next Camera: https://forum.xda-developers.com/oneplus-one/themes-apps/app-cameranext-gallery-cm13-t3305917/page12
See attachement for comparisson Stock, Next and OpenCam.
Dalvik JIT for dex: build.prop: [size=+2]debug.usejit=true[/size]
adb commands: stop cd /data/dal*/arm rm * sync reboot
RIL wakelock optimalisation: build.prop: [size=+2]ro.ril.wake_lock_timeout=10000[/size]
Edit Quick Menu:
settings put secure sysui_qs_tiles "Wifi,Location,SilentMode,Flashlight,Bluetooth,MobileData,PowerSaving,UltraPowerSaving,RotationLock,AirplaneMode,DormantMode,WifiHotspot,Nfc,Sync,SFinder"
Tried to add SmartStay,MultiWindow,PersonalMode,AllShareCast but no tiles in Framework res.
I disabled a lot of bloatware using the pm disable command (too much for you I guess). Also in attachment.
Some hidden Activities you can find with QuickShortcutMaker (playstore):
- GPS Satellites (search for gps)
- SoundAlive Equalizer (search for alive) EDIT: not working for other than gmusic. SA will bypass for others. Need edit in SoundAlive apk.
Cheers
EDIT 19-01-2016: Added stock Camera from J7 which produces better quality picture.
Code:
- download SamsungCamera4_ESS_J7.apk
- adb push SamsungCamera4_ESS_J7.apk /sdcard/
- adb shell
- su
- mount -o remount,rw /system
- cd /system/priv-app/SamsungCamera4_ESS
- mv SamsungCamera4_ESS.apk SamsungCamera4_ESS.apk.J5
- mv oat oat.J5
- cp /sdcard/SamsungCamera4_ESS_J7.apk .
- chmod 644 SamsungCamera4_ESS_J7.apk
- stop
- sync
- reboot
After reboot start camera and clear settings first! Then do camera settings.
Remove Knox
To disable all Samsung Knox packages:
Code:
for p in $(pm list packages |grep nox) ; do echo $p | busybox awk -F ":" '{print $2}' | xargs pm disable ; done
pm disable com.samsung.klmsagent
pm disable com.policydm
To remove all Samsung Knox packages:
Code:
for p in $(pm list packages -f|grep nox) ; do echo $p | busybox awk -F "/" '{print "/"$2"/"$3"/"$4}' | xargs rm -r ; done
To remove all data from disabled packages:
Code:
for p in $(pm list packages -d) ; do echo $p | busybox awk -F ':' '{print "/data/data/" $2}' | xargs rm -r ; done
Disable Knox (hidden) services
Code:
stop
mv /system/container /system/container.OFF
rm /data/dal*/arm/*
sync
reboot
EDIT 09-02-2017: Added /etc/mixer-paths.xml for increased volume on speaker, headphone and handset speaker.
Finding the proper loudness values can be done from the shell command line with tinymix command.
example:
Code:
tinymix (see all audio objects)
tinymix "RX1 Digital Volume" (see all possible values for this audio object)
tinymix "RX1 Digital Volume" 86
Note that a value of 83 represents 0dB.
Some extra settings for system, global and secure db (/data/system/users/0/settings_system.xml etc)
Find yours with settings list system, global or secure. These settings are Android version (API23 in this case)
related. Beware of that when copying it from xda or anywhere else.
Code:
settings put system enable_mtp_settings 1
settings put system intelligent_sleep_mode 1
settings put system white_lockscreen_statusbar 0
#settings put system white_lockscreen_wallpaper 1
settings put system lockscreen_wallpaper_transparent 0 (1=hard to see statusbar)
settings put system adaptive_fast_charging 1
settings put system simple_status_bar 0
settings put system data_powersaving_mode 0
settings put system data_usage_on_lockscreen_sim1 1
settings put system min_minder 1
settings put system csc_pref_camera_quality_key 0
settings put system csc_pref_camera_videoquality_key 0
settings put system csc_pref_camera_burstshot_key 1
settings put system csc_pref_camera_autonightdetection_key 1
settings put system csc_pref_camera_forced_shuttersound_key 0
settings put global ble_scan_always_enabled 0
settings put global bluetooth_discoverable_timeout 120
settings put global wifi_watchdog_poor_network_test_enabled 0
settings put global wifi_scan_always_enabled 0 (0)
settings put global wifi_idle_ms 1800000 (def is 900000=15min)
settings put global wifi_suspend_optimizations_enabled 1
settings put global wifi_networks_available_notification_on 0
settings put global wifi_max_dhcp_retry_count 3
settings put global wifi_mobile_data_transition_wakelock_timeout_ms 5000
#settings put global heads_up_snooze_length_ms 2000
#settings delete global heads_up_snooze_length_ms
settings put global heads_up_notifications_enabled 1
settings put global low_power_back_data_off 1 (drop data conn if low pwr
settings put global low_power_trigger_level 5 (5% batt is low pwr)
settings put secure button_key_light 0
settings put secure long_press_timeout 300
settings put secure location_mode 2
#0 = LOCATION_MODE_OFF
#1 = LOCATION_MODE_SENSORS_ONLY
#2 = LOCATION_MODE_BATTERY_SAVING
#3 = LOCATION_MODE_HIGH_ACCURACY
PS: Don't quote this post. Is is considered useless and annoying.
PS2: more Samsung MM mods/tweaks can be found in this xda thread.
PS3: added meizu camera mod apk with very good image quality (Smaller version here https://forum.xda-developers.com/moto-g/themes-apps/camera-app-t3283962)

tweakradje said:
Here are a few tricks that work with stock ROM. For some you need to change /system/build.prop, some are Samsung CSC features with the /system/csc/feauture.xml file or Android system settings db.
For some I cannot remember if it was already visible without tweaks. Anyway lets go
I put feature.xml (with a lot of nonworking csc features too!!!), build.prop and disabled_services.txt in attachement.
Reboot after putting new feature.xml in /system/csc folder. Permissions of the file: root.root 644, same for build.prop
Call Recording: <CscFeature_VoiceCall_ConfigRecording>RecordingAllowed</CscFeature_VoiceCall_ConfigRecording>
Call blocking: <CscFeature_Setting_EnableMenuBlockCallMsg>TRUE</CscFeature_Setting_EnableMenuBlockCallMsg>
Voice Recorder Quality: <CscFeature_VoiceRecorder_SupportRecordingQualitySetting>TRUE</CscFeature_VoiceRecorder_SupportRecordingQualitySetting>
Camera Shutter Sound:
build.prop ro.camera.sound.forced=0
<CscFeature_Camera_ShutterSoundMenu>TRUE</CscFeature_Camera_ShutterSoundMenu>
Data Usage on Quickpanel: <CscFeature_SystemUI_SupportDataUsageViewOnQuickPanel>TRUE</CscFeature_SystemUI_SupportDataUsageViewOnQuickPanel>
Multi Window: (sort of working, use recent apps button to see effect, landscape and portrait)
build.prop persist.sys.debug.multi_window=1
<CscFeature_Framework_ConfigMultiWindowTrayBarFunction>TRUE</CscFeature_Framework_ConfigMultiWindowTrayBarFunction>
I disabled a lot of bloatware using the pm disable command (too much for you I guess). Also in attachement.
Cheers
Click to expand...
Click to collapse
Cool, but when multi window is enabled, don.t you get the scroll bug in recents apps? (especially in the bottom part of the screen)

Yes the bug is there. Pull down notifications corrects it shortly. Multi Window on small screens is not my thing anyway.

Can I enable multi-window in J500F the same way? Would love to have two apps on screen simultaneously.
Perhaps, what's the scroll bug?

Added information of how to increase volume on different audio outputs with /etc/mixer-paths.xml and test it with the tinymix command.

tweakradje said:
Added information of how to increase volume on different audio outputs with /etc/mixer-paths.xml and test it with the tinymix command.
Click to expand...
Click to collapse
tinymix "RX1 Digital Volume" 86 gives me tinymix is not executable.
chmod 755 does not return error but still not executable.
putting <ctl name="RX1/2/3 Digital Volume" value="86"/> or even 90 in the mixer_paths.xml and reboot does't increase the volume.
I'm missing something ?

What ROM are you on then? I have stock.

Dude I don't understand how to use this. Please help me. I really want these features.

Added my latest build.prop and init.qcom.post_boot.sh

Antutu score with stock ROM and Cherry Kernel 3.10.94

Hi how to remove "system unauthorised action "when i'am instal custom kernel on stockrom

adf18224 said:
Hi how to remove "system unauthorised action "when i'am instal custom kernel on stockrom
Click to expand...
Click to collapse
The notification or smart manager alert?

Wizardlysense said:
The notification or smart manager alert?
Click to expand...
Click to collapse
Smart manager sir

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?

[Tweak] Boost RAM Management - get more free RAM! // [23.03.2011] Fixed Permissions.

Memory Tweak - get more free RAM to use for apps and less lag.
// This was first intended for other ROM chefs, so they can include this tweak in their ROMs. I'm aware that there are apps which can do this. But it's the idea to have it included automatically, so you don't have to annoy your users
However, this is also for normal users. Those just flash the CWM Package thunderteaser made here. Thanks for this.
I made a script which boosts the RAM Management significantly.
You can use this in any ROM - those values have been created from my mind and were being tested for several days in heavy use.
IMHO, it's the perfect combination of RAM Management.
HOW TO IMPLEMENT IT INTO YOUR ROM
Just make a new bash script and place the following code into it.
NOTE: bash files created on Windows don't work. Create them with a UNIX like Linux (Ubuntu, Fedora, whatever) or Mac OS X.
Place the script in /system/etc/init.d so it gets automatically executed at every startup. You have to make this because init.rc (in root dir /) gets executed first and will also set the RAM Management (minfree) on his own.
UPDATE - 20.03.2011
Supercurio said, there is support for init.d in his Voodoo injected kernel for JV1 Gingerbread.
This means, the script is fully working and the Gingerbread JV1 memory leaks are fixed when using those values.
This also means, my current ROM v10.0 Beta 3 already has the Memory Hack integrated.
Code:
#!/system/bin/sh
# DarkyROM 2011 - Joël Staub (darkyy)
# This will stabilize the memory leaks in Gingerbread and other ROMs.
# Adjusting Memory Settings
# The values in MB: 10, 16, 24, 68, 76, 92
if [ -e /sys/module/lowmemorykiller/parameters/minfree ]; then
echo "Modifying minfree parameters"
echo "2560,4096,6144,17408,19456,23552" > /sys/module/lowmemorykiller/parameters/minfree
else
echo "minfree not found"
fi
Permissions
You may want to adjust the permissions of the script when it's on your phone.
You can do it with ADB.
First, connect to your phone.
Code:
adb shell
Get root access.
Code:
su
Set the permissions.
Code:
chmod 777 /system/etc/init.d/ramtweak
Code:
chown root:root /system/etc/init.d/ramtweak
When you're a ROM chef, you can include those permissions either with update(r)-script or with a bash file.
Thanks to zacharias.maladroit for the hint with the permissions.
- darkyy.
Darkyy said:
Ignore the # You're not allowed to use this script without giving proper credits. - EVERYONE IS WELCOME TO IMPLEMENT THIS INTO HIS / HER ROM - I don't need credits.
Click to expand...
Click to collapse
If you don't mean it, take it out
Ok this looks awesome but for the most part of the members can u make a proper tutorial ? I really don't understand how to implement your hack, how to create a bash script init.d ?
sorry for my noobiness
And when you say in every ROM, did you also mean every custom kernel ?
chambo622 said:
If you don't mean it, take it out
Click to expand...
Click to collapse
I will, sorry for this crap
I'm a bit too tired...
touness69 said:
Ok this looks awesome but for the most part of the members can u make a proper tutorial ? I really don't understand how to implement your hack, how to create a bash script init.d ?
sorry for my noobiness
And when you say in every ROM, did you also mean every custom kernel ?
Click to expand...
Click to collapse
You just make a new file on your COMPUTER.
Or it would even work on your SGS (but I'm writing now for the Computer).
Example:
Let's say, you're on Windows - create a NEW text file and remove the .txt extension (you need to have this option activated in the explorer settings).
You can leave it to no extension or just make it end on .sh
You got a file called randomname.sh now.
Now to make it easy, just copy this file to the C: drive in NO subfolder.
Now just ADB push this file to your SGS into:
Code:
adb push /randomname.sh /system/etc/init.d
Or just copy the .sh file to your SGS via USB Storage mount and copy it to the directory with Root Explorer or Super Manager.
Yes, this should work with every kernel (Android 2.2.1) here.
Thanks for doing this testing to find good settings. Forgive me if I'm misinformed, but is there anything particularly innovative about new minfree settings? I do appreciate your testing and finding ones that work well for you.
have a good rest, Darkyy !
thanks for this script
so you noticed improved interactivity with "apps and less lag" ?
gotta try this with CM7
FYI:
the defaults of the CM7 kernel are:
Code:
cat /sys/module/lowmemorykiller/parameters/minfree
2048,3072,4096,6144,7168,8192
edit2:
make sure that you get the right permissions for the file on the phone afterwards
say:
Code:
chmod 750 /system/etc/init.d/99rambooster
chown root:shell /system/etc/init.d/99rambooster
thanks for explanation ! I have done what you say and rebooted my phone after that. I renamed the file to init.d after placing it into the /system/etc/ directory and setted the défault permissions for this file rwxrwxrwx (or something like that)
But how I find if I have the hack succesfuly installed ?
chambo622 said:
Thanks for doing this testing to find good settings. Forgive me if I'm misinformed, but is there anything particularly innovative about new minfree settings? I do appreciate your testing and finding ones that work well for you.
Click to expand...
Click to collapse
Not innovative - this is nothing new.
It's just that many ROM devs aren't aware of this and I thought I could share my script.
zacharias.maladroit said:
have a good rest, Darkyy !
thanks for this script
so you noticed improved interactivity with "apps and less lag" ?
gotta try this with CM7
FYI:
the defaults of the CM7 kernel are:
Code:
cat /sys/module/lowmemorykiller/parameters/minfree
2048,3072,4096,6144,7168,8192
edit2:
make sure that you get the right permissions for the file on the phone afterwards
say:
Code:
chmod 750 /system/etc/init.d/99rambooster
chown root:shell /system/etc/init.d/99rambooster
Click to expand...
Click to collapse
Strange permissions...
This would be rwx r-x --- [Owner, Group, Other]
EDIT:
Ouch, CM7 really has 2048,3072,4096,6144,7168,8192?
That's really not the best value... looks close like JV1 RAM Management at first glance...
I'm gonna check that later.
Darkyy said:
Not innovative - this is nothing new.
It's just that many ROM devs aren't aware of this and I thought I could share my script.
Strange permissions...
This would be rwx r-x --- [Owner, Group, Other]
EDIT:
Ouch, CM7 really has 2048,3072,4096,6144,7168,8192?
That's really not the best value... looks close like JV1 RAM Management at first glance...
I'm gonna check that later.
Click to expand...
Click to collapse
yes,
and those are really the permissions
ls -l
-rwxr-x--- 1 root shell 365 Aug 1 2008 00banner
-rwxr-x--- 1 root shell 27 Aug 1 2008 01sysctl
-rwxr-x--- 1 root shell 229 Aug 1 2008 03firstboot
-rwxr-x--- 1 root shell 201 Aug 1 2008 04modules
-rwxr-x--- 1 root shell 1452 Aug 1 2008 05mountsd
-rwxr-x--- 1 root shell 272 Aug 1 2008 06mountdl
-rwxr-x--- 1 root shell 925 Aug 1 2008 20userinit
-rwxr-x--- 1 root shell 2533 Mar 19 02:20 89system_tweak
-rwxr-x--- 1 root shell 2848 Aug 1 2008 90screenstate_scaling
Click to expand...
Click to collapse
good thing you came up with these improved values,
I'm gonna include these in the next revision of my script / kernel
thanks again
Thanks Darkyy! Once again, you kicketh ass!
I am gonna give this a try.
Nice, some info on min free settings:
http://www.androidcentral.com/fine-tuning-minfree-settings-improving-androids-multi-tasking
while we're at it:
you could include lots of stuff from the
tweak script for the Galaxy Spica
in your next revision of ROM
I'm using some of those
and planning to continually add more after having tested them
DocRambone said:
Nice, some info on min free settings:
http://www.androidcentral.com/fine-tuning-minfree-settings-improving-androids-multi-tasking
Click to expand...
Click to collapse
Thanks Doc, will add it tomorrow in the OP.
zacharias.maladroit said:
while we're at it:
you could include lots of stuff from the
tweak script for the Galaxy Spica
in your next revision of ROM
I'm using some of those
and planning to continually add more after having tested them
Click to expand...
Click to collapse
Nice, but most things are specially for the low-end device Spica.
I'll sure look into it
Thank you
Gah this is such a retarded suggestion. Darky your SGS ROM is really nice and I'm currently running it, but please think about things like this before you post them.
The SGS has, comparatively, RAM out the wazoo. Why do we want more of it sitting idle and unused? RAM is there to be used, not sit there looking unused and pretty like a virgin at an eastern european slave auction in a free -m command. Twatting about with this setting on behalf of the Android Low Memory Killer is essentially like telling the ROM you have less RAM than you actually do since it will always endeavour to keep that much RAM -free- as in -unused- by the GUI itself as well as Android apps.
Darkyy said:
Memory Tweak - get more free RAM to use for apps and less lag.
I made a script which boosts the RAM Management significantly.
You can use this in any ROM - those values have been created from my mind and were being tested for several days in heavy use.
IMHO, it's the perfect combination of RAM Management.
HOW TO IMPLEMENT IT INTO YOUR ROM
Just make a new bash script and place the following code into it.
Place the script in /system/etc/init.d so it gets automatically executed at every startup. You have to make this because init.rc (in root dir /) gets executed first and will also set the RAM Management (minfree) on his own.
This doesn't work on JV1 now because we don't have the kernel sources to implement init.d support.
Code:
#!/system/bin/sh
# DarkyROM 2011 - Joël Staub (darkyy)
# This will stabilize the memory leaks in Gingerbread and other ROMs.
# Adjusting Memory Settings
# Old Hack (you can ignore this, it's just another method of doing it)
#if [ -e /sdcard/darky_tweak/init.rc ]; then
# echo "Copying init.rc to /"
# cp /sdcard/darky_tweak/init.rc /
# else
# echo "No init.rc found"
#fi
# New Method [15.03.2011]
if [ -e /sys/module/lowmemorykiller/parameters/minfree ]; then
echo "Modifying minfree parameters"
echo "2560,4096,6144,17408,19456,23552" > /sys/module/lowmemorykiller/parameters/minfree
else
echo "minfree not found"
fi
- darkyy.
Click to expand...
Click to collapse
How to do it. any video to show us. ??
touness69 said:
thanks for explanation ! I have done what you say and rebooted my phone after that. I renamed the file to init.d after placing it into the /system/etc/ directory and setted the défault permissions for this file rwxrwxrwx (or something like that)
But how I find if I have the hack succesfuly installed ?
Click to expand...
Click to collapse
He said to place it inside init.d not call it init.d. Are you honestly this illiterate?
shaldi said:
How to do it. any video to show us. ??
Click to expand...
Click to collapse
How to create a text file and place it where he says to place it? Are you honestly this illiterate?
Darkyy said:
You just make a new file on your COMPUTER.
Or it would even work on your SGS (but I'm writing now for the Computer).
Example:
Let's say, you're on Windows - create a NEW text file and remove the .txt extension (you need to have this option activated in the explorer settings).
You can leave it to no extension or just make it end on .sh
You got a file called randomname.sh now.
Now to make it easy, just copy this file to the C: drive in NO subfolder.
Now just ADB push this file to your SGS into:
Code:
adb push /randomname.sh /system/etc/init.d
Or just copy the .sh file to your SGS via USB Storage mount and copy it to the directory with Root Explorer or Super Manager.
Yes, this should work with every kernel (Android 2.2.1) here.
Click to expand...
Click to collapse
Darkyy, so I just copy the codes, paste in notepad then save as [anygivenname.sh] then paste into system/ect/init.d using root explorer and reboot my galaxy s?
Darky is this included in your rom? if not is it going to be?
bernard134 said:
Darkyy, so I just copy the codes, paste in notepad then save as [anygivenname.sh] then paste into system/ect/init.d using root explorer and reboot my galaxy s?
Click to expand...
Click to collapse
guys
seriously: read what comes after the 1st ,2nd and 3rd post - or the first 1-3 (or 5 sites) if it's a larger topic
you'll see that you need to change the permissions & owner
you do that via logging in via adb, becoming root (su)
and navigating to /system/etc/init.d/
or do it explicitly from the folder where you are - like I posted
0) prepare file on windows / linux / mac
Code:
#!/system/bin/sh
# DarkyROM 2011 - Joël Staub (darkyy)
# This will stabilize the memory leaks in Gingerbread and other ROMs.
# Adjusting Memory Settings
# Old Hack (you can ignore this, it's just another method of doing it)
#if [ -e /sdcard/darky_tweak/init.rc ]; then
# echo "Copying init.rc to /"
# cp /sdcard/darky_tweak/init.rc /
# else
# echo "No init.rc found"
#fi
# New Method [15.03.2011]
if [ -e /sys/module/lowmemorykiller/parameters/minfree ]; then
echo "Modifying minfree parameters"
echo "2560,4096,6144,17408,19456,23552" > /sys/module/lowmemorykiller/parameters/minfree
else
echo "minfree not found"
fi
e.g. save as:
99rambooster
1) dl & install Android SDK
http://www.talkandroid.com/android-sdk-install-guide/
2) connect phone
navigate to tools folder (or from Linux: launch from terminal via command)
3) put it on the phone
Code:
adb push 99rambooster /sdcard/
4) log in to phone & become root
Code:
adb shell
(now in phone)
Code:
su
5) copy it to init.d folder [you eventually need to remount /system rw]
Code:
cp /sdcard/99rambooster /system/etc/init.d/
6) adjust permissions:
Code:
chmod 750 /system/etc/init.d/99rambooster
chown root:shell /system/etc/init.d/99rambooster

[BASH4.1+][SCRIPT HELPER][LIBRARY]semi-native function library

Hello XDA users, deciding to post this here because i figured it could get some use/i could get some feedback
(Placing it in general because i honestly dont think it could work anywhere else)
Basicly over the past few months ive been taking my multiple script for android, & rewriting/compressing into 1 library
& adding features/functionality that i consider useful. This script has never touched a PC, & only been written on android
(BTEP & DroidEdit Pro), & is designed to:
A.) Extend the basic terminals functionality.
B.) Extend customized scripts, & making scripting semi-easier.
C.) Offer multi-device compatibility while keeping origional functionality.
The script is capable of determining all critical variables on initialization, from
partitions (both mount name, & partition number can be easily obtained), OS/ANDROID version/type
Execution mode (source/exec), Autodetect instigator (Eg: boot, script, shell, etc.) If present, Execution level,
Etc, seamlessly before scripts execution, & modify its own execution accordingly.
The script can be used in a similar method to busybox (Eg, can be called directly, or through symlink
(Symbolic link) using functions name, & allows adding multiple switches at runtime which can totaly
Customize execution without touching a configuration (yes, it does support configurations).
Or for script/shell, can be sourced for max performance & increased functionality.
This script is designed to be as native as possible, & only requires busybox/toolbox, & bash (4.1+)
(Systems default/sh) is not sufficient.
Readme (1/2, Read 2nd post):
Code:
----------------------------------------------------------------------------------------------------
Table of contents:
1.) Basic information
2.) Installation
3.) Usage
3a.) Basic commandline switches
4.) Included functions & definitions (Execution)
4a.) Included functions & definitions (Source only)
##########################################################################################################
Basic Information 1.
SuperBox is a multi-call, multi-execution function library (think busybox with bash & sourcing),
built on ANDROID, For ANDROID, Designed to increase script efficiency, & offer "unstandard"
multi-device functionality, & some functionality considered "missing" from ANDROID/Linux by default.
##########################################################################################################
Installation 2.
Superbox is designed to be easy to install/use, and requires very few steps/dependancies to install.
Before installing, please check this small list of prerequisites & insure you have the required
dependancies to ensure correct installation, the following are required:
a.) BASH 4.x (4.0+) installed & linked to '/system/bin' & '/system/xbin', Systems default is not
sufficient & cannot support SuperBox in all needed areas.
b.) BusyBox 1.18+ (tested on v1.19.4), Please ensure toolbox is also fully installed.
c.) Device must be rooted & running S-off (insecure kernel, read kernel documentation)
This part can be bypassed if installing through recovery. Some features will be limited.
d.) SuperBox is a terminal/script expansion toolkit, as such, a terminal emulator (Such as BTEP aka:
Better Terminal Emulator Pro, or similar) is recommended for optimal usage.
if your device can meet the above requirements, you are ready to install.
To install, simply move the downloaded script (superbox, or superbox.txt) to either '/system/bin', or
'/system/xbin', if the downloaded file has an extension, remove it.
Set permissions to 755 (rwxr-xr-x), Once complete, open your preferred terminal, & type 'su -c bash'
once in bash, type 'superbox' (or whatever you named the script), or 'superbox --info', if the operation
succeeded without error, you can begin full installation, Simply type either:
'superbox --install', or 'superbox --install <FUNCTION> to fully install, or install specific function.
See section 3a (Basic commandline switches) for full list of available switches, or section 4
(Included functions) for list of executable functions.
##########################################################################################################
Usage: 3.
SuperBox allows multiple methods of execution, & preferred method is left completely up to the user.
Sourcing:
SuperBox can be sourced either in terminal, or script, using something similar to
'. superbox', or '. ./superbox' if kept in unstandard path. if sourcing in terminal & script appears
to continue to execute, Try adding '--noboot' switch (see section 3a).
Script allows extra functionality not typically available in execution mode.
Execution:
this is the most typical use for superbox, & as easy as typing 'superbox <function>' or '<function>'
when fully installed. For list of all available functions, use 'superbox --list' to generate full list
of available applets, Please note that when using '--list' or even app count when using '--info' is
only listing execution type applets, Source functions are NOT included in this list.
----------------------------------------------------------------------------------------------------------
Basic commandline switches 3a.
SuperBox allows adding additional variables through commandline to modify per-execution variables,
Without editing a configuration, or worrying about recurrent changes. These variables effect a wide
range of scripts functions, & are available in 2 levels,
1.) SuperBox switches:
These switches effect the script as a whole, & are listed/added by the double-hyphon prefix ('--')
These are the only switches listed in this readme, for individual functions switches, please use
'superbox <function> --help' or '<function> --help' if fully installed.
1.) Function switches:
These switches only effect the function being processed, & are listed by a single-hyphon ("-"),
These are not available in all functions. Function switches should be used after superbox switches.
SuperBox switches:
The following MUST be passed as MODE & must be called directly from SuperBox, Eg:
'superbox --<MODE>', Not capable of being passed as variable.
install | Usage: '--install <FUNCTION> --installto={PATH}', Generates symbolic link for FUNCTION in
| PATH, if no FUNCTION specified, installs all, if no path, Default is used.
remove | Usage: '--remove <FUNCTION>', Opposite of above, Removes link for specified function.
| Scans system to find symbolic link, use '--full' switch to scan full recursive.
chkbb | Checks install status of busybox, & capable of generating missing links, use '--fix' to
| auto repair any/all missing links.
version | Displays installed SuperBox's version.
list | Lists all included execution-capable functions included in current version.
The following are to be used after mode (function listing), Eg: 'superbox <MODE> --<SWITCH>' or
'<MODE> --<SWITCH> when fully installed.
debug | Forces debugging on script (uses 'set -x' command), applies to script as a whole.
bb/tb | Pre-determines which busybox/toolbox versions to use, Must be used as '--bb=/path/to/file'
| or '--bb/path/to/file', Specifying invalid input will restore defaults when executing.
color | Default Colors for modes allowing color. sets color based on position in strings, Eg:
| '012345678' (upto 9 characters) where: 0=Error, 1=Note/Highlight, 2=Note2, 3=Normal,
| 4=File, 5=Path, 6=Link, 7=Background, 8=border, use pound (#) in place of unused spacing.
| for full listing of colors, Please see 'manfunc Col'
nocolor | Overrides above switch, & disables color in all segments.
installto | Modify install location for current component. (Used as '--installto={PATH}')
| MUST be used after install mode (Effects most file-based sections).
file | Usage: '--file="{/FULL/PATH/TO/FILE}"', used to set file path/name for specific segments
| Only effects segments where single-file processing is key.
local | Usage: '--local=\"{PATH\"', Assign path to use as local directory.
home | Usage: '--home=\"{PATH\"', Assign path to use as home directory, Use above over this.
time | Usage: "--time='{FORMAT}'", Specify time format (see '--timef'), (used for Lecho, etc.).
timefull | Usage: "--timef='{FORMAT}'", Specify full time/date format for script. %Y=4-digit year,
| %m=2-digit month, %d=2-digit day, %H=2-digit hr (24hr), %l=hour (12hr), %M=2-digit min,
| %S=2-digit seconds, %h=print month, %l=hour (12hr), %a=3-char day, %c=full (default).
log | Usage: '--log=<LEVEL>', set logging level/mode for script. *BROKEN, DONT USE*
logfile | Can only be used with '--log' greater then 1. Usage '--logfile=\"{PATH/FILE}\"'
tmpfile | specify temporary file to use for processing some segments.
tmppath | specify temporary path to use when needed for processing some segments.
list | Lists all included execution-level functions in current build.
help | Use immediately after <APPLET> to display information & usage on selected applet, Some
| applets will only display partial information by default, Use '--full' after help to
| display full information on specified function.
fix | Multipurpose switch, Allows bypassing non-critical errors, allows repairing any/all
| fixable errors, & serves to aid some functions.
silent/q | silences most (non-critical) output from STDOUT.
##########################################################################################################
*NOTE
some functions might not be considered 'main stream' or correct, but through trial & error, seem to work
Best with the chosen method.
Some functions are a WiP, might not be functioning correctly.
If you experience an issue, or have a suggestion, Please let me know.
**EDIT**
Updated, most functions should work correctly now.
Readme (2/2):
Code:
Included Functions (Execution) 4.
alignapk <file>
> Automaticly align <file> if specified, or all installed apks otherwise. can specify specific apk, or
simply apk name if apk is installed. Ex: 'alignapk systemui' is equivalent to
'alignapk /system/app/SystemUI.apk", extension (apk) is not needed, if path is specified, must be case
specific, otherwise alignapk will attempt to process case insensitive. Script will generate a SQL
database by default, but can specify text-based database with customized settings (See default config)
bam <Process1> <Process2>...
> kill any running processes matching specified input. Partial matches are supported, Eg:
'bam media' can kill 'android.process.media', aswell as any/all packagenames including 'media'
baseext <FILE> <MODE>
> echos the base extension of <FILE> if no MODE specified, or filename without extension if <MODE> is 1.
Anything else will display File with 'MODE' as extension, Eg: 'baseext ex ample' will return ex.ample
bar <var1> <var2> <var3>..
> displays accurate progress bar on screen, with the default terminal width as overall length.
Supports multiple customizable parameters. Only supports duration & strict percentage in current
build, More uses will be added in future builds (Eg: watch process, count, etc). Supported switches:
-t | Specify total time to run the bar, Usage: '-t=' where '' is scripts duration.
-p | Specify strict percentage to display (dont count) Eg: '-p60' will display 60% progress & quit.
-e | Specify displayed text when running the bar, multiline supported, can use script variables.
-d | Specify ASCII character to use for generating progress bar. default is '='.
-w | Override default width to use when processing bar, default is terminals width.
-n | Show progress Percentage (%) rather then progress bar (-b works as the oppisite)
-s | Display incrementing progress bar (jumps by ~1%) rather then the per-increment jump.
-k | same as '-s', but shows percentage at end of bar. (will increase exec time)
basepath <PATH>
> echos the base path or mount point (closest to rootfs) of <PATH>
byte <BYTES>
> Automagicly calculates Bytes(B)/kilobytes (Kb)/Megabytes (Mb)/Gigabytes (Gb) based on
on given Number in 'BYTES' on the *1024 principle, Eg: 'byte 1024 = 1Kb', Supports decimal places,
& maximum decimal points can be modified by 'MaxDec=' variable. Uses rounding to strip access.
Using '0' as 2nd variable will remove non-numaric characters from return (Eg: 'Kb/Mb/Gb/etc.).
Using '1' as 2nd variable will seperate non-numaric & numaric characters (Eg: '1Kb' would b '1 Kb').
calc <VAL EXPR VAL> or echo "VAL EXPR VAL"|calc
> similar basic functionality to 'bc', mini calculator script using 'awk' & 'printf', Supports Piping,
(function|function), float integers (decimals) & multiple types of arithmatic.
chrg_type <MODE>
> Quickly determines where the device is currently getting power from. Following modes are supported:
0 = Quiet output, returns 0-2 for Battery/AC/USB respectively.
1 = similar to '0', but displays code Aswell as return code.
2 = displays source (Eg: Battery/AC/USB), all other modes will simply display string.
chkdir <PATH> <PERM> <OWNER.GROUP>
> Checks existance of <PATH>, calls 'mkdir -p' if not exist, & sets permissions <PERM>
(numaric) when creating, & sets owner/group if spedified.
chksize <MOUNT> <CHECK> <ECHO>
> Checks if <MOUNT> has <CHECK> mb free (good for checking before extracting/installing). Returns 1/0
accordingly. set <ECHO> to 0 to use errorcode & disable echoing to STDOUT (if statment, (echo $?))
chkstate <INPUT> <EXEC_CMD>
> Determines if <INPUT> is available for script use, able to detect functions, aliases, links, binaries,
files, Variables, etc. specify <EXEC_CMD> to exwcute <INPUT> if detected. (binaries/functions/etc.)
Col <STRING> <MODE> or Col <STRING>
> Used for colored text Replace 'Col' with either: Bla(ck), Blu(e), Red, Gre(en), Whi(te), Mag(enta),
Cya(n), Yel(low). Ex: 'Bla "sample text" 1', Available modes are: 1=Bold, 2=Underline, 3=colorfill
(switches background/text), 4=no newline, 5=bold (no newline), 6=underline (no newline).
columns <MODE>"
> prints available columns, Set <MODE> to 1 to print number of lines (height of prompt).
conv <celsius|fahrenheit> <TEMP>, or conv <F> <T> "<STRING>"
> a rather bloated conversion script capable of converting tempuratures, or string to various formats.
-When converting tempuratures, both 'conv c 100', & 'conv 100c' are correct & will output sum
-When converting string, 'F' (From) & 'T' (To) must be specified to begin calculation.
'F' & 'T' can be one of the following: 'a' (ascii) (normal text), 'b' (binary, outputs 8-digit binary
code for each character specified), or 'h' (hexadecimal), when processing from hex, 4th variable
specifies preceeding character(s) to add to each return (default is '\x'), if set to 0, no characters
are added to string, only 2-digit hex is returned, For example: 'conv a h hello' (no 4th variable)
returns '\x68\x65\x6C\x6C\x6F', while 'conv a h hello 0' returns '68656C6C6F'.
divider <LENGTH> or divider -d<CHAR> <LENGTH>
> generates a bar (String of character(s) or CHAR if set), <LENGTH> characters long, if no LENGTH set,
total width of terminal window is used. Use '-d<CHAR> to customize character, Default is pound ('')
Eco <ABCDE> "TEXT"
> Echos <TEXT> with specific atributes, based on <ABCDE>, where: A=Line only [0|1], B=no newline[0|1],
C=(Bold[1], Underline[2], None[0]), D=Text color, E=Background color. Valid colors include:
0 - black, 1 - Red, 2 - Green, 3 - Yellow, 4 - Blue, 5 - Magenta, 6 - Cyan, 7 - White
ex <path/to/file>
> Extract archive to designated path, & even allows recompiling. use '--help' for more information.
exist <INPUT>
> Attempts to detect input & gives return code depending on findings Eg: 3=Dir, 2=Link, 1=File, 0=none.
fdate <INPUT>
> Same usability as 'busybox date -r', Returns modified date of <INPUT> Output can be adjusted
using '--timef' switch.
FixCl
> Returns color to normal, regardless of user-preset defaults.
getblock <MOUNT_NAME>
> Simply echos the block ID of requested point, saves a lot on scripting & allows true multi-device
compatibility. Usage as: 'getblock system'
gnasty <OPTIONS> <PATH>, Or 'gnasty <PATH>'
> Searches for files/paths with names containing invalid characters such as
[+ { ; " \ = ? ~ ( ) < > & * | $], Prints any/all links, includes full path by default. Modes include:
-d - specify directory, used as '-d={PATH}', not needed in most cases.
-m - Max search depth from directory, cannot be less then 1 (default). Usage: '-m' or '-m='.
-i - Display files inode (index number), useful for looping output to irm.
ipath <path>
> Will auto-correct <path> to case-sensitive (if exist) when input does not match case
(case-insensitive path correction through function)
irm [-irRfna] FILE, or 'irm FILE'
> remove (unlink) FILE using inode (index number). used for files/paths with illegal
characters in the name, (Eg: '+ { ; \" \\ = ? ~ ( ) < > & * | $'). The following modes are supported:
-i - Always prompt before removal | -f - Never prompt before removal
-r|-R - Remove file(s)/path recursively | -a - Only use name (no inode, replicating busybox rm)
-n - Ignored, used solely for script use.
is_num <STRING>
> Checks if 'STRING' is numaric (Contains only numbers), Returns 0 if true, 1 otherwise.
Can use '1' as second variable to echo result aswell as return code, eg 'is_num <STR> 1'.
lc "<INPUT>"
> Switches input to all lowercase, supports whitespace/newline, no limitations.
Lecho <MODE> <TEXT> <FILE1> <FILE2>
> Used to pipe text to log (while removing color/string data) & terminal.
If no file specified, Simply replicates echo with log header. Supports the following headers:
1=' : ' (default), 2='[!]' (error), 3=' > ' (note), 4=' ' (continuation).
lperm <PATH|FILE> <MODE>
> Execute user pre-generated configurations (mperm) based on input, can choose to either restore whole
path to configured state, or simply process 1 file from said config.
set <MODE> to 0 to disable recursive loading (dont descend into subdirectories).
manfunc <function>
> Displays available information for selected function, Operates identical to: '<function> --help'.
many <TEST> <STRING>
> Determine how many times <TEST> appears in <STRING>
md5 <string>
> Generates md5 hash from string (or filename).
mk <path/to/directory_or_file_to_archive>
> Use 7-Zip to build specified archive efficiently through script. While keeping full functionality
(and even adding), Supports 7z, zip, xz, bzip2, gzip, tar, & wim archive types. use '--help' for info
mod <OPTION> <var1> <var2>
> Modifies particular segments of device: Following options are supported:
b | brightness Modifies LCD (Display) brightness NOT supported on some devices.
display | Modify current pixal density, Eccepts numarical value (like lcd.density in build.prop),
Changes are made on the fly, & will reset all open applications, use with caution, can use
'reset' to reload default density from build.prop, Usage: 'mod density <value>'.
mperm <PATH|FILE> <MODE>
> Generate configuration for specified input, recording type, Permissions, Owner & Group, These configs
can then be loaded at any point specified, or ondemand using lperm, Supports the following modes:
0=non-recursive, 1=ignore errors,
myip
Display devices current IP, using nothing but wget, making it the trimmest ip oneliner around :)
ofcourse, internet connection is required.
nocl <STRING>
> Removes color variables from <STRING> to allow recording dato to log.
pinfo <NAME> <MODE>
> Neatly Prints process information for specified <NAME>, Supports the following modes:
1=Display PID (replicating pgrep), 2=Displays processes full Name, 3=Displays Parent Ppid,
4=display all options, 5=Display processes adj lvl, 6=Displays current State, S=sleeping, R=running,
7=Displays Owner, 8=Displays the Group (if set).
pos <VAL> <STRING>
> Displays start point(s) of 'VAL' in string, If multiple instances are detected, prints all starting
points seperated by customizable delimiter (Default is " " (whitespace)). If using custom delimiter,
('-d' switch), switch MUST be passed as first variable & specified as '-d%' where '%' is the new
character to use, Eg: instead of: 'pos hi hellohiwatup', Use: 'pos -d% hi hellohiwatup'.
Only effects multiple occurences of 'VAR'.
printl <FILE> <START> <END>
> Prints specific line(s) from FILE, If END is unspecified, prints 1 line, Otherwise prints from 'START'
to 'END', Using 'EOF' for 'END' will print to end of 'FILE', Using 'C' for 'START' will count lines.
pwr <mode>
> Advanced power control, with additional modes, which should work on multiple devices, Available modes:
reboot | reboot device, can use 'reset' aswell with same effect. can use 'hot' as 3rd variable to
perform hot reboot (still performs sync), simply reboots OS without rebooting kernel.
off | shutdown device, does exactly as stated.
download| Reboot into download mode. Might not be supported on some devices.
recovery| Reboot into recovery mode. Might not be supported on some devices.
wipe | Wipes cache/dalvik, then performs full reboot.
fc | Set fast-charge mode (needs kernel support), Eg: 'pwr fc 1' to enable, 'pwr fc 0' to disable
Using 'pwr fc' will display status, or support if unsupported.
rand <LENGTH> <MODE>
> Output random string 'LENGTH' characters long (Default is 32), if 'Mode' is unspecified, or is
Invalid, Output will consist of all printable characters. The following modes are available:
0 - Only print Letters (Upper & lower case) & digits
1 - Only print Letters (Upper & lower case)
2 - Only print digits
3 - Only print letters (Upper case)
4 - Only print letters (Lower case)
readperm <STRING>
> Opposite of 'showperm', displays permissions level from readable string. Easier to use switch
(& even switch again). Sticky/"special" fully supported. Again, 'switch' is easier/cleaner to manage.
remount <MODE> <0|1>
> remounts system & rootfs in specified mode, Second variable in string is unneeded But determines
check state, 1 will use rootfs as check, 0 will use '$System' (default), Use '--help' for more info
rootrw/rootro
> Mounts 'rootfs' as R/W (Read/Write) & R/O (Read/Only) respectively, similar to miniscripts included
in most Roms, With the exception that it utilizes the autodetection available in script, & should
work on any device/rom.
setlength "<STRING>" <POSITION> <LENGTH>
> displays the adjusted value of <STRING>, & should be under <LENGTH>,
autocorrects/centers based on given input, If no length is specified, 'Cw' (Common width) is used,
or scripts cefault. for position, -1 is right, 0 is left, 1 is center.
setown <FILE|PATH> <OWNER.GROUP>
> Glorified chown, With logging support.
setperm <FILE|PATH> <PERM>
> Glorified chmod, With logging support.
setprops
> Similar functionality to 'sysctl' Set system properties from configuration.
Can use '--file' to Specify reference file.
setval <VARNAME> <POINT> <FORCE> <POINT2> <FALLBACK_VALUE>
> Set values on system files, up to 2 points can be set for a variable, Can also specify fallback
If no value set in VARNAME. and no default, VARNAME, is used to reference the variable in error
sha256/sha512 <string>
> Generates sha512/sha256 encoded hash from string, similar to 'md5' function.
showperm <PERM_STRING>
> Displays permissions string in readable form from input, sticky/"special" notes are fully supported.
Switch is easier to use & capable of doing both.
size <MODE> <POINT> <[1,MB|2,AUTO|*,KB]>
> Echos the value of specified mode on specified <POINT> (modes 1-4 are for mount points).
If incorrect mount specified, Returns errorcode. Automaticly fixes missing '/' on specified mount if
not present. Third variable specifys out format. 1 is Mb, 2 is auto (kb/mb/gb with tags), * is kb
only (default), Following Modes are supported: 1=Full size, 2=Used space, 3=Used %, 4=Free space,
5=Size (use for files/paths, will not work on mounts, added '5' on request).
stype <INPUT>
> Defines file type & offers return code based on existance. Returns the following:
0=no input, 1=File, 2=Function, 3=Keyword, 4=Builtin, 5=Directory, 6=Variable, 7=Unknown/not exist.
switch <STRING>
> Switch permissions string from either human readable (rwxrwxrwx) or Numaric (777), or vice versa.
sysrw/sysro
> Mounts '/system' as R/W (Read/Write) & R/O (Read/Only) respectively, similar to miniscripts included
in most Roms, With the exception that it utilizes the autodetection available in script, & should
work on any device/rom.
sput <mode> <option1> <option2>
> large function resembling 'tput', rebuilt for 'light' or dumb terminals, should work for most scripts
requiring tput, use 'sput --help' for more information on available options.
toggle <string>
> Checks if <string> can be considered a "true or false" statement, eg: 'toggle 1' would be '0',
'toggle yes' is 'no', 'toggle on' is off, etc. Uses 'togglevars' string. case inspecific.
tree <path>, or tree --arguments -triggers <path>
> Displays directory information based on user input, if no input specified, Current path is used.
Allows using 'tree.cfg' in '$LocalPath' directory. Use '--help --full' for more information.
truncp [-f] <path> <length> <symbol>
> Truncate <path> to <length>, & prepend <symbol> to beginning when truncated. Default <symbol> is ".."
If '-f' switch is used, Path is truncated to <length> specificly, no exceptions, otherwise splits at
closest base to <length> (default length is 20), Eg: 'truncp /system/etc/SuperBox 12' will return:
'../SuperBox', & 'truncp -f /system/etc/SuperBox 12' will return '..c/SuperBox' (12chars precisely)
Output must never exceed <value>, Truncation does not occur unless <path> is over <length>.
uc "<INPUT>"
> Switches input to all uppercase, supports whitespace/newline, no limitations.
Included Functions (Source Only) 4a.
Please note that the functions listed here might not be a complete list of available applets for use in
source mode, & the applets listed here are unavailable in execution mode due to limitations of bash
script handling (Only available when sourced or sourced through script).
cd <path>, or cd <var> <path>
> works as a replacement/extension to shell's builtin. can auto-cd to files path if file is specified
& supports additional (unstandard) functionality, while keeping origional functionality fully intact.
Supports the following variables:
> -l | follow links to home path. (eg: 'cd /etc' would cd to '/system/etc'), defaults as on.
> -p | dont follow links to home path (oppisite of above, cds to given input).
> -c | process case insensitive (Eg: 'cd /SYSTEM/ETC' would cd to '/system/etc') Default is off.
> -m | make path if path doesnt exist, then cd to created path (nofail cd).
Variables can be passed either united, or seperate, & in any order, Eg: '-l -p -m -c' or '-lpmc'
error <id> <string1> <string2>..
> prints error message to stderr based on error 'id'. available ids can vary with build & it is not
recommended to call this function, for compatibility reasons, only ids that are garunteed to remain
unchanged are, '-1' (self-defined, no error notice), & '3' (self-defined with error notice).
Error ID & definitions start at line ~157, & continue to 'END_ERR' & can be previewed with 'printl'.
getsizes <base-size>
> used for generating spacing when generating menus in a uniform fashion, if 'base-size' is unspecified,
Script will use terminal width instead. Exports the following variables:
Cw - Custom width, overall width of panel (base-size, or columns)
Ws - Workspace, Width of 'Cw' Minus borders (Side1/Side2 & Edge) (if set).
Side - Width of sides ('Ws'/3), Use for left/right on 3-column menu.
Middle - Width of middle ('Ws'/3 & adjusted for uneven width), Use for left/right on 3-column menu.
Left - Width of left ('Ws'/2'), use for 2-column menu.
Right - Width of right ('Ws'/2 & adjusted for uneven width), Use for 2-column menu.
getvals $*
> used for functions eccepting runtime variables, & offers extended customizations when compared to
using 'shift' & 'if/case' statements. Only requires a nested 'ctrigs' function determining all
applicable switches, & a note to 'ctrigerr $1' on undefined. all additional variables passed to this
function are exported to V{1..20}. (script allows up to 20 variable/switch combinations by default).
'getvals' will auto-clean all previous user-variables before start, & clean all unused when done.
inpth <VARIABLENAME> <DEFAULTPATH>
> Checks if 'VARIABLENAME' has a directory, if not, sets 'VARIABLENAME' to 'DEFAULTPATH/VARIABLE'
used for defaulting files to correct locations, 'VARIABLENAME' must be variables name, & must be set,
setclock <mode>
> can pass variable as mode, allows '0/1' as values, exports either 12hr (0), or 24hr (1) formatted
variable (variable name 'Time') for use with 'date' Eg: 'date +$Time'
up <path> <count>
> replicates 'cd ..', if no variable passed, cd's up one level from current directory, if 'path' is
specified, cd's up 1 level from 'path', or 'count' levels up from either.
Use as either 'up', 'up <count>', 'up <path>', or 'up <path> <count>'.
Configurations:
Configurations are unneeded for execution, but can be used to set default values
To use during execution
By default, configurations are read from:
'/system/etc/SuperBox' > main (system) configurations.
'/data/local/SuperBox' > user (writable) configurations.
User configurations will override system configurations if exist.
Main configuration (SuperBox.cfg):
Code:
#======================================================================#
# __ #
# Main configuration for: /\ \ #
# ____ __ __ _____ __ _ __\ \ \____ ___ __ _ #
# / ,__\/\ \/\ \/\ __`\ /'__`\/\`'__\ \ '__`\ / __`\/\ \/ \ #
# /\__, `\ \ \_\ \ \ \_\ \/\ __/\ \ \/ \ \ \_\ \/\ \_\ \/> </ #
# \/\____/\ \____/\ \ ,__/\ \____\\ \_\ \ \_,__/\ \____//\_/\_\ #
# \/___/ \/___/ \ \ \/ \/____/ \/_/ \/___/ \/___/ \//\/_/ #
# \ \_\ By: YupitsMine420 #
# \/_/ #
#======================================================================#
# File definitions: #
# can use full path, or script variable to define. not read by default.#
# #
# Used for 'setprops', Similar functionality to sysctl, sets system #
# properties from configuration file. #
# Prop_File: $LocalPath/SystemProps.cfg #
# #
# Used for chkbb, when generating missing links, all links generated #
# are written to this file for easy uninstall #
# BusyBox_File: $LocalPath/BusyBox_Add.cfg #
# #
# Specify custom BusyBox/ToolBox binaries for script to use #
# #
##Use_BusyBox: $System/etc/SuperBox/bin/busybox1210 #
# Use_ToolBox: $System/stest/Data/bin/toolbox #
# #
#======================================================================#
#
# Permissions configurations
#
# Paths:
Perm_Src_Dir=755 # Source paths.
Perm_Cfg_Dir=644 # Configuration paths.
Perm_Bin_Dir=775 # Binary (executable) paths.
#
# Files:
Perm_Src_File=644 # Sourcable files.
Perm_Cfg_File=644 # Configuration files.
Perm_Bin_File=755 # Binary (executable) files.
#
DefOwner=root # Default owner.
DefGroup=root # Default group
#
#======================================================================#
#
# Basic configurations:
#
# User configuration path, should be R/W by default (usually '/data').
# Configurations in this path will override base configurations.
LocalPath='$Data/local/SuperBox'
#
# Set scripts clock format, 0=12hr, 1=24hr.
use_24hr=1
#
# Enable/Disable colors in all segments. 1=enable, 0=disable
ColorMode=1
#
# Specify default Colours for modes allowing colour. Format is:
# '0 1 2 3 4 5 6 7 8', where: 0=Error, 1=Note/Highlight, 2=Note2,
# 3=Normal, 4=File, 5=Path, 6=Link, 7=Background, 8=Borders.
DefaultColors=(1 3 6 2 6 4 5 0 5)
#
# Set how many decimal points to allow in arithmatic calculations,
# used in (most) filesize segments. Default value is "2"
# Set to '0' to disable float integers (round to closest full number)
MaxDec=2
#
# Sets path used to store/load permissions configurations for 'm/lperm'
# these configurations are device specific & should not be ported or
# re-used outside of this ROM. Path set below should be constantly R/W.
PermDir="$LocalPath/Perms"
#
#======================================================================#
#
# SuperBox specific Configurations:
#
# Scripts default log method, 0=disabled, 1=critical, 2=full.
sbox_log_level=0
#
# sloggers default log method, '%' fits to width,'-' quiets output.
# (only outputs to log) only effects terminal.
sbox_log_mode=
#
# Specify if date should be appended to log name when generating.
# string is manipulated with 'sbox_log_tag' variable
# With the default value of '%a-%h-%d_%H-%M'
sbox_log_usedate=0
#
# if old log exists, append new data to the end when enabled.
sbox_log_append=1
#
# Allow superbox to be called by cron (startup), 1=Enable, 0=Disable.
sbox_allow_boot=1
#
# specify if SuperBox requires administrator on launch.
sbox_need_admin=1
#
# Link names that will be treated as direct call to SuperBox, Eg:
# Wont be treated as execution mode (links must be manually generated).
sbox_null_links="sbox2 superbox sbox.old sbox.new"
#
#======================================================================#
#
# cd (icd) Configurations:
#
# Specify if 'cd' should check match path/name case-sensitively
# Default is '1' (true), should use '-c' instead of changing this.
icd_usecase=1
#
#======================================================================#
#
# alignapk (zipalign) configurations:
#
# Zip alignment configurations:
# Zip default alignment level, 0 = disabled, 1 = auto, 2 = forced.
align_level=2
#
# Use MD5 sum for each file when processing align. 1=true, 0=false
align_usemd5=0
#
# Use SQL table for storing data, 1 = true, 0 = text database
align_usesql=1
#
# SQL table name to store configurations
align_table=zipalign
#
#======================================================================#
#
# Other (Misc.) Configurations:
#
Tree configration (tree.cfg) (can be appended to main configuration):
Code:
#======================================================================#
# __ #
# Tree configuration for: /\ \ #
# ____ __ __ _____ __ _ __\ \ \____ ___ __ _ #
# / ,__\/\ \/\ \/\ __`\ /'__`\/\`'__\ \ '__`\ / __`\/\ \/ \ #
# /\__, `\ \ \_\ \ \ \_\ \/\ __/\ \ \/ \ \ \_\ \/\ \_\ \/> </ #
# \/\____/\ \____/\ \ ,__/\ \____\\ \_\ \ \_,__/\ \____//\_/\_\ #
# \/___/ \/___/ \ \ \/ \/____/ \/_/ \/___/ \/___/ \//\/_/ #
# \ \_\ By: YupitsMine420 #
# \/_/ #
#======================================================================#
#
# Directories script will avoid, script supports partial matches when
# processing these paths. individual entries should be seperated by (":").
# 'bad_files' & 'bad_links' variables can also be defined to ignore said entry
tree_bad_dirs=":/proc:/dev:/sys:/:"
#
# Force processing any input, even if entry exists in 'tree_bad_*' variable(s)
tree_skip_check=0
#
#
# Used to connect same-depth paths when processing sub-directories &
# files, Default is "|", should be quoted.
tree_ui_con="|"
#
# Used as padding for filenames/etc. to match depth.
tree_ui_dep="+=>"
#
# Seperates file/link/date/size information when displaying tree.
tree_ui_sep="-->"
#
# Specify how tree will process links when detected.
# 0 = Normal, 1 = Ignore link, 2 = ignore all (dont display).
tree_link_mode=0
#
# Enable to Display directory info/size & file/link/dir count, etc.
tree_show_info=True
#
# Show size information when procesing files/links.
tree_show_size=1
#
# Show last modified date when procesing all files/dirs/links.
tree_show_date=1
#
# Enabling will stop script from processing more then 1 directory
# deep into base path.
tree_no_recurs=0
#
# Default Colormode for tree, Mode is '0 1 2 3 4 5 6 7 8 9' where:
# 0 = file, 1 = link, 2=directory, 3=note, 4=background, 5=connector,
# 6=depth, 7=seperator, 8=time, 9=size.
tree_color_mode=(1 3 6 2 0 6 3 8 4)
#
To see what variables are exported when script is sourced, you can create a small script such as:
Code:
export > /cache/1
. sbox
export > /cache/2
cat /cache/2|while IFS= read -r i;do
[[ "$(grep "$i" /cache/1)" ]] || echo "$i"
done
$bb rm -f /cache/{1,2}
save & run, will display all re-usable variables generated by superbox.
*NOTE
Change '. sbox' to '. <name_of_script>' depending on what you named it
adding switches after '. sbox' will enable the variable associated with said switches
My phone does neat stuff!
Sent from my SAMSUNG-SGH-T989 using xda app-developers app
kj2112 said:
My phone does neat stuff!
Sent from my SAMSUNG-SGH-T989 using xda app-developers app
Click to expand...
Click to collapse
Yep, playing with terminal is fun xD
Not quite a full terminal, but close
Ive managed to replicate some missing binaries in script, & modify some standards to suite my needs xD
Uploading a bash 4.1.0 binary for those who want it, the 1 thing this script relies on thats not standard
Just rename to 'bash', move to '/system/bin' & chmod 755 (rwxr-xr-x), then create symlink in xbin for compatability
(some scripts will use /system/xbin/bash, while others will use /system/bin/bash, easy to resolve with symlink)
Default bashrc (/etc/bash/bashrc)
Code:
# /etc/bash/bashrc
#
# This file is sourced by all *interactive* bash shells on startup,
# including some apparently interactive shells such as scp and rcp
# that can't tolerate any output. So make sure this doesn't display
# anything or bad things will happen !
#
# Test for an interactive shell. There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
[[ $- == *i* ]] || return
#
# Bash won't get SIGWINCH if another process is in the foreground.
# Enable checkwinsize so that bash will check the terminal size when
# it regains control. http://cnswww.cns.cwru.edu/~chet/bash/FAQ (E11)
shopt -s checkwinsize
#
# Enable history appending instead of overwriting.
shopt -s histappend
#
# set some environment variables
TERMINFO=/system/etc/terminfo
MANPATH=/system/etc/man:/system/man:/data/local/man
INFOPATH="$MANPATH"
HOME=/sdcard
TERM=xterm
#
# Enable color
CLICOLOR=1
#
# Control history location/format/etc.
HISTFILE="/system/etc/bash/bash_history"
HISTFILESIZE=3000
HISTCONTROL=ignoreboth
HISTSIZE=10000
#
# Prompt color codes
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m' # Black - Background
bakred='\e[41m' # Red
badgrn='\e[42m' # Green
bakylw='\e[43m' # Yellow
bakblu='\e[44m' # Blue
bakpur='\e[45m' # Purple
bakcyn='\e[46m' # Cyan
bakwht='\e[47m' # White
txtrst='\e[0m' # Text Reset
#
# specify name of prompt
PROMPT_COMMAND='echo -ne ""'
#
# layout for coloring prompt command, if using color use this method only
# or get used to the blank prompt after executing command
if [ ${EUID} -eq 0 ];then
PS1="bash-4.1\[$txtred\]# \[\e[m\]"
else
PS1="bash-4.1\[$txtgrn\]$ \[\e[m\]"
fi
PS2='> '
PS4='+ '
#
# Set up a a few aliases to make commandline processing
# slightly easier.
for i in cat chmod chown df insmod ln lsmod mkdir more mount mv rm rmdir rmmod umount vi;do
eval alias ${i}=\"busybox ${i}\"
done
alias ls='busybox ls --color=auto'
alias sysro='mount -o remount,ro /system'
alias sysrw='mount -o remount,rw /system'
#
# Fix some 'change directory' aliases.
alias cd..='cd ..'
alias cdl='cd -L'
alias ..='cd ..'
alias ...='cd ../..'
#
# Annoyed by 'su' sending you to shell (sh)?
# Uncomment the following.
# alias su='su -c bash'
#
# Enable cmd style clear
alias cls='clear'
#
# Sudo semi-fix
alias sudo='su -c'
#
# Allow pulling command from history easily
alias hist='history|grep '
#
Updated for those few who download, fixed most broken functions & changed most default configuration names
If using configurations, you must use the new templates, original defaults still apply
If you have any issues using this build, please let me know, also, few new functions, & partially updated readme for
better definitions on new/existing options. included makeshift changelog for those who want it.
BTW. found a few binaries that work on our device, with all dependancies,
Such as:
7z (including 7za)
bc
GNU dc
GNU nano
GNU tput (with all dependancies such as terminfo db)
& various others (totaling about 30 GNU applications), just pm me if you want em. shouldnt upload as they aint my builds

MIUI Debloat + Optmizations

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

Categories

Resources