Editing User:Magick777/Opportunistic Power Saving
Warning: You are not logged in.
Your IP address will be recorded in this page's edit history.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
- | = | + | <source lang="text"> |
+ | #!/bin/sh | ||
- | + | # Test the current radio mode and abort if in 3G or dual mode already | |
+ | TEST=`dbus-send --system --type=method_call --print-reply --dest=com.nokia.phone.net /com/nokia/phone/net Phone.Net.get_selected_radio_access_technology | grep "byte [02]"` | ||
+ | if [ ! -z "$TEST" ] | ||
+ | then | ||
+ | echo "Phone is already in either 3G or dual mode, aborting." | ||
+ | exit 1 | ||
+ | fi | ||
- | == | + | # Test whether the phone is on a call, if it is then don't mess with it |
+ | TEST=`dbus-send --system --type=method_call --print-reply --dest=com.nokia.csd.Call /com/nokia/csd/call/1 com.nokia.csd.Call.Instance.GetStatus | grep "uint32 0"` | ||
+ | #if phone is on call, grep filters out any call status but 0/idle, so we get a zero length output | ||
+ | if [ -z "$TEST" ] | ||
+ | then | ||
+ | echo "Phone is making or receiving a call, aborting." | ||
+ | exit 1 | ||
+ | fi | ||
- | + | #Before we change the radio mode, check that we're not on WiFi | |
+ | TEST=`grep 1 /tmp/onwifi` | ||
- | + | if [ ! -z "$TEST" ] | |
+ | then | ||
+ | echo "Phone is connected via WiFi, no point autoswitching to dual mode." | ||
+ | exit 1 | ||
+ | fi | ||
- | |||
- | + | # Make the change to 3G | |
- | + | run-standalone.sh dbus-send --system --type=method_call --dest=com.nokia.phone.net /com/nokia/phone/net Phone.Net.set_selected_radio_access_technology byte:0 | |
- | + | </source> | |
- | == | + | ==/usr/bin/set2g== |
+ | <source lang="text"> | ||
+ | #!/bin/sh | ||
- | + | # This script is intended to be run indirectly from dbus-scripts and to be triggered on | |
- | + | # phone lock. It will then attempt to determine whether it makes sense to change the radio | |
- | + | # mode to GSM in order to save battery life. | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
+ | # Test the current radio mode and abort if we're in GSM mode already | ||
- | + | TEST=`dbus-send --system --type=method_call --print-reply --dest=com.nokia.phone.net /com/nokia/phone/net Phone.Net.get_selected_radio_access_technology | g$ | |
- | + | if [ ! -z "$TEST" ] | |
- | + | then | |
- | + | echo "Phone is already in 2G mode, aborting." | |
- | + | exit 1 | |
- | + | fi | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | = | + | # If we're on charge, we don't need to save battery so don't downgrade. |
+ | TEST=`grep 1 /tmp/oncharge` | ||
+ | if [ ! -z "$TEST" ] | ||
+ | then | ||
+ | # it's a non-zero value so we're on charge, abort gracefully | ||
+ | echo "Phone is on charge, no need to set 2G mode, aborting." | ||
+ | exit 1 | ||
+ | fi | ||
- | === | + | # Test whether the phone is on a call, if it is don't mess with it |
+ | TEST=`dbus-send --system --type=method_call --print-reply --dest=com.nokia.csd.Call /com/nokia/csd/call/1 com.nokia.csd.Call.Instance.GetStatus | grep "uint$ | ||
+ | #if phone is on call, grep filters out any call status but 0/idle, so we get a zero length output | ||
+ | if [ -z "$TEST" ] | ||
+ | then | ||
+ | echo "Phone is making or receiving a call, aborting." | ||
+ | exit 1 | ||
+ | fi | ||
+ | ## Adding a 30 cooling off period means that if the device gets unlocked again within 30 seconds, we can | ||
+ | ## kill this script whilst it's sleeping and leave 3G intact. | ||
- | + | echo "Scheduling switch to 2G in 30 seconds..." | |
+ | sleep 30 | ||
- | |||
- | + | # Make the actual change to 2G radio mode | |
- | + | run-standalone.sh dbus-send --system --type=method_call --dest=com.nokia.phone.net /com/nokia/phone/net Phone.Net.set_selected_radio_access_technology byte:1 | |
- | + | echo "Phone set to 2G mode." | |
- | + | exit 0 | |
- | + | ||
+ | </source> |
Learn more about Contributing to the wiki.