- THIS IS AN UPDATE TO THE POWER-MANAGEMENT.SH THAT WAS INCLUDED IN EVERY ROOTNEXUS RELEASE.
- THERE IS A BUG IN 0.13 THAT WILL TURN THE SCREEN OFF WHEN HEADPHONES ARE INSERTED
- PLEASE UPDATE YOUR /ETC/POWER-MANAGEMENT.SH WITH THIS FILE ... THANKS
- #!/bin/bash
- export DISPLAY=:0
- #################################
- #POWER MANAGEMENT INTERFACE FOR Z2
- # -JAGSPH 2010 VERSION 0.14
- # Warnings are off until they can be
- # Implemented better.
- # http://zipit.rootnexus.org/
- # with help from #zipit irc.freenode.net
- # rkdavis, mozzwald
- #########
- # Vars for LID
- #
- #AC POWERED SCREEN BRIGHTNESS
- SCRB=500
- #AC POWERED KEY BRIGHTNESS
- KEYB=0
- #BATTERY POWERED SCREEN BRIGHTNESS
- BTDISP=420
- #BATTERY POWERED KEY BRIGHTNESS
- BTKEY=0
- #LID CLOSED SCREEN BRIGHTNESS
- SCRBO=0
- #LID CLOSED KEY BRIGHTNESS
- KEYBO=0
- #POWER BUTTON COMMAND
- PWRBO="/home/user/.bin/shutdown-script"
- #PWRBO="echo Put shutdown command here"
- #Switched to another function without polling
- #How fast do we check the lid open/close status
- #LIDTIME=2
- ####################################
- #Vars for power management interface
- #
- # /proc/apm reads from 40 to 90
- # We will eventually access another interface
- # Until now this is how its done.
- #
- # Read status with numbers only
- # This is now done in the loop function
- # BATST="`cat /proc/apm | awk '{ print $7}'| awk -F "" '{print $1$2}'`"
- #
- #
- #Low Threshold (Shutdown in 2 minutes) 6% Left
- BATLT="46"
- #Warning Threshold <-- xmessage power warning
- BATWT="50"
- #High Threshold <-- This is a good charge level
- BATHT="80"
- #Fully Charged on AC <--- We are fully charged at 89-90
- FULLC="89"
- #How often do we check power status (seconds)
- POLL=30
- #How many seconds do we have until shutdown on VERY
- #Low power?
- SHUTTIME=120
- #Leave this alone
- #Warned?
- WARN=0
- WARNS=0
- function warning1 {
- if [ "$WARN" -eq "1" ]; then
- echo "Function warning1 Doing nothing"
- else
- xmessage -center "Power low; SHUTDOWN:$BATLT CUR:$BATST"
- WARN=1
- fi
- }
- function warning2 {
- if [ "$WARNS" -eq "1" ]; then
- echo "Function warning2 Doing nothing"
- else
- xmessage -center "Power low; Shutdown in 2 MIN; Save Work" &
- WARNS=1
- fi
- }
- function fullcharge {
- echo Fully Charged Function
- echo "#################################"
- if [ "$BATST" -lt "$FULLC" ]; then
- echo Charge is $BATST out of $FULLC
- else
- #echo $BATST greather than $FULLC
- echo "FC: Fully Chared $BATST OF $FULLC"
- fi
- }
- function batpower {
- #echo On battery power function
- #echo "#################################"
- #if [ "$BATST" -lt "$BATHT" ]; then
- #echo $BATST less than $BATHT
- #echo System Is Officially on battery power
- #else
- #echo $BATST greather than $BATHT
- #echo "System Is over the $BATHT Threshold"
- #echo "BAT: Charging over $BATST over $BATHT on AC Power"
- #echo "Even though it may not be"
- #echo "Since we cannot accurately calculate"
- #echo "BP: $BATST of $BATHT Threshold"
- #fi
- echo ""
- }
- function warn {
- echo Warning Function
- echo "#################################"
- if [ "$BATST" -lt "$BATWT" ]; then
- #echo $BATST less than $BATWT
- echo Warning
- echo System will shutdown at $BATLT
- echo System is at $BATST
- #warning1 &
- sleep 2
- WARN=1
- #xmessage -center "Power low; SHUTDOWN:$BATLT CUR:$BATST"
- else
- #echo $BATST greather than $BATWT
- echo "WARN: $BATST of $BATWT Threshold"
- fi
- echo ""
- }
- function low {
- echo Low Function
- echo "#################################"
- if [ "$BATST" -lt "$BATLT" ]; then
- echo $BATST less than $BATLT
- echo System shutdown in 120 Seconds
- echo Save your work
- #warning2 &
- sleep 5
- WARNS=1
- sleep $SHUTTIME ; op shutdown
- else
- echo "LOW: $BATST above $BATLT Shutdown Threshold"
- fi
- echo ""
- }
- #function lid {
- #while true ; do
- #LID="`cat /proc/irq/162/spurious | grep count | awk '{ print $2}'`"
- #echo $LID
- #
- #rem=$(( $LID % 2 ))
- #
- #if [ $rem -eq 0 ]
- #then
- # echo "$LID is even number"
- # echo "According to this we should turn on the display.. right?"
- #echo $SCRB > /sys/class/backlight/pwm-backlight.0/brightness
- #echo $KEYB > /sys/class/backlight/pwm-backlight.1/brightness
- #disppwr
- #else
- # echo "$LID is odd number"
- #echo "According to this we should turn off the display, right?"
- #echo 0 > /sys/class/backlight/pwm-backlight.1/brightness
- #echo 0 > /sys/class/backlight/pwm-backlight.0/brightness
- #fi
- #sleep $LIDTIME
- #done
- #}
- function poweredby {
- while true ; do
- POWERED=`cat /sys/devices/platform/z2-battery/power_supply/Z2/status`
- if [ "$POWERED" = "Charging" ]; then
- clear
- echo "We are on AC $POWERED. So we do nothing"
- echo $SCRB > /sys/class/backlight/pwm-backlight.0/brightness
- echo $KEYB > /sys/class/backlight/pwm-backlight.1/brightness
- else
- clear
- echo "We are not on AC $POWERED. So we are entering the battery-daemon."
- echo $BTDISP > /sys/class/backlight/pwm-backlight.0/brightness
- echo $BTKEY > /sys/class/backlight/pwm-backlight.1/brightness
- BATST="`cat /proc/apm | awk '{ print $7}'| awk -F "" '{print $1$2}'`"
- echo "System is reporting "$BATST"% from /proc/apm"
- low;
- #warn;
- batpower;
- fullcharge;
- sleep $POLL
- fi
- sleep $POLL
- done
- }
- function disppwr {
- POWERED=`cat /sys/devices/platform/z2-battery/power_supply/Z2/status`
- if [ "$POWERED" = "Charging" ]; then
- echo $SCRB > /sys/class/backlight/pwm-backlight.0/brightness
- echo $KEYB > /sys/class/backlight/pwm-backlight.1/brightness
- else
- echo $BTDISP > /sys/class/backlight/pwm-backlight.0/brightness
- echo $BTKEY > /sys/class/backlight/pwm-backlight.1/brightness
- fi
- }
- function loop {
- # This is where we keep the daemon running
- #
- while true ; do
- poweredby
- sleep $POLL
- done
- }
- function eventstatus {
- EVENT1=`dd if=/dev/input/event1 bs=16 count=1 2>/dev/null | od -x | grep -v 0000020`
- CODE=`echo $EVENT1 | awk '{ print $7 }'`
- VALUE=`echo $EVENT1 | awk '{ print $8 }'`
- echo "HEX=$EVENT1"
- echo "CODE=$CODE"
- echo "VALUE=$VALUE"
- }
- function code {
- if [ $CODE -eq 0074 ] ; then
- poweroff
- fi
- if [ $CODE -eq 0000 ] ; then
- lid
- fi
- if [ $CODE -eq 0002 ] ; then
- headphones
- fi
- }
- function lidloop {
- while true ; do
- eventstatus
- code
- done
- }
- function poweroff {
- if [ $VALUE -eq 0001 ] ; then
- echo "POWER BUTTON PRESSED"
- $PWRB0
- fi
- if [ $VALUE -eq 0000 ] ; then
- echo "POWER BUTTON RELEASED"
- fi
- }
- function lid {
- if [ $VALUE -eq 0000 ] ; then
- echo "Lid open: Turn on display"
- echo $SCRB > /sys/class/backlight/pwm-backlight.0/brightness
- echo $KEYB > /sys/class/backlight/pwm-backlight.1/brightness
- fi
- if [ $VALUE -eq 0001 ] ; then
- echo "Lid closed: Turn off display"
- echo $SCRBO > /sys/class/backlight/pwm-backlight.0/brightness
- echo $KEYBO > /sys/class/backlight/pwm-backlight.1/brightness
- fi
- }
- function headphones {
- if [ $VALUE -eq 0001 ] ; then
- echo "Inserted Heaphones"
- fi
- if [ $VALUE -eq 0000 ] ; then
- echo "Removed Headphones"
- fi
- }
- #Entry Point
- #############
- #
- #
- #
- lidloop & #FORK() THE LID AND POWER BUTTON DAEMON OUT
- sleep 1 #CHILLOUT
- loop; #ENTER POWER MANAGEMENT DAEMON LOOP