Mod please close this thread .
Thank you
Regards,
ImbaWind
Haven't download it yet but I'm just curious. Is this a "sync" followed by echoing "3" to the drop_cache file?
Sent from my Nexus S using xda premium
kοng said:
Haven't download it yet but I'm just curious. Is this a "sync" followed by echoing "3" to the drop_cache file?
Sent from my Nexus S using xda premium
Click to expand...
Click to collapse
and followed by a echo 1 to let the system continue create caches
Should the terminal emulator typing repeat in every reboot (soft reset)?
imbawind said:
Adrenaline Shot
This script act like an adrenaline shot for your phone.
It helps you to clear your system cache, get more free ram for you and gravely boost your phone's performance !
Click to expand...
Click to collapse
sync;
sleep 1
echo "3" > /proc/sys/vm/drop_caches;
echo "1" > /proc/sys/vm/drop_caches;
sleep 1
echo " ** Turbo Boosted ** ";
Is that all?
Not new. This script persists already in a lot of ROMs and tweaks.
My engine flush script included with V6 SuperCharger... it haz...
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Just type "flush" in terminal
And what's up with the naming?
There is a well known Adrenaline Shot script plus there is a certain 3G TurboCharger but anyway instead of using 2 names (?) you should call it "Adrenaline Boost" or something
jolas said:
Should the terminal emulator typing repeat in every reboot (soft reset)?
Click to expand...
Click to collapse
whenever u feel lag
alexdoux25 said:
sync;
sleep 1
echo "3" > /proc/sys/vm/drop_caches;
echo "1" > /proc/sys/vm/drop_caches;
sleep 1
echo " ** Turbo Boosted ** ";
Is that all?
Not new. This script persists already in a lot of ROMs and tweaks.
Click to expand...
Click to collapse
really ?0.0
for my device this script echo 3 drop cache is indeed included in many script but none of them works
zeppelinrox said:
My engine flush script included with V6 SuperCharger... it haz...
Just type "flush" in terminal
And what's up with the naming?
There is a well known Adrenaline Shot script plus there is a certain 3G TurboCharger but anyway instead of using 2 names (?) you should call it "Adrenaline Boost" or something
Click to expand...
Click to collapse
okay I'll make changes
but I really don't know tat ur v6 can clear ram by terminal..
and isit ur script only echo 3 without echo 1 back and sync
correct me if i'm wrong
zeppelinrox said:
My engine flush script included with V6 SuperCharger... it haz...
Just type "flush" in terminal
And what's up with the naming?
There is a well known Adrenaline Shot script plus there is a certain 3G TurboCharger but anyway instead of using 2 names (?) you should call it "Adrenaline Boost" or something
Click to expand...
Click to collapse
Code:
if [ "$opt" -eq 16 ]; then
# see http://www.droidforums.net/forum/liberty-rom-d2/122733-tutorial-sysctl-you-guide-better-preformance-battery-life.html
# credit imoseyon
echo " Your device may get laggy after a day or two.."
echo ""
$sleep
echo " ...if you haven't rebooted."
echo ""
$sleep
echo " It happens when system caches keep growing..."
echo ""
$sleep
echo " ...and free RAM keeps shrinking..."
echo ""
$sleep
echo " ...and apps are starved for memory!"
echo ""
$sleep
echo ""
$sleep
echo " This Engine Flush will give you a Quick Boost!"
echo ""
$sleep
echo " The system will drop all file system caches..."
echo ""
$sleep
echo " ...which means more free RAM and no lag!"
echo ""
$sleep
echo " ...so need to reboot!"
echo ""
$sleep
echo " Credit to imoseyon for making this known!"
echo ""
$sleep
echo " Continue and drop all file system caches?"
echo ""
$sleep
echo -n " Enter Y for Yes, any key for No: "
read flush
echo ""
echo $line
case $flush in
y|Y)sync; echo 3 > /proc/sys/vm/drop_caches
echo " Engine Flush Completed!"
echo ""
$sleep
echo " ...Enjoy Your Quick Boost :)";;
*)echo " File system caches were retained...";;
esac
echo $line
echo ""
$sleep
fi
do u mean this one ?
Code:
Code:
# sync
# echo 3 > /proc/sys/vm/drop_caches
That's it. Not much to see here. The first command writes any cache data that hasn't been written to the disk out to the disk. The second command tells the kernel to drop what's cached. Not much to it. This invalidates the write cache as well as the read cache, which is why we have the sync command first.
Click to expand...
Click to collapse
Source
and from my opinion , it's better to echo 1 back to drop_caches, cause the caches which are still in use may be cleaned whenever u go task manager and clear ram
correct me if i'm wrong
imbawind said:
Code:
if [ "$opt" -eq 16 ]; then
# see http://www.droidforums.net/forum/liberty-rom-d2/122733-tutorial-sysctl-you-guide-better-preformance-battery-life.html
# credit imoseyon
echo " Your device may get laggy after a day or two.."
echo ""
$sleep
echo " ...if you haven't rebooted."
echo ""
$sleep
echo " It happens when system caches keep growing..."
echo ""
$sleep
echo " ...and free RAM keeps shrinking..."
echo ""
$sleep
echo " ...and apps are starved for memory!"
echo ""
$sleep
echo ""
$sleep
echo " This Engine Flush will give you a Quick Boost!"
echo ""
$sleep
echo " The system will drop all file system caches..."
echo ""
$sleep
echo " ...which means more free RAM and no lag!"
echo ""
$sleep
echo " ...so need to reboot!"
echo ""
$sleep
echo " Credit to imoseyon for making this known!"
echo ""
$sleep
echo " Continue and drop all file system caches?"
echo ""
$sleep
echo -n " Enter Y for Yes, any key for No: "
read flush
echo ""
echo $line
case $flush in
y|Y)sync; echo 3 > /proc/sys/vm/drop_caches
echo " Engine Flush Completed!"
echo ""
$sleep
echo " ...Enjoy Your Quick Boost :)";;
*)echo " File system caches were retained...";;
esac
echo $line
echo ""
$sleep
fi
do u mean this one ?
Click to expand...
Click to collapse
Try this one
Code:
echo " Reported \"Free\" RAM = $ramreportedfree MB"
echo ""
busybox sync; echo 3 > /proc/sys/vm/drop_caches
sleep 3
echo 1 > /proc/sys/vm/drop_caches
ramused=$((`free | awk '{ print $3 }' | sed -n 2p`/1024))
ramkbytesfree=`free | awk '{ print $4 }' | sed -n 2p`
ramkbytescached=`cat /proc/meminfo | grep Cached | awk '{print $2}' | sed -n 1p`
ramfree=$(($ramkbytesfree/1024));ramcached=$(($ramkbytescached/1024));ramreportedfree=$(($ramfree + $ramcached))
echo $line
echo " ...RAM Stats AFTER Engine Flush"
Plus you ain't sleeping between the echo 3 and echo 1 - so sometimes that won't work.
zeppelinrox said:
Try this one
Code:
echo " Reported \"Free\" RAM = $ramreportedfree MB"
echo ""
busybox sync; echo 3 > /proc/sys/vm/drop_caches
sleep 3
echo 1 > /proc/sys/vm/drop_caches
ramused=$((`free | awk '{ print $3 }' | sed -n 2p`/1024))
ramkbytesfree=`free | awk '{ print $4 }' | sed -n 2p`
ramkbytescached=`cat /proc/meminfo | grep Cached | awk '{print $2}' | sed -n 1p`
ramfree=$(($ramkbytesfree/1024));ramcached=$(($ramkbytescached/1024));ramreportedfree=$(($ramfree + $ramcached))
echo $line
echo " ...RAM Stats AFTER Engine Flush"
Plus you ain't sleeping between the echo 3 and echo 1 - so sometimes that won't work.
Click to expand...
Click to collapse
wow i din noticed that u hav new version , still can report ram free , awesome one of the best devs out there
thanks for your guidance
zeppelinrox said:
Try this one
Code:
echo " Reported \"Free\" RAM = $ramreportedfree MB"
echo ""
busybox sync; echo 3 > /proc/sys/vm/drop_caches
sleep 3
echo 1 > /proc/sys/vm/drop_caches
ramused=$((`free | awk '{ print $3 }' | sed -n 2p`/1024))
ramkbytesfree=`free | awk '{ print $4 }' | sed -n 2p`
ramkbytescached=`cat /proc/meminfo | grep Cached | awk '{print $2}' | sed -n 1p`
ramfree=$(($ramkbytesfree/1024));ramcached=$(($ramkbytescached/1024));ramreportedfree=$(($ramfree + $ramcached))
echo $line
echo " ...RAM Stats AFTER Engine Flush"
Plus you ain't sleeping between the echo 3 and echo 1 - so sometimes that won't work.
Click to expand...
Click to collapse
the line which shows ram doesnt works
Works in my screen shot, no?
I just posted a snippet LOL
imbawind said:
wow i din noticed that u hav new version , still can report ram free , awesome one of the best devs out there
thanks for your guidance
Click to expand...
Click to collapse
Thanks I appreciate the good words
Related
UPDATE: Govswitch.sh has received an upgrade and it can now automagically generate an init.local.rc.new which can be used to set a governor on start up. It will also generate the chosen governor specific script and place it in the /system/bin folder. Thank you Duffkitty for the idea!
Original Post:
In the spirit of Open Source, I've written a couple of scripts that I wanted to share with the community. These are meant for advanced users familiar with the *nix command line. I didn't want to buy SetCPU (yes, I'm cheap ) so I decided to automate the process through the Bash shell language. For those interested, I've written a couple of Bash scripts that allow you to switch CPU governors via the command line. One script generates single instance scripts (one per governor) that can be used in conjunction with GScript for single click governor shortcuts. These single instance scripts are also ideal for changing the governor at boot. The other is command line only and prompts the user to choose from the available governors on the system.
I got tired of having to type it all out so I scripted the process. I just wanted to share with everyone else. I'm also planning to write a watch script that changes to the powersave governor automagically if the battery gets low.
I hope someone finds these scripts useful. Please let me know if anyone finds any errors in the scripts.
These scripts are offered under the terms of the GPLv2. Please see:
http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
You must have root to run these. Usage is detailed in the scripts.
Disclaimer:
You use this script at your own risk. There are no warranties or guarantees of functionality or safety implied or stated whatsoever.
If you do not know what this does, please do not use it.
Despite my harsh warning above, I've designed these scripts to be as failsafe as possible so that nothing is written if the user does not want changes or the governor being selected is already in use. I use these scripts all the time and I have tried to make them as user friendly as command line scripts can be.
Unzip the attached zip to your SD Card. It contains:
gpl-2.0.txt
Description: License file.
govscriptgen.sh
Description: This script generates a set of scripts, one per governor to '/sdcard/governors/'. If a governor is not available in the kernel, no script is generated for it. IE: You can't have ondemand on a kernel that only has interactive built in as the only governor. If you do happen to run a governor script for a governor that is not available, it will simply exit with an error message and no changes made.
Example:
Run:
Code:
bash /sdcard/govscriptgen.sh
Then:
Code:
bash /sdcard/governors/ondemand.sh
Code:
## This script is offered free for use and distribution under the terms and conditions
# in accordance with the GPLv2. For more inforation please visit:
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
## Written by Alex Zaballa (8/23/2010) for use on Android OS.
#
## Description: This script is designed to facilitate CPU Governor switching from
# the Bash command line that comes with custom Android ROMs. It reads the governors
# available on the system generates a script per governor.
# This allows user selection and future automation through Bash.
# Running this script with preexisting scripts in the gen_path
# will automatically overwrite the preexisting scripts.
# If you are a Bash editor, rename/backup anything you want to keep.
#
## Usage:
# bash /yourpath/govscriptgen.sh
#
## For root users only.
#
## Disclaimer:
# You use this script at your *own risk*. There are no warranties or guarantees
# of functionality or safety implied or stated whatsoever.
# If you do not know what this does, please do not use it.
##
# User Editable: Change this variable to change the generation path.
# Please use quotes and end slash.
gen_path="/sdcard/governors/"
# What governors are available to us?
gov_list="$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)"
# Create governor script folder if it does not exist.
if [ ! -e "${gen_path}" ]; then
mkdir ${gen_path}
fi
# Main loop
# Loop through the available governors.
for gov in ${gov_list}; do
# Concatenate path + filename.
script_name="${gen_path}${gov}.sh"
# Echo it all to script_name, rinse, repeat.
echo "Generating ${script_name} ..."
echo '## This script is offered free for use and distribution under the terms and conditions' > ${script_name}
echo '# in accordance with the GPLv2. For more inforation please visit:' >> ${script_name}
echo '## http://www.gnu.org/licenses/old-licenses/gpl-2.0.html' >> ${script_name}
echo '#' >> ${script_name}
echo '## Written by Alex Zaballa (8/23/2010) for use on Android OS.' >> ${script_name}
echo '#' >> ${script_name}
echo '## Description: This script is designed to facilitate CPU Governor' >> ${script_name}
echo '# switching from the Bash command line that comes with custom'>> ${script_name}
echo '# Android ROMs. The script name is generated from the available' >> ${script_name}
echo '# governors and when run, updates to the governor for which the script' >> ${script_name}
echo '# is named. If a governor is not available, it will exit safely with an error.' >> ${script_name}
echo '# These scripts can be used with GScript to create governor shortcuts.' >> ${script_name}
echo '#'
echo '## Usage:' >> ${script_name}
echo "# bash ${script_name}" >> ${script_name}
echo '#' >> ${script_name}
echo '## For root users only.' >> ${script_name}
echo '#' >> ${script_name}
echo '## Disclaimer:' >> ${script_name}
echo '# You use this script at your *own risk*. There are no warranties or guarantees' >> ${script_name}
echo '# of functionality or safety implied or stated whatsoever.' >> ${script_name}
echo '# If you do not know what this does, please do not use it.' >> ${script_name}
echo '##' >> ${script_name}
echo "" >> ${script_name}
echo "" >> ${script_name}
echo '# Set governor that the script controls. This was given at generation.' >> ${script_name}
echo -e 'gov='"\042"${gov}"\042" >> ${script_name}
echo '# What is the current system governor?' >> ${script_name}
echo -e current_gov="\042"'$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)'"\042" >> ${script_name}
echo '# What governors are available to us?' >> ${script_name}
echo -e gov_list="\042"'$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)'"\042" >> ${script_name}
echo "" >> ${script_name}
echo '# Failsafe: If the governor we are trying to set to is not available, exit safely.' >> ${script_name}
echo 'if [ "$(echo "${gov_list}" | grep -c "${gov}" )" != "0" ]; then' >> ${script_name}
echo '# Failsafe: If the governor we are trying to set to is already set, write nothing.' >> ${script_name}
echo ' if [ "${gov}" != "${current_gov}" ]; then' >> ${script_name}
echo ' echo "${gov}" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor' >> ${script_name}
echo ' current_gov="$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)"' >> ${script_name}
echo ' echo "Governor changed to:[${current_gov}]"' >> ${script_name}
echo ' else' >> ${script_name}
echo ' echo "Governor already set to:[${current_gov}]"' >> ${script_name}
echo ' echo "No changes made."' >> ${script_name}
echo ' fi' >> ${script_name}
echo 'else' >> ${script_name}
echo ' echo "Error: [${gov}] governor is not available on this kernel. No changes made."' >> ${script_name}
echo 'fi' >> ${script_name}
done
govswitch.sh
Description:
This script is meant for interactive terminal use (IE: use if you are staring at a command line prompt). It prompts the user for governor selection.
Example:
Run:
Code:
bash /sdcard/govswitch.sh
Code:
## This script is offered free for use and distribution under the terms and conditions
# in accordance with the GPLv2. For more inforation please visit:
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
##
## Written by Alex Zaballa (8/23/2010) for use on Android OS.
##
# Description: This script is designed to facilitate CPU Governor switching from
# the Bash command line that comes with custom Android ROMs. It reads the governors
# available on the system and asks the user which they would like to use.
#
## Usage:
# bash /yourpath/govswitch.sh
#
## For root users only.
#
## Disclaimer:
# You use this script at your *own risk*. There are no warranties or guarantees
# of functionality or safety implied or stated whatsoever.
# If you do not know what this does, please do not use it.
##
# No root, no go.
if [ "$(whoami)" != "root" ]; then
echo "ERROR: You do not have sufficient privileges to run this script."
echo "Please re-run with root privileges."
exit 1
fi
# Default paths. Most of these should not change unless AOS does.
gov_path="/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
available_path="/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors"
init_rc_path="/system/etc/init.local.rc"
bash_path="/system/xbin/bash"
# Recursive function to nag user for a sane and expected answer: (Y)(y) or (N)(n).
function yesno {
read -s -n 1 ans
case $ans in
# If the user has made a choice, update system variable and exit function and for loop.
Y|y) if [ "$2" == '/system/etc/init.local.rc' ]; then
# Do no harm. User has final say to replace 'init.local.rc'.
clear
echo "Setting system to rw permissions."
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
# Backup the original init.local.rc file if one does not exist.
if [ ! -e "${init_rc_path}.bak" ]; then
echo "Generating $2.bak"
cat "${init_rc_path}" > "${init_rc_path}.bak"
fi
echo "Generating $2.new"
cat "$2" > "$2.new"
echo "$1" >> "$2.new"
else
echo "$1" > "$2"
echo "[$1] written to:"
echo "$2"
fi
break 2> /dev/null ;;
# If the user wants something else, skip current item listed.
N|n) echo "Not writing [$1]..."
if [ "$2" == '/system/etc/init.local.rc' ]; then
echo "Done."
exit 0
fi ;;
# Garbage answer in; sanity nag out. Recurse.
* ) echo "Please enter:[y/n]"
yesno "$1" "$2";;
esac
}
# What governors are available to us?
gov_list="$(cat "${available_path}")"
# Main Loop
clear
echo "Available governors:[${gov_list}]"
# Failsafe: If all answers are no, we don't change anything.
echo "Answer (n)o to every question to keep current governor."
# Loop through available options.
for gov in ${gov_list}; do
# What is our current governor?
current_gov="$(cat "${gov_path}")"
# Skip question if the current governor and our option is the same.
if [ "${gov}" != "${current_gov}" ]; then
echo "The current governor is:[${current_gov}]"
echo ""
echo "Change to:[${gov}][y/n]?"
yesno "${gov}" "${gov_path}"
fi
done
# Confirm what we've done.
current_gov="$(cat "${gov_path}")"
echo -e "\nThe current governor is:[${current_gov}]"
echo "Do you want to use this governor on startup?"
startup_script="$(echo -e '/system/bin/'"${current_gov}"'.sh')"
init_string="$(echo -e 'service gov_'"${current_gov} ${bash_path} ${startup_script}\n\t\t"'oneshot'"\n\n\n")"
yesno "${init_string}" "${init_rc_path}"
if [ ! -e "${startup_script}" ]; then
# Echo it all to startup_script.
echo "Generating ${startup_script} ..."
echo '## This script is offered free for use and distribution under the terms and conditions' > ${startup_script}
echo '# in accordance with the GPLv2. For more inforation please visit:' >> ${startup_script}
echo '## http://www.gnu.org/licenses/old-licenses/gpl-2.0.html' >> ${startup_script}
echo '#' >> ${startup_script}
echo '## Written by Alex Zaballa (8/23/2010) for use on Android OS.' >> ${startup_script}
echo '#' >> ${startup_script}
echo '## Description: This script is designed to facilitate CPU Governor' >> ${startup_script}
echo '# switching from the Bash command line that comes with custom'>> ${startup_script}
echo '# Android ROMs. The script name is generated from the available' >> ${startup_script}
echo '# governors and when run, updates to the governor for which the script' >> ${startup_script}
echo '# is named. If a governor is not available, it will exit safely with an error.' >> ${startup_script}
echo '# These scripts can be used with GScript to create governor shortcuts.' >> ${startup_script}
echo '#' >> ${startup_script}
echo '## Usage:' >> ${startup_script}
echo "# bash ${startup_script}" >> ${startup_script}
echo '#' >> ${startup_script}
echo '## For root users only.' >> ${startup_script}
echo '#' >> ${startup_script}
echo '## Disclaimer:' >> ${startup_script}
echo '# You use this script at your *own risk*. There are no warranties or guarantees' >> ${startup_script}
echo '# of functionality or safety implied or stated whatsoever.' >> ${startup_script}
echo '# If you do not know what this does, please do not use it.' >> ${startup_script}
echo '##' >> ${startup_script}
echo "" >> ${startup_script}
echo "" >> ${startup_script}
echo '# Set governor that the script controls. This was given at generation.' >> ${startup_script}
echo -e 'gov='"\042"${current_gov}"\042" >> ${startup_script}
echo '# What is the current system governor?' >> ${startup_script}
echo -e 'current_gov='"\042"'$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)'"\042" >> ${startup_script}
echo '# What governors are available to us?' >> ${startup_script}
echo -e 'gov_list='"\042"'$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)'"\042" >> ${startup_script}
echo "" >> ${startup_script}
echo '# Failsafe: If the governor we are trying to set to is not available, exit safely.' >> ${startup_script}
echo 'if [ "$(echo "${gov_list}" | grep -c "${gov}" )" != "0" ]; then' >> ${startup_script}
echo '# Failsafe: If the governor we are trying to set to is already set, write nothing.' >> ${startup_script}
echo ' if [ "${gov}" != "${current_gov}" ]; then' >> ${startup_script}
echo ' echo "${gov}" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor' >> ${startup_script}
echo ' current_gov="$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)"' >> ${startup_script}
echo ' echo "Governor changed to:[${current_gov}]"' >> ${startup_script}
echo ' else' >> ${startup_script}
echo ' echo "Governor already set to:[${current_gov}]"' >> ${startup_script}
echo ' echo "No changes made."' >> ${startup_script}
echo ' fi' >> ${startup_script}
echo 'else' >> ${startup_script}
echo ' echo "Error: [${gov}] governor is not available on this kernel. No changes made."' >> ${startup_script}
echo 'fi' >> ${startup_script}
fi
echo ""
echo "***"
echo "WARNING:"
echo "CHECK init.local.rc.new for correctness"
echo "BEFORE overwriting the original."
echo "***"
echo "If you need a backup of the original,"
echo "init.local.rc.bak was created at runtime."
echo "Run the following or similar command"
echo "to overwrite init.local.rc in /system/etc/:"
echo ""
echo "cat init.local.rc.bak > init.local.rc"
Thanks downloading now.
duffkitty said:
Thanks downloading now.
Click to expand...
Click to collapse
Please let me know if you have any questions.
At first I got a yesno error but ran it with sh and not bash.
Working but I can't figure out gscript it sends out stderr's. I have the lite so dunno.
I'm guessing to start at boot I would need to edit a bit =P
Sent from my CM 6 Blackmodded Heroc using the XDA app. Now with uncapped kernel and battery tweaks.
duffkitty said:
At first I got a yesno error but ran it with sh and not bash.
Working but I can't figure out gscript it sends out stderr's. I have the lite so dunno.
I'm guessing to start at boot I would need to edit a bit =P
Sent from my CM 6 Blackmodded Heroc using the XDA app. Now with uncapped kernel and battery tweaks.
Click to expand...
Click to collapse
I found this for running scripts at boot. It's a good place to start.
http://forum.xda-developers.com/showthread.php?t=690564&page=2
govscriptgen.sh
This script generates a set of scripts, one per governor. It's those scripts you would want to use at boot or in gscript. If you didn't change the location, and assuming that you could write to your SD Card, they should be located in '/sdcard/governors'. There will be one per available governor (this is dictated by the kernel configuration).
In GScript do the following:
1. Open GScript Lite.
2. Menu > Add Script
3. Name the script. Let's say Ondemand.
4. Check 'Needs SU?'
5. In the text box type (without quotes), 'bash /sdcard/governors/ondemand.sh'
6. Create a shortcut to that script and it will set the governor it is named for.
govswitch.sh
This one is for use in a terminal and prompts the user for the desired governor.
I think I figured out and was gonna post it but you already did thanks. I appreciate it.
Sent from my CM 6 Blackmodded Heroc using the XDA app. Now with uncapped kernel and battery tweaks.
Added interactive.sh to /system/bin and fixed the permissions but I added
service gov_interactive /system/bin/interactive.sh
oneshot
To init.local.rc and it doesn't start... I can run it in terminal emulator with just interactive.sh though....
Sent from my CM 6 Blackmodded Heroc using the XDA app. Now with uncapped kernel and battery tweaks.
duffkitty said:
Added interactive.sh to /system/bin and fixed the permissions but I added
service gov_interactive /system/bin/interactive.sh
oneshot
To init.local.rc and it doesn't start... I can run it in terminal emulator with just interactive.sh though....
Sent from my CM 6 Blackmodded Heroc using the XDA app. Now with uncapped kernel and battery tweaks.
Click to expand...
Click to collapse
I think it needs the interpreter in front of it. Could you try the following?
Code:
service gov_interactive /system/xbin/bash /system/bin/interactive.sh
zansatsu said:
I think it needs the interpreter in front of it. Could you try the following?
Code:
service gov_interactive /system/xbin/bash /system/bin/interactive.sh
Click to expand...
Click to collapse
That does it. I guess it doesn't automagically know it's bash =P
Sent from my CM 6 Blackmodded Heroc using the XDA app. Now with uncapped kernel and battery tweaks.
duffkitty said:
That does it. I guess it doesn't automagically know it's bash =P
Click to expand...
Click to collapse
I'm glad it worked. Yeah, Android's command line fought me most of the way until I learned to just call bash before running any scripts. I suspect it's probably because the command line on Android initializes in a relatively 'bare' state as compared to all of Linux's bells and whistles that I'm used to.
Let me know if you have any more questions.
zansatsu said:
I'm glad it worked. Yeah, Android's command line fought me most of the way until I learned to just call bash before running any scripts. I suspect it's probably because the command line on Android initializes in a relatively 'bare' state as compared to all of Linux's bells and whistles that I'm used to.
Let me know if you have any more questions.
Click to expand...
Click to collapse
Thanks for helping =) I wonder if its possible to add bsd style init scripts. I guess you don't actually need to change many services but an rc.conf file would be cool =P
Sent from my CM 6 Blackmodded Heroc using the XDA app. Now with uncapped kernel and battery tweaks.
duffkitty said:
Thanks for helping =) I wonder if its possible to add bsd style init scripts. I guess you don't actually need to change many services but an rc.conf file would be cool =P
Sent from my CM 6 Blackmodded Heroc using the XDA app. Now with uncapped kernel and battery tweaks.
Click to expand...
Click to collapse
I started on Slackware and a '/etc/rc.d/rc.local' file would be really awesome. Slackware being one of the oldest distros (if not the oldest) is very similar to BSD. I've had to configure Slack many times, but once you did it was rock-solid.
Android feels more like Ubuntu in some ways and Red Hat in others, but a very slim version of either. I can't really explain it.
Anywho. Glad I could help.
Code:
## This script is offered free for use and distribution under the terms and conditions
# in accordance with the GPLv2. For more inforation please visit:
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
## Written by Alex Zaballa (9/23/2010) for use on Android OS.
#
Click to expand...
Click to collapse
How did you write this script one month in the future?
Seriously....would this script be able to change kernel voltage from command line? Say changing from undervolted to regular voltage for certain tasks (like GPS nav for example), then switch back to undervolt for other usage? Is something like that even possible? I've seen a few others ask about something like that in other threads.
chromiumleaf said:
How did you write this script one month in the future?
Click to expand...
Click to collapse
I'm just that ahead of my time! ROFL
DOH!
I corrected and reposted the zip file.
chromiumleaf said:
Seriously....would this script be able to change kernel voltage from command line? Say changing from undervolted to regular voltage for certain tasks (like GPS nav for example), then switch back to undervolt for other usage? Is something like that even possible? I've seen a few others ask about something like that in other threads.
Click to expand...
Click to collapse
If there is a command line associated with it, I can write a script that can easily handle it. I haven't looked into the specifics on changing voltages...
TBH: That thought scares the bejeezuz out of me.
zansatsu said:
If there is a command line associated with it, I can write a script that can easily handle it. I haven't looked into the specifics on changing voltages...
TBH: That thought scares the bejeezuz out of me.
Click to expand...
Click to collapse
Check out this thread for some of the initial dev conversations on undervolting: http://forum.xda-developers.com/showthread.php?t=697286 Ironically, I think some of it started from the guy who dev'd setcpu. Might have some info in it that could help you figure some things out. I'd try to sum it up for you but that stuff is just a bit over my head
Decad3nce said:
Code:
/* MSM7201A Levels 3-6 all correspond to 1.2V, level 7 corresponds to 1.325V. */
enum {
VDD_0 = 0,
VDD_1 = 1,
VDD_2 = 2,
VDD_3 = 3,
VDD_4 = 4,
VDD_5 = 5,
VDD_6 = 6,
VDD_7 = 7,
VDD_END
};
Thanks to kleranc for idea.
Click to expand...
Click to collapse
These are kernel level calls that have to be compiled into the kernel. Unless they make this available as a system variable, like the governors are, I don't think changing the voltage from the command line is possible... or even safe. The governors are routines written to control different CPU modes of operation and are designed to be fairly safe to use in instances of power management. Adjusting the voltages from the command line would prove to be too close to suicidal because Bash can't operate at the speeds necessary to monitor voltage fluctations.
Example: We hit a voltage spike, which needs to be corrected in nanoseconds (billionth of a second), Bash would brick the phone by not responding until at least 50 milliseconds (thousandth of a second) later, if ever.
Now if they had modules written that the kernel had different voltage 'modes' and built-in safeties, then I wouldn't have a problem manipulating them from the command line. As it stands, I'll leave it to people who think in ARM Assembler, C, and C++. lol
However, I am taking script ideas, so feel free to suggest anything else you might think is useful.
No Hero gets left behind!
Sent from my FROYO HERO.
Govswitch.sh has received an upgrade and it can now automagically generate an init.local.rc.new which can be used to set a governor on start up. It will also generate the chosen governor specific script and place it in the /system/bin folder. Thank you Duffkitty for the idea!
zansatsu said:
Govswitch.sh has received an upgrade and it can now automagically generate an init.local.rc.new which can be used to set a governor on start up. It will also generate the chosen governor specific script and place it in the /system/bin folder. Thank you Duffkitty for the idea!
Click to expand...
Click to collapse
Awesome I'm not longer using CM for a daily and switched to Zen-ROM but may go back when a release happens. Niche audience for the script but its very helpful
Sent from my HTC Hero using XDA App
CM10.1 Mega BOOST
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
* Better Battery
- Deep Sleep Mode
- Scans Wifi Less Frequently (Saves Battery)
* Image Quality Increased
* Streams Video Faster
* Better Touch Response
* Faster Reboot
* Instant Call
- No Delay In Receiving/Making Calls
* Faster Launcher
- No/Very Little Lag
- Forces Launcher Into Memory
* Fixes FC Issues With Some App’s
* Fixes “Black Screen” Issue After Call
- Screen Appears Almost Instantly After Pulling Phone Away From Face
* Audio & Video Quality Increased
* Signal Tweaks
* Download & Upload Speed Increased
* Dalvik VM Tweaks
* Loads App Faster
* Frees More RAM
* Overall Performance Increased
And Many More ...
Experimental Tweaks
To use experimental tweaks, simply remove "#" from the tweak you wish to use.
touch.pressure.scale=0.001
Improves Touch (Recommended)
ro.min_pointer_dur=8
Better Scrolling
ro.media.enc.hprof.vid.fps=65
Improves Media Quality
persist.sys.purgeable_assets=1
Frees up more RAM (Recommended)
persist.sys.use.dithering=1
Improves Screen Quality At The Cost Of Performance
debug.gr.swapinterval=0
Removes FPS Cap
debug.sf.nobootanimation=0
Disables Bootanimation
Version 1.4
Added More Experimental Tweaks
Modified Existing Tweaks
Added Performance Tweaks
Version 1.3
Added More Tweaks
Added Experimental Tweaks
Version 1.2
Proximity Tweaks
Dalvik VM Tweaks
Version 1.1
Swap SDCards
More Responsiveness
Image Quality Ehnanced
Made some changes for better results
Version 1.0
Initial Release
1. Download The Latest Version
2. Go Into Recovery Mode
3. Flash the zip file
4. Clear Dalvik Cache
5. Reboot
Version 1.4
Version 1.3
Version 1.2
Version 1.1
Version 1.0
testing/flashing
Good job, but Android Tweaker make the same things ...
- Scans Wifi Less Frequently (Saves Battery) wifi.supplicant_scan_interval=180
Less can not? Value 300 or 600 is not effective?
Will this continue to work with Dhiru's Alpha 7
Just wanted to know if this will work with [ALPHA][ROM][4.2.2] CyanogenMod 10.1 for Samsung Galaxy SL - Alpha 7.
yogesh.p.mahajan said:
Just wanted to know if this will work with [ALPHA][ROM][4.2.2] CyanogenMod 10.1 for Samsung Galaxy SL - Alpha 7.
Click to expand...
Click to collapse
Yes!
TopDroid said:
Yes!
Click to expand...
Click to collapse
And with the brand new a8? Thank you!
Yes
Hi TopDroid.can you write specific rom can work with your build?thanks alot!
ndttung8487 said:
Hi TopDroid.can you write specific rom can work with your build?thanks alot!
Click to expand...
Click to collapse
I have tried it only on CM10.1 and will work on it only.
hi TopDroid. After flash v1.3 on A8 i saw that my phone doesn't goes too smooth as V1.2 on A7. it lags and i have to wipe dalvik cache so usual, ram memory usable is less than v1.2 on a7 too. Moreover, can you make transparent status bar or hidden status bar by cwm flash file? much appreciate and thank you.
P/S: apps and settings i use the same on A7, I did clean ddfl2 by odin, wipe and flash fresh A8 (original of Dhiru1602). Thank you.
Edit: I install fresh all apps, i do not back up and restore.
Use v1.2 if you find it better. Totally up to you!
For Hidden Status Bar - View Thread
Hi there. After i flash hidden on A8. My phone stuck at boot logo! Thanks alot for your work
NEW script for you bro
Hi @TopDroid to make your life easier
Here is a script to update the build.prob only !!!
to retain the information for each rom !!!
it works for all Roms and devices
benefit
Code:
show_progress(0.1, 0);
ui_print(" ");
ui_print(" ");
ui_print(" ");
ui_print(" ");
ui_print("#*************************#");
ui_print("# #");
ui_print("# Mega Boost #");
ui_print("# Version 1.3 #");
ui_print("# ------------------ #");
ui_print("# #");
ui_print("# By TopDroid #");
ui_print("**************************#");
show_progress(0.100000, 0);
run_program("/sbin/busybox", "mount", "/system");
show_progress(0.100000, 40);
package_extract_file("topdroid.sh", "/tmp/topdroid.sh");
set_perm(0, 0, 0777, "/tmp/topdroid.sh");
run_program("/tmp/topdroid.sh");
delete("/tmp/topdroid.sh");
show_progress(0.100000, 70);
#set_perm_recursive(0, 2000, 0755, 0755, "/system/bin/***");
show_progress(0.100000, 90);
#set_perm_recursive(0, 2000, 0755, 0755, "/system/bin/***");
unmount("/system");
show_progress(0.100000, 100);
ui_print("Installation Completed *");
ui_print("Clear Dalvik cache");
ui_print("Reboot");
ui_print("");
Code:
#!/sbin/sh
busybox echo "" >> /system/build.prop
busybox echo "# TopDroid" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "# Faster Streaming" >> /system/build.prop
busybox echo "media.stagefright.enable-player=true" >> /system/build.prop
busybox echo "media.stagefright.enable-meta=true" >> /system/build.prop
busybox echo "media.stagefright.enable-scan=true" >> /system/build.prop
busybox echo "media.stagefright.enable-http=true" >> /system/build.prop
busybox echo "media.stagefright.enable-record=false" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "# Better Image & Audio Quality" >> /system/build.prop
busybox echo "ro.media.dec.jpeg.memcap=8000000" >> /system/build.prop
busybox echo "ro.media.enc.hprof.vid.bps=8000000" >> /system/build.prop
busybox echo "ro.media.enc.jpeg.quality=100" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "# Net Speed Tweaks" >> /system/build.prop
busybox echo "net.tcp.buffersize.default=4096,87380,256960,4096,16384,256960" >> /system/build.prop
busybox echo "net.tcp.buffersize.wifi=4096,87380,256960,4096,16384,256960" >> /system/build.prop
busybox echo "net.tcp.buffersize.umts=4096,87380,256960,4096,16384,256960" >> /system/build.prop
busybox echo "net.tcp.buffersize.gprs=4096,87380,256960,4096,16384,256960" >> /system/build.prop
busybox echo "net.tcp.buffersize.edge=4096,87380,256960,4096,16384,256960" >> /system/build.prop
busybox echo "net.tcp.buffersize.hspa=4096,87380,256960,4096,163 84,256960" >> /system/build.prop
busybox echo "net.tcp.buffersize.lte=524288,1048576,2097152,524288,1048576,2097152" >> /system/build.prop
busybox echo "net.tcp.buffersize.hspda=4096,87380,256960,4096,16 384,256960" >> /system/build.prop
busybox echo "net.tcp.buffersize.evdo_b=6144,87380,1048576,6144,87380,1048576" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "# Google DNS" >> /system/build.prop
busybox echo "net.ppp0.dns1=8.8.8.8" >> /system/build.prop
busybox echo "net.ppp0.dns2=8.8.4.4" >> /system/build.prop
busybox echo "net.dns1=8.8.8.8" >> /system/build.prop
busybox echo "net.dns2=8.8.4.4" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "# No Delay In Making Call" >> /system/build.prop
busybox echo "ro.telephony.call_ring.delay=100" >> /system/build.prop
busybox echo "ring.delay=0" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "# Battery Tweaks" >> /system/build.prop
busybox echo "pm.sleep_mode=1" >> /system/build.prop
busybox echo "ro.ril.disable.power.collapse=0" >> /system/build.prop
busybox echo "ro.ril.fast.dormancy.rule=0" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "# Proximity Tweaks" >> /system/build.prop
busybox echo "ro.lge.proximity.delay=25" >> /system/build.prop
busybox echo "mot.proximity.delay=25" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "# TopDroid" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "# Signal Tweaks" >> /system/build.prop
busybox echo "ro.ril.enable.amr.wideband=1" >> /system/build.prop
busybox echo "persist.cust.tel.eons=1" >> /system/build.prop
busybox echo "ro.config.hw_fast_dormancy=1" >> /system/build.prop
busybox echo "ro.ril.hsxpa=2" >> /system/build.prop
busybox echo "ro.ril.gprsclass=12" >> /system/build.prop
busybox echo "ro.ril.enable.dtm=1" >> /system/build.prop
busybox echo "ro.ril.hsdpa.category=8" >> /system/build.prop
busybox echo "ro.ril.enable.a53=1" >> /system/build.prop
busybox echo "ro.ril.enable.3g.prefix=1" >> /system/build.prop
busybox echo "ro.ril.htcmaskw1.bitmask=4294967295" >> /system/build.prop
busybox echo "ro.ril.htcmaskw1=14449" >> /system/build.prop
busybox echo "ro.ril.hsupa.category=6" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "# Better Responsiveness & Speed" >> /system/build.prop
busybox echo "windowsmgr.max_events_per_sec=260" >> /system/build.prop
busybox echo "ro.max.fling_velocity=12000" >> /system/build.prop
busybox echo "ro.min.fling_velocity=8000" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "# Dalvik VM Tweaks" >> /system/build.prop
busybox echo "dalvik.vm.dexopt-flags=v=n,o=v" >> /system/build.prop
busybox echo "dalvik.vm.execution-mode=int:jit" >> /system/build.prop
busybox echo "dalvik.vm.verify-bytecode=false" >> /system/build.prop
busybox echo "dalvik.vm.checkjni=false" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "# Fast Reboot" >> /system/build.prop
busybox echo "persist.sys.shutdown.mode=hibernate" >> /system/build.prop
busybox echo "ro.config.hw_quickpoweron=true" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "# Other Tweaks" >> /system/build.prop
busybox echo "ro.media.dec.aud.wma.enabled=1" >> /system/build.prop
busybox echo "ro.media.dec.vid.wmv.enabled=1" >> /system/build.prop
busybox echo "ro.mot.eri.losalert.delay=1000" >> /system/build.prop
busybox echo "ro.config.hwfeature_wakeupkey=0" >> /system/build.prop
busybox echo "ro.kernel.android.checkjni=0" >> /system/build.prop
busybox echo "ro.kernel.checkjni=0" >> /system/build.prop
busybox echo "persist.adb.notify=0" >> /system/build.prop
busybox echo "vm.stat_interval=1" >> /system/build.prop
busybox echo "persist.android.strictmode=0" >> /system/build.prop
busybox echo "profiler.force_disable_err_rpt=1" >> /system/build.prop
busybox echo "profiler.force_disable_ulog=1" >> /system/build.prop
busybox echo "ro.config.nocheckin=1" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "#" >> /system/build.prop
busybox echo "# Experimental Tweaks" >> /system/build.prop
busybox echo "#" >> /system/build.prop
busybox echo "" >> /system/build.prop
busybox echo "#touch.presure.scale=0.001" >> /system/build.prop
busybox echo "#ro.min_pointer_dur=8" >> /system/build.prop
busybox echo "#ro.media.enc.hprof.vid.fps=65" >> /system/build.prop
what is the diferrent between Lolation's file and v1.3 of TopDroid?
ndttung8487 said:
what is the diferrent between Lolation's file and v1.3 of TopDroid?
Click to expand...
Click to collapse
lola file is just update the build.prop so it's work on All rom with 4.2.2 JB , And Topdroid file it's just replace Stock Alpha8 build.prop to new one so it's work only on A8 ..
LoLaTiOn said:
Hi @TopDroid to make your life easier
Here is a script to update the build.prob only !!!
to retain the information for each rom !!!
it works for all Roms and devices
Click to expand...
Click to collapse
Really nice script. But the reason I'm not using it is that your script will add the build.prop tweaks to the existing build.prop and mine will completely replace it. The problem with your script is that if the existing build.prop already has been tweaked, there may be a possibility of duplication and that can create problems.
I'm not being disrespectful but expressing my view.
With this tweak i face the same problem as turbo charge. Blacklist still vibrate and play ringtone even number was blocked.
10.2?
Updated 03.26.14 - Released v2.1 - bug fixes and code cleaned
Introduction:
I am by no means a developer. I am just an android enthusiast who has learned a bit of bash. The reason I made this script was that settings>>wifi>>advanced was not promptly turning wifi off when my device would sleep; sometimes it would not turn off at all. So I figured since I am making a script to resolve this issue I might as well add a couple of other functions as well. To this end I noticed some people saying THIS APP was helpful and I missed the Flush-O-Matic script from V6 SuperCharger so I added fstrim and drop_caches=3 to the script.
Click to expand...
Click to collapse
What will this do?
The script will allow you to sync wifi, fstrim, and/or drop_caches=3 with sleep and/or it will allow you to schedule fstrim and/or drop_caches=3 using crond. The scheduling option can work on either a hourly (you can choose to run desired programs every hour on the hour, every two hours on the hour, every 3 hours on the hour, etc) or daily basis (you can choose to run desired programs at a given time on the hour).
Both the sync and schedule options will load themselves in to memory each boot and each time your device goes to sleep and/or when scheduled the scripts will depending on your options: (1) sync your data so as to ensure no data is lost; (2) TRIM your /system, /data, and /cache partitions; (3) DROP CACHES = 3; and (4) turn off wifi.
In addition, there is also an on-the-fly script to manually trim partitions and drop caches when desired.
Click to expand...
Click to collapse
Benefits:
Reduce lag/improve i/o efficiency (see THIS and THIS).
Although android automatically invokes fstrim when certain conditions are met, these criteria could seldom if ever be met depending upon your usage style. The init.d script should ensure fstrim is invoked more frequently for most users.
Should use less ram than apps that perform similar functions (I say should because I have never used such apps, but I imagine they consume more that .2-.5 mb of ram).
Click to expand...
Click to collapse
Requirements:
root
init.d
busybox
fstrim (should be in all nexus 4.3+ roms)
Click to expand...
Click to collapse
Warning/Disclaimer:
Although these scripts function as intended on my device – Nexus 7 (2013), SlimKat (weekly), ElementalX...Use at your own risk. Neither I nor XDA are responsible for any possible deleterious effects.
Click to expand...
Click to collapse
Known Issues/Bugs:
If you use the sync option, scripts with a lower priority than Z99 will not execute.
The log files don't always display as intended...dunno why...any help/suggestions would be appreciated.
Let me know if you find any others .
Click to expand...
Click to collapse
Install, Usage/Verification, & Uninstall:
Install -
Note: If you use crond for other tasks, both the install and uninstall routine account for this potential contigency and should leave your other crond tasks uneffects.
make a nandroid backup
download the zip (<<NOT flashable) attached to this post
extract the zip’s contents
if you were/are using the first version of this script manually delete: /etc/init.d/07TrimDropOff, /data/TrimDropOff_Awake.log, and /data/TrimDropOff_Sleep.log
run TrimDropOffInstaller with superuser permission via terminal or script manager.
follow the scripts prompts
reboot
enjoy
Usage/Verification -
Assuming you have followed the install procedure, next, put your device to sleep and then wake it if you are using the sync option.
Now check the various logs in /data/TrimDropOff. The logs will show the time, the script’s PIDs, the path of the PIDs (just to double-check the PIDs are correct), the ram used by the PIDs, action(s) preformed (amount trimmed from each partition and/or if drop_cahes was run), or errors.
If you want verify manually via terminal do [pgrep -f TrimDrop] for the sync option or [pgrep crond] for the scheduling option to get the PIDs, do [cat /proc/PID/cmdline] for each PID to verify it truly belongs to Z99TrimDropOff or crond, and do [dumpsys meminfo | grep PID] for each PID to verify ram usage (this command will yield duplicates, which can be disregarded and may output undesired additional results, which can be filtered by looking through the results for the relevant PID).
To use the on-the-fly script to trim and/or drop as desired, in terminal do [su -c trimdrop].
Should you want to reconfigure your setup, uninstall before reinstalling to avoid potential issues.
Uninstall -
Note: If you use crond for other tasks, both the install and uninstall routine account for this potential contigency and should leave your other crond tasks uneffects.
Rerun TrimDropOffInstaller with superuser permission and use uninstall option at the beginning of the script.
Reboot and all will be back to as it was before.
Click to expand...
Click to collapse
To-Do List:
Make in to an AROMA package.
I don't know, you tell me .
Click to expand...
Click to collapse
Code:
#!/system/bin/sh
# This script was authored by Defiant07 @ xda. Feel free to use it as you see fit, but please give proper credits.
# Big thanks to zeppelinrox, dk_zero-cool, & gu5t3r @ xda for their contributions to portions of this script (see the code of my other script SwapItOn @ xda for detailed citations).
# Read Karl Marx.
input_error(){
echo "That is not a valid input...try again...bye ."
exit 69
}
mount_rw(){
mount -o remount,rw / 2>/dev/null
mount -o remount,rw rootfs 2>/dev/null
busybox mount -o remount,rw / 2>/dev/null
busybox mount -o remount,rw rootfs 2>/dev/null
mount -o remount,rw /system 2>/dev/null
busybox mount -o remount,rw /system 2>/dev/null
busybox mount -o remount,rw $(busybox mount | awk '/system /{print $1,$3}') 2>/dev/null
}
mount_ro(){
mount -o remount,ro / 2>/dev/null
mount -o remount,ro rootfs 2>/dev/null
busybox mount -o remount,ro / 2>/dev/null
busybox mount -o remount,ro rootfs 2>/dev/null
mount -o remount,ro /system 2>/dev/null
busybox mount -o remount,ro /system 2>/dev/null
busybox mount -o remount,ro $(busybox mount | awk '/system /{print $1,$3}') 2>/dev/null
}
clear
if [ ! "`busybox`" ]; then
echo "Missing busybox...try again...bye ."
exit 69
fi
id=$(id); id=${id#*=}; id=${id%%[\( ]*}
if [ "$id" = "0" ] || [ "$id" = "root" ]; then
echo "" 1>/dev/null
else
echo "Not running as root...try again...bye ."
exit 69
fi
if [ ! -d /etc/init.d ]; then
echo "Missing /etc/init.d...try again...bye ."
exit 69
fi
if [ ! "`grep -r fstrim /system/bin`" ] && [ ! "`grep -r fstrim /system/xbin`" ]; then
echo "Missing fstrim...try again...bye ."
exit 69
fi
echo "Do you want to install or uninstall TrimDropOff?"
echo "Note: If you are rerunning this script to"
echo "reconfigure your setup, uninstall first."
echo -n "Input (i)nstall or (u)ninstall: "
read install_uninstall
echo
case $install_uninstall in
i|I)mount_rw
if [ ! -d "/sqlite_stmt_journals" ]; then
mkdir /sqlite_stmt_journals
fi
if [ ! -d "/data/TrimDropOff" ]; then
mkdir /data/TrimDropOff
chmod 755 /data/TrimDropOff
fi;;
u|U)mount_rw
rm /system/etc/init.d/Z99TrimDropOff_Sync 2>/dev/null
rm /system/etc/init.d/07TrimDropOff_Cron 2>/dev/null
rm /system/xbin/trimdrop 2>/dev/null
rm -rf /data/TrimDropOff 2>/dev/null
echo "Are you using cron.d for any other services?"
echo -n "Input es or o: "
read crond_use
echo
case $crond_use in
y|Y)sed '/TrimDropOff/d' -i /system/etc/cron.d/crontabs/root 2>/dev/null;;
n|N)rm -rf /system/etc/cron.d 2>/dev/null;;
*)input_error;;
esac
mount_ro
echo "All done. You can close your app now."
echo "Reboot your device to stop all processes."
exit 0;;
*)input_error;;
esac
wifi_only(){
cat > /system/etc/init.d/Z99TrimDropOff_Sync << EOF
#!/system/bin/sh
tdo_time(){
while [ ! "\`ps | grep -m 1 [a]ndroid\`" ]; do sleep 10; done
while [ 1 ]; do
AWAKE=\`cat /sys/power/wait_for_fb_wake\`
if [ "\$AWAKE" = "awake" ]; then
exec 1>/data/TrimDropOff/Awake.log
svc wifi enable
echo "\$(date +"%r %Y.%m.%d"): Waiting for screen to sleep. Confirming script in memory..."
echo "PIDs:"
pgrep -f TrimDrop
pidls=\`pgrep -f TrimDrop\`
echo "Verify Correct PIDs:"
for i in \$pidls; do
cat /proc/\$i/cmdline
done
echo ""
echo "RAM Usage:"
for i in \$pidls; do
dumpsys meminfo | grep \$i | grep sh | grep -m 1 pid
done
fi
SLEEPING=\`cat /sys/power/wait_for_fb_sleep\`
if [ "\$SLEEPING" = "sleeping" ]; then
exec 1>/data/TrimDropOff/Sleep.log
echo "\$(date +"%r %Y.%m.%d"): Offing."
svc wifi disable
fi
done
}
if [ "\`ps | grep -m 1 [a]ndroid\`" ]; then tdo_time
else exec > /data/TrimDropOff/Sync_BootErrors.log 2>&1
tdo_time &
fi
exit 0
EOF
}
fstrim_only(){
cat > /system/etc/init.d/Z99TrimDropOff_Sync << EOF
#!/system/bin/sh
tdo_time(){
while [ ! "\`ps | grep -m 1 [a]ndroid\`" ]; do sleep 10; done
while [ 1 ]; do
AWAKE=\`cat /sys/power/wait_for_fb_wake\`
if [ "\$AWAKE" = "awake" ]; then
exec 1>/data/TrimDropOff/Awake.log
echo "\$(date +"%r %Y.%m.%d"): Waiting for screen to sleep. Confirming script in memory..."
echo "PIDs:"
pgrep -f TrimDrop
pidls=\`pgrep -f TrimDrop\`
echo "Verify Correct PIDs:"
for i in \$pidls; do
cat /proc/\$i/cmdline
done
echo ""
echo "RAM Usage:"
for i in \$pidls; do
dumpsys meminfo | grep \$i | grep sh | grep -m 1 pid
done
fi
SLEEPING=\`cat /sys/power/wait_for_fb_sleep\`
if [ "\$SLEEPING" = "sleeping" ]; then
exec 1>/data/TrimDropOff/Sleep.log
echo "\$(date +"%r %Y.%m.%d"): Trimming."
echo "/system:"
busybox sync
fstrim -v /system
echo "/data:"
busybox sync
fstrim -v /data
echo "/cache:"
busybox sync
fstrim -v /cache
fi
done
}
if [ "\`ps | grep -m 1 [a]ndroid\`" ]; then tdo_time
else exec > /data/TrimDropOff/Sync_BootErrors.log 2>&1
tdo_time &
fi
exit 0
EOF
}
drop_only(){
cat > /system/etc/init.d/Z99TrimDropOff_Sync << EOF
#!/system/bin/sh
tdo_time(){
while [ ! "\`ps | grep -m 1 [a]ndroid\`" ]; do sleep 10; done
while [ 1 ]; do
AWAKE=\`cat /sys/power/wait_for_fb_wake\`
if [ "\$AWAKE" = "awake" ]; then
exec 1>/data/TrimDropOff/Awake.log
echo "\$(date +"%r %Y.%m.%d"): Waiting for screen to sleep. Confirming script in memory..."
echo "PIDs:"
pgrep -f TrimDrop
pidls=\`pgrep -f TrimDrop\`
echo "Verify Correct PIDs:"
for i in \$pidls; do
cat /proc/\$i/cmdline
done
echo ""
echo "RAM Usage:"
for i in \$pidls; do
dumpsys meminfo | grep \$i | grep sh | grep -m 1 pid
done
fi
SLEEPING=\`cat /sys/power/wait_for_fb_sleep\`
if [ "\$SLEEPING" = "sleeping" ]; then
exec 1>/data/TrimDropOff/Sleep.log
echo "\$(date +"%r %Y.%m.%d"): Dropping."
echo "drop caches:"
busybox sync
busybox sysctl -w vm.drop_caches=3
fi
done
}
if [ "\`ps | grep -m 1 [a]ndroid\`" ]; then tdo_time
else exec > /data/TrimDropOff/Sync_BootErrors.log 2>&1
tdo_time &
fi
exit 0
EOF
}
wifi_fstrim(){
cat > /system/etc/init.d/Z99TrimDropOff_Sync << EOF
#!/system/bin/sh
tdo_time(){
while [ ! "\`ps | grep -m 1 [a]ndroid\`" ]; do sleep 10; done
while [ 1 ]; do
AWAKE=\`cat /sys/power/wait_for_fb_wake\`
if [ "\$AWAKE" = "awake" ]; then
exec 1>/data/TrimDropOff/Awake.log
svc wifi enable
echo "\$(date +"%r %Y.%m.%d"): Waiting for screen to sleep. Confirming script in memory..."
echo "PIDs:"
pgrep -f TrimDrop
pidls=\`pgrep -f TrimDrop\`
echo "Verify Correct PIDs:"
for i in \$pidls; do
cat /proc/\$i/cmdline
done
echo ""
echo "RAM Usage:"
for i in \$pidls; do
dumpsys meminfo | grep \$i | grep sh | grep -m 1 pid
done
fi
SLEEPING=\`cat /sys/power/wait_for_fb_sleep\`
if [ "\$SLEEPING" = "sleeping" ]; then
exec 1>/data/TrimDropOff/Sleep.log
echo "\$(date +"%r %Y.%m.%d"): Trimming, Offing."
echo "/system:"
busybox sync
fstrim -v /system
echo "/data:"
busybox sync
fstrim -v /data
echo "/cache:"
busybox sync
fstrim -v /cache
svc wifi disable
fi
done
}
if [ "\`ps | grep -m 1 [a]ndroid\`" ]; then tdo_time
else exec > /data/TrimDropOff/Sync_BootErrors.log 2>&1
tdo_time &
fi
exit 0
EOF
}
wifi_drop(){
cat > /system/etc/init.d/Z99TrimDropOff_Sync << EOF
#!/system/bin/sh
tdo_time(){
while [ ! "\`ps | grep -m 1 [a]ndroid\`" ]; do sleep 10; done
while [ 1 ]; do
AWAKE=\`cat /sys/power/wait_for_fb_wake\`
if [ "\$AWAKE" = "awake" ]; then
exec 1>/data/TrimDropOff/Awake.log
svc wifi enable
echo "\$(date +"%r %Y.%m.%d"): Waiting for screen to sleep. Confirming script in memory..."
echo "PIDs:"
pgrep -f TrimDrop
pidls=\`pgrep -f TrimDrop\`
echo "Verify Correct PIDs:"
for i in \$pidls; do
cat /proc/\$i/cmdline
done
echo ""
echo "RAM Usage:"
for i in \$pidls; do
dumpsys meminfo | grep \$i | grep sh | grep -m 1 pid
done
fi
SLEEPING=\`cat /sys/power/wait_for_fb_sleep\`
if [ "\$SLEEPING" = "sleeping" ]; then
exec 1>/data/TrimDropOff/Sleep.log
echo "\$(date +"%r %Y.%m.%d"): Dropping, Offing."
echo "drop caches:"
busybox sync
busybox sysctl -w vm.drop_caches=3
svc wifi disable
fi
done
}
if [ "\`ps | grep -m 1 [a]ndroid\`" ]; then tdo_time
else exec > /data/TrimDropOff/Sync_BootErrors.log 2>&1
tdo_time &
fi
exit 0
EOF
}
fstrim_drop(){
cat > /system/etc/init.d/Z99TrimDropOff_Sync << EOF
#!/system/bin/sh
tdo_time(){
while [ ! "\`ps | grep -m 1 [a]ndroid\`" ]; do sleep 10; done
while [ 1 ]; do
AWAKE=\`cat /sys/power/wait_for_fb_wake\`
if [ "\$AWAKE" = "awake" ]; then
exec 1>/data/TrimDropOff/Awake.log
echo "\$(date +"%r %Y.%m.%d"): Waiting for screen to sleep. Confirming script in memory..."
echo "PIDs:"
pgrep -f TrimDrop
pidls=\`pgrep -f TrimDrop\`
echo "Verify Correct PIDs:"
for i in \$pidls; do
cat /proc/\$i/cmdline
done
echo ""
echo "RAM Usage:"
for i in \$pidls; do
dumpsys meminfo | grep \$i | grep sh | grep -m 1 pid
done
fi
SLEEPING=\`cat /sys/power/wait_for_fb_sleep\`
if [ "\$SLEEPING" = "sleeping" ]; then
exec 1>/data/TrimDropOff/Sleep.log
echo "\$(date +"%r %Y.%m.%d"): Trimming, Dropping."
echo "/system:"
busybox sync
fstrim -v /system
echo "/data:"
busybox sync
fstrim -v /data
echo "/cache:"
busybox sync
fstrim -v /cache
echo "drop caches:"
busybox sync
busybox sysctl -w vm.drop_caches=3
fi
done
}
if [ "\`ps | grep -m 1 [a]ndroid\`" ]; then tdo_time
else exec > /data/TrimDropOff/Sync_BootErrors.log 2>&1
tdo_time &
fi
exit 0
EOF
}
wifi_fstrim_drop(){
cat > /system/etc/init.d/Z99TrimDropOff_Sync << EOF
#!/system/bin/sh
tdo_time(){
while [ ! "\`ps | grep -m 1 [a]ndroid\`" ]; do sleep 10; done
while [ 1 ]; do
AWAKE=\`cat /sys/power/wait_for_fb_wake\`
if [ "\$AWAKE" = "awake" ]; then
exec 1>/data/TrimDropOff/Awake.log
svc wifi enable
echo "\$(date +"%r %Y.%m.%d"): Waiting for screen to sleep. Confirming script in memory..."
echo "PIDs:"
pgrep -f TrimDrop
pidls=\`pgrep -f TrimDrop\`
echo "Verify Correct PIDs:"
for i in \$pidls; do
cat /proc/\$i/cmdline
done
echo ""
echo "RAM Usage:"
for i in \$pidls; do
dumpsys meminfo | grep \$i | grep sh | grep -m 1 pid
done
fi
SLEEPING=\`cat /sys/power/wait_for_fb_sleep\`
if [ "\$SLEEPING" = "sleeping" ]; then
exec 1>/data/TrimDropOff/Sleep.log
echo "\$(date +"%r %Y.%m.%d"): Trimming, Dropping, Offing."
echo "/system:"
busybox sync
fstrim -v /system
echo "/data:"
busybox sync
fstrim -v /data
echo "/cache:"
busybox sync
fstrim -v /cache
echo "drop caches:"
busybox sync
busybox sysctl -w vm.drop_caches=3
svc wifi disable
fi
done
}
if [ "\`ps | grep -m 1 [a]ndroid\`" ]; then tdo_time
else exec > /data/TrimDropOff/Sync_BootErrors.log 2>&1
tdo_time &
fi
exit 0
EOF
}
echo "Do you want to sync fstrim, drop_caches=3, and/or"
echo "wifi with sleep?"
echo "WARNING: This will cause init.d scripts with a"
echo "priority lower than Z99 to NOT execute."
echo -n "Input es or o: "
read TDOsync
echo
case $TDOsync in
y|Y)echo "Which function(s) would you like to sync with sleep?"
echo "Input 1 for wifi only, 2 for fstrim only,"
echo "3 for drop_caches only, 4 for wifi and fstrim"
echo "5 for wifi and drop, 6 for fstrim and drop, or"
echo -n "7 for all: "
read sync_opt
echo
case $sync_opt in
1)wifi_only;;
2)fstrim_only;;
3)drop_only;;
4)wifi_fstrim;;
5)wifi_drop;;
6)fsrim_drop;;
7)wifi_fstrim_drop;;
*)input_error;;
esac
chmod 755 /system/etc/init.d/Z99TrimDropOff_Sync;;
n|N);;
*)input_error;;
esac
only_fstrim(){
cat > /data/TrimDropOff/TrimDropOff_Cron << EOF
#!/system/bin/sh
# This script was authored by Defiant07 @ xda. Feel free to use it as you see fit, but please give proper credits.
# Read Karl Marx.
exec 1>/data/TrimDropOff/CronRan.log
echo "\$(date +"%r %Y.%m.%d"): Trimming."
echo "/system:"
busybox sync
fstrim -v /system
echo "/data:"
busybox sync
fstrim -v /data
echo "/cache:"
busybox sync
fstrim -v /cache
exit 0
EOF
}
only_drop(){
cat > /data/TrimDropOff/TrimDropOff_Cron << EOF
#!/system/bin/sh
# This script was authored by Defiant07 @ xda. Feel free to use it as you see fit, but please give proper credits.
# Read Karl Marx.
exec 1>/data/TrimDropOff/CronRan.log
echo "\$(date +"%r %Y.%m.%d"): Dropping."
echo "drop caches:"
busybox sync
busybox sysctl -w vm.drop_caches=3
exit 0
EOF
}
both_funct(){
cat > /data/TrimDropOff/TrimDropOff_Cron << EOF
#!/system/bin/sh
# This script was authored by Defiant07 @ xda. Feel free to use it as you see fit, but please give proper credits.
# Read Karl Marx.
exec 1>/data/TrimDropOff/CronRan.log
echo "\$(date +"%r %Y.%m.%d"): Trimming, Dropping."
echo "/system:"
busybox sync
fstrim -v /system
echo "/data:"
busybox sync
fstrim -v /data
echo "/cache:"
busybox sync
fstrim -v /cache
echo "drop caches:"
busybox sync
busybox sysctl -w vm.drop_caches=3
exit 0
EOF
}
cron_starter(){
cat > /system/etc/init.d/07TrimDropOff_Cron << EOF
#!/system/bin/sh
# This script was authored by Defiant07 @ xda. Feel free to use it as you see fit, but please give proper credits.
# Read Karl Marx.
tdo_time(){
while [ ! "\`ps | grep -m 1 [a]ndroid\`" ]; do sleep 10; done
crond
exec 1>/data/TrimDropOff/CronBoot.log
echo "\$(date +"%r %Y.%m.%d"): cron.d service started."
echo "PIDs:"
pgrep crond
pidls=\`pgrep crond\`
echo "Verify Correct PIDs:"
for i in \$pidls; do
cat /proc/\$i/cmdline
done
echo ""
echo "RAM Usage:"
for i in \$pidls; do
dumpsys meminfo | grep \$i | grep -m 1 crond
done
}
if [ "\`ps | grep -m 1 [a]ndroid\`" ]; then tdo_time
else exec > /data/TrimDropOff/Cron_BootErrors.log 2>&1
tdo_time &
fi
exit 0
EOF
}
echo "Do you want to run fstrim and/or drop_caches"
echo "on a schedule?"
echo -n "Input es or o: "
read sched_opt
echo
case $sched_opt in
y|Y)echo "Which function do you want to schedule?"
echo "Input (f)strim only, (d)rop_caches only,"
echo -n "or (b)oth: "
read funct_opt
echo
case $funct_opt in
f|F)only_fstrim;;
d|D)only_drop;;
b|B)both_funct;;
*)input_error;;
esac
chmod 755 /data/TrimDropOff/TrimDropOff_Cron
echo "Do you want to schedule the function(s)"
echo "on an hourly or daily basis?"
echo -n "Input (h)ourly or (d)aily: "
read sched_opt
echo
if [ ! -d "/system/etc/cron.d" ]; then
mkdir /system/etc/cron.d
chmod 755 /system/etc/cron.d
fi
if [ ! -d "/system/etc/cron.d/crontabs" ]; then
mkdir /system/etc/cron.d/crontabs
chmod 755 /system/etc/cron.d/crontabs
fi
cron_starter
chmod 755 /system/etc/init.d/07TrimDropOff_Cron
case $sched_opt in
h|H)echo "Input 1 to run every hour, 2 to run every two hours,"
echo -n "3 to run every three hours...etc: "
read hour_opt
echo
if [ ! "`echo $hour_opt | awk '!/[^0-9]/'`" ]; then
input_error
fi
if [ -f "/system/etc/cron.d/crontabs/root" ]; then
echo "0 */$hour_opt * * * nohup /data/TrimDropOff/TrimDropOff_Cron" >> /system/etc/cron.d/crontabs/root
else
echo "0 */$hour_opt * * * nohup /data/TrimDropOff/TrimDropOff_Cron" > /system/etc/cron.d/crontabs/root
fi
chmod 755 /system/etc/cron.d/crontabs/root;;
d|D)echo "Input 0 to run at midnight every day,"
echo "1 to run at 1:00 am...13 to run at 1:00 pm"
echo -n "...etc...up to 23: "
read daily_opt
echo
if [ ! "`echo $daily_opt | awk '!/[^0-9]/ && $1<=23'`" ]; then
input_error
fi
if [ -f "/system/etc/cron.d/crontabs/root" ]; then
echo "0 $daily_opt * * * nohup /data/TrimDropOff/TrimDropOff_Cron" >> /system/etc/cron.d/crontabs/root
else
echo "0 $daily_opt * * * nohup /data/TrimDropOff/TrimDropOff_Cron" > /system/etc/cron.d/crontabs/root
fi
chmod 755 /system/etc/cron.d/crontabs/root;;
*)input_error;;
esac;;
n|N);;
*)input_error;;
esac
cat > /system/xbin/trimdrop << EOF
#!/system/bin/sh
# This script was authored by Defiant07 @ xda. Feel free to use it as you see fit, but please give proper credits.
# Read Karl Marx.
clear
trimmer(){
echo "/system:"
busybox sync
fstrim -v /system
echo "/data:"
busybox sync
fstrim -v /data
echo "/cache:"
busybox sync
fstrim -v /cache
}
dropper(){
echo "drop caches:"
busybox sync
busybox sysctl -w vm.drop_caches=3
}
echo -n "Do you want to run (f)strim, (d)rop_caches=3, or (b)oth? "
read funct_opt
echo
case \$funct_opt in
f|F)trimmer;;
d|D)dropper;;
b|B)trimmer
dropper;;
*)echo "That is not a valid input...try again...bye ."
exit 69;;
esac
echo
echo "All done...enjoy! You can close your app now."
exit 0
EOF
chmod 755 /system/xbin/trimdrop
mount_ro
echo "In addition to making the files required by"
echo "your desired configuration, I have also made"
echo "an on-the-fly script to run fstrim and/or"
echo "drop_caches on-demand."
echo "To use it, in terminal do: su -c trimdrop"
echo
sleep 3
echo "Reboot your device to start your desired services."
echo
sleep 3
echo "If you want to know how to verify everything"
echo "is working, read the script's OP (FFS)!"
echo
sleep 5
echo "All done...enjoy! You can close your app now."
exit 0
Click to expand...
Click to collapse
Changelog:
v2.0
made in to installer script
added cron options
added bootloop precautions to the init.d scripts (should make it compatible with all devices that meet the requirments)
the on-the-fly script, trimdrop, now allows user to choose fstrim and/or drop_caches=3
added more syncs to further ensure no data is lost
a bunch of other stuff I probably forget
v2.1
bug fixes - fixed issue if using only sync option (missing directory); fixed display of irrelevant errors in uninstall routine
cleaned code a bit (reduced redundancy)
Click to expand...
Click to collapse
Download History:
Defiant07s_TrimDropOff.zip - [Click for QR Code] (1.6 KB, 162 views)
Defiant07s_TrimDropOff_v2.0_[NOT_FLASHABLE].zip - [Click for QR Code] (3.0 KB, 89 views)
Click to expand...
Click to collapse
Credits:
Big thanks to @zeppelinrox, @dk_zero-cool, & @gu5t3r for their contributions to portions of this script (see the code of my other script SwapItOn for detailed citations).
Much thanks to @mdamaged for spotting the issue with sync init.d script and his note regarding syncing data.
Click to expand...
Click to collapse
Don't forget to click THANKS and RATE 5 STARS if you found this useful :highfive:.
peep my other script SwapItOn
Update to v2.1 if you were only using the sync option.
If you were using both the sync and schedule options or only the schedule option there is no need to update; the bug I found would not effect you.
reserved...on the off chance it will be needed
Thanks, sounds interesting. I'm assuming the zip can be flashed right after flashing a new rom?
MidnightDevil said:
Thanks, sounds interesting. I'm assuming the zip can be flashed right after flashing a new rom?
Click to expand...
Click to collapse
Not a flashable ZIP per line 2.
AnarchoXen said:
Not a flashable ZIP per line 2.
Click to expand...
Click to collapse
Oh, thanks
Is compatible with custom kernel? Franco in my case
vía n7II r-paco
Will performing trimming operations too frequently cause additional flash memory degradation?
MidnightDevil said:
Thanks, sounds interesting. I'm assuming the zip can be flashed right after flashing a new rom?
Click to expand...
Click to collapse
As you were informed the zip is NOT flashable. If there is sufficient interest (say a 100 downloads) I'll make it flashable/aroma.
jordirpz said:
Is compatible with custom kernel? Franco in my case
vía n7II r-paco
Click to expand...
Click to collapse
Yes, it should be compatible...the fstrim utility is part of the rom (it should be in all nexus 4.3+ roms).
creeve4 said:
Will performing trimming operations too frequently cause additional flash memory degradation?
Click to expand...
Click to collapse
No, to my limited knowledge it should not be harmful (in fact it should increase lifespan - google "fstrim lifespan"). Did a quick google search but could not find anything definitive/reliable regarding frequency...what I did see seemed to suggest 'no' though.
If you are concerned about the frequency, you could not install the init.d script and just use the on-the-fly script, trimdrop, to trim on-demand. Should there be interest and if I have the motivation and time, I have been thinking about making this in to an installer script and/or aroma zip with cron-based options so it could be scheduled hourly, daily, or weekly.
Scheduling options would be awesome!
creeve4 said:
Scheduling options would be awesome!
Click to expand...
Click to collapse
+1
creeve4 said:
Scheduling options would be awesome!
Click to expand...
Click to collapse
BUBA0071 said:
+1
Click to expand...
Click to collapse
Seems there is a decent amount of interest (almost 100 downloads already ...thanks peeps), as such I'll add options and make things more configurable.
Regarding scheduling, I was thinking of doing hourly, daily (with ability to choose time), and weekly (with ability to choose day and time) options. Would every other hour or some other setting be desirable?
Regarding installation, what would be the preferred method, an installer script (e.g. V6 SuperCharger) or AROMA? Flashable zips would be another option, but would have less options/be less configurable.
Gimme some feedback and I'll put something together in the next week or two depending on work and my motivation .
wasn't this a nexus 7 2012 issue and fixed in the new version 2013?
defiant07 said:
Seems there is a decent amount of interest (almost 100 downloads already ...thanks peeps), as such I'll add options and make things more configurable.
Regarding scheduling, I was thinking of doing hourly, daily (with ability to choose time), and weekly (with ability to choose day and time) options. Would every other hour or some other setting be desirable?
Regarding installation, what would be the preferred method, an installer script (e.g. V6 SuperCharger) or AROMA? Flashable zips would be another option, but would have less options/be less configurable.
Gimme some feedback and I'll put something together in the next week or two depending on work and my motivation .
Click to expand...
Click to collapse
My 2 cents:
I would choose a daily option for my device.
I prefer Aroma over a script, but if you cannot get the customization you want with Aroma, then by all means go with a script.
Thanks again for the script and willingness to make it even better!
Thanks for the scripts, I time my startup, and this improved startup time by about 3-4secs, among other noticible improvements, apparently the stock OS does not run fstrim enough, initial operations freed several gigs on the data partition, and hundreds of megs on the others...
creeve4 said:
My 2 cents:
I would choose a daily option for my device.
I prefer Aroma over a script, but if you cannot get the customization you want with Aroma, then by all means go with a script.
Thanks again for the script and willingness to make it even better!
Click to expand...
Click to collapse
+1
Im going to turn this into a cron job, that will take care of scheduling, unless anyone else gets there first ( please lol )
Will give it a go in its present form, whats its resource footprint just sitting there waiting for screen off ?
Can we trigger the action from the screen off event ? or some other interupt type way ?
Great script by the way, your bash is damn site better than mine, jealous lol
KiaraTheDragon said:
wasn't this a nexus 7 2012 issue and fixed in the new version 2013?
Click to expand...
Click to collapse
Yes, I think this is true to a degree...it was more of a problem on the 2012 and other nexus devices. See the links in the OP for the conditions that need to be met for fstrim to autorun...for some users (myself included) the conditions will seldom if ever be met. Also see @mdamaged post; I get similar results the first time fstrim is initiated by my script after each boot...subsequent runs normally only frees up memory on /data.
creeve4 said:
My 2 cents:
I would choose a daily option for my device.
I prefer Aroma over a script, but if you cannot get the customization you want with Aroma, then by all means go with a script.
Thanks again for the script and willingness to make it even better!
Click to expand...
Click to collapse
imfun said:
+1
Click to expand...
Click to collapse
Okay will get to making an AROMA package...it will be my first, but it looks easy enough :fingers-crossed:...gimme a week or two to put it together and fully test.
mdamaged said:
Thanks for the scripts, I time my startup, and this improved startup time by about 3-4secs, among other noticible improvements, apparently the stock OS does not run fstrim enough, initial operations freed several gigs on the data partition, and hundreds of megs on the others...
Click to expand...
Click to collapse
Thanks for the feedback. I get similar results.
jubei_mitsuyoshi said:
Im going to turn this into a cron job, that will take care of scheduling, unless anyone else gets there first ( please lol )
Will give it a go in its present form, whats its resource footprint just sitting there waiting for screen off ?
Can we trigger the action from the screen off event ? or some other interupt type way ?
Great script by the way, your bash is damn site better than mine, jealous lol
Click to expand...
Click to collapse
See the first post on this page and my response to @creeve4 and @imfun in this post. I will make an AROMA package with cron options for fstrim and drop_caches=3.
However, should you feel ambitious and beat me to it, props to you...I will give you full credit in the OP and link your post as the d/l source so you should get the 'thanks' too.
Regarding triggering with screen on/off or some other event: It can probably be done, but I it's beyond my knowledge (screen on/off was actually the first trigger event I looked in to using, but despite fairly extensive searching I could not find how to detect it).
Regarding resource footprint: Read the OP (usage section) it explains where to find the log which contains this info and how to do it via terminal (should you not trust me )...also see OP (benefits section): in all my testing I have never seen it use more that .8 mb, but most of the time it is less than .2 mb.
Okay will get to making an AROMA package...it will be my first, but it looks easy enough :fingers-crossed:...gimme a week or two to put it together and fully test.
Click to expand...
Click to collapse
Can't wait already, because after whole day or two, hard usage of my nexus 7 tablet, the tablet starts to get laggy. I can see this on web browsing, touch press delay time, and onyl rebooting seems to help... Hope after istaling this will solve the problems
ohhh no dont want any credit lol lol, i have turned it into a cron job quite simply by adding it to the cron initilising script
Code:
###########
# IMPORTS #
###########
. /system/etc/init.d.cfg
#############
# FUNCTIONS #
#############
symlink_system_bin() {
# crond has "/bin/sh" hardcoded
if busybox [ ! -h /bin ]
then
mount -o remount,rw rootfs /
busybox ln -s /system/bin /bin
mount -o remount,ro rootfs /
fi
}
export_timezone() {
# set timezone (if you're not between -0500 and -0800 you get PST)
# todo - support other timezones
timezone=`date +%z`
if busybox [ $timezone = "-0800" ]; then
TZ=PST8PDT
elif busybox [ $timezone = "-0700" ]; then
TZ=MST7MDT
elif busybox [ $timezone = "-0600" ]; then
TZ=CST6CDT
elif busybox [ $timezone = "-0500" ]; then
TZ=EST5EDT
else
TZ=PST8PDT
fi
export TZ
}
set_crontab() {
# use /data/cron, call the crontab file "root"
if busybox [ -e /data/cron/root ]
then
mkdir -p /data/cron
cat > /data/cron/root << EOF
0 20 * * * sync; echo 3 > /proc/sys/vm/drop_caches
0 20 * * * sync; fstrim -v /system
0 20 * * * sync; fstrim -v /data
0 20 * * * sync; fstrim -v /cache
01 * * * * busybox run-parts /system/etc/cron/cron.hourly
02 4 * * * busybox run-parts /system/etc/cron/cron.daily
22 4 * * 0 busybox run-parts /system/etc/cron/cron.weekly
EOF
fi
busybox crond -c /data/cron
}
########
# MAIN #
########
if $enable_cron -a is_busybox_applet_available crond
then
symlink_system_bin
export_timezone
set_crontab
fi
adding the lines
Code:
0 20 * * * sync; echo 3 > /proc/sys/vm/drop_caches
0 20 * * * sync; fstrim -v /system
0 20 * * * sync; fstrim -v /data
0 20 * * * sync; fstrim -v /cache
should drop the caches and fstrim every 8 hours, oviously set to anything you want.
i also stuck it in boot at the end
/system/etc/init.d/92jubei
Code:
#!/system/bin/sh
if $file_system_speedups
then
busybox mount -o remount,noatime,barrier=0,nobh /system
busybox mount -o remount,noatime /data
busybox mount -o remount,noatime,barrier=0,nobh /cache
else
busybox mount -o remount,noatime,nobh /system
busybox mount -o remount,noatime /data
busybox mount -o remount,noatime,nobh /cache
fi
echo "$(date +"%r %Y.%m.%d"): Trimming, Dropping."
busybox sync
echo "/system:"
fstrim -v /system
echo "/data:"
fstrim -v /data
echo "/cache:"
fstrim -v /cache
echo "drop caches:"
busybox sysctl -w vm.drop_caches=3
exit 0
For an aroma script you will prob have to stick the file in /system/etc/cron/cron.hourly, daily, weekly and just give peeps that choice, will be most simple way. Ps not a fan of aroma lol
Ok, I should have spotted this issue right away, but did not, so here goes. It seems the use of while loop in the script in the OP causes any scripts with a lower priority in init.d to never get ran, if the script in the OP is the only one in your init.d this does not matter, nor should it matter if you have at boot script with a higher priority (they get ran before the OPs script).
I run the ElementalX kernel which depends on a init.d to initialize some parameters for the kernel, with this script in init.d they never get initialized, in my case this resulted in some things not 'taking' such as the battery life extender, which on my device, is set to stop charging at 4100mv, however, since the while loop kept the ElementalX init.d from running, it kept charging to ~4300mv, this is how I noticed (actually none of my settings wrt ElementalX were being initialized, but this symptom was most pronounced).
A simple fix would be to move up the priority of the ElementalX init.d script, but this would have to be done after each flash, and frankly since I run Tasker anyway, I saw no need for this, what I did was remove the OPs script from init.d and simply made a very simple task in Tasker to run /system/xbin/trimdrop when display goes off, it could just as easily be a time event.
Anyways, hope that helps someone who may come across this with other kernels, or other at-boot scripts which depend on being ran before the OPs script.
Again, thanks to the OP for his work. Also, I added another sync just before the drop caches, since the state of dirtyness could change after the fstrims.
Hello my goal is to create a buckup/restore script that does the restore from a safe file on phone when some files are missing or damaged in some way .
So i need help to get it started
By my idea it should have already a prebuilt backup file from which it will restore missing files
So after flashing a zip or at boot it should always run and check if something is missing from specified location example system/etc/init.d
And when it finishes it should react if there are files that are missing or are damaged
For the files that miss that is simple but how to create a script that will check if the file is damaged
simple by checking it size
ok i know how this would work in theory but i dont know how to writte that kind of a script so please
help thank you i made a simple check files script here:
Code:
#!/system/bin/sh
clear
sleep 2
echo ""
echo "SPL ENGINE CORE is installed "
sleep 2
echo ""
echo "Checking for SPL ENGINE A.I. CORE ..."
sleep 1
if [ -e /system/spl_engine_1996 ]; then
echo ""
echo "SPL ENGINE CORE is installed..."
sleep 1
else
echo ""
echo "SPL ENGINE CORE binary was not found,please Re-flash SPL Transcender then try again!"
sleep 1
fi
but how to backup restore from backup folder if it is missing or damaged dont know please help me
this is an idea about a smart self repair script so dont abuse and help
latest code not working but an improvment i think
Code:
#!/system/bin/sh
clear
sleep 2
echo ""
echo "SPL ENGINE CORE is installed "
sleep 2
echo ""
echo "Checking for SPL ENGINE A.I. CORE ..."
sleep 1
if [ -e /system/spl_engine_1996 ]; then
echo ""
echo "SPL ENGINE CORE is installed..."
sleep 1
else
echo ""
echo "SPL ENGINE CORE binary was not found,please Re-flash SPL Transcender then try again!" then
cp ./system/data/secure/files/spl_engine_1996 ./system
sleep 1
fi
found the solution for the copying eror it gave its in this line
looks like this :
Code:
cp ./system/data/secure/files/spl_engine_1996 ./system
and it should look like this:
Code:
cp -rf ./system/data/secure/files/spl_engine_1996 ./system
Two more things left:
1.make it run at every boot or for at a specific time 3 days a week
2.make it check if files are damaged
theese two steps will make it like artificial inteligence
hi i made some changes but i keep running into erors
the script now looks like this
Code:
#!/system/bin/sh
clear
FILENAME=/system/spl_engine_1996
FILESIZE=$(stat -c%s "$FILENAME")
RIGHTFILESIZE=3821568
sleep 2
echo ""
echo "SPL ENGINE CORE is installed "
sleep 2
echo ""
echo "Checking for SPL ENGINE A.I. CORE ..."
sleep 1
if -d /system/spl_engine_1996 && [FILESIZE=$(stat -c%s "$FILENAME")];
if [ $FILESIZE == RIGHTFILESIZE ]; then
echo file is the right size $RIGHTFILESIZE
elsif
echo file is corrupt size is under $RIGHTFILESIZE kilobytes
fi
then
echo ""
echo "SPL ENGINE CORE is installed..."
sleep 1
else
echo ""
echo "SPL ENGINE CORE binary was not found,!"
cp -rf ./system/data/secure/files/spl_engine_1996 ./system
sleep 1
fi
i get two erors one is
HTML:
/system/bin/testres[31] [-d :not found
/system/bin/testres[31] [: RIGHTFILESIZE : unexpected operator/operand
Someone please help
Someone please help
Hi all,
You may or may not already be familiar with it, but there was a very nice script created by Joseph Miller to install new factory images (with or without locking the device). What I would like to do is to see how much of the script can be migrated to work with Pixel 4/4 XL.
Based on your experience with updating your 4/4 XL, do you see anything in the deuce script for the Pixel 2 that would need to be revised for use on a Pixel 4?
I'm certainly willing to test on my own device and any feedback would be appreciated. (I am relatively new to the Pixel 4 XL but very familiar with the Pixel 2 XL.)
.sh version is below:
Code:
#!/bin/sh
echo "Welcome to Deuces Flashing Script!"
echo "v5.0-Linux"
#to create a log, run: "script -c ./deuce-flash-all-v5.0.sh logfile.log"
echo "Checking if Fastboot binary is accessible.."
if [ -f "fastboot" ];
then
echo "\033[32m fastboot binary exists in script directory.\033[0m"
fb="./fastboot"
else
echo "\033[33mfastboot binary does not exist in script directory\033[0m" >&2
command -v fastboot | ( read fb; echo "\033[33mFound $fb. Will try to use this.\033[0m" )
fb="fastboot"
fi
echo "Checking if Fastboot works correctly"
if $fb --version
then
echo "\033[32m fastboot returned a version, continuing..\033[0m"
else
echo "\033[31m fastboot not working correctly.\033[0m"
exit 1
fi
echo "Checking if device is detected via Fastboot."
if [ -z $($fb devices -l) 2> /dev/null ]
then
echo "\033[31mDevice not detected in fastboot.\033[0m"
exit 1
else
echo "\033[32m Device detected!\033[0m"
fi
echo "Insuring unzip package is installed and accessible"
if unzip 1> /dev/null
then
echo "\033[32m unzip detected!\033[0m"
else
echo "\033[31m unzip is not installed, or is not working correctly!\033[0m"
echo "\033[33mplease install via:\033[0m"
echo "\033[33msudo apt install unzip\033[0m"
echo "\033[33mor\033[0m"
echo "\033[33msudo yum install unzip\033[0m"
exit 1
fi
zipcount="$(ls *.zip 2>/dev/null | wc -l)"
if [ "${zipcount}" -eq 1 ]
then
zipname="$(ls *.zip)"
echo ""
echo "\033[32mImage to flash: ${zipname}\033[0m"
elif [ "${zipcount}" -gt 1 ]
then
echo "\033[31m More than 1 zip!\033[0m"
echo "\033[31mPlease have only 1 zip file in the script folder.\033[0m"
zipnames="$(ls *.zip)"
echo "\033[33m${zipnames}\033[0m"
exit 1
else
echo "no zip files!"
exit 1
fi
echo -n "Are you SURE you want to continue? (y/N) "
read answer1
if echo "$answer1" | grep -iq "^y" ;then
echo "\033[33mThis Tool will reformat partitions in your device!\033[0m"
echo "\033[33mIt will attempt to keep your user data!\033[0m"
echo "\033[33mData could be lost! - Use At Your Own Risk!\033[0m"
echo -n "Continue? (y/N) "
read answer2
if echo "$answer2" | grep -iq "^y" ;then
echo "Checking if bootloader is unlocked."
echo "Look at device to confirm if script is waiting..."
$fb flashing unlock
echo "There will be errors if already unlocked, ignore."
else
echo "Aborting..."
exit 1
fi
else
echo "Aborting..."
exit 1
fi
echo "extracting the main image zip..."
unzip -j -o ${zipname} -d _work/
echo "setting active partition slot to A"
$fb --set-active=a
echo "flashing bootloader & radio..."
$fb flash bootloader _work/bootloader*.img
rm -rf _work/bootloader*.img
$fb reboot-bootloader
sleep 5
$fb flash radio _work/radio*.img
rm -rf _work/radio*.img
$fb reboot-bootloader
echo "extracting secondary image zip..."
zipname2="$(ls _work/*.zip)"
unzip -j -o ${zipname2} -d _work/
mkdir _work/_ 2>/dev/null
mv _work/*_other.img _work/_/ 2>/dev/null
echo "setting active partition slot to B"
$fb --set-active=b
bimgs="$(ls _work/_/*.img)"
for bimg in $bimgs
do
part=$(ls _work/_/*_other.img | cut -d "_" -f3 | cut -d "/" -f2)
echo $part
$fb flash $part $bimg
rm -rf $bimg
done
rm -rf _work/_
echo "setting active partition slot to A"
$fb --set-active=a
aimgs=$(ls _work/*.img)
for aimg in $aimgs
do
part=$(echo $aimg | cut -d "/" -f2 | cut -d "." -f1)
echo $part
$fb flash $part $aimg
rm -rf $aimg
done
echo -n "\033[33mDo you want to format user data? (y/N) \033[0m"
read answer3
if echo "$answer3" | grep -iq "^y" ;then
echo "\033[33m!!!This will wipe all your data!!!\033[0m"
echo -n "\033[31mAre you SURE? (y/N) \033[0m"
read answer4
if echo "$answer4" | grep -iq "^y" ;then
echo "Formatting user data.."
$fb format userdata 2>/dev/null
$fb reboot-recovery 2>/dev/null
echo "\033[32mDone!\033[0m"
else
echo "\033[36mSkipped formatting userdata.\033[0m"
echo "\033[32mDone!\033[0m"
exit
fi
else
echo "\033[36mSkipped formatting userdata.\033[0m"
echo "\033[32mDone!\033[0m"
exit
fi
exit
.bat version is here.
Note: I recommend placing the latest flashboot somewhere in your $PATH and running the script from within the unzipped factory image folder (where you have also unzipped the image zip).
Edit: Updated deuce script to v5.0 (thanks quorn23!)
Just a heads up, you're using an older version of the script, see original thread https://forum.xda-developers.com/pixel-2-xl/development/tool-deuces-bootloop-recovery-flashing-t3704761
I haven't tested it yet, but the 5.0 apparently works with A10 skimming through the last few pages in the thread. Once the Kernel is updated with the new sources (dez broke face unlock) i might have a look. What i probably would do is prepatch the boot image with magisk, besides that i would assume it's pretty straight forward, as it's AOSP.
Edit: as context, i'm coming from the pixel 2xl as well, i generally been using the Deuce script to update the 2 XL, if i recall correctly the only change i made was to adapt it to flash TWRP as well, which is currently not needed as not available for the 4 XL. (Devs wife is pregnant, so he's busy with more important personal life stuff currenty)
quorn23 said:
What i probably would do is prepatch the boot image with magisk, besides that i would assume it's pretty straight forward, as it's AOSP.
Click to expand...
Click to collapse
Out of habit, I've always re-added magisk manually, but you're right, this will require some additional dance steps without twrp. What i like about the original sh script is that the core dependency (for most scenarios) is a recent fastboot.