# Centrino CPU Speed Stepping

## aZZe

Hallo zusammen!

Habe hier jetzt so ein IBM Rennbügeleisen äh Thinkpad mit Intel Centrino Technoligie. Das Teil kann ja so richig schön speedsteppen. Nur irgendwie funktioniert das nur beim booten. Habe ich vor dem Booten den Netzstecker drin läuft er auf volle 1,7GHz. Ist er im Akku betrieb hat er 600MHz. Das ist ja auch gut so, nur habe ich mir gedacht, wenn ich jetzt z.B. den gcc starte, sollte die CPU hochtakten. Ein "cat /proc/cpuinfo" zeigt aber immer noch 600MHz an. Hier wurde schon gepostet, dass das programm "x86info" dies "besser" anzeigen würde. Halt ich für ein Gerücht da x86info ja auch nur die proc files abfragt. Hier mal ein kleiner Auszug aus meiner kernel config:

```

  [*] CPU Frequency scaling                                                                      

                    <*>   /proc/cpufreq interface (deprecated)                                                     

                        Default CPUFreq governor (userspace)  --->                                               

                    <*>   'performance' governor                                                                   

                    <*>   'powersave' governor                                                                     

                    ---   'userspace' governor for userspace frequency scaling                                     

                   [ ]     /proc/sys/cpu/ interface (2.4. / OLD)                                                  

                   <*>   CPU frequency table helpers                                                              

                   ---   CPUFreq processor drivers                                                               

                   <*> ACPI Processor P-States driver                                                             

                    [*]   /proc/acpi/processor/../performance interface (deprecated)                               

                    < > AMD Mobile K6-2/K6-3 PowerNow!                                                             

                    < > AMD Mobile Athlon/Duron PowerNow!                                                          

                   < > AMD Opteron/Athlon64 PowerNow!                                                             

                   < > Cyrix MediaGX/NatSemi Geode Suspend Modulation                                             

                    <*> Intel Enhanced SpeedStep                                                                   

                  [ ] Use ACPI tables to decode valid frequency/voltage pairs (EXPERIMENTAL)                     

                   <*> Intel Speedstep on ICH-M chipsets (ioport interface)                                       

                   < > Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)                                    

                    < > Intel Pentium 4 clock modulation                                                           

                   [ ] Relaxed speedstep capability checks                                                        

                    < > Transmeta LongRun                                                                          

                    < > VIA Cyrix III Longhaul      

```

Hab ich irgendwas vergessen?

----------

## null_

Läuft der Speedfreq Daemon?

----------

## b00gy

emerge speedfreq

rc-update add speedfreq default

/etc/init.d/speedfreq start

speedfreq -p dynamic

dann evtl die acpi scripte anpassen damit er zb wenn er am strom haengt immer vollen takt hat

----------

## ian!

Aha! Bist du also schon im Besitz des neuen Notebooks. Schön.  :Smile: 

Trage mal SPEEDFREQ_SPEED="dynamic" in die /etc/conf.d/speedfreq und starte damit den speedfreq-daemon.

Edit: Falls wider Erwarten nicht funktionieren sollte, poste mal die Ausgabe von cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

----------

## aZZe

Alles klar ich habe schon mal einen Teilerfolg!

Es musste im script etwa geändert werden dort stand:

```

if [ $4 -eq 00000001 ] && [ -f /proc/acpi/battery/BAT1/state ] ; then

```

usw.

Das BAT1 musste in BAT0 umgeändert werden! Was er jetzt aber noch nicht macht ist, dass er automatisch umswitcht. Hatte ich zuvor Akkubetrieb und stecke den Netzstecker rein taktet er nicht hoch. Erst nach einem /etc/init.d/speedfreq erkennt er den neuen Powerstatus. Umgekehrt natürlich genau das gleiche. Was fehlt noch damit er das automatisch macht?

----------

## aZZe

@ian!

Joooo das wars!!!! Vielen Dank auch an die anderen! Oh mann ist das cool!!!! Echtes Speedstepping...was ein Luxus!  :Very Happy:   :Very Happy:   :Very Happy: 

Jetzt arbeitet er so wie ich mir das vorgestellt habe. Jetzt können wer auch durch Oberhausen tingeln  :Wink: 

Man wann ist endlich wieder gum? Ich meld mich am Montag mal wieder bei freenode. Hab am Wochenende leider viel zu tun. Also bis dann.

----------

## brodo

 *darktemplaaa wrote:*   

> Hallo zusammen!
> 
> Habe hier jetzt so ein IBM Rennbügeleisen äh Thinkpad mit Intel Centrino Technoligie. Das Teil kann ja so richig schön speedsteppen. Nur irgendwie funktioniert das nur beim booten. Habe ich vor dem Booten den Netzstecker drin läuft er auf volle 1,7GHz. Ist er im Akku betrieb hat er 600MHz. Das ist ja auch gut so, nur habe ich mir gedacht, wenn ich jetzt z.B. den gcc starte, sollte die CPU hochtakten.

  Ja, die Taktfrequenz ändert sich _nicht_ automatisch, sondern dafür braucht man dann userspace-tools wie das schon erwähnte speedfreq. Für echte dynamische Anpassung [so dass dann bei gcc-Benutzung die Taktfrequenz steigt] gibt's zum einen den neuen "ondemand" cpufreq-governor, oder auch wiederum userspace-tools.

 *darktemplaaa wrote:*   

> Ein "cat /proc/cpuinfo" zeigt aber immer noch 600MHz an. Hier wurde schon gepostet, dass das programm "x86info" dies "besser" anzeigen würde. Halt ich für ein Gerücht da x86info ja auch nur die proc files abfragt.

  Denkste. x86info greift auf die CPU teils direkt zu.

----------

## aZZe

Hmm....das ist interessant. Aber es läuft ja jetzt  :Smile:  und das sehr gut und zuverlässig.

----------

## øxygen

Ich habe mir ein kleines Script geschrieben, dass ich beim booten starte und per acpid aufrufe, sobald sich der AC Status ändert. Vielleicht kanns ja jemand gebrauchen.

```

#!/bin/bash

sleep 5

action="`cat /proc/acpi/battery/BAT0/state | grep charging | cut -c 26-`"

case $action in

        charging)

        /usr/bin/speedfreq -p performance

        /etc/init.d/laptop_mode stop

        /sbin/swapon -a

        hdparm -q -S253 /dev/hda

        iwconfig eth1 power off

        /usr/X11R6/bin/xset dpms 0 0 600

        echo "A/C adapter plugged in"

        ;;

        discharging)

        /usr/bin/speedfreq -p powersave

        /etc/init.d/laptop_mode start

        /sbin/swapoff -a

        hdparm -q -S12 /dev/hda

        iwconfig eth1 power on power max period 3

        /usr/X11R6/bin/xset dpms 600 0 3600

        echo "A/C adapter plugged out"

        ;;

esac

```

Sollte die wichtigsten Stromsparmechanismen aktivieren/deaktivieren. Das sleep 5 ist nötig, da das proc interface etwas träger als der acpid ist. laptop_mode ist das Script aus /usr/src/linux/Documentation/laptop-mode.txt

----------

## tuxian

 *øxygen wrote:*   

> Ich habe mir ein kleines Script geschrieben, dass ich beim booten starte und per acpid aufrufe, sobald sich der AC Status ändert. Vielleicht kanns ja jemand gebrauchen.
> 
> ```
> 
> #!/bin/bash
> ...

 

Wie rufst du das Skript per acpid auf?

----------

## misterxx

 *tuxian wrote:*   

> Wie rufst du das Skript per acpid auf?

 

siehe dazu hier die Dokumentation: http://www.gentoo.org/doc/en/power-management-guide.xml#doc_chap3

insbesondere den Unterkapitel "Reacting on ACPI events"

----------

## tuxian

Diese Doku kennt ich eh.

Hab es mittlerweile jetzt hinbekommen mit obigem Skript, muss es nur etwas anpassen.

Das Skript aus der Doku funktionierte leider nicht wirklich, aber obiges erfüllt den gleichen Zweck.

----------

## Earthwings

 *tuxian wrote:*   

> 
> 
> Das Skript aus der Doku funktionierte leider nicht wirklich
> 
> 

 

Was funktioniert daran nicht?

----------

## tuxian

Folgende Meldung: 

Sep  6 23:30:01 laptop logger: ACPI group battery / action battery is not defined

Wieso wird eigentlich bei mir /etc/acpid/default.sh alle paar Sekunden aufgerufen, auch wenn kein ACPI event war?

----------

## spaceman

 *tuxian wrote:*   

> Folgende Meldung: 
> 
> Sep  6 23:30:01 laptop logger: ACPI group battery / action battery is not defined
> 
> 

 

also diese meldung bekomme ich auch, im battery runlevel habe ich auch schon was eingetragen was da aktiviert werden soll doch die meldung steht nachwie vor da...

is da jemand etwas heller??

cu spaceman

----------

## jay

Ich glaube der Pfad hat sich ein wenig geändert, er ist jetzt: AC_STATE="/proc/acpi/ac_adapter/AC0/state"

----------

## spaceman

 *jay wrote:*   

> Ich glaube der Pfad hat sich ein wenig geändert, er ist jetzt: AC_STATE="/proc/acpi/ac_adapter/AC0/state"

 

also bei mir erzeugt dieser Befehl :

```
cat /proc/acpi/ac_adapter/AC/state

```

eine korrekte ausgabe online or offline

...   :Confused: 

----------

## brodo

wie dieser großbuchstaben-NAME jeweils heisst, ist von BIOS zu BIOS unterschiedlich und hat keine nähere Bedeutung.

----------

