Laptop-mode: shutdown problem

I have HP Elitebook 8540W.
When I enable the laptop-mode on this computer, I can't shutdown it anymore.
When I shutdown my PC, everything goes well until it reaches "Remounting root filesystem readonly":
Remounting root filesystem readonly
>POWER OFF
[137.532383] ata2.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[137.532529] ata2.00: cmd a0/00:00:00:08:00/00:00:00:00:00/a0 tag 0 pio 16392
[137.532531] res 40/00:02:00:00:02/00:00:00:00:00/00 Emask 0x4 (timeout)
[137.532813] ata2.00: status: {DRDY}
[142.849448] ata2.00: revalidation failed (errno=-5)
After this I have to shutdown my PC manually by pressing the power button for 5 seconds.
The ata2 in the logging above points to my BD-ROM drive (BC-5501H).
When I disable laptop-mode in rc.conf, the problem is gone.
Are there any "powersave options" I can disable for my BD-ROM somewhere in laptop-mode ?

As I understood my problem was caused by Wake-on-LAN function. You can disable it in BIOS if you don't need it.
Also if you don't realy need ethernet connection you can remove eth0 from ethernet interface in wicd options, so wicd won't touch it anymore.
These solutions worked for me as well as one mentioned above, but now I just removed laptop-mode and using pm-utils powersave script. More information on
https://bbs.archlinux.org/viewtopic.php?id=134109
http://crunchbanglinux.org/forums/topic/11954
Battery life is now much longer than with laptop-mode and I didn't encounter shutdown problems yet.

Similar Messages

  • Laptop mode tools problem with kernel 3.0

    today I just updated the system and my laptop runs dramatically hotter after that. I read the archwiki, it does talk about the laptop mode tools problem with kernel 3.0 but when I opened the file /usr/sbin/laptop_mode, the lines which the wiki mentions are not there. Does anyone here have the same problem and can you offer the solution?
    Here is my /usr/sbin/laptop_mode
    #! /bin/sh
    # Script to start or stop laptop_mode, and to control various settings of the
    # kernel, hardware etc. that influence power consumption.
    # This script is a part of Laptop Mode Tools. If you are running a supported
    # power management daemon, this script will be automatically called on power
    # state change.
    # Configure laptop mode tools in /etc/laptop-mode/laptop-mode.conf, and in
    # the broken-out config files in /etc/laptop-mode/conf.d.
    # Please consult the manual pages laptop-mode.conf(8) and laptop_mode(8) for
    # additional information.
    # Maintainer: Ritesh Raj Sarraf ([email protected])
    # Original Author: Bart Samwel ([email protected])
    # Project home page: http://samwel.tk/laptop_mode
    # Contributors to this script: Bart Samwel
    # Kiko Piris
    # Micha Feigin
    # Andrew Morton
    # Herve Eychenne
    # Dax Kelson
    # Jan Polacek
    # ... and many others that I've stopped
    # keeping track of.
    # Based on a script for Linux 2.4 written by Jens Axboe.
    set -a
    # The laptop mode tools version number. Extracted by the installer makefile
    # as well, so don't change the format!
    LMTVERSION=1.59
    # This script is loaded from multiple scripts to set the config defaults
    # and to read the configuration on top of those. Only when the command is
    # recognized does this script do anything else.
    VERBOSE_OUTPUT=0
    ENABLE_LAPTOP_MODE_ON_BATTERY=1
    ENABLE_LAPTOP_MODE_ON_AC=0
    ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED=0
    PARTITIONS="auto /dev/mapper/*"
    LM_BATT_MAX_LOST_WORK_SECONDS=600
    LM_AC_MAX_LOST_WORK_SECONDS=360
    DEF_MAX_AGE=30
    LM_READAHEAD=3072
    NOLM_READAHEAD=128
    CONTROL_READAHEAD=1
    CONTROL_NOATIME=0
    USE_RELATIME=1
    CONTROL_HD_IDLE_TIMEOUT=1
    LM_AC_HD_IDLE_TIMEOUT=4 # 20 seconds
    LM_BATT_HD_IDLE_TIMEOUT=4 # 20 seconds
    NOLM_HD_IDLE_TIMEOUT=244 # 2 hours
    DEF_UPDATE=5
    DEF_XFS_AGE_BUFFER=15
    DEF_XFS_SYNC_INTERVAL=30
    DEF_XFS_BUFD_INTERVAL=1
    XFS_HZ=100
    CONTROL_MOUNT_OPTIONS=1
    BATT_HD_POWERMGMT=1
    LM_AC_HD_POWERMGMT=254
    NOLM_AC_HD_POWERMGMT=254
    CONTROL_HD_POWERMGMT=0
    CONTROL_HD_WRITECACHE=0
    NOLM_AC_HD_WRITECACHE=1
    NOLM_BATT_HD_WRITECACHE=0
    LM_HD_WRITECACHE=0
    LM_DIRTY_RATIO=60
    LM_DIRTY_BACKGROUND_RATIO=1
    NOLM_DIRTY_BACKGROUND_RATIO=10
    NOLM_DIRTY_RATIO=40
    LM_SECONDS_BEFORE_SYNC=2
    BATT_CPU_MAXFREQ=medium
    BATT_CPU_MINFREQ=slowest
    BATT_CPU_GOVERNOR=ondemand
    BATT_CPU_IGNORE_NICE_LOAD=1
    LM_AC_CPU_MAXFREQ=fastest
    LM_AC_CPU_MINFREQ=slowest
    LM_AC_CPU_GOVERNOR=ondemand
    LM_AC_CPU_IGNORE_NICE_LOAD=1
    NOLM_AC_CPU_MAXFREQ=fastest
    NOLM_AC_CPU_MINFREQ=slowest
    NOLM_AC_CPU_GOVERNOR=ondemand
    NOLM_AC_CPU_IGNORE_NICE_LOAD=0
    CONTROL_CPU_FREQUENCY=0
    HD="/dev/[hs]d[abcdefgh]"
    CONTROL_SYSLOG_CONF=0
    LM_AC_SYSLOG_CONF=/etc/syslog-on-ac-with-lm.conf
    NOLM_AC_SYSLOG_CONF=/etc/syslog-on-ac-without-lm.conf
    BATT_SYSLOG_CONF=/etc/syslog-on-battery.conf
    SYSLOG_CONF_SIGNAL_PROGRAM=syslogd
    SYSLOG_CONF=/etc/syslog.conf
    CONTROL_DPMS_STANDBY=0
    BATT_DPMS_STANDBY=300
    LM_AC_DPMS_STANDBY=1200
    NOLM_AC_DPMS_STANDBY=1200
    CONTROL_CPU_THROTTLING=0
    BATT_CPU_THROTTLING=medium
    LM_AC_CPU_THROTTLING=minimum
    NOLM_AC_CPU_THROTTLING=minimum
    CONTROL_START_STOP=1
    CONTROL_TERMINAL=0
    TERMINALS="/dev/vc/1 /dev/vcs1"
    BATT_TERMINAL_BLANK_MINUTES=1
    BATT_TERMINAL_POWERDOWN_MINUTES=2
    LM_AC_TERMINAL_BLANK_MINUTES=10
    LM_AC_TERMINAL_POWERDOWN_MINUTES=10
    NOLM_AC_TERMINAL_BLANK_MINUTES=10
    NOLM_AC_TERMINAL_POWERDOWN_MINUTES=50
    ENABLE_AUTO_HIBERNATION=0
    HIBERNATE_COMMAND=/usr/sbin/hibernate
    AUTO_HIBERNATION_ON_CRITICAL_BATTERY_LEVEL=1
    DISABLE_LAPTOP_MODE_ON_CRITICAL_BATTERY_LEVEL=1
    AUTO_HIBERNATION_BATTERY_CHARGE_MAH=0
    AUTO_HIBERNATION_BATTERY_CHARGE_MWH=0
    MINIMUM_BATTERY_CHARGE_MAH=0
    MINIMUM_BATTERY_CHARGE_MWH=0
    ASSUME_SCSI_IS_SATA=1
    CONTROL_BRIGHTNESS=0
    BATT_BRIGHTNESS_COMMAND=false
    LM_AC_BRIGHTNESS_COMMAND=false
    NOLM_AC_BRIGHTNESS_COMMAND=false
    LOG_TO_SYSLOG=1
    DEBUG=0
    ENABLE_LAPTOP_MODE_TOOLS=1
    # Initialize the PATH Variable
    export PATH="${PATH}":/bin:/sbin:/usr/bin:/usr/sbin
    # This is a 2 phase locking approach. LMT_REQ_LOCK is the outer lock and LMT_INVOC_LOCK is the inner lock
    # We take this approach to ensure the scenario that, "At any point when an event occurs (AC/BATT), the
    # kernel can generate multiple events spanning over a couple of events. The first event is honored and
    # lmt executes. If the last event triggered at the 9th second, there is a fair chance that a good amount
    # of state change would have occured in the OS, to honor that state, we keep an outer lock (LMT_REQ_LOCK)
    # handy, so that those changes can also be applied and not forgotten.
    # Workflow:
    # Event-1 is generated and lmt executes (lmt runtime could span 5-10 seconds)
    # At seventh second, 4 events generate. But Event-1 is still running.
    # We don't want to discard all the remaining 4 events, but at least honor 1 so that we can act to the changes
    # that occured in the last 7 seconds.
    # So, Event-2 acquire LMT_REQ_LOCK and waits to acquire LMT_INVOC_LOCK (which is acquire by Event-1)
    LMT_REQ_LOCK="/var/lock/lmt-req.lock"
    LMT_INVOC_LOCK="/var/lock/lmt-invoc.lock"
    FLOCK=`which flock`
    checkint ()
    # $1 arg should be the string/integer
    # that you want to check for as an integer.
    echo $1 | grep "[^0-9]" > /dev/null 2>&1
    return $?;
    # Returns 1 if it is an integer
    # Function to handle logging
    LOGGER=`which logger`;
    log ()
    # $1 should be msg type
    # $2 should be the real msg
    if [ x$LOG_TO_SYSLOG = x1 ]; then
    # NOTE: Add the check on $2 being empty, once you are confident
    # that there aren't any bugs in logging. And no bugs in executing
    # modules and logging
    if [ -x $LOGGER -a "$1" != "STATUS" ]; then
    #if [ -z $2 ]; then
    # continue
    #elif [ "$1" = "MSG" ]; then
    if [ "$1" = "MSG" ]; then
    logger -p daemon.info -t laptop-mode "$2";
    elif [ "$1" = "ERR" ]; then
    logger -p daemon.err -t laptop-mode "$2";
    elif [ "$1" = "VERBOSE" ]; then
    if [ x$VERBOSE_OUTPUT = x1 ]; then
    logger -p daemon.debug -t laptop-mode "$2";
    fi
    else
    logger -p daemon.notice -t laptop-mode "$2";
    fi
    fi
    fi
    if [ "$1" = "VERBOSE" ]; then
    $LM_VERBOSE && echo "$2" >/dev/fd/2;
    elif [ "$1" = "ERR" ]; then
    echo "$2" >/dev/fd/2;
    else
    # Message of type MSG and STATUS can go to stdout.
    echo "$2" >/dev/fd/1;
    fi
    enableDebug ()
    # Check if debug is enabled
    if [ x$(($(basename $1 | cut -d . -f1 | tr "[:lower:]" "[:upper:]" | sed 's/-/_/g')_DEBUG)) = x1 ]; then
    set -vx
    fi
    disableDebug ()
    # Check if debug is enabled
    if [ x$(($(basename $1 | cut -d . -f1 | tr "[:lower:]" "[:upper:]" | sed 's/-/_/g')_DEBUG)) = x1 ]; then
    set +vx
    fi
    # No default on these ones -- we need to detect if they have been set, for
    # backward compatibility with MINIMUM_BATTERY_MINUTES etc.
    AUTO_HIBERNATION_BATTERY_CHARGE_PERCENT=
    MINIMUM_BATTERY_CHARGE_PERCENT=
    # Backward compatibility variable that is sometimes
    # set externally (Debian init system)
    unset VERBOSE
    lmt_load_config ()
    # Source config. Some config settings have been moved from the main config file
    # to modular configuration files, and to support existing laptop-mode.conf
    # files from earlier versions, we source the modular configuration files FIRST.
    if [ -d /etc/laptop-mode/conf.d ] ; then
    for CONF in /etc/laptop-mode/conf.d/*.conf ; do
    if [ -r "$CONF" ] ; then
    . "$CONF"
    #Handle individual module debug settings
    if [ "$DEBUG" -eq 1 ]; then
    export $(basename $CONF | cut -d . -f1 | tr "[:lower:]" "[:upper:]" | sed 's/-/_/g')_DEBUG=1
    log "VERBOSE" "Enabling debug mode for module $CONF"
    fi
    DEBUG=0
    else
    log "MSG" "Warning: Configuration file $CONF is not readable, skipping."
    fi
    done
    fi
    if [ -r /etc/laptop-mode/laptop-mode.conf ] ; then
    . /etc/laptop-mode/laptop-mode.conf
    else
    log "ERR" "$0: Configuration file /etc/laptop-mode/laptop-mode.conf not present or not readable."
    exit 1
    fi
    if [ x$ENABLE_LAPTOP_MODE_TOOLS = x0 ]; then
    log "MSG" "laptop-mode-tools is disabled in config file. Exiting"
    exit 0;
    fi
    # Add a simple bash debug mode switch
    if [ "$DEBUG" -eq 1 ]; then
    set -vx;
    fi
    # Support for old config settings
    if [ "$AC_HD" != "" ] ; then
    AC_HD_WITHOUT_LM="$AC_HD"
    AC_HD_WITH_LM="$AC_HD"
    fi
    if [ "$VERBOSE" != "" ] ; then
    VERBOSE_OUTPUT="$VERBOSE"
    fi
    if [ "$CPU_MAXFREQ" != "" ] ; then
    BATT_CPU_MAXFREQ="$CPU_MAXFREQ"
    fi
    if [ "$MAX_AGE" != "" ] ; then
    LM_BATT_MAX_LOST_WORK_SECONDS="$MAX_AGE"
    LM_AC_MAX_LOST_WORK_SECONDS="$MAX_AGE"
    fi
    if [ "$DEF_AGE" != "" ] ; then
    DEF_MAX_AGE="$DEF_AGE"
    fi
    if [ "$LAPTOP_MODE_ALWAYS_ON" != "" ] ; then
    ENABLE_LAPTOP_MODE_ALWAYS="$LAPTOP_MODE_ALWAYS_ON"
    fi
    if [ "$LM_WHEN_LID_CLOSED" != "" ] ; then
    ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED="$LM_WHEN_LID_CLOSED"
    fi
    if [ "$REMOUNT_PARTITIONS" != "" ] ; then
    PARTITIONS="$REMOUNT_PARTITIONS"
    fi
    if [ "$READAHEAD" != "" ] ; then
    LM_READAHEAD="$READAHEAD"
    fi
    if [ "$DO_REMOUNT_NOATIME" != "" ] ; then
    CONTROL_NOATIME="$DO_REMOUNT_NOATIME"
    fi
    if [ "$DO_HD" != "" ] ; then
    CONTROL_HD_IDLE_TIMEOUT="$DO_HD"
    fi
    if [ "$AC_HD_WITH_LM" != "" ] ; then
    LM_AC_HD_IDLE_TIMEOUT="$AC_HD_WITH_LM"
    fi
    if [ "$AC_HD_WITHOUT_LM" != "" ] ; then
    NOLM_HD_IDLE_TIMEOUT="$AC_HD_WITHOUT_LM"
    fi
    if [ "$BATT_HD" != "" ] ; then
    LM_BATT_HD_IDLE_TIMEOUT="$BATT_HD"
    fi
    if [ "$DO_REMOUNTS" != "" ] ; then
    CONTROL_MOUNT_OPTIONS="$DO_REMOUNTS"
    fi
    if [ "$DO_HD_POWERMGMT" != "" ] ; then
    CONTROL_HD_POWERMGMT="$DO_HD_POWERMGMT"
    fi
    if [ "$AC_HDPARM_POWERMGMT_WITH_LM" != "" ] ; then
    LM_AC_HD_POWERMGMT="$AC_HDPARM_POWERMGMT_WITH_LM"
    fi
    if [ "$AC_HDPARM_POWERMGMT_WITHOUT_LM" != "" ] ; then
    NOLM_AC_HD_POWERMGMT="$AC_HDPARM_POWERMGMT_WITHOUT_LM"
    fi
    if [ "$BATT_HDPARM_POWERMGMT" != "" ] ; then
    BATT_HD_POWERMGMT="$BATT_HDPARM_POWERMGMT"
    fi
    if [ "$DO_WRITECACHE" != "" ] ; then
    CONTROL_HD_WRITECACHE="$DO_WRITECACHE"
    fi
    if [ "$AC_WRITECACHE_WITHOUT_LM" != "" ] ; then
    NOLM_AC_HD_WRITECACHE="$AC_WRITECACHE_WITHOUT_LM"
    fi
    if [ "$BATT_WRITECACHE" != "" ] ; then
    LM_HD_WRITECACHE="$BATT_WRITECACHE"
    fi
    if [ "$DIRTY_RATIO" != "" ]; then
    LM_DIRTY_RATIO="$DIRTY_RATIO"
    fi
    if [ "$DIRTY_BACKGROUND_RATIO" != "" ] ; then
    LM_DIRTY_BACKGROUND_RATIO="$DIRTY_BACKGROUND_RATIO"
    fi
    if [ "$DEF_DIRTY_RATIO" != "" ]; then
    NOLM_DIRTY_RATIO="$DEF_DIRTY_RATIO"
    fi
    if [ "$DEF_DIRTY_BACKGROUND_RATIO" != "" ] ; then
    NOLM_DIRTY_BACKGROUND_RATIO="$DEF_DIRTY_BACKGROUND_RATIO"
    fi
    if [ "$DO_CPU" != "" ] ; then
    CONTROL_CPU_FREQUENCY="$DO_CPU"
    fi
    if [ "$CONTROL_CPU_MAXFREQ" != "" ] ; then
    CONTROL_CPU_FREQUENCY="$CONTROL_CPU_MAXFREQ"
    fi
    if [ "$AC_CPU_MAXFREQ_WITH_LM" != "" ] ; then
    LM_AC_CPU_MAXFREQ="$AC_CPU_MAXFREQ_WITH_LM"
    fi
    if [ "$AC_CPU_MAXFREQ_WITHOUT_LM" != "" ] ; then
    NOLM_AC_CPU_MAXFREQ="$AC_CPU_MAXFREQ_WITHOUT_LM"
    fi
    if [ "$DO_SYSLOG" != "" ] ; then
    CONTROL_SYSLOG_CONF="$DO_SYSLOG"
    fi
    if [ "$SYSLOG_SIGNAL_PROGRAM" != "" ] ;then
    SYSLOG_CONF_SIGNAL_PROGRAM="$SYSLOG_SIGNAL_PROGRAM"
    fi
    if [ "$AC_SYSLOG_WITH_LM" != "" ] ; then
    LM_AC_SYSLOG_CONF="$AC_SYSLOG_WITH_LM"
    fi
    if [ "$AC_SYSLOG_WITHOUT_LM" != "" ] ; then
    NOLM_AC_SYSLOG_CONF="$AC_SYSLOG_WITHOUT_LM"
    fi
    if [ "$BATT_SYSLOG" != "" ] ; then
    BATT_SYSLOG_CONF="$BATT_SYSLOG"
    fi
    if [ "$ENABLE_LAPTOP_MODE_ALWAYS" != "" ] ; then
    ENABLE_LAPTOP_MODE_ON_AC="$ENABLE_LAPTOP_MODE_ALWAYS"
    fi
    if [ "$MINIMUM_BATTERY_MINUTES" != "" -a "$MINIMUM_BATTERY_CHARGE_PERCENT" = "" ] ; then
    # Use a very conservative estimate (1% = 1 battery minute, 100 minutes in a battery)
    # for backward compatibility.
    MINIMUM_BATTERY_CHARGE_PERCENT="$MINIMUM_BATTERY_MINUTES"
    fi
    if [ -z "$MINIMUM_BATTERY_CHARGE_PERCENT" ] ; then
    # Apply the default, now that we've determined that this is the minimum.
    MINIMUM_BATTERY_CHARGE_PERCENT=3
    fi
    if [ "$AUTO_HIBERNATION_BATTERY_MINUTES" != "" -a "$AUTO_HIBERNATION_BATTERY_CHARGE_PERCENT" = "" ] ; then
    # Use a very conservative estimate (1% = 1 battery minute, 100 minutes in a battery)
    # for backward compatibility.
    AUTO_HIBERNATION_BATTERY_CHARGE_PERCENT="$AUTO_HIBERNATION_BATTERY_MINUTES"
    fi
    if [ -z "$AUTO_HIBERNATION_BATTERY_CHARGE_PERCENT" ] ; then
    # Apply the default, now that we've determined that this is the minimum.
    AUTO_HIBERNATION_BATTERY_CHARGE_PERCENT=2
    fi
    # Postprocessing
    if [ "$VERBOSE_OUTPUT" -ne 0 ] ; then
    OUTPUT="/dev/stdout"
    LM_VERBOSE="[ 1 = 1 ]"
    else
    OUTPUT="/dev/null"
    LM_VERBOSE="[ 1 = 0 ]"
    fi
    if [ "$PARTITIONS" = "" ] ; then
    PARTITIONS="auto /dev/mapper/*"
    fi
    # Expand shell wild cards immediately.
    PARTITIONS=$( echo $PARTITIONS )
    TERMINALS=$( echo $TERMINALS )
    # Convert seconds to hdparm -S format
    # Everything over 20 minutes is interpreted as 2 hours.
    seconds_to_hdparm_S() {
    if [ "$1" -eq 0 ] ; then
    # disable.
    echo 0
    elif [ "$1" -gt 0 -a "$1" -lt 5 ] ; then
    # 5 seconds minimum
    echo 1
    elif [ "$1" -le $((240*5)) ] ; then
    # Values between 1 and 240 signify increments of 5 seconds
    echo $(($1 / 5))
    elif [ "$1" -lt $((30*60)) ] ; then
    # Values between 20 and 30 minutes are rounded up to 30 minutes.
    echo 241
    elif [ "$1" -lt $((12*30*60)) ] ; then
    # Values between 30 minutes and 6 hours (exclusive) yield values between
    # 241 and 251, in 30-minute increments.
    echo $(( 240 + ($1 / (30*60)) ))
    else
    # Larger values effectively indicate no timeout at all.
    echo 0
    fi
    # Convert configured idle timeouts to hdparm -S format.
    if [ "$LM_AC_HD_IDLE_TIMEOUT_SECONDS" != "" ] ; then
    LM_AC_HD_IDLE_TIMEOUT=$(seconds_to_hdparm_S $LM_AC_HD_IDLE_TIMEOUT_SECONDS)
    fi
    if [ "$LM_BATT_HD_IDLE_TIMEOUT_SECONDS" != "" ] ; then
    LM_BATT_HD_IDLE_TIMEOUT=$(seconds_to_hdparm_S $LM_BATT_HD_IDLE_TIMEOUT_SECONDS)
    fi
    if [ "$NOLM_HD_IDLE_TIMEOUT_SECONDS" != "" ] ; then
    NOLM_HD_IDLE_TIMEOUT=$(seconds_to_hdparm_S $NOLM_HD_IDLE_TIMEOUT_SECONDS)
    fi
    # The main workhorse.
    lmt_main_function ()
    if [ "$1" = "status" ] ; then
    # Display a status report.
    log "STATUS" "Mounts:"
    mount | sed "s/^/ /"
    log "STATUS" " "
    log "STATUS" "Drive power status:"
    for disk in $HD; do
    if [ -r $disk ]; then
    hdparm -C $disk 2>/dev/null | sed "s/^/ /"
    else
    log "STATUS" " Cannot read $disk, permission denied - $0 needs to be run as root"
    fi
    done
    log "STATUS" " "
    log "STATUS" "(NOTE: drive settings affected by Laptop Mode cannot be retrieved.)"
    log "STATUS" " "
    log "STATUS" "Readahead states:"
    cat /etc/mtab | while read DEV MP FST OPTS DUMP PASS ; do
    # skip funny stuff
    case "$FST" in
    rootfs|unionfs|tmpfs|squashfs|sysfs|usbfs|proc|devpts) continue
    esac
    if [ -b $DEV ] ; then
    if [ -r $DEV ] ; then
    log "STATUS" " $DEV: $((`blockdev --getra $DEV` / 2)) kB"
    else
    log "STATUS" " Cannot read $DEV, permission denied - $0 needs to be run as root"
    fi
    fi
    done
    log "STATUS" " "
    if [ -e /var/run/laptop-mode-tools/enabled ] ; then
    log "STATUS" "Laptop Mode Tools is allowed to run: /var/run/laptop-mode-tools/enabled exists."
    else
    log "STATUS" "Laptop Mode Tools is NOT allowed to run: /var/run/laptop-mode-tools/enabled does not exist."
    fi
    log "STATUS" " "
    STATFILES="/proc/sys/vm/laptop_mode /proc/apm /proc/pmu/info /proc/sys/vm/bdflush /proc/sys/vm/dirty_ratio /proc/sys/fs/xfs/age_buffer /proc/sys/fs/xfs/sync_interval /proc/sys/fs/xfs/lm_age_buffer /proc/sys/fs/xfs/lm_sync_interval /proc/sys/vm/pagebuf/lm_flush_age /proc/sys/fs/xfs/xfsbufd_centisecs /proc/sys/fs/xfs/xfssyncd_centisecs /proc/sys/vm/dirty_background_ratio /proc/sys/vm/dirty_expire_centisecs /proc/sys/fs/xfs/age_buffer/centisecs /proc/sys/vm/dirty_writeback_centisecs /sys/devices/system/cpu/*/cpufreq/cpuinfo_*_freq /sys/devices/system/cpu/*/cpufreq/scaling_governor /proc/acpi/button/lid/*/state /proc/acpi/ac_adapter/*/state /proc/acpi/battery/*/state /sys/class/power_supply/*/online /sys/class/power_supply/*/state"
    for THISFILE in $STATFILES ; do
    if [ -e "$THISFILE" ] ; then
    log "STATUS" "$THISFILE:"
    if [ -r "$THISFILE" ] ; then
    cat "$THISFILE" | sed "s/^/ /"
    else
    log "STATUS" " Not accessible, permission denied - $0 needs to be run as root."
    fi
    log "STATUS" " "
    fi
    done
    elif [ "$1" != "readconfig" -a "$1" != "defaults" ] ; then
    KLEVEL="$(uname -r |
    IFS='.-' read a b c
    echo $a.$b
    KMINOR="$(uname -r |
    IFS='.-' read a b c d
    # Strip any stuff from the end -- only the initial digits are part of the KMINOR.
    echo $c | sed -e 's/\([[:digit:]]*\).*/\1/'
    # Stop exporting everything -- what we do from here is private.
    set +a
    if [ "$1" = "--version" ] ; then
    log "MSG" "Laptop Mode Tools $LMTVERSION"
    exit 0
    fi
    if [ ! -e /proc/sys/vm/laptop_mode ] ; then
    log "ERR" "Kernel does not have support for laptop mode. Please apply the laptop mode"
    log "ERR" "patch or install a newer kernel."
    exit 1
    fi
    if [ ! -w /proc/sys/vm/laptop_mode ] ; then
    log "ERR" "You do not have enough privileges to enable laptop_mode."
    exit 1
    fi
    INIT=0 # Display info in init script format?
    FORCE=0 # Force reapplying the current state?
    while [ "$1" != "" ] ; do
    case "$1" in
    init) INIT=1 ;;
    force) FORCE=1 ;;
    # Old options. We always do "auto" for any option now, but
    # we still have to accept the options.
    start) ;;
    stop) ;;
    auto) ;;
    modules=*)
    MODULES=$1
    MODULES=${MODULES#"modules="}
    devices=*)
    DEVICES=$1
    DEVICES=${DEVICES#"devices="}
    *) log "ERR" "Unrecognized option $1."
    exit 1 ;;
    esac
    shift
    done
    mkdir -p /var/run/laptop-mode-tools
    # Used to display laptop mode state later on. This is the enabled/disabled
    # state for laptop mode processing, it tells us nothing about whether laptop
    # mode is actually _active_.
    STATE=enabled
    if [ "$ENABLE_LAPTOP_MODE_ON_BATTERY" -eq 0 -a "$ENABLE_LAPTOP_MODE_ON_AC" -eq 0 -a "$ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED" -eq 0 ] ; then
    STATE=disabled
    fi
    # Determine the power state.
    # First try /sys/class/power_supply/*
    FOUND_SYS_CLASS_POWER_SUPPLY_AC=0
    ON_AC=0
    for POWER_SUPPLY in /sys/class/power_supply/* ; do
    if [ -f $POWER_SUPPLY/type ] ; then
    if [ "$(cat $POWER_SUPPLY/type)" = "Mains" ] ;then
    log "VERBOSE" "Determining power state from $POWER_SUPPLY/online."
    FOUND_SYS_CLASS_POWER_SUPPLY_AC=1
    if [ "$(cat $POWER_SUPPLY/online)" = 1 ] ; then
    ON_AC=1
    fi
    fi
    fi
    done
    if [ $FOUND_SYS_CLASS_POWER_SUPPLY_AC = 1 ] ; then
    # Already found it!
    log "VERBOSE" "Not trying other options, already found a power supply."
    elif [ -d /proc/acpi/ac_adapter ] ; then
    log "VERBOSE" "Determining power state from /proc/acpi/ac_adapter."
    ADAPTERS_FOUND=0
    ON_AC=0
    for ADAPTER in /proc/acpi/ac_adapter/* ; do
    if [ -f $ADAPTER/state ] ; then
    ADAPTERS_FOUND=1
    STATUS=`awk '/^state: / { print $2 }' $ADAPTER/state`
    if [ "$STATUS" = "on-line" ] ; then
    ON_AC=1
    fi
    fi
    done
    if [ "$ADAPTERS_FOUND" -eq 0 ] ; then
    ON_AC=1
    fi
    elif [ -f /proc/pmu/info ] ; then
    log "VERBOSE" "Determining power state from /proc/pmu/info."
    if ( grep -q "^AC Power.*0$" /proc/pmu/info ) ; then
    log "VERBOSE" "/proc/pmu/info indicates absence of AC power."
    ON_AC=0
    else
    # It is possible that there is no AC Power = 1 in the file,
    # but we always assume AC power when we're not sure.
    ON_AC=1
    log "VERBOSE" "/proc/pmu/info indicates presence of AC power."
    fi
    elif [ -f /proc/apm ] ; then
    log "VERBOSE" "Determining power state from /proc/apm."
    read D1 D2 D3 APM_AC_STATE D0 </proc/apm
    if [ "$APM_AC_STATE" = "0x00" ] ; then
    ON_AC=0
    else
    ON_AC=1
    fi
    else
    log "VERBOSE" "No /sys/class/power_supply, ACPI, APM or PMU power management information found -- assuming AC power is present."
    ON_AC=1
    fi
    # Determine whether to activate or deactivate laptop mode.
    ACTIVATE=0
    if [ "$ON_AC" -eq 1 ] ; then
    if [ "$ENABLE_LAPTOP_MODE_ON_AC" -ne 0 ] ; then
    log "VERBOSE" "On AC power: Activating, because ENABLE_LAPTOP_MODE_ON_AC is set."
    ACTIVATE=1
    else
    log "VERBOSE" "On AC power: Deactivating, because ENABLE_LAPTOP_MODE_ON_AC is not set."
    ACTIVATE=0
    fi
    else
    if [ "$ENABLE_LAPTOP_MODE_ON_BATTERY" -ne 0 ] ; then
    log "VERBOSE" "On battery power: Activating, because ENABLE_LAPTOP_MODE_ON_BATTERY is set."
    ACTIVATE=1
    else
    log "VERBOSE" "On battery power: Deactivating, because ENABLE_LAPTOP_MODE_ON_BATTERY is not set."
    ACTIVATE=0
    fi
    fi
    if [ "$ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED" -ne 0 -a "$ACTIVATE" -eq 0 ] ; then
    if [ -x "`which hal-find-by-property`" ] ; then
    HAL_LID_BUTTON=$(hal-find-by-property --key "button.type" --string "lid")
    fi
    if [ "$HAL_LID_BUTTON" != "" ] ; then
    HAL_LID_BUTTON_STATE=$(hal-get-property --udi $(hal-find-by-property --key "button.type" --string "lid") --key "button.state.value")
    if [ "$HAL_LID_BUTTON_STATE" = "true" ] ; then
    log "VERBOSE" "Setting action to \"start\" because the lid is closed (says HAL)."
    ACTIVATE=1
    fi
    elif [ -f /proc/acpi/button/lid/*/state ] ; then
    if ( grep -q "closed" /proc/acpi/button/lid/*/state ) ; then
    log "VERBOSE" 'Setting action to "start" because the lid is closed (says /proc/acpi/button/lid/*/state).'
    ACTIVATE=1
    fi
    else
    log "MSG" "Warning: ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED is set, but there is no file"
    log "MSG" "/proc/acpi/button/lid/.../state, and hal information is not available either!"
    fi
    fi
    # If the init script has not been run or has been run with the "stop"
    # argument, then we should never start laptop mode.
    if [ ! -f /var/run/laptop-mode-tools/enabled ] ; then
    log "VERBOSE" "Laptop mode disabled because /var/run/laptop-mode-tools/enabled is missing."
    STATE=disabled
    fi
    if [ "$ACTIVATE" -eq 1 -a -f /etc/default/laptop-mode ] ; then
    . /etc/default/laptop-mode
    if ! ( echo "$ENABLE_LAPTOP_MODE" |grep y ) ; then
    log "VERBOSE" "Not starting laptop mode because it is disabled in /etc/default/laptop-mode."
    STATE=disabled
    fi
    fi
    if [ "$STATE" = "disabled" ] ; then
    ACTIVATE=0
    fi
    # Check whether we are allowed to activate the data-loss-sensitive stuff.
    # If the battery charge is too low, we want to disable this, but not the
    # other power-saving stuff.
    if [ "$ACTIVATE" -eq 0 ] ; then
    ACTIVATE_WITH_POSSIBLE_DATA_LOSS=0
    elif [ "$ON_AC" = 1 ] ; then
    log "VERBOSE" "On AC, not checking minimum battery charge."
    ACTIVATE_WITH_POSSIBLE_DATA_LOSS=1
    else
    ACTIVATE_WITH_POSSIBLE_DATA_LOSS=1
    ENOUGH_CHARGE=0
    ENOUGH_CHARGE_TO_PREVENT_HIBERNATION=0
    # Weird way of checking that /sys/class/power_supply is not empty -- but it works.
    if [ "$(echo /sys/class/power_supply/*)" != '/sys/class/power_supply/*' ] ; then
    log "VERBOSE" "Not on AC and we have battery information in /sys/class/power_supply/BAT* -- checking minimum battery charge."
    for BATT in /sys/class/power_supply/* ; do
    BATT_TYPE=$(cat $BATT/type)
    log "VERBOSE" "$BATT is of type $BATT_TYPE."
    if [ "$BATT_TYPE" != "Battery" ] ; then
    log "VERBOSE" "Not of type \"Battery\", skipping."
    else
    PREV_ENOUGH_CHARGE=$ENOUGH_CHARGE
    PREV_ENOUGH_CHARGE_TO_PREVENT_HIBERNATION=$ENOUGH_CHARGE_TO_PREVENT_HIBERNATION
    log "VERBOSE" "Checking levels for $BATT."
    PRESENT=$(cat $BATT/present)
    log "VERBOSE" "Present: $PRESENT."
    # Only do if the battery is present
    if [ "$PRESENT" -eq 1 ] ; then
    FOUND_AN_ENABLED_CHECK=0
    FOUND_AN_ENABLED_HIBERNATION_CHECK=0
    # Get the remaining capacity.
    IN_UAH=0
    IN_UWH=0
    if [ -f $BATT/charge_now ] ; then
    REMAINING=$(cat $BATT/charge_now)
    IN_UAH=1 # charge_* is in microAmpere-hours
    elif [ -f $BATT/energy_now ] ; then
    REMAINING=$(cat $BATT/energy_now)
    IN_UWH=1 # energy_* is in microWatt-hours
    else
    REMAINING=0
    fi
    if [ -z "$REMAINING" -o "$REMAINING" -eq 0 ] ; then
    log "VERBOSE" "Battery does not report remaining charge. Perhaps it is not present?"
    REMAINING=0
    fi
    log "VERBOSE" "Remaining charge: $REMAINING"
    if [ -f $BATT/charge_full_design ] ; then
    CAPACITY=$(cat $BATT/charge_full_design)
    elif [ -f $BATT/energy_full_design ] ; then
    CAPACITY=$(cat $BATT/energy_full_design)
    else
    CAPACITY=0
    fi
    if [ -z "$CAPACITY" -o "$CAPACITY" -eq 0 ] ; then
    log "VERBOSE" "Battery does not report design full charge, using non-design full charge."
    if [ -f $BATT/charge_full ] ; then
    CAPACITY=$(cat $BATT/charge_full)
    elif [ -f $BATT/energy_full_design ] ; then
    CAPACITY=$(cat $BATT/energy_full)
    else
    CAPACITY=0
    fi
    if [ -z "$CAPACITY" -o "$CAPACITY" -eq 0 ] ; then
    log "VERBOSE" "Battery does not report non-design full charge."
    CAPACITY=0
    fi
    fi
    log "VERBOSE" "Full capacity: $CAPACITY"
    # Check the charge percentage
    if [ "$MINIMUM_BATTERY_CHARGE_PERCENT" -ne 0 ] ; then
    FOUND_AN_ENABLED_CHECK=1
    if [ "$CAPACITY" -eq 0 ] ; then
    log "MSG" "WARNING: Battery does not report a capacity. Minimum battery"
    log "MSG" "charge checking does not work without a design capacity."
    ENOUGH_CHARGE=1
    elif [ "$(($REMAINING * 100 / $CAPACITY))" -ge "$MINIMUM_BATTERY_CHARGE_PERCENT" ] ; then
    ENOUGH_CHARGE=1
    fi
    fi
    if [ "$AUTO_HIBERNATION_BATTERY_CHARGE_PERCENT" -ne 0 ] ; then
    FOUND_AN_ENABLED_HIBERNATION_CHECK=1
    if [ "$CAPACITY" -eq 0 ] ; then
    log "MSG" "WARNING: Battery does not report a design capacity. Auto hibernation"
    log "MSG" "does not work without a design capacity."
    ENOUGH_CHARGE=1
    elif [ "$(($REMAINING * 100 / $CAPACITY))" -ge "$AUTO_HIBERNATION_BATTERY_CHARGE_PERCENT" ] ; then
    ENOUGH_CHARGE_TO_PREVENT_HIBERNATION=1
    fi
    fi
    # $BATT/alarm is the design_capacity_warning of a battery.
    ALARM_LEVEL=$(cat $BATT/alarm)
    if [ "$ALARM_LEVEL" -ne 0 ] ; then
    if [ "$REMAINING" -le "$ALARM_LEVEL" ] ; then
    # Restore the state we had before checking this battery, so that
    # this battery does not count as having enough charge.
    ENOUGH_CHARGE=$PREV_ENOUGH_CHARGE
    elif [ "$FOUND_AN_ENABLED_CHECK" -eq 0 ] ; then
    # This is the only check that is enabled. In that case a non-critical
    # battery level counts as "enough". (If we would count non-critical
    # battery levels as enough *always*, then the other settings would
    # have no effect; this is only a final fallback.)
    ENOUGH_CHARGE=1
    fi
    fi
    if [ "$AUTO_HIBERNATION_ON_CRITICAL_BATTERY_LEVEL" -ne 0 ] ; then
    if [ "$REMAINING" -le "$ALARM_LEVEL" ] ; then
    ENOUGH_CHARGE_TO_PREVENT_HIBERNATION=$PREV_ENOUGH_CHARGE_TO_PREVENT_HIBERNATION
    elif [ "$FOUND_AN_ENABLED_HIBERNATION_CHECK" -eq 0 ] ; then
    ENOUGH_CHARGE_TO_PREVENT_HIBERNATION=1
    fi
    fi
    # Fallback: hard values
    if [ "$IN_UAH" -ne 0 ] ; then
    if [ "$MINIMUM_BATTERY_CHARGE_MAH" -ne 0 ] ; then
    FOUND_AN_ENABLED_CHECK=1
    if [ "$REMAINING" -ge $((1000*"$MINIMUM_BATTERY_CHARGE_MAH")) ] ; then
    ENOUGH_CHARGE=1
    fi
    fi
    if [ "$AUTO_HIBERNATION_BATTERY_CHARGE_MAH" -ne 0 ] ; then
    FOUND_AN_ENABLED_HIBERNATION_CHECK=1
    if [ "$REMAINING" -ge $((1000*"$AUTO_HIBERNATION_BATTERY_CHARGE_MAH")) ] ; then
    ENOUGH_CHARGE_TO_PREVENT_HIBERNATION=1
    fi
    fi
    elif [ "$IN_UWH" -ne 0 ] ; then
    if [ "$MINIMUM_BATTERY_CHARGE_MWH" -ne 0 ] ; then
    FOUND_AN_ENABLED_CHECK=1
    if [ "$REMAINING" -ge $((1000*"$MINIMUM_BATTERY_CHARGE_MWH")) ] ; then
    ENOUGH_CHARGE=1
    fi
    fi
    if [ "$AUTO_HIBERNATION_BATTERY_CHARGE_MWH" -ne 0 ] ; then
    FOUND_AN_ENABLED_HIBERNATION_CHECK=1
    if [ "$REMAINING" -ge $((1000*"$AUTO_HIBERNATION_BATTERY_CHARGE_MWH")) ] ; then
    ENOUGH_CHARGE_TO_PREVENT_HIBERNATION=1
    fi
    fi
    else
    log "ERR" "Failed to determine battery charge. Battery charge units are not in"
    log "ERR" "mWh, uWh, mAh or uAh."
    fi
    else
    log "VERBOSE" "Battery is not present."
    fi
    fi
    done
    elif [ "$(echo /proc/acpi/battery/*)" != '/proc/acpi/battery/*' ] ; then
    log "VERBOSE" "Not on AC and we have batteries in /proc/acpi/battery -- checking minimum battery charge."
    for BATT in /proc/acpi/battery/* ; do
    PREV_ENOUGH_CHARGE=$ENOUGH_CHARGE
    PREV_ENOUGH_CHARGE_TO_PREVENT_HIBERNATION=$ENOUGH_CHARGE_TO_PREVENT_HIBERNATION
    BATT_STATE=$BATT/state
    BATT_INFO=$BATT/info
    log "VERBOSE" "Checking info and state for $BATT."
    # Only do if the battery is present
    if ( grep -q 'present:.*yes' $BATT_INFO ) ; then
    FOUND_AN_ENABLED_CHECK=0
    FOUND_AN_ENABLED_HIBERNATION_CHECK=0
    # Get the remaining capacity.
    REMAINING=`grep "remaining capacity:" $BATT_STATE | sed "s/.* \([0-9][0-9]* \).*/\1/" `
    if [ -z "$REMAINING" ] ; then
    log "VERBOSE" "Battery does not report remaining charte. Perhaps it is not present?"
    REMAINING=0
    fi
    log "VERBOSE" "Remaining charge: $REMAINING"
    CAPACITY=`grep "design capacity:" $BATT_INFO | sed "s/.* \([0-9][0-9]* \).*/\1/" `
    if [ -z "$CAPACITY" ] ; then
    log "VERBOSE" "Battery does not report capacity. Perhaps it is not present?"
    CAPACITY=0
    fi
    log "VERBOSE" "Design capacity: $CAPACITY"
    # Check the charge percentage
    if [ "$MINIMUM_BATTERY_CHARGE_PERCENT" -ne 0 ] ; then
    FOUND_AN_ENABLED_CHECK=1
    if [ "$CAPACITY" -eq 0 ] ; then
    log "MSG" "WARNING: Battery does not report a design capacity. Minimum battery"
    log "MSG" "charge checking does not work without a design capacity."
    ENOUGH_CHARGE=1
    elif [ "$(($REMAINING * 100 / $CAPACITY))" -ge "$MINIMUM_BATTERY_CHARGE_PERCENT" ] ; then
    ENOUGH_CHARGE=1
    fi
    fi
    if [ "$AUTO_HIBERNATION_BATTERY_CHARGE_PERCENT" -ne 0 ] ; then
    FOUND_AN_ENABLED_HIBERNATION_CHECK=1
    if [ "$CAPACITY" -eq 0 ] ; then
    log "MSG" "WARNING: Battery does not report a design capacity. Auto hibernation"
    log "MSG" "does not work without a design capacity."
    ENOUGH_CHARGE=1
    elif [ "$(($REMAINING * 100 / $CAPACITY))" -ge "$AUTO_HIBERNATION_BATTERY_CHARGE_PERCENT" ] ; then
    ENOUGH_CHARGE_TO_PREVENT_HIBERNATION=1
    fi
    fi
    # Fallback: hard values.
    # Determine the reporting unit.
    IN_MAH=0
    IN_MWH=0
    if ( grep -q mWh $BATT_INFO ) ; then
    IN_MWH=1
    elif ( grep -q mAh $BATT_INFO ) ; then
    IN_MAH=1
    fi
    if [ "$IN_MAH" -ne 0 ] ; then
    if [ "$MINIMUM_BATTERY_CHARGE_MAH" -ne 0 ] ; then
    FOUND_AN_ENABLED_CHECK=1
    if [ "$REMAINING" -ge "$MINIMUM_BATTERY_CHARGE_MAH" ] ; then
    ENOUGH_CHARGE=1
    fi
    fi
    if [ "$AUTO_HIBERNATION_BATTERY_CHARGE_MAH" -ne 0 ] ; then
    FOUND_AN_ENABLED_HIBERNATION_CHECK=1
    if [ "$REMAINING" -ge "$AUTO_HIBERNATION_BATTERY_CHARGE_MAH" ] ; then
    ENOUGH_CHARGE_TO_PREVENT_HIBERNATION=1
    fi
    fi
    elif [ "$IN_MWH" -ne 0 ] ; then
    if [ "$MINIMUM_BATTERY_CHARGE_MWH" -ne 0 ] ; then
    FOUND_AN_ENABLED_CHECK=1
    if [ "$REMAINING" -ge "$MINIMUM_BATTERY_CHARGE_MWH" ] ; then
    ENOUGH_CHARGE=1
    fi
    fi
    if [ "$AUTO_HIBERNATION_BATTERY_CHARGE_MWH" -ne 0 ] ; then
    FOUND_AN_ENABLED_HIBERNATION_CHECK=1
    if [ "$REMAINING" -ge "$AUTO_HIBERNATION_BATTERY_CHARGE_MWH" ] ; then
    ENOUGH_CHARGE_TO_PREVENT_HIBERNATION=1
    fi
    fi
    else
    log "ERR" "Failed to determine battery charge. Battery charge units are not in"
    log "ERR" "mWh or mAh."
    fi
    CAP_STATE=`sed -r 's/^capacity state:\s*(.*)\s*$/\1/;t;d' "$BATT_STATE"`
    if [ "$DISABLE_LAPTOP_MODE_ON_CRITICAL_BATTERY_LEVEL" -ne 0 ] ; then
    if [ "$CAP_STATE" = "critical" ] ; then
    # Restore the state we had before checking this battery, so that
    # this battery does not count as having enough charge.
    ENOUGH_CHARGE=$PREV_ENOUGH_CHARGE
    elif [ "$FOUND_AN_ENABLED_CHECK" -eq 0 ] ; then
    # This is the only check that is enabled. In that case a non-critical
    # battery level counts as "enough". (If we would count non-critical
    # battery levels as enough *always*, then the other settings would
    # have no effect; this is only a final fallback.)
    ENOUGH_CHARGE=1
    fi
    fi
    if [ "$AUTO_HIBERNATION_ON_CRITICAL_BATTERY_LEVEL" -ne 0 ] ; then
    if [ "$CAP_STATE" = "critical" ] ; then
    ENOUGH_CHARGE_TO_PREVENT_HIBERNATION=$PREV_ENOUGH_CHARGE_TO_PREVENT_HIBERNATION
    elif [ "$FOUND_AN_ENABLED_HIBERNATION_CHECK" -eq 0 ] ; then
    ENOUGH_CHARGE_TO_PREVENT_HIBERNATION=1
    fi
    fi
    else
    log "VERBOSE" "Battery is not present."
    fi
    done
    else
    ENOUGH_CHARGE=1
    ENOUGH_CHARGE_TO_PREVENT_HIBERNATION=1
    log "VERBOSE" "Not on AC and could not check battery state -- data loss sensitive features stay enabled and auto-hibernation will not work."
    fi
    if [ "$ENABLE_AUTO_HIBERNATION" -ne 0 -a "$ENOUGH_CHARGE_TO_PREVENT_HIBERNATION" -eq 0 ] ; then
    log "VERBOSE" "None of the batteries have a charge above the auto-hibernation level."
    log "VERBOSE" "Starting hibernation."
    if [ -x $HIBERNATE_COMMAND ]; then
    $HIBERNATE_COMMAND
    elif [ -f /sys/power/state ]; then
    grep -q disk /sys/power/state && echo disk > /sys/power/state
    fi
    # Don't continue -- if things are configured correctly, then we
    # will be called on resume.
    exit 0
    fi
    if [ "$ENOUGH_CHARGE" -eq 0 ] ; then
    log "VERBOSE" "None of the batteries have a charge above the minimum level."
    log "VERBOSE" "Deactivating data loss sensitive features."
    ACTIVATE_WITH_POSSIBLE_DATA_LOSS=0
    fi
    fi
    if [ "$INIT" -eq 0 ] ; then
    log "MSG" "Laptop mode "
    fi
    # WAS_ACTIVE is used later on. If there is no /var/run/laptop-mode-tools/state, then
    # we know that laptop mode wasn't active before.
    WAS_ACTIVE=0
    log "VERBOSE" "Checking if desired state is different from current state."
    if [ -f /var/run/laptop-mode-tools/state ] ; then
    read WAS_ACTIVE WAS_ON_AC WAS_ACTIVATE_WITH_POSSIBLE_DATA_LOSS WAS_STATE < /var/run/laptop-mode-tools/state
    if [ "$WAS_STATE" != "" ] ; then
    if [ "$WAS_ACTIVE" -eq "$ACTIVATE" -a "$WAS_ON_AC" -eq "$ON_AC" -a "$WAS_ACTIVATE_WITH_POSSIBLE_DATA_LOSS" -eq "$ACTIVATE_WITH_POSSIBLE_DATA_LOSS" -a "$WAS_STATE" = "$STATE" -a "$FORCE" -eq 0 ] ; then
    log "MSG" "$STATE, "
    if [ "$WAS_ACTIVE" -eq 1 ] ; then
    log "MSG" "active [unchanged]"
    if [ "$ACTIVATE_WITH_POSSIBLE_DATA_LOSS" -eq 0 ] ; then
    log "MSG" " (Data-loss sensitive features disabled.)"
    fi
    else
    log "MSG" "not active [unchanged]"
    fi
    exit 0
    fi
    fi
    else
    log "VERBOSE" "/var/run/laptop-mode-tools/state does not exist, no previous state."
    fi
    echo "$ACTIVATE $ON_AC $ACTIVATE_WITH_POSSIBLE_DATA_LOSS $STATE" > /var/run/laptop-mode-tools/state
    if [ "$ACTIVATE" -eq 1 ] ; then
    log "MSG" "$STATE, active"
    if [ "$ACTIVATE_WITH_POSSIBLE_DATA_LOSS" -eq 0 ] ; then
    log "MSG" " (Data-loss sensitive features disabled.)"
    fi
    else
    log "MSG" "$STATE, not active"
    fi
    # Finally, call laptop-mode-tools modules. The modules can use the settings
    # from the config files, but they may NOT assume the settings actually exist,
    # as no defaults have been given for them.
    # Note that the /usr/local/lib path is deprecated.
    export FORCE STATE ON_AC ACTIVATE ACTIVATE_WITH_POSSIBLE_DATA_LOSS KLEVEL KMINOR WAS_ACTIVE LM_VERBOSE DEVICES
    for SCRIPT in /usr/share/laptop-mode-tools/modules/* /usr/local/lib/laptop-mode-tools/modules/* /usr/local/share/laptop-mode-tools/modules/* /etc/laptop-mode/modules/* ; do
    if [ -z "$MODULES" ] ; then
    # If a module list has not been provided, execute all modules
    EXECUTE_SCRIPT=1
    else
    # If a module list has been provided, execute only the listed
    # modules.
    EXECUTE_SCRIPT=0
    for MODULE in $MODULES; do
    # Attempt to remove the module name from the end of the
    # full script path. If the module name matches the
    # script, the name will be removed from the end of the
    # full file path, leaving the path to the script. If
    # there was not a match made, the module name would not
    # be removed from the path, and $PATH_TO_SCRIPT would
    # be the same as $SCRIPT.
    PATH_TO_SCRIPT=${SCRIPT%%$MODULE}
    # Execute the script if a match was found (module name
    # was removed from the script path, making it shorter.
    if [ $PATH_TO_SCRIPT != $SCRIPT ] ; then
    EXECUTE_SCRIPT=1
    fi
    done
    fi
    if [ -x "$SCRIPT" -a $EXECUTE_SCRIPT -eq 1 ] ; then
    log "VERBOSE" "Invoking module $SCRIPT."
    SCRIPT_DEBUG=$SCRIPT; # We do this because in start-stop-programs module a $SCRIPT variable is used. That
    # changes the whole meaning when passed to disableDebug ()
    enableDebug $SCRIPT_DEBUG;
    . $SCRIPT
    disableDebug $SCRIPT_DEBUG;
    else
    log "VERBOSE" "Module $SCRIPT is not executable or is to be skipped."
    fi
    done
    exit 0
    # This fi closes the if for "readconfig". If I would have indented this one
    # I would have indented the whole file. :)
    fi
    lmt_load_config
    lock_retry ()
    ( $FLOCK -n -x -w 1 8 || exit 0;
    i=10;
    while [ $i -ge 1 ]
    do
    log "ERR" "Couldn't acquire lock. Retrying.... PID is $$\n"
    $FLOCK -x -w 1 9 && lmt_main_function "$@" && break;
    i=$(( $i - 1 ))
    done
    ) 8>$LMT_REQ_LOCK
    # Check and acquire locks and then exec.
    ( $FLOCK -n -x -w 1 8; ) 8>$LMT_REQ_LOCK
    ($FLOCK -n -x -w 1 9 && lmt_main_function "$@";) || lock_retry "$@"
    ) 9<>$LMT_INVOC_LOCK
    # We do a special run of battery polling daemon here so that it does not get
    # plagued by the lock. We need the polling daemon to be independent of any locks
    if [ x$ENABLE_BATTERY_LEVEL_POLLING = x1 ] && [ x$BLACKLIST_IN_FLOCK = x1 ]; then
    log "VERBOSE" "Battery level polling is enabled."
    if [ x$ON_AC = x1 ] ; then
    log "VERBOSE" "On AC, stopping the polling daemon."
    # In AC mode we disable the polling daemon.
    killall -q lm-polling-daemon
    else
    if ! pidof -x lm-polling-daemon ; then
    log "VERBOSE" "On battery and there was no polling daemon yet, starting the polling daemon."
    # If there is no polling daemon, we start one.
    /usr/share/laptop-mode-tools/module-helpers/lm-polling-daemon < /dev/null > /dev/null 2> /dev/null &
    fi
    fi
    else
    log "VERBOSE" "Battery level polling is disabled."
    fi
    exit 0;
    and here is the lines which archwiki mentions
    case "$KLEVEL" in
    "2.4" ) ;;
    "2.6" ) ;;
    log "ERR" "Unhandled kernel version: $KLEVEL ('uname -r' = '$(uname -r)')" >&2
    exit 1
    esac

    I had the problem but edited the line in /usr/sbin/laptop_mode and it worked. But thoes lines are not there anymore. I guess they changed it at the recent update of laptop-mode-tools.
    Regarding your heat problem; is there any other thing you use to cut down power usage (from AUR  maybe)? I use acpi_call from AUR had to edit lines there aswell, but it should be updated by now.

  • Xfce4-power-manager and laptop-mode-tools + backlight problems.

    Cross posted from here: https://bbs.archlinux.org/viewtopic.php?id=127992
    I don't know which forum it belongs to, so maybe a mod can close the one in the wrong forum.
    Out of curiosity, do these two tools conflict with each other? There seems to be some features that do the same thing, ie harddrive spin down time, but I'm not sure if these two will try to kill each other trying to configure the same power settings. If they do conflict, how could I go about disabling the conflicting parts (on either)? laptop-mode-tools claims it needs acpid "for ACPI support", however, acpid seems to be grabbing the standby event and throwing the laptop in standby despite the standby button bound to do nothing in xfce-power-manager. If I take out acpid, does that mean laptop-mode will no longer detect acpi events such as connecting/disconnecting AC power and thus not change modes when its plugged in?
    Another problem I've had after installing xfce4-power-manager is that when I use the brightness hotkeys the backlight gets stuck and starts flashing, locking up the system until I force shutdown. However, I can use the brightness plugin without trouble at all. What's causing the power manager to screw up setting the brightness since it clearly seems to work otherwise.

    It is easier to close this one and move the other thread over here. Just continue there.
    BTW better use the Report button when you want to have a thread of yours moved to another forum. That way it is guaranteed a mod will see this in time. And you never need to cross post.

  • Problem heat macbook pro on AC laptop-mode

    Hi,
    i m confuse, I dont understand why on AC the top left part of my Macbook pro is getting hot.
    xsensors show my CPu around 65 under AC
    on BAT my cpu are very cool and my laptop too. ְ This is how I want it all the time !
    I have laptop-mode-tools installed I change th config file to use also laptop mode on AC but i dont know why it is still heating more than on Battery.
    I adjusted laptop-mode/conf.d/wireless to be powersave even on AC with latop-mode.
    cpupower shows on AC or BAt powersave, i switched off the bluetooth on AC, But i still heating up on AC
    Someone can tell me where to look ?
    It fixed it just when the battery is charging btw 30 percent and 80 percent that is getting hot
    Last edited by maxarsys (2013-09-03 15:01:48)

    Hi,
    i m confuse, I dont understand why on AC the top left part of my Macbook pro is getting hot.
    xsensors show my CPu around 65 under AC
    on BAT my cpu are very cool and my laptop too. ְ This is how I want it all the time !
    I have laptop-mode-tools installed I change th config file to use also laptop mode on AC but i dont know why it is still heating more than on Battery.
    I adjusted laptop-mode/conf.d/wireless to be powersave even on AC with latop-mode.
    cpupower shows on AC or BAt powersave, i switched off the bluetooth on AC, But i still heating up on AC
    Someone can tell me where to look ?
    It fixed it just when the battery is charging btw 30 percent and 80 percent that is getting hot
    Last edited by maxarsys (2013-09-03 15:01:48)

  • Laptop-mode-tools no longer adjusts LCD brightness

    I just discovered that laptop-mode-tools no longer adjusts the brightness of the LCD when switched to battery. This is not a general issue. laptop-mode is active on battery (as well as being enabled via the systemd service), the computer knows it is on battery (checking with on_ac_power and reading from /sys/class/power_supply/*/* give the expected results) and other things are correctly adjusted e.g. bluetooth is blocked with rfkill. Moreover, as root I can adjust the brightness in the usual way by hand:
    echo 10 >| /sys/class/backlight/acpi_video0/brightness
    works just fine. The >| is needed because for interactive shell's, root's .bashrc sets noclobber. This obviously doesn't affect laptop-mode tools because it doesn't run an interactive shell. In contrast:
    $ cat /etc/laptop-mode/conf.d/lcd-brightness.conf | grep -v "^#"
    DEBUG=1
    CONTROL_BRIGHTNESS=1
    BATT_BRIGHTNESS_COMMAND="echo 7"
    LM_AC_BRIGHTNESS_COMMAND="echo 10"
    NOLM_AC_BRIGHTNESS_COMMAND="echo 12"
    BRIGHTNESS_OUTPUT="/sys/class/backlight/acpi_video0/brightness"
    DEBUG wasn't 1 when the problem started. I tried setting it to get more info but haven't found anything more in the journal/logs.
    KDE is set to not touch the default brightness at all. All it does is (further) dim the display after so many minutes depending on the power supply and status.
    This did work fine but I haven't been on battery for a while so I'm not sure when exactly it stopped working. My brightness is set by default to 12 on boot or wake from sleep which suggests laptop-mode tools does something or something else is now handling this which I'm not aware of. But the switch to battery does not trigger any alteration in the brightness and laptop-mode status does not even mention LCD brightness as one of the things laptop-mode tools controls.
    Have I missed a change in how this is handled somewhere?

    I doubt this is related but it is currently my only lead so here goes. I set the LCD brightness control for debug so I've been trying to watch it. However, so far it is all smiles e.g. on boot it all works fine and says so.
    However, I found I'm getting another error on boot which is
    /usr/share/laptop-mode-tools/modules/pcie-aspm: line 10: write error: Operation not permitted
    Note that I copied that by eye from VT1 so if a colon is out of place, that's why.
    The contents of that file is:
    #! /bin/sh
    # Laptop mode tools module: PCIe Active State Power Management
    if [ x$CONTROL_PCIE_ASPM = x1 ] || [ x$ENABLE_AUTO_MODULES = x1 -a x$CONTROL_PCIE_ASPM = xauto ]; then
    if [ $ON_AC -eq 1 ]; then
    log "VERBOSE" "On AC power: setting pcie_aspm to default"
    if [ -f /sys/module/pcie_aspm/parameters/policy ]; then
    echo default > /sys/module/pcie_aspm/parameters/policy
    if [ $? -eq 0 ]; then
    log "VERBOSE" "PCIe ASPM set to 'default'"
    else
    log "VERBOSE" "PCIe ASPM tweaking is prohibited by the kernel"
    fi
    else
    log "VERBOSE" "PCIe ASPM is not available"
    fi
    else
    log "VERBOSE" "On battery: setting pcie_aspm to powersave"
    if [ -f /sys/module/pcie_aspm/parameters/policy ]; then
    echo powersave > /sys/module/pcie_aspm/parameters/policy
    if [ $? -eq 0 ]; then
    log "VERBOSE" "PCIe ASPM set to 'powersave'"
    else
    log "VERBOSE" "PCIe ASPM tweaking is prohibited by the kernel"
    fi
    else
    log "VERBOSE" "PCIe ASPM is not available"
    fi
    fi
    else
    log "VERBOSE" "PCIe ASPM power savings module is disabled"
    fi
    So I assume it is saying it cannot write to /sys/module/pcie_aspm/parameters/policy but the permissions etc. on that, at least, don't look strange:
    l /sys/module/pcie_aspm/parameters/
    total 0
    drwxr-xr-x 2 root root 0 Gor 25 21:24 ./
    drwxr-xr-x 3 root root 0 Gor 25 21:23 ../
    -rw-r--r-- 1 root root 4.0K Gor 25 21:24 policy
    Last edited by cfr (2013-07-25 20:47:13)

  • Yoga 2 Pro: auto disabling keyboard in laptop mode bug

    Hello.
    I have a problem with my Yoga: very often (even if notebook placed on table) in laptop mode its disabling keyboard and touchpad on several seconds and then enabling it again. This enable/disble (flap) occurs time to time, most often after computer power on.
    In this case work with mail or surfing web in laptop is not possible.
    Someone have a hint how to repair it or how to enable keyboard manually permanently? Laptop is still on warranty, not broken, didn’t fall, win 8.1.
    If need i can record some video on mobile phone with keyboard on/off.

    Hi. Here it is. I tried to record the off/on process of this problem. On the seond part i typing in notepad and you can see interuption of letters. 
    https://yadi.sk/i/3GBZepRabSEpf
    Problem is still not solved

  • Yoga 2 pro mode switching problem

    there is problem on my yoga 2 pro. My yoga 2 pro should be in the laptop mode, but it changed to tablet mode suddenly and changed back to laptop mode after 5 seconds. This is not only the first time, it had happened about ten times since I bought it three month ago. so what's problem on my yoga 2 pro?

    I realize that too today in the office. I changed to tablet then it change to tent then change back to tablet after 2 seconds. I am thinking there could be a "lag" for the laptop to detect the modes.
    Just curious, were you in Laptop mode all the while the unintended change happen?
    *Non Lenovo employee*
    I have a Y2P (i5) ... Feel free to ping me if you want me to test some applications with your Y2P if you have the same model. I don't mind keep doing recovery on it if needed .... =)

  • [SOLVED]Laptop-mode-tools no cpu scaling

    Hi!
    After I installed laptop-mode-tools, I can't have my cpu freq scaling as I always did.
    Well, I'll explain better: without laptop-mode-tools I used to set my cpu freq via /etc/rc.local, and everything was fine.
    But now I need laptop-mode-tools and I have to say, everything works very well...But here comes the sun, uhm no, here comes the problem: when i plug in and out my ac cable, my frequency will stay at its lowest. The same thing happens after suspend... I can't understand...
    I tried with acpid, obviously, and for example, when i plug in ac power, lcd brightness changes as expected from my config files, but cpufreq will stay just as I said.
    So, here is my cpufreq-info now:
    limiti hardware: 1000 MHz - 1.67 GHz
    frequenze disponibili: 1.67 GHz, 1.33 GHz, 1000 MHz
    gestori disponibili: conservative, ondemand, userspace, powersave, performance
    gestore attuale: la frequenza deve mantenersi tra 1000 MHz e 1000 MHz.
    Il gestore "performance" può decidere quale velocità usare
    in questo intervallo.
    (it's italian sorry)
    this is /etc/laptop-mode/conf.d/cpufreq.conf
    # Configuration file for Laptop Mode Tools module cpufreq.
    # For more information, consult the laptop-mode.conf(8) manual page.
    # CPU frequency scaling and throttling
    # Laptop mode tools can automatically adjust your kernel CPU frequency
    # settings. This includes upper and lower limits and scaling governors.
    # There is also support for CPU throttling, on systems that don't support
    # frequency scaling.
    # This feature only works on 2.6 kernels.
    # IMPORTANT: In versions 1.36 and earlier, these settings were included in the
    # main laptop-mode.conf configuration file. If they are still present, they
    # overrule the settings in this file. To fix this, simply delete the settings
    # from the main config file.
    # Enable debug mode for this module
    # Set to 1 if you want to debug this module
    DEBUG=0
    # Should laptop mode tools control the CPU frequency settings?
    # Set to 0 to disable
    CONTROL_CPU_FREQUENCY=1
    # Legal values are "slowest" for the slowest speed that your
    # CPU is able to operate at, "fastest" for the fastest speed,
    # "medium" for some value in the middle, or any value listed in
    # /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies.
    # The "governor" can be any governor installed on your system, this usually
    # includes "ondemand", "conservative", and "performance". The
    # "IGNORE_NICE_LOAD" setting specifies that background programs that have
    # a low priority ("nice level") should not cause the CPU frequency to
    # be increased. (You generally want this to be enabled in battery mode.)
    BATT_CPU_MAXFREQ=fastest
    BATT_CPU_MINFREQ=slowest
    BATT_CPU_GOVERNOR=ondemand
    BATT_CPU_IGNORE_NICE_LOAD=1
    LM_AC_CPU_MAXFREQ=fastest
    LM_AC_CPU_MINFREQ=slowest
    LM_AC_CPU_GOVERNOR=performance
    LM_AC_CPU_IGNORE_NICE_LOAD=1
    NOLM_AC_CPU_MAXFREQ=fastest
    NOLM_AC_CPU_MINFREQ=slowest
    NOLM_AC_CPU_GOVERNOR=performance
    NOLM_AC_CPU_IGNORE_NICE_LOAD=0
    # Should laptop mode tools control the CPU throttling? This is only useful
    # on processors that don't have frequency scaling.
    # (Only works when you have /proc/acpi/processor/CPU*/throttling.)
    # This is only useful on older P4 processors that do not support frequency
    # scaling. On such processors, this is the only way to reduce power consumption
    # but at the cost of higher performance penalty.
    # Enable this only if you have a processor that does not support frequency scaling
    # On most new processors, you might want to disable it.
    # Set to 0 to disable.
    CONTROL_CPU_THROTTLING=0
    # Legal values are "maximum" for the maximum (slowest) throttling level,
    # "minimum" for minimum (fastest) throttling level, "medium" for a value
    # somewhere in the middle (this is usually 50% for P4s), or any value listed
    # in /proc/acpi/processor/CPU*/throttling. Be careful when using "maximum":
    # this may be _very_ slow (in fact, with P4s it slows down the processor
    # by a factor 8).
    BATT_CPU_THROTTLING=medium
    LM_AC_CPU_THROTTLING=medium
    NOLM_AC_CPU_THROTTLING=minimum
    I'm using kernel 3.1.6 with no testing repo.
    I'm using pm-utils to suspend.
    As far as I understand, the problem is in one of the file laptop-mode installs on my hd...the only solution I found was to remove laptop-mode...but I need it because it's simple and i have no time to find something else,
    Thanks everybody!
    Bye!
    Last edited by nierro (2011-12-31 10:19:09)

    Ok, after i removed laptop-mode-tools and managed to have my cpu freq scaling,lcd brightness and eeepc she through rc.local and acpid events , i found that the real problem is located in ondemand governor: after suspend it stays at lowest freq possible.
    If i change then my governor, with for example performance, it works, but if i change again to ondemand, it stays to its lowest...any idea?
    EDIT: tried with granola and userspace governor, but nothing changes... tried on my other laptop with kernel 3.1.5-ARCH, and there everything it's ok, but i noticed i haven't acpi and acpid installed there...so may be the problem is related to them? (i use the same cpufreq driver in these laptops)
    I'll try to kick out acpi and acpid and i'll make you know what happens.
    Last edited by nierro (2011-12-31 09:04:54)

  • Laptop-mode-tools 1.62-1 line 1031: integer expression expected

    Hi, I have the problem mentioned in the subject since laptop-mode-tools 1.62-1 (yeah, I know newest version is 1.62-2 but it has the same error). The error appeared after v 1.61-2 was updated.
    Unfortunately, I wasn't able to track down these errors. I just know that it seems, there are some variables, which aren't initialized properly.
    Line 1031:
    if [ "$INIT" -eq 0 ] ; then
    Line 1042:
    if [ "$WAS_ACTIVE" -eq "$ACTIVATE" -a "$WAS_ON_AC" -eq "$ON_AC" -a "$WAS_ACTIVATE_WITH_POSSIBLE_DATA_LOSS" -eq "$ACTIVATE_WITH_POSSIBLE_DATA_LOSS" -a "$WAS_STATE" = "$STATE" -a "$FORCE" -eq 0 ] ; then
    Line 1031 is pretty obvious - $INIT doesn't seem to be initialized, although I don't know why.
    Line 1042 .. idfk.
    I'm also getting the following error:
    SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 c0 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    /usr/share/laptop-mode-tools/modules/lcd-brightness: line 21: [: : integer expression expected
    /usr/sbin/laptop_mode: line 205: LCD_BRIGHTNESS~_DEBUG: syntax error in expression (error token is "~_DEBUG")
    Anyone here with the same errors?

    I get similar error on
    # laptop_mode status
    /proc/acpi/button/lid/LID/state:
    state: open
    /sys/class/power_supply/AC/online:
    1
    /usr/sbin/laptop_mode: Zeile 1031: [: : Ganzzahliger Ausdruck erwartet.
    /usr/sbin/laptop_mode: Zeile 1042: [: : Ganzzahliger Ausdruck erwartet.
    enabled, active
    SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    The 'SG_IO: bad/missing sense data, sb[]...' is often reported related to harddisk power management issues but I haven't found any solution yet.

  • Laptop-mode-tools fixes and improvements

    I have been in contact with the autor of laptop-mode-tools and new version is coming some time next month or maybe even in March. So I decided to share my tweaks because some things are broken right now and some need improvements.
    There are some modules I don't use and so didn't notice any problems with them, if there are any (lcd-brightness, video-out and those for which I don't have suitable hardware like cpufreq, iwl/ipw and sched-mc).
    Alright then, first is the problem with systems where the battery doesn't report events and has no alarm support on which the auto-hibernate module depends. There is a script from gentoo-wiki which is quite popular among people with lousy batteries. It would be great if the package manager would take care of it for us. Author of laptop-mode-tools also said (on debian lists) that such script could be included in future versions, for now the common "solution" is to create a cronjob that calls /usr/sbin/laptop_mode every few minutes. I don't quite like it compared to the gentoo script. For now I include the script in the package as /usr/sbin/battery_mode and call it from rc.local on boot.
    Currently there is a module called ac97-powersave that controls power management on those sound cards. Intel HDA sound cards also support this and in the future versions a module them will probably be included. For now I patch the ac97-powersave module to include the support for Intel HDA.
    Bluetooth module removes bluetooth and hci_usb modules when disabling the device. However on my system it's not enough to completly turn it off. For now I patch the bluetooth module to include rfkill support. Only then the system reports a USB disconnect and the LED goes off. The default path in the patch is for my acer system with acer-wmi rfkill support.
    Due to w differences the dpms-standby module is broken on many systems. The module uses xset and arguments are piped from the command w -hs where the third field is supposed to be DPMS_SCREEN but it's actually IDLE time, so xset command fails because the argument passed to xset -d is something like 4:54. On Debian/Ubuntu they went around this by including this in their acpi-support package. I didn't bother to see what they actually did, to backport it. It should be done in future laptop-mode-tools anyway. For now I just hardcode the display value for my single-user/one-X-screen system in the dpms-standby module.
    Due to a simple mistake LM_VERBOSE was broken. Meaning that none of those informative status messages from laptop-mode-tools were logged when VERBOSE LOGGING was enabled. Only the output of called commands was logged. For now I fix this in the build process.
    Speaking of logging, default output for verbose is /dev/stdout, and I would like to log everything to a file. So I modify it in the build process to log everything to /var/log/laptop-mode.log, and also include a logrotate script in the package. With the above fix I have a complete and informative log file.
    It's not a bad idea to stop/restart laptop-mode-tools when suspending, so a pm-utils hook is helpful. Arch PKGBUILD already includes installing pm-utils support but it's actually pbbuttonsd/pmud support and not pm-utils. Such a script/hook could one day be included in laptop-mode-tools however there is/was a debate going if it's their job to provide it. I read somewhere that Ubuntu already provides such script/hook but I'm not sure if it's provided by acpi-support or laptop-mode-tools package. For now I wrote my own pm-utils hook and I include it in the build process.
    Powertop suggests usbcore.autosuspend=1 sysctl, but it would be nice if we have all this power management control in one place. Usb-autosuspend module will be included in future versions of laptop-mode-tools, but for now someone wrote a module and posted it to the Debian bug tracker. I keep the module and configuration in my build dir but don't include it in the final package for now. I'll wait a bit and see how things will develop.
    To help you start hacking on laptop-mode-tools you can take a look at all the above patches and my PKGBUILD. Every step is documented in PKGBUILD comments, and please do check them because some things I patch but some I modify inline with sed. I also don't install acpid handlers and before mentioned false pm-utils support... everything is commented: http://sysphere.org/~anrxc/local/softwa … ode-tools/

    Hello,
    this was one year ago, and I helped the author improve these things. Today I don't have to patch my laptop-mode-tools... (I still do with some minor things, but that's just to satisfy some personal preferences . Use the arch package, even the battery polling helper is included.

  • My firefox crashed when upload file on our web based application. This happen on two PC, even during firefox safe mode the problem still exist. But the problem

    Dear All,
    My firefox (version 23 on win 7) crashed when upload file on our internal web based application. This happen on two PC, even in firefox safe mode the problem still exist. So, my first conclusion the problem nothing to do with extension. here the crash ID https://crash-stats.mozilla.com/report/index/81220865-36c0-4e10-a484-6d27e2131023 and https://crash-stats.mozilla.com/report/index/86d2b779-9730-4d2c-b276-a86d42131023. I wonder if this happen because jquery modul in our web based application. But when I tried on my laptop, the problem dissapear. I tried to replicate same situation on different server, I mean I put the exact same application source to other server, never meet the same problem. Thus, I suspect may be it related to antivirus that installed in our network which is kaspersky. I am googling, never meet the clue.
    If you meet the same problem, please help me.
    I am so sorry for my poor english.
    Him Him

    The crashes are a problem with the winhadnt.dll file (OCular Agent from TEC Solutions Limited) as you can see in the crash reports.
    *http://www.freefixer.com/library/file/winhadnt.dll-52397/

  • Laptop Mode Tools causes frequency scaling governor error on shut down

    Hi guys,
    When I have the laptop mode tools service enabled, I get some errors whenever I shut down my computer. I can't catch the errors because they move by pretty quickly, and I can't find the error anywhere in /var/log directory. But I think it says something along the lines of KERNEL ERROR blah/freq_scaling_governor.
    The error does not occur when I disable laptop mode tools. I have also tried uninstalling and reinstalling laptop-mode-tools and acpid, but that didn't change the error.
    How can I log the errors that occur on shutdown so that I can have the exact error?
    What can I do to remove this error?
    Thank you for any help you may give me

    Running cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver did give me intel_pstate.
    Disabling laptop-mode-tools cpu frequency governors seems to have gotten rid of the error messages.
    For future reference, where can I find all my error logs and a log of messages that occur when I log out? I still seem to get some errors, but I can never read what they are.

  • Laptop mode tools disables bluetooth.

    I have a weird issue with laptop mode tools, when i boot up on battery bluetooth is disabled until i plug in a power supply. After its enabled i can unplug it and bluetooth will work.
    Bluetooth control is disabled in bluetooth.conf. I tried switching off usb-autosuspend but that didn't help. The only thing that helped was turning off auto modules in laptop-mode.conf and enabling only cpufreq. I tried enabling everything by hand but the problem came back so it seems like some module other than usb-autosuspend or the bluetooth module is the problem.

    gh403 wrote:
    Laptop Mode Tools is configured to set my SATA link power management to "min_power".  Essentially, it does
    # echo "min_power" > /sys/class/scsi_host/host0/link_power_management_policy
    when I unplug, and
    # echo "max_performance" > /sys/class/scsi_host/host0/link_power_management_policy
    when I plug in the laptop.  I can check the value with
    $ cat /sys/class/scsi_host/host0/link_power_management_policy
    Setting max_performance when plugging works great.  Unfortunately, when I unplug, it stays stuck at max_performance.  Restarting the LMT daemon fixes this temporarily, until I unplug again.
    Is this a bug?  Or am I missing something?  I'm on a Dell Inspiron 7520, about 3 months old, and so far, Arch doesn't seem to like the more esoteric features of the laptop, like the switchable graphics card.
    Thanks for any help!
    Have you searched the all-powerful google or the Arch wiki, friend?
    Oh, and welcome to Arch Linux since this appears to be your first post!  Hope that you like it here and enjoy your stay!
    Also, I don't know anything about the Laptop Mode Tools, since I don't use them even though I have a laptop, perhaps I should take a look into them for my own benefit as well.
    Last edited by lspci (2012-09-15 12:12:02)

  • Need more info - same spontaneous shutdown problem...

    I'm using a very trustworthy 2.5 year-old T500 running Vista SP2 32-bit and my laptop has begun to have the same spontaneous shutdown problems as other users who've written here.  I suspect it's overheating.  I normally use my T500 on a docking station, which may or may not exacerbate an overheating issue. 
    I want to address this problem to ensure that I can continue to progress on my PhD dissertation (!) without crises, so I have taken some of the steps previously recommended for this problem here on this board.  I installed TPFC today to begin monitoring CPU temperature and it appears that it runs between 55 and 65 C.  Other temps listed are lower.  I also made necessary adjustments in Power Settings to maximize fan speed and allow CPU speed to float.  I also removed the battery so I'm using AC power with no battery/recharging processes to add to the problem, though I'm not certain that last part will make any difference.
    I want to also clean the fan since I'm sure it's probably dirty after 2.5 years of continous use in my house.  How can I take my laptop apart to clean the cooling fan?  Or is this something I should take it to a repair shop to accomplish?
    Thanks in advance for your advice.

    No, my machine is not under warranty any longer.  I agree, if it was, there's no way I'd risk voiding it by tearing it apart myself.
    Thanks for causing me to double check.  I DO have a few months of warranty left, so this baby is going to a professional!  I could probalby do it myself, but why risk it?

  • Laptop-mode-tools Dell Vostro 1500

    I installed laptop-mode-tools and it just seems to be kinda sporadic. The temp is around 39 - 43 c but the fan turns on for a minute and then turns off for about 30 second and then the fan turns on again. Also when ever the fan is kicking back on the computer pauses for a second. So if I am typing and the fan kicks on and what I am typing pauses for a second before catching up. It is kind of annoying.
    Is this normal?
    Is it bad to not use laptop-mode-tools? When I don't use it the fan runs all the time but it runs quitely and the temp stays around 43 - 46 c.

    Tib05 wrote:I have a Dell Inspiron 6400. I haven't noticed any fan problem, but my HDD is going to die because of spins up ...
    I set the laptop mode, it s running, but my HDD spins up all the time ...
    Someone managed to make these things change ?
    I don't understand what the problem is -- laptop-mode-tools is extremely configurable.  You can either prevent it from managing hd powersaving features, or you can use it to "manage" them by disabling them completely (which is probably a better option since a lot of laptop hds have powersaving enabled in firmware by default).  Just read the comments in the configuration file and man hdparm (-B and -S switches are especially relevant).

Maybe you are looking for