Lines 5-11
Link Here
|
5 |
<title>Power Management Guide</title> |
5 |
<title>Power Management Guide</title> |
6 |
|
6 |
|
7 |
<author title="Author"> |
7 |
<author title="Author"> |
8 |
<mail link="fragfred@gmx.de">Dennis Nienhüser</mail> |
8 |
<mail link="fragfred@gmx.de">Dennis Nienhüser</mail> |
9 |
</author> |
9 |
</author> |
10 |
|
10 |
|
11 |
<abstract> |
11 |
<abstract> |
Lines 17-24
Link Here
|
17 |
<!-- See http://creativecommons.org/licenses/by-sa/2.0 --> |
17 |
<!-- See http://creativecommons.org/licenses/by-sa/2.0 --> |
18 |
<license/> |
18 |
<license/> |
19 |
|
19 |
|
20 |
<version>1.17</version> |
20 |
<version>1.18</version> |
21 |
<date>October 10, 2004</date> |
21 |
<date>January 02, 2005</date> |
22 |
|
22 |
|
23 |
<chapter> |
23 |
<chapter> |
24 |
<title>Introduction</title> |
24 |
<title>Introduction</title> |
Lines 164-178
Link Here
|
164 |
Default CPUFreq governor (userspace) |
164 |
Default CPUFreq governor (userspace) |
165 |
<*> 'performance' governor |
165 |
<*> 'performance' governor |
166 |
<*> 'powersave' governor |
166 |
<*> 'powersave' governor |
|
|
167 |
<*> 'ondemand' cpufreq policy governor |
167 |
<*> CPU frequency table helpers |
168 |
<*> CPU frequency table helpers |
168 |
<M> ACPI Processor P-States driver |
169 |
<M> ACPI Processor P-States driver |
169 |
<*> <i>CPUFreq driver for your processor</i> |
170 |
<*> <i>CPUFreq driver for your processor</i> |
170 |
</pre> |
171 |
</pre> |
171 |
|
172 |
|
172 |
<p> |
173 |
<p> |
173 |
Decide yourself whether you want to enable Software Suspend, Suspend-to-Disk |
174 |
Decide yourself whether you want to enable Software Suspend, Suspend-to-Disk and |
174 |
and Sleep States (see below). If you own an ASUS, Medion or Toshiba laptop, |
175 |
Sleep States (see below). If you own an ASUS, Medion or Toshiba laptop, enable |
175 |
enable the appropriate section. |
176 |
the appropriate section. Recent kernel versions (2.6.9 and later) include an |
|
|
177 |
<e>'ondemand' governor</e> for CPU Frequency Scaling, activate it as well when |
178 |
using such a kernel. |
179 |
</p> |
180 |
|
181 |
<p> |
182 |
The kernel has to know how to enable CPU frequency scaling on your processor. As |
183 |
each type of CPU has a different interface, you've got to choose the right |
184 |
driver for your processor. Be careful here - enabling <e>Intel Pentium 4 clock |
185 |
modulation</e> on a Pentium M system will lead to strange results for example. |
186 |
Consult the kernel documentation if you're unsure which one to take. |
176 |
</p> |
187 |
</p> |
177 |
|
188 |
|
178 |
<p> |
189 |
<p> |
Lines 230-299
Link Here
|
230 |
|
241 |
|
231 |
<p> |
242 |
<p> |
232 |
Typical ACPI events are closing the lid, changing the power source or pressing |
243 |
Typical ACPI events are closing the lid, changing the power source or pressing |
233 |
the sleep button. Every acpi event recognized by the kernel is catched by acpid |
244 |
the sleep button. An important event is changing the power source, which should |
234 |
which calls <path>/etc/acpi/default.sh</path>. Here is a basic modification |
245 |
cause a runlevel switch. This can be done with a script which gets called from |
235 |
supporting runlevel switching: |
246 |
acpid. The script needs the package <c>sys-apps/powermgmt-base</c>, so let's |
236 |
</p> |
247 |
first install that. You may have to unmask powermgmt-base, see the Gentoo |
237 |
|
248 |
Handbook for details on how to do that. |
238 |
<pre caption="Event driven runlevel switching with acpid"> |
249 |
</p> |
239 |
#!/bin/sh |
250 |
|
240 |
|
251 |
<pre caption="Emerging dependency powermgmt-base"> |
241 |
set $* |
252 |
<i># emerge powermgmt-base</i> |
242 |
|
253 |
</pre> |
243 |
group=${1/\/*/} |
254 |
|
244 |
action=${1/*\//} |
255 |
<p> |
245 |
|
256 |
Create the following files to switch between <e>default</e> |
246 |
<comment># runlevel to use in AC mode</comment> |
257 |
and <e>battery</e> runlevel depending on the power source: |
247 |
RLVL_AC="default" |
258 |
</p> |
248 |
<comment># runlevel to use in battery mode</comment> |
259 |
|
249 |
RLVL_BATTERY="battery" |
260 |
<pre caption="/etc/acpi/switch_runlevel.conf"> |
250 |
|
261 |
#!/bin/bash |
251 |
<comment># file indicating the AC state. Verify the filename before using</comment> |
262 |
|
252 |
AC_STATE="/proc/acpi/ac_adapter/AC/state" |
263 |
# This runlevel will be used in AC mode |
253 |
<comment># this string means running on AC</comment> |
264 |
#RUNLEVEL_AC="default" |
254 |
AC_ON="on-line" |
265 |
|
255 |
<comment># this string means running on batteries</comment> |
266 |
# This runlevel will be used in battery mode |
256 |
AC_OFF="off-line" |
267 |
#RUNLEVEL_BATTERY="battery" |
|
|
268 |
</pre> |
269 |
|
270 |
<pre caption="/etc/acpi/switch_runlevel.sh"> |
271 |
#!/bin/bash |
272 |
|
273 |
RUNLEVEL_AC="default" |
274 |
RUNLEVEL_BATTERY="battery" |
275 |
|
276 |
source /etc/acpi/switch_runlevel.conf |
257 |
|
277 |
|
258 |
function SwitchRunlevel() { |
278 |
function SwitchRunlevel() { |
259 |
if [[ "$(grep ${AC_OFF} ${AC_STATE})" != "" && "$(cat /var/lib/init.d/softlevel)" != "${RLVL_BATTERY}" ]] |
279 |
|
|
|
280 |
if [ ! -d "/etc/runlevels/${RUNLEVEL_AC}" ] |
281 |
then |
282 |
logger "${0}: Runlevel ${RUNLEVEL_AC} does not exist. Aborting." |
283 |
exit 1 |
284 |
fi |
285 |
|
286 |
|
287 |
if [ ! -d "/etc/runlevels/${RUNLEVEL_BATTERY}" ] |
288 |
then |
289 |
logger "${0}: Runlevel ${RUNLEVEL_BATTERY} does not exist. Aborting." |
290 |
exit 1 |
291 |
fi |
292 |
|
293 |
if on_ac_power |
294 |
then if [[ "$(cat /var/lib/init.d/softlevel)" != "${RUNLEVEL_AC}" ]] |
260 |
then |
295 |
then |
261 |
logger "Switching to ${RLVL_BATTERY} runlevel" |
296 |
logger "Switching to ${RUNLEVEL_AC} runlevel" |
262 |
/sbin/rc ${RLVL_BATTERY} |
297 |
/sbin/rc ${RUNLEVEL_AC} |
263 |
elif [[ "$(grep ${AC_ON} ${AC_STATE})" != "" && "$(cat /var/lib/init.d/softlevel)" != "${RLVL_AC}" ]] |
298 |
fi |
|
|
299 |
elif [[ "$(cat /var/lib/init.d/softlevel)" != "${RUNLEVEL_BATTERY}" ]] |
264 |
then |
300 |
then |
265 |
logger "Switching to ${RLVL_AC} runlevel" |
301 |
logger "Switching to ${RUNLEVEL_BATTERY} runlevel" |
266 |
/sbin/rc ${RLVL_AC} |
302 |
/sbin/rc ${RUNLEVEL_BATTERY} |
267 |
fi |
303 |
fi |
268 |
} |
304 |
} |
|
|
305 |
</pre> |
306 |
|
307 |
<pre caption="/etc/acpi/events/pmg_ac_adapter"> |
308 |
event=ac_adapter.* |
309 |
action=/etc/acpi/actions/pmg_ac_adapter.sh %e |
310 |
</pre> |
311 |
|
312 |
<pre caption="/etc/acpi/events/pmg_battery"> |
313 |
event=battery.* |
314 |
action=/etc/acpi/actions/pmg_battery.sh %e |
315 |
</pre> |
316 |
|
317 |
<pre caption="/etc/acpi/actions/pmg_ac_adapter.sh"> |
318 |
#!/bin/bash |
269 |
|
319 |
|
|
|
320 |
source /etc/acpi/switch_runlevel.sh |
321 |
SwitchRunlevel |
322 |
</pre> |
323 |
|
324 |
<pre caption="/etc/acpi/actions/pmg_battery.sh"> |
325 |
#!/bin/bash |
326 |
|
327 |
source /etc/acpi/switch_runlevel.sh |
328 |
SwitchRunlevel |
329 |
</pre> |
330 |
|
331 |
<p> |
332 |
Some of these files must be executable. Last not least restart acpid to have |
333 |
it recognize the changes. |
334 |
</p> |
270 |
|
335 |
|
271 |
case "$group" in |
336 |
<pre caption="Finishing runlevel switching with acpid"> |
272 |
battery) |
337 |
<i># chmod +x /etc/acpi/switch_runlevel.sh</i> |
273 |
case "$action" in |
338 |
<i># chmod +x /etc/acpi/actions/pmg_*</i> |
274 |
battery) |
339 |
<i># /etc/init.d/acpid restart</i> |
275 |
SwitchRunlevel |
|
|
276 |
;; |
277 |
*) |
278 |
logger "ACPI group battery / action $action is not defined" |
279 |
;; |
280 |
esac |
281 |
;; |
282 |
|
283 |
ac_adapter) |
284 |
case "$action" in |
285 |
ac_adapter) |
286 |
SwitchRunlevel |
287 |
;; |
288 |
*) |
289 |
logger "ACPI group ac_adapter / action $action is not defined" |
290 |
;; |
291 |
esac |
292 |
;; |
293 |
*) |
294 |
logger "ACPI group $group / action $action is not defined" |
295 |
;; |
296 |
esac |
297 |
</pre> |
340 |
</pre> |
298 |
|
341 |
|
299 |
<p> |
342 |
<p> |
Lines 304-310
Link Here
|
304 |
<p> |
347 |
<p> |
305 |
Due to the nature of the event mechanism, your laptop will boot into runlevel |
348 |
Due to the nature of the event mechanism, your laptop will boot into runlevel |
306 |
<e>default</e> regardless of the AC/battery state. You can add another entry |
349 |
<e>default</e> regardless of the AC/battery state. You can add another entry |
307 |
to the boot loader with <c>softlevel=boot</c>, but it's likely to forget |
350 |
to the boot loader with <c>softlevel=battery</c>, but it's likely to forget |
308 |
choosing it. A better way is faking an ACPI event in the end of the boot |
351 |
choosing it. A better way is faking an ACPI event in the end of the boot |
309 |
process and let the <path>/etc/acpi/default.sh</path> script decide whether a |
352 |
process and let the <path>/etc/acpi/default.sh</path> script decide whether a |
310 |
runlevel change is necessary. Open <path>/etc/conf.d/local.start</path> in your |
353 |
runlevel change is necessary. Open <path>/etc/conf.d/local.start</path> in your |
Lines 313-319
Link Here
|
313 |
|
356 |
|
314 |
<pre caption="Runlevel switch at boot time by editing local.start"> |
357 |
<pre caption="Runlevel switch at boot time by editing local.start"> |
315 |
<comment># Fake acpi event to switch runlevel if running on batteries</comment> |
358 |
<comment># Fake acpi event to switch runlevel if running on batteries</comment> |
316 |
/etc/acpi/default.sh "battery/battery" |
359 |
/etc/acpi/actions/pmg_battery.sh "battery/battery" |
317 |
</pre> |
360 |
</pre> |
318 |
|
361 |
|
319 |
<p> |
362 |
<p> |
Lines 328-333
Link Here
|
328 |
<chapter> |
371 |
<chapter> |
329 |
<title>CPU Power Management</title> |
372 |
<title>CPU Power Management</title> |
330 |
<section> |
373 |
<section> |
|
|
374 |
<title>Some technical terms</title> |
375 |
<body> |
376 |
|
377 |
<p> |
378 |
CPU frequency scaling brings up some technical terms that might be unknown to |
379 |
you. Here's a quick introduction. |
380 |
</p> |
381 |
|
382 |
<p> |
383 |
First of all, the kernel has to be able to change the processor's frequency. The |
384 |
<e>CPUfreq processor driver</e> knows the commands to do it on your CPU. Thus |
385 |
it's important to choose the right one in your kernel. You should already have |
386 |
done it above. Once the kernel knows how to change frequencies, it has to know |
387 |
which frequency it should set. This is done according to the <e>policy</e> which |
388 |
consists of <e>CPUfreq policy</e> and a <e>governor</e>. A CPUfreq policy are |
389 |
just two numbers which define a range the frequency has to stay between - |
390 |
minimal and maximal frequency. The governor now decides which of the available |
391 |
frequencies in between minimal and maximal frequency to choose. For example, the |
392 |
<e>powersave governor</e> always chooses the lowest frequency available, the |
393 |
<e>performance governor</e> the highest one. The <e>userspace governor</e> makes |
394 |
no decision but chooses whatever the user (or a program in userspace) wants - |
395 |
which means it reads the frequency from |
396 |
<path>/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed</path>. |
397 |
</p> |
398 |
|
399 |
<p> |
400 |
This doesn't sound like dynamic frequency changes yet and in fact it isn't. |
401 |
Dynamics however can be accomplished with various approaches. For example, |
402 |
the <e>ondemand governor</e> makes its decisions depending on the current CPU |
403 |
load. The same is done by various userland tools like <c>cpudyn</c>, |
404 |
<c>speedfreq</c>, <c>powernowd</c> and many more. ACPI events can be used to |
405 |
enable or disable dynamic frequency changes depending on power source. |
406 |
</p> |
407 |
|
408 |
</body> |
409 |
</section> |
410 |
<section> |
331 |
<title>Setting the frequency manually</title> |
411 |
<title>Setting the frequency manually</title> |
332 |
<body> |
412 |
<body> |
333 |
|
413 |
|
Lines 394-432
Link Here
|
394 |
|
474 |
|
395 |
<p> |
475 |
<p> |
396 |
The above is quite nice, but not doable in daily life. Better let your system |
476 |
The above is quite nice, but not doable in daily life. Better let your system |
397 |
set the appropriate frequency automatically. A couple of user space programs |
477 |
set the appropriate frequency automatically. There are many different approaches |
398 |
like to do it for you. The following table gives a quick overview to help you |
478 |
to do this. The following table gives a quick overview to help you decide on one |
399 |
decide on one of them. |
479 |
of them. It's roughly seperated in three categories <e>kernel</e> for approaches |
|
|
480 |
that only need kernel support, <e>daemon</e> for programs that run in the |
481 |
background and <e>graphical</e> for programs that provide a GUI for easy |
482 |
configuration and changes. |
400 |
</p> |
483 |
</p> |
401 |
|
484 |
|
402 |
<table> |
485 |
<table> |
403 |
<tr> |
486 |
<tr> |
404 |
<th>Name</th> |
487 |
<th>Name</th> |
405 |
<th>Pro</th> |
488 |
<th>Category</th> |
406 |
<th>Con</th> |
489 |
<th>Switch decision</th> |
|
|
490 |
<th>Kernel governors</th> |
491 |
<th>Further governors</th> |
492 |
<th>Comments</th> |
493 |
</tr> |
494 |
<tr> |
495 |
<ti>'ondemand' governor</ti> |
496 |
<ti>Kernel</ti> |
497 |
<ti>CPU load</ti> |
498 |
<ti>N.A.</ti> |
499 |
<ti>N.A.</ti> |
500 |
<ti> |
501 |
Further tuning through files in |
502 |
<path>/sys/devices/system/cpu/cpu0/cpufreq/ondemand/</path>. Still requires |
503 |
userland tools (programs, scripts) if governor switching or similar is |
504 |
desired. |
505 |
</ti> |
407 |
</tr> |
506 |
</tr> |
408 |
<tr> |
507 |
<tr> |
409 |
<ti><uri link="http://mnm.uib.es/~gallir/cpudyn/">cpudyn</uri></ti> |
508 |
<ti><uri link="http://mnm.uib.es/~gallir/cpudyn/">cpudyn</uri></ti> |
410 |
<ti>Also supports disk standby</ti> |
509 |
<ti>Daemon</ti> |
411 |
<ti></ti> |
510 |
<ti>CPU load</ti> |
|
|
511 |
<ti>None</ti> |
512 |
<ti>Dynamic</ti> |
513 |
<ti> |
514 |
Also supports disk standby - notice however that <e>laptop mode</e> in most |
515 |
cases will do a better job. |
516 |
</ti> |
412 |
</tr> |
517 |
</tr> |
413 |
<tr> |
518 |
<tr> |
414 |
<ti><uri link="http://sourceforge.net/projects/cpufreqd/">cpufreq</uri></ti> |
519 |
<ti><uri link="http://sourceforge.net/projects/cpufreqd/">cpufreqd</uri></ti> |
415 |
<ti>Sophisticated setup possible</ti> |
520 |
<ti>Daemon</ti> |
416 |
<ti>Complicated setup</ti> |
521 |
<ti>Battery state, CPU load, running programs</ti> |
|
|
522 |
<ti>All available</ti> |
523 |
<ti>None</ti> |
524 |
<ti> |
525 |
Sophisticated (but also complicated) setup. An optimal configuration |
526 |
requires detailed knowledge of your system. |
527 |
</ti> |
528 |
</tr> |
529 |
<tr> |
530 |
<ti> |
531 |
<uri link="http://www.deater.net/john/powernowd.html">powernowd</uri> |
532 |
</ti> |
533 |
<ti>Daemon</ti> |
534 |
<ti>CPU load</ti> |
535 |
<ti>None</ti> |
536 |
<ti>Passive, sine, aggressive</ti> |
537 |
<ti> |
538 |
Supports SMP. |
539 |
</ti> |
417 |
</tr> |
540 |
</tr> |
418 |
<tr> |
541 |
<tr> |
419 |
<ti><uri link="http://www.goop.org/~jeremy/speedfreq/">speedfreq</uri></ti> |
542 |
<ti><uri link="http://www.goop.org/~jeremy/speedfreq/">speedfreq</uri></ti> |
|
|
543 |
<ti>Daemon</ti> |
544 |
<ti>CPU load</ti> |
545 |
<ti>None</ti> |
546 |
<ti>Dynamic, powersave, performance, fixed speed</ti> |
547 |
<ti> |
548 |
Small yet powerful with an useful client/server interface. Requires a 2.6 |
549 |
kernel. |
550 |
</ti> |
551 |
</tr> |
552 |
<tr> |
553 |
<ti><uri link="http://cpuspeedy.sourceforge.net/">gtk-cpuspeedy</uri></ti> |
554 |
<ti>Graphical</ti> |
555 |
<ti>None</ti> |
556 |
<ti>None</ti> |
557 |
<ti>None</ti> |
420 |
<ti> |
558 |
<ti> |
421 |
Small yet powerful<br /> |
559 |
Gnome application, a graphical tool to set CPU frequency manually. It does |
422 |
Useful client/server interface |
560 |
not offer any automation and is mainly listed for the sake of completeness. |
423 |
</ti> |
561 |
</ti> |
424 |
<ti>Kernel 2.6 series only</ti> |
|
|
425 |
</tr> |
562 |
</tr> |
426 |
<tr> |
563 |
<tr> |
427 |
<ti><uri link="http://www.deater.net/john/powernowd.html">powernowd</uri></ti> |
564 |
<ti>klaptopdaemon</ti> |
428 |
<ti>Supports SMP</ti> |
565 |
<ti>Graphical</ti> |
429 |
<ti></ti> |
566 |
<ti>Battery state</ti> |
|
|
567 |
<ti>All available</ti> |
568 |
<ti>None</ti> |
569 |
<ti> |
570 |
KDE only, 'ondemand' governor required for dynamic frequency scaling. |
571 |
</ti> |
430 |
</tr> |
572 |
</tr> |
431 |
</table> |
573 |
</table> |
432 |
|
574 |
|
Lines 458-470
Link Here
|
458 |
</pre> |
600 |
</pre> |
459 |
|
601 |
|
460 |
<p> |
602 |
<p> |
461 |
Setting up cpufreq is a little bit more complicated. |
603 |
Setting up cpufreqd is a little bit more complicated. |
462 |
</p> |
604 |
</p> |
463 |
|
605 |
|
464 |
<warn> |
606 |
<warn> |
465 |
Do not run more than one of the above programs at the same time. It may cause |
607 |
Do not run more than one of the above programs at the same time. It may cause |
466 |
confusion like switching between two frequencies all the time. If you just |
608 |
confusion like switching between two frequencies all the time. If you just |
467 |
installed speedfreq, skip cpufreq now. |
609 |
installed speedfreq, skip cpufreqd now. |
468 |
</warn> |
610 |
</warn> |
469 |
|
611 |
|
470 |
<pre caption="Installing cpufreqd"> |
612 |
<pre caption="Installing cpufreqd"> |
Lines 548-556
Link Here
|
548 |
<c>speedfreq</c>. |
690 |
<c>speedfreq</c>. |
549 |
</p> |
691 |
</p> |
550 |
|
692 |
|
|
|
693 |
</body> |
694 |
</section> |
695 |
|
696 |
<section> |
697 |
<title>Verifying the result</title> |
698 |
|
699 |
<body> |
700 |
|
551 |
<p> |
701 |
<p> |
552 |
The last thing to check is that your new policies do a good job. An easy way to |
702 |
The last thing to check is that your new policies do a good job. An easy way to |
553 |
do so is monitoring the CPU speed while working with your laptop: |
703 |
do so is monitoring CPU speed while working with your laptop: |
554 |
</p> |
704 |
</p> |
555 |
|
705 |
|
556 |
<pre caption="Monitoring CPU speed"> |
706 |
<pre caption="Monitoring CPU speed"> |
Lines 692-697
Link Here
|
692 |
</p> |
842 |
</p> |
693 |
|
843 |
|
694 |
<pre caption="Automate disk standby settings"> |
844 |
<pre caption="Automate disk standby settings"> |
|
|
845 |
# <i>chmod +x /etc/init.d/pm.hda</i> |
695 |
# <i>/sbin/depscan.sh</i> |
846 |
# <i>/sbin/depscan.sh</i> |
696 |
# <i>rc-update add pm.hda battery</i> |
847 |
# <i>rc-update add pm.hda battery</i> |
697 |
</pre> |
848 |
</pre> |
Lines 715-739
Link Here
|
715 |
</p> |
866 |
</p> |
716 |
|
867 |
|
717 |
<p> |
868 |
<p> |
718 |
<!-- FIXME: bug #45593 --> |
869 |
<!-- TODO: bug #45593 --> |
719 |
To start and stop laptop-mode, create a script /etc/init.d/laptop-mode. You can |
870 |
Besides kernel support you also need a script that controls starting and |
720 |
take the one included in |
871 |
stopping of laptop-mode. You kernel documentation in |
721 |
<path>/usr/src/linux/Documentation/laptop-mode.txt</path>. Onces it's ready, |
872 |
<path>/usr/src/linux/Documentation/laptop-mode.txt</path> contains one as well |
722 |
make sure it gets called. |
873 |
as the package <c>laptop-mode-tools</c>. None of them is easy to install |
|
|
874 |
though. |
723 |
</p> |
875 |
</p> |
724 |
|
876 |
|
725 |
<pre caption="Automatic start of laptop-mode"> |
877 |
<p> |
726 |
# <i>rc-update add laptop-mode battery</i> |
878 |
Ebuilds for laptop-mode-tools are not in Portage, because Gentoo developers |
727 |
</pre> |
879 |
don't think they are production ready yet. Take that into consideration |
|
|
880 |
before using the ebuilds which can be found in <uri |
881 |
link="http://bugs.gentoo.org/show_bug.cgi?id=45593">Bugzilla</uri>. The Gentoo |
882 |
Handbook tells you how to use external ebuilds if you don't know where to put |
883 |
them. Once your PORTDIR_OVERLAY contains the ebuilds, install the |
884 |
script: |
885 |
</p> |
728 |
|
886 |
|
729 |
<warn> |
887 |
<warn> |
730 |
Once again: Be careful with sleep/spin down settings of your hard drive. |
888 |
This package is not seen as production ready and installing custom ebuilds from |
731 |
Setting it to small values might wear out your drive and lose warranty. Be sure |
889 |
Bugzilla is not recommended. Please don't use laptop-mode-tools if you're |
732 |
to read the documentation in laptop-mode.txt. Make sure to stop laptop-mode |
890 |
unsure. |
733 |
before your battery runs out of power and data gets written to disk - otherwise |
|
|
734 |
you will at least lose the last 10 minutes of your work. |
735 |
</warn> |
891 |
</warn> |
736 |
|
892 |
|
|
|
893 |
<pre caption="Automated start of laptop-mode"> |
894 |
# <i>emerge laptop-mode-tools</i> |
895 |
</pre> |
896 |
|
897 |
<p> |
898 |
<c>laptop-mode-tools</c> has it's configuration file in |
899 |
<path>/etc/laptop-mode/laptop-mode.conf</path>. Adjust it the way you like it, |
900 |
it's well commented. If you have <e>apm</e> or <e>acpi</e> in your USE flags, |
901 |
laptop-mode will be started automatically in battery mode. Otherwise you can |
902 |
automate it by running <c>rc-update add laptop-mode battery</c>. |
903 |
</p> |
904 |
|
737 |
</body> |
905 |
</body> |
738 |
</section> |
906 |
</section> |
739 |
<section> |
907 |
<section> |
Lines 823-828
Link Here
|
823 |
is a good starting point to save even more energy. |
991 |
is a good starting point to save even more energy. |
824 |
</p> |
992 |
</p> |
825 |
|
993 |
|
|
|
994 |
<pre caption="Power Management for WLAN"> |
995 |
# <i>chmod +x /etc/init.d/pm.wlan0</i> |
996 |
# <i>/sbin/depscan.sh</i> |
997 |
# <i>rc-update add pm.wlan0 battery</i> |
998 |
</pre> |
999 |
|
826 |
</body> |
1000 |
</body> |
827 |
</section> |
1001 |
</section> |
828 |
<section> |
1002 |
<section> |
Lines 948-964
Link Here
|
948 |
# <i>echo 3 > /proc/acpi/sleep</i> <comment>(sleep)</comment> |
1122 |
# <i>echo 3 > /proc/acpi/sleep</i> <comment>(sleep)</comment> |
949 |
|
1123 |
|
950 |
<comment>(kernel 2.6 series)</comment> |
1124 |
<comment>(kernel 2.6 series)</comment> |
951 |
# <i>echo -n standby > /sys/power/state</i> <comment>standby</comment> |
1125 |
# <i>echo -n standby > /sys/power/state</i> <comment>(standby)</comment> |
952 |
# <i>echo -n mem > /sys/power/state</i> <comment>sleep</comment> |
1126 |
# <i>echo -n mem > /sys/power/state</i> <comment>(sleep)</comment> |
953 |
|
1127 |
|
954 |
<comment>(swsusp)</comment> |
1128 |
<comment>(swsusp)</comment> |
955 |
# <i>echo 4 > /proc/acpi/sleep</i> <comment>hibernate</comment> |
1129 |
# <i>echo 4 > /proc/acpi/sleep</i> <comment>(hibernate)</comment> |
956 |
|
1130 |
|
957 |
<comment>(Suspend-to-Disk)</comment> |
1131 |
<comment>(Suspend-to-Disk)</comment> |
958 |
# <i>echo -n disk > /sys/power/state</i> <comment>hibernate</comment> |
1132 |
# <i>echo -n disk > /sys/power/state</i> <comment>(hibernate)</comment> |
959 |
|
1133 |
|
960 |
<comment>(swsusp2)</comment> |
1134 |
<comment>(swsusp2)</comment> |
961 |
# <i>echo > /proc/swsusp/activate</i> |
1135 |
# <i>/usr/sbin/hibernate</i> <comment>(hibernate, see below)</comment> |
962 |
</pre> |
1136 |
</pre> |
963 |
|
1137 |
|
964 |
<warn> |
1138 |
<warn> |
Lines 976-987
Link Here
|
976 |
<p> |
1150 |
<p> |
977 |
While the above should be sufficient to get swsusp and Suspend-to-Disk running |
1151 |
While the above should be sufficient to get swsusp and Suspend-to-Disk running |
978 |
(I didn't say working), swsusp2 needs special care. |
1152 |
(I didn't say working), swsusp2 needs special care. |
979 |
The first thing to do is to patch the kernel with the patches provided at <uri |
1153 |
The first thing to do is patching the kernel with the patches provided at <uri |
980 |
link="http://softwaresuspend.berlios.de/"> |
1154 |
link="http://softwaresuspend.berlios.de/"> |
981 |
http://softwaresuspend.berlios.de/</uri>. Afterwards, install the hibernate |
1155 |
http://softwaresuspend.berlios.de/</uri>. Additionally you've got to emerge |
982 |
script from the same page. |
1156 |
<c>hibernate-script</c>. Once it is installed, configure |
|
|
1157 |
<path>/etc/hibernate/hibernate.conf</path> and try whether it works: |
983 |
</p> |
1158 |
</p> |
984 |
|
1159 |
|
|
|
1160 |
<pre> |
1161 |
<i># emerge hibernate-script</i> |
1162 |
<i># $EDITOR /etc/hibernate/hibernate.conf</i> |
1163 |
<comment>(Last chance to backup any data)</comment> |
1164 |
<i># hibernate</i> |
1165 |
</pre> |
1166 |
|
985 |
</body> |
1167 |
</body> |
986 |
</section> |
1168 |
</section> |
987 |
</chapter> |
1169 |
</chapter> |
Lines 1049-1054
Link Here
|
1049 |
</p> |
1231 |
</p> |
1050 |
|
1232 |
|
1051 |
<p> |
1233 |
<p> |
|
|
1234 |
<e>Q:</e> When configuring the kernel, powersave, performance and userspace |
1235 |
governors show up, but that ondemand thing is missing. Where do I get it? |
1236 |
</p> |
1237 |
|
1238 |
<p> |
1239 |
<e>A:</e> The ondemand governor is only included in recent kernel sources. Try |
1240 |
updating them. |
1241 |
</p> |
1242 |
|
1243 |
<p> |
1052 |
<e>Q:</e> Battery life time seems to be worse than before. |
1244 |
<e>Q:</e> Battery life time seems to be worse than before. |
1053 |
</p> |
1245 |
</p> |
1054 |
|
1246 |
|