|
|
Line 1: |
Line 1: |
- | <source lang="text">
| + | * Maintain phone in GSM mode by default (when on battery) |
- | #!/bin/sh
| + | |
| | | |
- | # Test the current radio mode and abort if in 3G or dual mode already
| + | ** Switch to 2G mode opportunistically when all seems to be quiet |
- | 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]"`
| + | *** trigger by phone locked, but test the following |
- | if [ ! -z "$TEST" ]
| + | **** are we on charge? don't bother switching |
- | then
| + | **** are we on a call? don't break my 3G link |
- | echo "Phone is already in either 3G or dual mode, aborting."
| + | **** is 3G still required? work out how to decide |
- | exit 1
| + | ***** are we using an application that should block the downgrade? |
- | fi
| + | ***** analyse IP traffic flows or bytecounters? |
| + | ***** look for specific applications running |
| + | ***** allow one or two minutes cooling off period |
| | | |
- | # Test whether the phone is on a call, if it is then don't mess with it
| + | ** Switch to 3G when something requires 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"`
| + | *** don't change anything if we're on a voice call |
- | #if phone is on call, grep filters out any call status but 0/idle, so we get a zero length output
| + | *** don't bother if we're already on WiFi |
- | 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>
| + | |