Keep Yoga 3 Pro in Laptop Mode

I connect my Yoga 3 Pro to a Lenovo USB dock and display to a large monitor at my office desk.
When I close the lid, my Yoga changes from Laptop Mode to Tablet Mode. I would like to keep it in Laptop Mode when the lid is closed at work, so that I can display some programs in larger font -- in Tablet Mode on my external monitor, QuickBooks is unreadable.
Is there a setting I can change so that, when I connect to my external display, I can close the lid and keep my Yoga in Laptop Mode during that session? 
Thanks!

I'd try disabling the ymc service.
Try stopping it in Task Manager -> Services
I'm running without it, since my accelerometer is shot and makes the Yoga think it's in tablet mode all the time, and it seems to keep it in laptop mode all the time.

Similar Messages

  • Keeping Mac Pro in sleep mode when not in use

    Is there any harm to the computer system to put it in sleep mode each time it is not in use as opposed to shutting the system down? I apologize if this is considered a silly question but curious to know if it causes any harm to the system apart from using up a small amount of hydro,
    Thanks for your help

    Thanks for the reply.
    That's what I thought but just thought I would throw out the question to confirm. Putting the Mac Pro in sleep mode certainly makes for much quicker startup although coming from a Windows Vista environment the Mac is certainly much faster at startup than my PC. I do use a UPS on all my systems and have it configured much the same as you.
    Bob

  • 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 continually changes mode while case is closed

    I love my Yoga 2 Pro but there is one thing I've been unable to figure out:  It seems as though the mode (e.g. tent vs. tablet vs. laptop) keeps changing when the case is closed and the computer is moving around.
    I'll close the lid which, based on my power settings should put it to sleep (though I guess I have no way of really knowing because the lid is closed), put it in my bag, and as I'm walking around it keeps making the sound that it makes when I explicitly change the mode (e.g. when I fold the keyboard back to go from laptop mode to tablet mode).
    This is incredibly annoying - either I have to constantly hear this tone coming from my bag, or I have to stop, get the computer out, log in, shut it down, and lose the state of what I was doing (browser tabs, window position, etc.).  
    This also makes me worry that the battery is draining while the lid is closed.
    Is this a known issue, and is there a fix?  Thank you!

    I have this exact same problem, and after having my new Yoga 2 11 for only a week, it has become increasingly annoying. Is there anyway to fix this? It's frustrating to have to shut my computer down completely in order to get it not to battery drain or to continue to switch mode. I find that whenever I put it to sleep and close the lid, it powers down for a few seconds but then makes the notification sound - upon opening the lid it says that I am in "Tablet Mode" even though the computer had been compeltely closed. I would really like to fix this, or I may just end up taking the computer back.

  • Running Android apps on Yoga 2 Pro in tablet mode

    I've not been impressed with Windows Metro when using my Yoga 2 Pro in tablet mode, so I have installed BlueStacks (http://www.bluestacks.com/).
    So far it's been pretty good, with the occasional glitch.
    Anyone else tried it?
    Neil

    Im interested in knowing as well...... I think it is great to use bluestacks on this machine!
    C

  • Trouble with Adobe Reader Touch on Lenovo Yoga Pro 2 in tablet mode. Pdf shows up as blank pages.

    I have a Lenovo Yoga Pro 2 and when I change it to tablet mode and use the Adobe Reader Touch app, my pdf shows up as a blank page. I have installed other pdfs in the past and those show up fine. However, as of three days ago, whatever pdf I install shows up as blank on my screen. Is there a solution to fix this?

    Could you please share your test file?
    You can send the file at [email protected]

  • 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)

  • Mbp pro retina 13" after installing mavericks keeps fans running in sleep mode.

    Hi. my Mbp pro 13" retina keeps fans running in sleep mode, tried to reset smc but not helping. So maybe someone have some solutions?

    Information.
    Fans – Monitor Computer Temperature – iStat Pro (widget)
    Fans – Operating Temperature

  • My MacBook Pro keeps starting up in safe mode and then just before halfway through it turns off

    I shutdown my mac as it was working slowly. The startup disk was almost full so I decided to restart it. Once I restarted it it was stuck trying to start up so I restarted it in safe mode. Now the safe mode bar loads about 40% then disappears completely after which the mac turns off. I have tried PRAM reset. What is likely to be the problem?

    Maximillianmann,
    depending upon how full “almost full” actually is, that could be the problem.
    You can try this, if you have Mac OS X 10.7 or newer installed, to see if it’s not related to your disk being almost full: boot your MacBook Pro into Recovery mode by holding down a Command key and the R key as it starts up. Once the Mac OS X Utilities menu appears, select Disk Utility. On the left-hand side of the Disk Utility window, select your internal disk’s boot partition (typically called “Macintosh HD”). On the right-hand side, press the Verify Disk button if it’s not greyed out; if it is greyed out, or if it reports that errors were found, press the Repair Disk button. Once the verification/repair is completed, exit Disk Utility and select Restart from the Apple menu to restart in normal mode. Once you hear the startup chime, try booting into Safe mode; does it let you do so now?

  • Yoga Pro 2 questions

    So I'm really interested in a Yoga Pro 2 (especially with the sale on at BB this week)...however, I have a couple questions about it:
    1)  I already know about the yellow problem - hoping it's resolved soon but its keeping me on the fence about this one vs. a Sony
    2)  The resolution has forced some apps to have extremely small text...from what I read it's mainly in "Desktop" mode.  Can someone confirm this ?  I haven't had much chance to use Windows 8 yet so haven't seen Desktop vs. Start mode compared.  In what instances would Desktop be used ?
    3)  I'm still not sure about the exposed keys - from what I read Lenovo has some sort of case or protective cover for the keys ?  Can someone send me a link ?  How well does it work ?
    Thanks!

    swallman wrote:
    So I'm really interested in a Yoga Pro 2 (especially with the sale on at BB this week)...however, I have a couple questions about it:
    1)  I already know about the yellow problem - hoping it's resolved soon but its keeping me on the fence about this one vs. a Sony
    2)  The resolution has forced some apps to have extremely small text...from what I read it's mainly in "Desktop" mode.  Can someone confirm this ?  I haven't had much chance to use Windows 8 yet so haven't seen Desktop vs. Start mode compared.  In what instances would Desktop be used ?
    3)  I'm still not sure about the exposed keys - from what I read Lenovo has some sort of case or protective cover for the keys ?  Can someone send me a link ?  How well does it work ?
    Thanks!
    1. can mostly be worked around with the Energy Manager software. Even with that, the yellow is not perfect, but the issue has been massively overblown in my opinion. You'll have to see it for yourself and decide. It's a non-issue for me, personally.
    2. Yeah, they high res does reult in small fonts in some legacy apps. Probably poorly written ones for the most part. But it's a small minority of apps. I haven't run into any major problems, but where this happens, the touch screen is useless with those apps. you really need a mouse. I expect this will become less and less a problem as more high dpi laptops become mainstream and apps take this into account.
    3. The case is here: http://shop.lenovo.com/SEUILibrary/controller/e/web/LenovoPortal/en_US/catalog.workflow:item.detail?...
    I just received mine this morning. It's decent. Snugly fits the whole machine as a carrying case, or slips more loosely over the keyboard section when you're using it in the non-laptop modes. Haven't had a chance to use it much but it seems like it will be fine. There are cutouts for most of the ports, so things are mainly still accessible with the case on.

  • Yoga Pro 2 - Display not recognized in windows (Driver or Hardware issue?)

    Out of warranty by a month!
    Yoga Pro 2 - 256gb, installed new wireless card a month ago. Windows 8.1
    The touchscreen still works while the screen is black.
    System restarted after sleep mode I think.
    The Lenovo logo is displayed, seems to load windows, but when windows loads (I don't see it load so this is an assumption) the screen blanks and the black light is on.
    I can connect an external monintor which will connect after a return from sleep mode(odd). Which then turns the backlight off.
    When on the external monitor the internal display is not even recognized by windows.
    When I boot in safe mode, the internal screen works fine with of course limited capability.
    I have reloaded display drivers from the support site.
    Right now my internal monitor is not recognized by windows and is dark, and I can use an external monitor.
    Anyone have any clues as to what my be going on? Hardware, driver etc???
    What information can I provide?
    Solved!
    Go to Solution.

    This is a pretty weird issue with conflicting observations.
    1) Screen works in Safe Mode but not in regular boot. (So, not hardware issue)
    2) Display works on external monitor in regular mode. (So, not drivers issue)
    Did you install the wireless card yourself? Did you unplug the display cable while installing the card?
    Could you re-open and check that all connections are good?
    Is the Wi-Fi card working well?
    I would also recommend a complete reset of the laptop to eliminate the possibility that this is a corrupt driver. You can use the NOVO button to reset your laptop. Make sure to make a backup on external drive for your personal files.
    Current System - Lenovo Y510P, GT755M SLI, 8GB RAM, 1TB HDD + 24GB SSD
    When your plans fail, your Real Story begins!!

  • Yoga 2 13 laptop - Windows 10 issues

    I have upgraded to windows 10 and after a few rookie win 10 issues and drivers problems I have 1 last issue to solve. same as listed up this topichttps://forums.lenovo.com/t5/Windows-10/Yoga-2-13-laptop-Windows-10-issues/td-p/2128415 - Shutdown / standby bug: computer hangs often when trying to shutdown or enter standby mode -the display goes black, but the Windows touchkey below the screen still gives vibration feedback, power light stays on and fans keep spinning loud. The solution then is to hold the power button pressed for a long time to force shutdown or wait until the battery depletes. This is noticable when I close the lid and open it later. Ive tried changing "lid close" settings to hibanate etc but it still does the same thing.

    I upgrated to Windows 10 on July 31st with my Yoga 2 13 and I only ran into two major issue and a minor issue.
    Side note: my Windows logo button on the Bezel (vibrates when you touch it and then brings up the app tiles screen) hasn't worked for some time and still doesn't work after the upgrade - anyone know if there's a software fix, driver location etc?
    Major issue 1: No internet connectivity!
    - All network devices show up as working properly and all drivers upto date.
    - No possibility for network connection not even through bluetooth sharing via mobile phone.
    I discovered one post suggesting removing all Cisco VPN connections before upgrading as removal after upgrade didn't resolve the issue.
    Fix:
    If after upgrading you have no internet connectivity, revert back to your previous windows version, uninstall all Cisco and other VPN clients then reinstall windows 10. Internet connections should work now.
    Major issue 2: I am still having issues with Cisco based VPN's not staying connected. Haven't yet investigated a fix at the moment, just dealing with it.
    Admin Edit - Microsoft released a support tip related to the VPN / Wifi issue here -  https://support.microsoft.com/en-us/kb/3084164
    Minor issue:
    - Windows 10 doesn't recognize any of the transitional modes of the yoga (as in Lenovo transitions) resulting in the keyboard and mouse being disabled only in full tablet mode. Using Window's Tablet mode button in the action center doesn't disable these inputs either. Until Lenovo comes up with an update to Transitions this could be a serious annoyance for some folks.
    Minus these annoyances the move to windows 10 hasn't been too awful. Granted I haven't had much of an opportunity to try all the software I rely on as of yet, but in the next couple weeks I'm sure I'll discover several other hicups.

  • Laptop-mode-tools/cpufrequtils Questions [SOLVED]

    I am running a Sony Vaio VGN-FW480J and am trying to optimize these two tools to save battery life and hard drive life span.   I have added @laptop-mode to my daemon array and acpi-cpufreq to modules. A few issues I immediately notice:
    1) cpufreq doesn't revert back to higher frequencies if I unplug and plug power source back in (before unplugging: CPU 0 - 800 MHz, CPU 1 - 2.00 GHz; after both are 800 and won't change if I plug power source back in)
    2) I believe the hard disk is actually spinning down more frequently (and fan is almost always on, even when no work is being done).  Here are the relevant files/the ones that I have altered.
    laptop-mode.conf
    # Configuration for Laptop Mode Tools
    # There is a "system" to the configuration setting names:
    # CONTROL_something=0/1 Determines whether Laptop Mode Tools controls
    # something
    # LM_something=value Value of "something" when laptop mode is active
    # NOLM_something=value Value of "something" when laptop mode is NOT
    # active
    # AC_something=value Value of "something" when the computer is running
    # on AC power
    # BATT_something=value Value of "something when the computer is running
    # on battery power
    # There can be combinations of LM_/NOLM_ and AC_/BATT_ prefixes, but the
    # available prefixes are different for each setting. The available ones are
    # documented in the manual page, laptop-mode.conf(8). If there is no LM_/
    # NOLM_ in a setting name, then the value is used independently of laptop
    # mode state, and similarly, if there is no AC_/BATT_, then the value is used
    # independently of power state.
    # Some options only work on ACPI systems. They are marked ACPI-ONLY.
    # Note that this configuration file is a fragment of shell script: you
    # can use all the features of the shell scripting language to achieve your
    # desired configuration.
    # Modules
    # Laptop Mode Tools modules have separate configuration files, that can be
    # found in /etc/laptop-mode/conf.d. Please look through these configuration
    # files as well, there are many useful power saving tools in there!
    # Enable/Disable laptop-mode-tools execution
    # Set it to 0 to completely disable laptop-mode-tools from running
    ENABLE_LAPTOP_MODE_TOOLS=1
    # Configuration debugging
    # Set this to 1 if you want to see a lot of information when you start/stop
    # laptop_mode.
    VERBOSE_OUTPUT=0
    # Set this to 1 if you want to log messages to syslog
    LOG_TO_SYSLOG=1
    # Run in shell debug mode
    # Enable this if you would like to execute the entire laptop-mode-tools program
    # in shell debug mode. Warning: This will create a lot of text output
    # If you are debugging an individual module, perhaps you would want to enable
    # each module specific debug mode (available in module conf files)
    DEBUG=0
    # When to enable laptop mode
    # "Laptop mode" is the mode in which laptop mode tools makes the computer
    # consume less power. This includes the kernel "laptop_mode" feature, which
    # allows your hard drives to spin down, as well as various other settings which
    # can be tweaked by laptop mode tools. You can enable or disable all of these
    # settings using the CONTROL_... options further down in this config file.
    # Enable laptop mode when on battery power.
    ENABLE_LAPTOP_MODE_ON_BATTERY=1
    # Enable laptop mode when on AC power.
    ENABLE_LAPTOP_MODE_ON_AC=1
    # Enable laptop mode when the laptop's lid is closed, even when we're on AC
    # power? (ACPI-ONLY)
    ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED=0
    # Enable all simple zero-configuration auto modules
    # This option enables all simple modules (listed below) without requiring
    # the user to enable each module individually
    # List of modules which can be automatically enabled with this setting are:
    # ac97-powersave
    # cpufreq
    # dpms-standby
    # eee-superhe
    # ethernet
    # exec-commands
    # hal-polling
    # hdparm
    # intel-hda-powersave
    # intel-sata-powermgmt
    # runtime-pm
    # sched-mc-power-savings
    # sched-smt-power-savings
    # terminal-blanking
    # usb-autosuspend
    # wireless-ipw-power
    # wireless-iwl-power
    # wireless-power
    # Set this to 1 to enable all simple zero-configuration auto modules listed above.
    # NOTE: You can explicitly enable/disable any of the above modules by changing their
    # values in the individual settings file
    ENABLE_AUTO_MODULES=1
    # When to enable data loss sensitive features
    # When data loss sensitive features are disabled, laptop mode tools acts as if
    # laptop mode were disabled, for those features only.
    # Data loss sensitive features include:
    # - laptop_mode (i.e., delayed writes)
    # - hard drive write cache
    # All of the options that follow can be set to 0 in order to prevent laptop
    # mode tools from using them to stop data loss sensitive features. Use this
    # when you have a battery that reports the wrong information, that confuses
    # laptop mode tools.
    # Disabling data loss sensitive features is ACPI-ONLY, and it only works if
    # your battery gives off frequent ACPI events to indicate a change in battery
    # level.
    # NOTE: If your battery does NOT give off battery events often enough, you can
    # enable the battery-level-polling module to make this work. Look at the
    # file /etc/laptop-mode/conf.d/battery-level-polling.conf for more information.
    # Disable all data loss sensitive features when the battery level (in % of the
    # battery capacity) reaches this value.
    MINIMUM_BATTERY_CHARGE_PERCENT=3
    # Disable data loss sensitive features when the battery reports its state
    # as "critical".
    DISABLE_LAPTOP_MODE_ON_CRITICAL_BATTERY_LEVEL=1
    # Controlled hard drives and partitions
    # For spinning down your hard drives, laptop mode will remount file systems and
    # adjust hard drive spindown timeouts. These parameters specify which
    # devices and partitions are affected by laptop mode.
    # The drives that laptop mode controls.
    # Separate them by a space, e.g. HD="/dev/hda /dev/hdb". The default is a
    # wildcard, which will get you all your IDE and SCSI/SATA drives.
    HD="/dev/[hs]d[abcdefgh]"
    # The partitions (or mount points) that laptop mode controls.
    # Separate the values by spaces. Use "auto" to indicate all partitions on drives
    # listed in HD. You can add things to "auto", e.g. "auto /dev/hdc3". You can
    # also specify mount points, e.g. "/mnt/data".
    PARTITIONS="auto /dev/mapper/*"
    # If this is enabled, laptop mode tools will assume that SCSI drives are
    # really SATA drives that only _look_ like SCSI drives, and will use hdparm
    # to control them. Set this to 0 if you have /dev/sd devices and you want
    # laptop mode tools to use the "sdparm" command to control them.
    ASSUME_SCSI_IS_SATA=1
    # Hard drive behaviour settings
    # These settings specify how laptop mode tools will adjust the various
    # parameters of your hard drives and file systems.
    # Maximum time, in seconds, of work that you are prepared to lose when your
    # system crashes or power runs out. This is the maximum time that Laptop Mode
    # will keep unsaved data waiting in memory before spinning up your hard drive.
    LM_BATT_MAX_LOST_WORK_SECONDS=600
    LM_AC_MAX_LOST_WORK_SECONDS=360
    # Should laptop mode tools control readahead?
    CONTROL_READAHEAD=1
    # Read-ahead, in kilobytes. You can spin down the disk while playing MP3/OGG
    # by setting the disk readahead to a reasonable size, e.g. 3072 (3 MB).
    # Effectively, the disk will read a complete MP3 at once, and will then spin
    # down while the MP3/OGG is playing. Don't set this too high, because the
    # readahead is applied to _all_ files that are read from disk.
    LM_READAHEAD=3072
    NOLM_READAHEAD=128
    # Should laptop mode tools add the "noatime" option to the mount options when
    # laptop mode is enabled?
    CONTROL_NOATIME=0
    # Should laptop use relatime instead of noatime? The "relatime" mount option has
    # more standards-compliant semantics, and allows more applications to work,
    # while retaining a low level of atime updates (i.e., disk writes).
    USE_RELATIME=0
    # Should laptop mode tools control the hard drive idle timeout settings?
    CONTROL_HD_IDLE_TIMEOUT=1
    # Idle timeout values. (hdparm -S)
    # Default is 2 hours on AC (NOLM_HD_IDLE_TIMEOUT_SECONDS=7200) and 20 seconds
    # for battery and for AC with laptop mode on.
    LM_AC_HD_IDLE_TIMEOUT_SECONDS=20
    LM_BATT_HD_IDLE_TIMEOUT_SECONDS=20
    NOLM_HD_IDLE_TIMEOUT_SECONDS=7200
    # Should laptop mode tools control the hard drive power management settings?
    # Set to 0 to disable
    CONTROL_HD_POWERMGMT="auto"
    # Power management for HD (hdparm -B values)
    BATT_HD_POWERMGMT=128
    LM_AC_HD_POWERMGMT=254
    NOLM_AC_HD_POWERMGMT=254
    # Should laptop mode tools control the hard drive write cache settings?
    CONTROL_HD_WRITECACHE=0
    # Write cache settings for HD (hdparm -W values)
    NOLM_AC_HD_WRITECACHE=1
    NOLM_BATT_HD_WRITECACHE=0
    LM_HD_WRITECACHE=0
    # Settings you probably don't want to touch
    # It is usually not necessary to change these parameters. They are included
    # for completeness' sake.
    # Change mount options on partitions in PARTITIONS? You don't really want to
    # disable this. If you do, then your hard drives will probably not spin down
    # anymore.
    CONTROL_MOUNT_OPTIONS=1
    # Dirty synchronous ratio. At this percentage of dirty pages the process
    # which calls write() does its own writeback.
    LM_DIRTY_RATIO=60
    NOLM_DIRTY_RATIO=40
    # Allowed dirty background ratio, in percent. Once DIRTY_RATIO has been
    # exceeded, the kernel will wake pdflush which will then reduce the amount
    # of dirty memory to dirty_background_ratio. Set this nice and low, so once
    # some writeout has commenced, we do a lot of it.
    LM_DIRTY_BACKGROUND_RATIO=1
    NOLM_DIRTY_BACKGROUND_RATIO=10
    # kernel default settings -- don't touch these unless you know what you're
    # doing.
    DEF_UPDATE=5
    DEF_XFS_AGE_BUFFER=15
    DEF_XFS_SYNC_INTERVAL=30
    DEF_XFS_BUFD_INTERVAL=1
    DEF_MAX_AGE=30
    # This must be adjusted manually to the value of HZ in the running kernel
    # on 2.4, until the XFS people change their 2.4 external interfaces to work in
    # centisecs. This can be automated, but it's a work in progress that still
    # needs some fixes. On 2.6 kernels, XFS uses USER_HZ instead of HZ for
    # external interfaces, and that is currently always set to 100. So you don't
    # need to change this on 2.6.
    XFS_HZ=100
    # Seconds laptop mode has to to wait after the disk goes idle before doing
    # a sync.
    LM_SECONDS_BEFORE_SYNC=2
    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="auto"
    # 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=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
    # 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
    battery-level-polling.conf
    # Configuration file for Laptop Mode Tools module battery-level-polling.
    # For more information, consult the laptop-mode.conf(8) manual page.
    # Battery level polling settings
    # This module allows laptop mode to react to battery level changes, even if the
    # battery does not send out frequent ACPI events for such battery level changes.
    # Note that this does NOT make ACPI-only features work on non-ACPI hardware.
    # Enable debug mode for this module
    # Set to 1 if you want to debug this module
    DEBUG=0
    # Enable this setting to enable battery level polling.
    ENABLE_BATTERY_LEVEL_POLLING=1
    hal-polling.conf
    # Configuration file for Laptop Mode Tools module hal-polling.
    # For more information, consult the laptop-mode.conf(8) manual page.
    # HAL polling settings
    # If you enable this module, laptop mode tools will control the polling of
    # your CD/DVD drives by HAL. Disabling polling saves a considerable amount of
    # power, but for some older CD/DVD drives it means that inserted CDs are no
    # longer autodetected. In such cases, you must turn this option off.
    # Alternatively, you can configure laptop mode tools to turn HAL polling on only
    # when the laptop is running on AC power. This would mean that CDs are not
    # autodetected while the laptop is running on battery power, but the power
    # savings may be worth the extra manual labour when you insert a CD.
    # Enable debug mode for this module
    # Set to 1 if you want to debug this module
    DEBUG=0
    # Control HAL polling?
    # Set to 0 to disablei, vs "auto".
    CONTROL_HAL_POLLING=0
    # Disable HAL polling on battery?
    BATT_DISABLE_HAL_POLLING=0
    # Disable HAL polling on AC?
    AC_DISABLE_HAL_POLLING=0
    # Drives to apply HAL polling settings to
    HAL_POLLING_DEVICES="/dev/scd?"
    Please let me know if you require any additional information. Thank you in advance for any help.
    Last edited by Aesir (2011-04-14 14:35:09)

    Aesir wrote:Can I make BATT_CPU_GOVERNOR=conservative even if it is not listed in the scaling_available_governors file?
    If your governor isn't listed in scaling_available_governors, it won't work.  See stqn's link for info on adding governors.
    stqn wrote:Edit2: oh well, scrolling a bit up, the wiki says you don't need to add governors if you're using laptop-mode-tools... I don't know.
    You do need governors if you're using laptop-mode-tools, because all laptop-mode-tools does is flip between them automatically.
    If you're using cpufrequtils, you'll need the userspace governor for it to work properly.  I don't use cpufrequtils personally, so I'm not sure how to get it to work in conjunction with laptop-mode-tools.  You may have to disable frequency scaling in laptop-mode-tools by changing CONTROL_CPU_FREQUENCY to 0 in cpufreq.conf
    Edit - now that I think about it, maybe laptop-mode-tools and cpufrequtils know how to load the modules themselves automatically.  I guess try it and see if they can.  You can check which governor is in use with:
    $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    You can also manually change governors by running (as root):
    #  echo "conservative" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
    Of course, substitue the governor you want.
    Last edited by redden0t8 (2011-03-29 19:27:12)

  • 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.

  • 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.

Maybe you are looking for

  • Need help in doing exercise with classes

    Here is my exercise: 1.     An object Student has: id, last name, first name, number of AAS courses and number of ESL courses in current semester and whether student uses laptop or not. The formular to calculate tuition fee: Tuition fee = AAS courses

  • USER DEFINED FIELD ERROR

    Hi, The following is the setup. 1. I defined a DBAT - ORACLE CONNECTOR and was able to provision users to it. 2. Then I defined an user defined field in OIM i.e. 2.1 added in the User defined field list in Users form - branch 2.2 Added the entry with

  • Color values keep self-adjusting

    Hello! I have my document color mode set to CMYK, and my color guide (or whatever the little checklist on the right is) is set to RGB.  For the past eight months I have been able to enter a number into the R, G, and B fields with no problems.  Now, w

  • To find the input fields for the given technichal names .

    Hi , This is for the transaction SU01. I have some technichal names for some fields in this transaction, CODVN BCODE GUIFLAG LIC_TYPE REF_USER. I want to find out the input fields in this transaction which correspond to the respective technichal name

  • Change partners (CR/SP) in Sales Document

    Hi All,          I have a requirement where I need to change the partner (forwarding agent CR/SP) in sales order if the shipping condition is manually changed in the order. Which is the best possible way to accomplish this task? I am using USEREXIT_S