Difference between revisions of "Laptop"

From ArchWiki
Jump to: navigation, search
(More tweaks: already in Power saving#Network interfaces)
Line 106: Line 106:
Documented [https://bugs.launchpad.net/ubuntu/+source/acpi-support/+bug/59695 here]
Documented [https://bugs.launchpad.net/ubuntu/+source/acpi-support/+bug/59695 here]
To prevent your laptop hard drive from spinning down too often, add the following to {{ic|/etc/udev/rules.d/75-hdparm.rules}}
To prevent your laptop hard drive from spinning down too often:
ACTION=="add", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 254 /dev/$kernel"
ACTION=="add", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 254 /dev/$kernel"
You can also set it to 255 to completely disable spinning down.  You may wish to set a lower value if you move your laptop around as lower values park the heads more often and reduce the chance of damage to your hard disk while it is being moved.  If you do not move your laptop at all when you are using it, then 255 or 254 is probably best.  If you do, then you might want to try a lower value.  A value like 128 might be a good middle-ground.
See {{ic|hdparm(8)}} for documentation of [[hdparm]] parameters. If you use [[pm-utils]], you might be interested in [[pm-utils#Having the HD power management level automatically set again on resume|these]] examples.
Add the following to {{ic|/etc/pm/sleep.d/50-hdparm_pm}}
if [ -n "$1" ] && ([ "$1" = "resume" ] || [ "$1" = "thaw" ]); then
hdparm -B 254 /dev/your-hard-drive > /dev/null
and run {{ic|chmod +x /etc/pm/sleep.d/50-hdparm_pm}} to make sure it resets after suspend.  Again, you can change the value 254 as you see fit.
Now the APM level should be set for your hard drive.
For some laptops, the option -S to hdparm can also be relevant (sets the spindown time for the drive). Note that all these options can also be configured using the [[Laptop_Mode_Tools | laptop-mode tools]].  This will allow you to set a high value when on AC and a lower value when you are running on battery power.
=== Using a script and an udev rule ===
=== Using a script and an udev rule ===

Revision as of 14:34, 26 June 2013


Setting up for laptops

This page should contain links to pages needed for configuring a laptop for the best experience. Setting up a laptop is in many ways the same as setting up a desktop. However, there are a few key differences. When setting up a laptop with Arch Linux, the following points should be taken into consideration:

  • #Power management Power Management for laptops refers to optimizing the system to last as long as possible on a single battery charge. This can be accomplished by a variety of tweaks.
    • #Suspend and Hibernate : the operating system can be manually suspended either to memory or to disk, allowing for an (almost) complete shutdown of other hardware.
    • Hard drive spindown : the system can be configured to automatically turn off the hard disk after a specified interval of inactivity.
    • Screen shut off : the laptop screen can be configured to automatically turn off after a specified interval of inactivity (not just blanked with a screensaver but completely shut off).
    • CPU frequency scaling : the processor(s) can be configured to automatically step down to a lower frequency at lower loads.

All of these points are important to take into consideration when getting a laptop set up the way you like. Fortunately, Arch Linux provides all the tools and programs necessary to take complete control of your laptop. These programs and utilities are highlighted below, with appropriate tips tutorials.

Power management

Power management is very important for anyone who wishes to make good use of their battery capacity. The following tools and programs help to increase battery life and keep your laptop cool and quiet.

Battery state

Reading battery state can be done in multiple ways. Classical method is some daemon periodically polling battery level using ACPI interface. On some systems, battery sends events to udev whenever it (dis)charges by 1%, this event can be connected to some action using udev rule.


Battery state can be read using ACPI utilities from the terminal. ACPI command line utilities are provided via the acpi package. See ACPI modules for more information.

  • batterymon-cloneAUR is a simple battery monitor that sits in the system tray.
  • batti is a simple battery monitor for the system tray, similar to batterymon-clone. Unlike the latter batti uses UPower, and if that is missing DeviceKit.Power, for it's power information.

Udev events

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Describe way to check if the events are sent. (Discuss in Talk:Laptop#)

If your battery sends events to udev whenever it (dis)charges by 1%, you can use this udev rule to automatically suspend the system when battery level is critical, and thus prevent all unsaved work from being lost.

# Suspend the system when battery level drops to 2%
SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="2", RUN+="/usr/bin/systemctl suspend"

Likewise, the rule can be customized to perform other action on different status.

Suspend and Hibernate

Manually suspending the operating system, either to memory (standby) or to disk (hibernate) sometimes provides the most efficient way to optimize battery life, depending on the usage pattern of the laptop.

See Suspend to RAM for more information.

Power saving

Merge-arrows-2.pngThis article or section is a candidate for merging with Power saving.Merge-arrows-2.png

Notes: describes the same topic more generally (Discuss in Talk:Laptop#)

See the main article, power saving.

Automatic tweaks for battery life

As opposed to manually initiated actions like suspend/hibernate, a number of tweaks can be made to prolong the battery life of the laptop under low/idle usage.

  • CPU Frequency Scaling is a technology used primarily by notebooks which enables the OS to scale the CPU frequency up or down, depending on the current system load and/or power scheme.
  • Laptop Mode Tools provides a comprehensive suite of tools to tweak a large number of power saving settings through well documented configuration files.
  • Powertop is a handy utility from Intel that displays which hardware/processes are using the most power on your system, and provides instructions on how to stop or remove power-wasting services. Works great for mobile Intel CPUs; provides the current CPU state and suggestions for power saving. Also works on AMD systems, but does not provide as much information about the CPU state.
  • TLP is a power management tool that provides all the latest tweaks to save battery power without the need for elaborated configuration (nonetheless it is highly configurable).

The following options are specific to certain laptop types:

  • Lapsus is a set of programs providing easy access to many features of various laptops. It currently supports most features provided by asus-laptop kernel module from ACPI4Asus project, such as additional LEDs, hotkeys, backlight control etc. It also has support for some IBM laptops features provided by IBM ThinkPad ACPI Extras Driver and NVRAM device.
  • Battery tweaks for ThinkPads can be found in TLP and the tp_smapi article.


Tango-edit-cut.pngThis section is being considered for removal.Tango-edit-cut.png

Reason: I think this script is quite useless, enabling power-save mode on the interface should be enough. This is described in Power saving#Network interfaces, so I think this section can be deleted. (Discuss in Talk:Laptop#)

When working on your notebook/laptop without wireless access, here is a little script for your system startup that turns off your WLAN-Hardware to keep it from wasting power searching for an Access Point:

Note: Edit if wlp2s0 is not your WLAN-device.
 essid="$(iwconfig wlp2s0 | grep ESSID | awk {'print $4'})"
 	if [ "$essid" == "ESSID:off/any" ] ; then
 		sudo iwconfig wlp2s0 txpower off

Start the script according to your DE/WM options by sleep xx && /path/to/script depending on how long it usually takes to connect to your Access Point, 60 seconds are a good default value. It checks if you're connected, turning off the device if not. # iwconfig wlp2s0 txpower on brings it back up, as well as a reboot.

Tip: It may also be prudent to prevent your wireless interface from starting at boot if it is not used often.

Disk-related tweaks

You might want to use the noatime option, see Fstab#atime options for more information.

To allow the CD/DVD rom to spin down after a while using udisks:

# udisks --inhibit-polling /dev/sr0

Hard drive spin down problem

Documented here

To prevent your laptop hard drive from spinning down too often:

ACTION=="add", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 254 /dev/$kernel"

See hdparm(8) for documentation of hdparm parameters. If you use pm-utils, you might be interested in these examples.

Using a script and an udev rule

Since systemd users can suspend and hibernate through systemctl suspend or systemctl hibernate and handle acpi events with /etc/systemd/logind.conf, it might be interesting to remove pm-utils and acpid. Now, there's just one thing systemd can't do (at this time of writing): powermanagement, depending on whether the system is running on AC or battery. To fill this gap, one can create a single udev rule that launches a script when the laptop is unplugged and plugged:

SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/path/to/your/script true"
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/path/to/your/script false"
Note: One can use the same script that pm-powersave uses. You just have to make it executable and place it somewhere else (for example, /usr/bin).

Examples of powersave scripts can be found here: [1] (or in aur: powerdownAUR), here: [2] and there: [3].

The above udev rule should work as expected, but if your power settings aren't updated after a suspend or hibernate cycle, you should add a script in /usr/lib/systemd/system-sleep/ with the following contents:


case $1 in
    pre) /path/to/your/script false ;;
	if cat /sys/class/power_supply/AC0/online | grep 0 > /dev/null 2>&1
    		/path/to/your/script true	
    		/path/to/your/script false
exit 0

Don't forget to make it executable!

Note: Be aware that AC0 may be different for your laptop, change it if that is the case.

Now you don't need pm-utils anymore. Depending on your configuration, it may be a dependency of some other package. If you wish to remove it anyway, run pacman -Rdd pm-utils.

Screen brightness

See Backlight.


To get your touchpad working properly, see the Touchpad Synaptics page. Note that your laptop may have an ALPS touchpad (such as the DELL Inspiron 6000), and not a Synaptics touchpad. In either case, see the link above.

Hard disk shock protection

There are several laptops from different vendors featuring shock protection capabilities. As manufacturers have refused to support open source development of the required software components so far, Linux support for shock protection varies considerably between different hardware implementations.

Currently, two projects, named HDAPS and hpfall, support this kind of protection. HDAPS is for IBM/Lenovo Thinkpads and hpfall for HP/Compaq laptops

Just Check Hard Disk Active Protection System. hpfallAUR can be installed from the AUR.

Network time syncing

For a laptop, it may be a good idea to use Chrony as an alternative to NTPd to sync your clock over the network. Chrony is designed to work well even on systems with no permanent network connection (such as laptops), and is capable of much faster time synchronisation than standard ntp. Chrony has several advantages when used in systems running on virtual machines, such as a larger range for frequency correction to help correct quickly drifting clocks, and better response to rapid changes in the clock frequency. It also has a smaller memory footprint and no unnecessary process wakeups, improving power efficiency.

See also