Beispielkonfiguration - AMD Geode NX 1750 M811 picoPSU

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Quellen)
K
 
Zeile 1: Zeile 1:
 
== AMD Geode NX 1750 auf PC-Chips M811 mit picoPSU als stromsparender VDR ==
 
== AMD Geode NX 1750 auf PC-Chips M811 mit picoPSU als stromsparender VDR ==
  
Die Kombination des stromsparenden Prozessors AMD Geode NX 1750 in Verbindung mit dem günstigen Motherboard PC-Chips M811 hat sich unter VDR Nutzern zu einem kleinen Geheimtipp entwickelt. Im VDR-Portal gibt es mittlerweile einige Threads zu diesem Thema. Wenn ich es recht überblicke, brachte fabo mit seinem Posting {{vdrportal board|43329|AMD Geode NX 1750 - Erste Erfahrungen}} den Stein in's Rollen.
+
Die Kombination des stromsparenden Prozessors AMD Geode NX 1750 in Verbindung mit dem günstigen Mainboard PC-Chips M811 hat sich unter VDR Nutzern zu einem kleinen Geheimtipp entwickelt. Im VDR-Portal gibt es mittlerweile einige Threads zu diesem Thema. Wenn ich es recht überblicke, brachte fabo mit seinem Posting {{vdrportal board|43329|AMD Geode NX 1750 - Erste Erfahrungen}} den Stein ins Rollen.
  
Ich möchte an dieser Stelle einmal die wichtigsten Informationen in Form eines {{vdrportal board|47006|HOWTOs}}
+
Ich möchte an dieser Stelle einmal die wichtigsten Informationen in Form eines {{vdrportal board|47006|HOWTOs}}
zusammenfassen, wobei das HOWTO im VDR Portal regelmäßiger aktualisiert wird. Der Schwerpunkt liegt auf den Stromsparmöglichkeiten dieses Systems.
+
zusammenfassen, wobei das HOWTO im VDR Portal regelmäßiger aktualisiert wird. Der Schwerpunkt liegt auf den Stromsparmöglichkeiten dieses Systems.
  
 
Die Softwareanpassungen basieren auf einem Debian 3.1 mit jeweils aktuellem Kernel von kernel.org.
 
Die Softwareanpassungen basieren auf einem Debian 3.1 mit jeweils aktuellem Kernel von kernel.org.
  
Vorab <b>Danke</b> an alle Beteiligten, die geholfen haben, da&szlig; dieses HOWTO erstellt werden konnte, und speziell an alex-zero f&uuml;r das Korrekturlesen.
+
Vorab '''Danke''' an alle Beteiligten, die geholfen haben, dass dieses HOWTO erstellt werden konnte, und speziell an alex-zero für das Korrekturlesen.
  
 
== CPU FSB und Vcore einstellen ==
 
== CPU FSB und Vcore einstellen ==
  
Das M811 bietet per Jumper (JP2) und BIOS Einstellung die M&ouml;glichkeit, den Geode mit 100 oder 133MHz FSB zu betreiben. Der Multiplikator ist nicht einstellbar, was nicht weiter tragisch ist, da die Frequenz der CPU auch im laufenden Betrieb gesenkt werden kann. Dazu sp&auml;ter mehr.
+
Das M811 bietet per Jumper (JP2) und BIOS Einstellung die Möglichkeit, den Geode mit 100 oder 133MHz FSB zu betreiben. Der Multiplikator ist nicht einstellbar, was nicht weiter tragisch ist, da die Frequenz der CPU auch im laufenden Betrieb gesenkt werden kann. Dazu später mehr.
In der Standardeinstellung l&auml;uft der Geode mit 10.5x133MHz=1400MHz. Mit FSB 100Mhz reduziert sich die Frequenz auf 1050MHz. Dieser Wert ist f&uuml;r einen VDR v&ouml;llig ausreichend.
+
In der Standardeinstellung läuft der Geode mit 10.5x133MHz=1400MHz. Mit FSB 100Mhz reduziert sich die Frequenz auf 1050MHz. Dieser Wert ist für einen VDR völlig ausreichend.
  
Von Haus aus besteht beim M811 keine M&ouml;glichkeit, die Vcore zu reduzieren so da&szlig; die CPU mit 1,425V statt normalerweise 1,250V betrieben wird. Die CPU liefert standardmäßig "10001" als VID-Code (VID[4:0]).
+
Von Haus aus besteht beim M811 keine Möglichkeit, die Vcore zu reduzieren so daß die CPU mit 1,425V statt normalerweise 1,250V betrieben wird. Die CPU liefert standardmäßig "10001" als VID-Code (VID[4:0]).
  
tomfy erarbeitete [http://www.vdr-portal.de/board/thread.php?postid=416256#post416256 hier] eine M&ouml;glichkeit, durch Auftrennung eines Pins des Spannungsregler ICs (RT9237) des M811, die Vcore auf 1,225V [http://www.vdr-portal.de/board/thread.php?postid=416486#post416486 einzustellen]. Dies reduziert sowohl die Stromaufnahme als auch die CPU Temperatur und erm&ouml;glicht eine passive K&uuml;hlung.
+
tomfy erarbeitete [http://www.vdr-portal.de/board/thread.php?postid=416256#post416256 hier] eine Möglichkeit, durch Auftrennung eines Pins des Spannungsregler ICs (RT9237) des M811, die Vcore auf 1,225V [http://www.vdr-portal.de/board/thread.php?postid=416486#post416486 einzustellen]. Dies reduziert sowohl die Stromaufnahme als auch die CPU Temperatur und ermöglicht eine passive Kühlung.
  
 
{{Box Warnung|
 
{{Box Warnung|
'''Durch die Manipulation am Motherboard erlischt die Gew&auml;hrleistung. Auch sollte man Erfahrung im Umgang mit dem L&ouml;tkolben (z.B ERSA Tip 260, 16W) haben.'''
+
'''Durch die Manipulation am Mainboard erlischt die Gewährleistung. Auch sollte man Erfahrung im Umgang mit dem Lötkolben (z.B ERSA Tip 260, 16W) haben.'''
 
}}
 
}}
  
Zeile 26: Zeile 26:
 
=== Vcore per Jumper oder DIP-Schalter ===
 
=== Vcore per Jumper oder DIP-Schalter ===
  
Durch tomfys Erfolg befl&uuml;gelt, habe ich durch eine [http://www.vdr-portal.de/board/thread.php?postid=416621#post416621 Modifikation] des Motherboards die Vcore Einstellung auf beliebige Werte erreicht. Dazu wurden die f&uuml;nf relevanten Pins des Spannungsregler ICs auf Jumper gef&uuml;hrt. Damit l&auml;&szlig;t sich der Geode bei FSB 100MHz auch mit 1,1V Vcore stabil betreiben. Die Leistungsaufnahme gegen&uuml;ber 1,425V sinkt um ca. 10W.
+
Durch tomfys Erfolg beflügelt, habe ich durch eine [http://www.vdr-portal.de/board/thread.php?postid=416621#post416621 Modifikation] des Mainboards die Vcore Einstellung auf beliebige Werte erreicht. Dazu wurden die fünf relevanten Pins des Spannungsregler ICs auf Jumper geführt. Damit läßt sich der Geode bei FSB 100MHz auch mit 1,1V Vcore stabil betreiben. Die Leistungsaufnahme gegenüber 1,425V sinkt um ca. 10W.
  
 
  +--------------+
 
  +--------------+
Zeile 45: Zeile 45:
 
Der . markiert Pin1 und ist mit VID4 identisch. Im Datenblatt des RT9237 bedeutet eine 1 kein Jumper gesetzt und die 0 Jumper gesetzt.
 
Der . markiert Pin1 und ist mit VID4 identisch. Im Datenblatt des RT9237 bedeutet eine 1 kein Jumper gesetzt und die 0 Jumper gesetzt.
  
Jumperstellung f&uuml;r Vcore 1,100V:
+
Jumperstellung für Vcore 1,100V:
  
 
  VID4  1
 
  VID4  1
Zeile 56: Zeile 56:
 
  1 == offen
 
  1 == offen
  
Es ist nur der Jumper f&uuml;r VID0 gesetzt.
+
Es ist nur der Jumper für VID0 gesetzt.
  
 
Alternativ kann man auch DIP-Schalter benutzen (Vcore=1,100V):
 
Alternativ kann man auch DIP-Schalter benutzen (Vcore=1,100V):
Zeile 86: Zeile 86:
 
   ON == Schalter geschlossen
 
   ON == Schalter geschlossen
  
=== Vcore 1.125V per Pin abl&ouml;ten ===
+
=== Vcore 1.125V per Pin ablöten ===
  
Eine Alternative, zu einer niedrigeren CPU Spannung zu kommen, ist es, zwei Pins des RT9237 abzul&ouml;ten, d.h., auf logisch 1 zu setzen. Gucken wir uns dazu die VID Einstellung f&uuml;r die Original- und Alternativspannung an:
+
Eine Alternative, zu einer niedrigeren CPU Spannung zu kommen, ist es, zwei Pins des RT9237 abzulöten, d.h., auf logisch 1 zu setzen. Gucken wir uns dazu die VID Einstellung für die Original- und Alternativspannung an:
  
 
  VID 4 | 3 | 2 | 1 | 0    Vcore
 
  VID 4 | 3 | 2 | 1 | 0    Vcore
Zeile 95: Zeile 95:
 
     1 | 1 | 1 | 0 | 1 == 1.125V
 
     1 | 1 | 1 | 0 | 1 == 1.125V
  
Daraus ist zu ersehen, da&szlig; durch Abl&ouml;ten von VID3 (Pin 2) und VID2 (Pin 3) die CPU Spannung auf 1.125V eingestellt wird, da beide Eing&auml;nge von Potential 0 zu 1 wechseln.
+
Daraus ist zu ersehen, daß durch Ablöten von VID3 (Pin 2) und VID2 (Pin 3) die CPU Spannung auf 1.125V eingestellt wird, da beide Eingänge von Potential 0 zu 1 wechseln.
  
 
  zaphod:~$ sensors  
 
  zaphod:~$ sensors  
Zeile 102: Zeile 102:
 
  VCore 1:  +1.12 V  (min =  +1.04 V, max =  +1.57 V)
 
  VCore 1:  +1.12 V  (min =  +1.04 V, max =  +1.57 V)
  
Die Praxis zeigt, da&szlig; es am einfachsten ist, wenn man zuerst noch Pin 1 (VID4) abl&ouml;tet. An seinem Zustand (1) &auml;ndert sich dadurch nichts.
+
Die Praxis zeigt, daß es am einfachsten ist, wenn man zuerst noch Pin 1 (VID4) ablötet. An seinem Zustand (1) ändert sich dadurch nichts.
  
Zum Abl&ouml;ten h&auml;lt man eine Stecknadel bereit und schiebt diese unter das mit dem L&ouml;tkolben (mit Bleistiftspitze) erhitzte Anschlu&szlig;beinchen und hebelt dieses ggf. vorsichtig hoch. Ebenso verf&auml;hrt man dann mit den Pins 2 und 3.
+
Zum Ablöten hält man eine Stecknadel bereit und schiebt diese unter das mit dem Lötkolben (mit Bleistiftspitze) erhitzte Anschlussbeinchen und hebelt dieses ggf. vorsichtig hoch. Ebenso verfährt man dann mit den Pins 2 und 3.
  
  
Zeile 115: Zeile 115:
 
== PowerNow! Support ==
 
== PowerNow! Support ==
  
Der AMD Geode NX 1750 unterst&uuml;tzt die Einstellung der Frequenz w&auml;hrend des laufenden Betriebes. Somit ist es m&ouml;glich, die CPU beim &quot;nichts tun&quot; herunterzutakten und im Bedarfsfalle (z.B. DVD erstellen) die volle Leistung abzurufen. alex-zero hat im VDR-Portal eruiert, wie [http://www.vdr-portal.de/board/thread.php?postid=435885#post435885 PowerNow! mit dem Geode] zu nutzen ist. Der Kernel kann die PowerNow! M&ouml;glichkeiten nicht nutzen, da das BIOS hierf&uuml;r keine Informationen zur Verf&uuml;gung stellt.
+
Der AMD Geode NX 1750 unterstützt die Einstellung der Frequenz während des laufenden Betriebes. Somit ist es möglich, die CPU beim &quot;nichts tun&quot; herunterzutakten und im Bedarfsfalle (z.B. DVD erstellen) die volle Leistung abzurufen. alex-zero hat im VDR-Portal eruiert, wie [http://www.vdr-portal.de/board/thread.php?postid=435885#post435885 PowerNow! mit dem Geode] zu nutzen ist. Der Kernel kann die PowerNow! Möglichkeiten nicht nutzen, da das BIOS hierfür keine Informationen zur Verfügung stellt.
  
 
=== DSDT Patch ===
 
=== DSDT Patch ===
  
Durch einen modification des DSDT table erlaubt das standard powernow-k7 kernel Modul met der Geode zu arbeiten. Das powernow-k7 modul benutzt nur das control word der _PSS tabelle.
+
Durch eine Modifikation der DSDT erlaubt das Standard powernow-k7 Kernel Modul mit der Geode-CPU zu arbeiten. Das powernow-k7 Modul benutzt nur das control word der PSS Tabelle.
  
 
Short HOWTO:
 
Short HOWTO:
Zeile 127: Zeile 127:
 
  vi dsdt.dsl                    # Hinzufügen _PCT & _PSS Tabelle siehe unten
 
  vi dsdt.dsl                    # Hinzufügen _PCT & _PSS Tabelle siehe unten
 
  iasl -tc dsdt.dsl              # Compilieren der dsdt erzeugt dsdt.hex
 
  iasl -tc dsdt.dsl              # Compilieren der dsdt erzeugt dsdt.hex
Kernel erneut compilieren mit "dsdt.hex" eingebunden
 
Siehe '''HOWTO Fix Common ACPI Problems''' [http://gentoo-wiki.com/HOWTO_Fix_Common_ACPI_Problems] für weitere Hintergründe.
 
  
Durch hinzufugen einer _PSS tabelle in der kan man P states in der DSDT definieren.   
+
Kernel erneut compilieren mit "dsdt.hex" eingebunden. Siehe '''HOWTO Fix Common ACPI Problems''' [http://gentoo-wiki.com/HOWTO_Fix_Common_ACPI_Problems] für weitere Hintergründe.
 +
 
 +
Durch hinzufügen einer _PSS Tabelle in der kann man P states in der DSDT definieren.   
  
 
         ...
 
         ...
Zeile 163: Zeile 163:
 
=== MSR Patch ===
 
=== MSR Patch ===
  
Durch einen Patch des Kernels werden die entsprechenden Daten dort eingebaut, so da&szlig; das powernow-k7 Modul damit arbeiten kann. Dieser Patch wird [http://www.yggdrasl.demon.co.uk/code/ hier] zur Verf&uuml;gung gestellt. Im Anhang findet sich ein Patch f&uuml;r den jeweils aktuellen Kernel.
+
Durch einen Patch des Kernels werden die entsprechenden Daten dort eingebaut, so daß das powernow-k7 Modul damit arbeiten kann. Dieser Patch wird [http://www.yggdrasl.demon.co.uk/code/ hier] zur Verfügung gestellt. Im Anhang findet sich ein Patch für den jeweils aktuellen Kernel.
  
  zaphod:~# &quot;Patch Datei laden&quot;
+
  # Patch Datei laden
  zaphod:~# gunzip powernow-k7-msr-2.6.16.1.patch.gz  
+
  gunzip powernow-k7-msr-2.6.16.1.patch.gz  
  zaphod:~# cd /usr/src/linux
+
  cd /usr/src/linux
  zaphod:/usr/src/linux# patch -p1 &lt; ~/powernow-k7-msr-2.6.16.1.patch
+
  patch -p1 &lt; ~/powernow-k7-msr-2.6.16.1.patch
  
Nun wird der Kernel mit folgenden Einstellungen neu &uuml;bersetzt:
+
Nun wird der Kernel mit folgenden Einstellungen neu übersetzt:
  
 
  #
 
  #
Zeile 205: Zeile 205:
 
  # CONFIG_X86_LONGHAUL is not set
 
  # CONFIG_X86_LONGHAUL is not set
  
Die Datei /etc/modules wird folgenderma&szlig;en modifiziert:
+
Die Datei /etc/modules wird folgendermaßen modifiziert:
  
  zaphod:~# grep powernow_k7 /etc/modules
+
  ~# grep powernow_k7 /etc/modules
 
  powernow_k7 msr_force=1
 
  powernow_k7 msr_force=1
  
 
damit das Modul automatisch geladen wird.
 
damit das Modul automatisch geladen wird.
  
Nach dem Neustart des Kernel &uuml;berpr&uuml;ft man die m&ouml;glichen Varianten zur Frequenzeinstellung:
+
Nach dem Neustart des Kernel überprüft man die möglichen Varianten zur Frequenzeinstellung:
  
  zaphod:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
+
  ~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
 
  conservative ondemand powersave userspace performance
 
  conservative ondemand powersave userspace performance
  
N&auml;here Informationen sind hier zu finden: /usr/src/linux/Documentation/cpu-freq/
+
Nähere Informationen sind hier zu finden: /usr/src/linux/Documentation/cpu-freq/
  
 
Mittels dmesg oder in syslog sollte diese Meldung (mit FSB 100MHz) auftauchen:
 
Mittels dmesg oder in syslog sollte diese Meldung (mit FSB 100MHz) auftauchen:
Zeile 230: Zeile 230:
 
  powernow: Minimum speed 599 MHz. Maximum speed 1048 MHz.
 
  powernow: Minimum speed 599 MHz. Maximum speed 1048 MHz.
  
Ich betreibe den Geode derzeit mit &quot;conservative&quot;. Damit dies beim Start aktiviert wird, habe ich folgendes in /etc/init.d/bootmisc.sh eingetragen:
+
Ich betreibe den Geode derzeit mit conservative. Damit dies beim Start aktiviert wird, habe ich folgendes in /etc/init.d/bootmisc.sh eingetragen:
  
  echo conservative &gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
+
  echo conservative > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
  
 
Mittels
 
Mittels
Zeile 244: Zeile 244:
 
Auf diesen Patch bin ich durch Elchi aufmerksam gemacht worden. Er beruht wohl auf einen Patch von Milan Enev: [http://www.yggdrasl.demon.co.uk/code/ Linux 2.6.12.2 PowerNow! K7 Manual Frequency Table]
 
Auf diesen Patch bin ich durch Elchi aufmerksam gemacht worden. Er beruht wohl auf einen Patch von Milan Enev: [http://www.yggdrasl.demon.co.uk/code/ Linux 2.6.12.2 PowerNow! K7 Manual Frequency Table]
  
Da der originale Patch bei mir nicht richtig funktionierte, habe ich aus Elchis und Enevs Versionen eine f&uuml;r Kernel 2.6.16.9 funktionierende Variante erstellt.
+
Da der originale Patch bei mir nicht richtig funktionierte, habe ich aus Elchis und Enevs Versionen eine für Kernel 2.6.16.9 funktionierende Variante erstellt.
  
Der Kernel mu&szlig; f&uuml;r diesen Patch genauso konfiguriert sein wie f&uuml;r den MSR Patch. Das Einspielen des Patches erfolgt analog.
+
Der Kernel muß für diesen Patch genauso konfiguriert sein wie für den MSR Patch. Das Einspielen des Patches erfolgt analog.
  
  zaphod:~# &quot;Patch Datei laden&quot;
+
  ~# &quot;Patch Datei laden&quot;
  zaphod:~# gunzip powernow-k7-manual-2.6.16.9_enev_kilroy.patch.gz
+
  ~# gunzip powernow-k7-manual-2.6.16.9_enev_kilroy.patch.gz
  zaphod:~# cd /usr/src/linux
+
  ~# cd /usr/src/linux
 
  zaphod:/usr/src/linux# patch -p1 &lt; ~/powernow-k7-manual-2.6.16.9_enev_kilroy.patch
 
  zaphod:/usr/src/linux# patch -p1 &lt; ~/powernow-k7-manual-2.6.16.9_enev_kilroy.patch
  
 
Das Modul wird wieder per /etc/modules geladen:
 
Das Modul wird wieder per /etc/modules geladen:
  
  zaphod:~# grep powernow_k7 /etc/modules
+
  ~# grep powernow_k7 /etc/modules
 
  powernow_k7 overwrite_table=1 fsb=100000 multiplier=50,60,70,80,90,105
 
  powernow_k7 overwrite_table=1 fsb=100000 multiplier=50,60,70,80,90,105
  
oder alternativ h&auml;ndisch per modprobe:
+
oder alternativ händisch per modprobe:
  
  zaphod:~# modprobe powernow_k7 overwrite_table=1 fsb=100000 multiplier=50,60,70,80,90,105
+
  ~# modprobe powernow_k7 overwrite_table=1 fsb=100000 multiplier=50,60,70,80,90,105
  
 
Die multiplier Parameter sind variierbar. Beispiel:
 
Die multiplier Parameter sind variierbar. Beispiel:
  
  zaphod:~# modprobe powernow_k7 overwrite_table=1 fsb=100000 multiplier=55,75,95,105
+
  ~# modprobe powernow_k7 overwrite_table=1 fsb=100000 multiplier=55,75,95,105
  zaphod:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
+
  ~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
 
  550000 750000 950000 1050000
 
  550000 750000 950000 1050000
  
Zeile 283: Zeile 283:
 
  zaphod kernel: powernow: Minimum speed 500 MHz. Maximum speed 1050 MHz.
 
  zaphod kernel: powernow: Minimum speed 500 MHz. Maximum speed 1050 MHz.
  
Arbeitet powernow erfolgreich, kann mach sich die m&ouml;glichen Frequenzen anzeigen lassen:
+
Arbeitet powernow erfolgreich, kann mach sich die möglichen Frequenzen anzeigen lassen:
  
  zaphod:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies  
+
  ~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies  
 
  500000 600000 700000 800000 900000 1050000
 
  500000 600000 700000 800000 900000 1050000
  
 
Zur automatischen Frequenzumstellung wird powernowd verwendet.
 
Zur automatischen Frequenzumstellung wird powernowd verwendet.
  
  zaphod:~# aptitude install powernowd
+
  ~# aptitude install powernowd
  
 
Der Start erfolgt mit folgenden Parametern:
 
Der Start erfolgt mit folgenden Parametern:
  
zaphod:~# cat /etc/default/powernowd  
+
~# cat /etc/default/powernowd  
OPTIONS=&quot;-v -n -m 0&quot;
+
OPTIONS=&quot;-v -n -m 0&quot;
  
&quot;-m 0&quot; bewirkt, da&szlig; die Frequenz&auml;nderung einer Sinuskurve folgt. Siehe auch man powernowd.
+
&quot;-m 0&quot; bewirkt, daß die Frequenzänderung einer Sinuskurve folgt. Siehe auch man powernowd.
  
  zaphod:~# /etc/init.d/powernowd restart
+
  ~# /etc/init.d/powernowd restart
  
 
Hier die Ausgabe des powernowd Aufrufes:
 
Hier die Ausgabe des powernowd Aufrufes:
Zeile 315: Zeile 315:
 
  powernowd.
 
  powernowd.
  
Dieser Patch bietet grunds&auml;tzlich auch die M&ouml;glichkeit, die CPU Spannung anzupassen (Vcore), dieses funktioniert bei mir mit dem M811 Board jedoch nicht.
+
Dieser Patch bietet grundsätzlich auch die Möglichkeit, die CPU Spannung anzupassen (Vcore), dieses funktioniert bei mir mit dem M811 Board jedoch nicht.
  
Wer den Geode mittels JP2 auf dem M811 mit FSB 133MHz laufen l&auml;&szlig;t, kann powernow-k7 folgenderma&szlig;en nutzen:
+
Wer den Geode mittels JP2 auf dem M811 mit FSB 133MHz laufen läßt, kann powernow-k7 folgendermaßen nutzen:
  
  zaphod:~# modprobe powernow_k7 overwrite_table=1 fsb=133333 multiplier=40,50,60,70,80,90,105
+
  ~# modprobe powernow_k7 overwrite_table=1 fsb=133333 multiplier=40,50,60,70,80,90,105
  
Das ergibt diese m&ouml;glichen Frequenzen:
+
Das ergibt diese möglichen Frequenzen:
  
  zaphod:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies  
+
  ~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies  
 
  533332 666665 799998 933331 1066664 1199997 1399996
 
  533332 666665 799998 933331 1066664 1199997 1399996
  
 
== nvram-wakeup ==
 
== nvram-wakeup ==
  
Zuerst sollte man das nvram-wakeup im BIOS des M811 unter &quot;Power Management Setup&quot; aktivieren. Wakeup ist auf auf &quot;Enabled&quot; zu stellen und in der WakeupINT Tabelle mu&szlig; der RTC interrupt eingeschaltet sein. Au&szlig;erdem d&uuml;rfen bei dem ersten Start von nvram-wakeup nicht die Werte Day 0, Hour 0, Min 0, Sek 0 im BIOS stehen, da da&szlig; Programm sonst mit einem Fehler beendet wird. Der Einfachheit halber tr&auml;gt man f&uuml;r
+
Zuerst sollte man das nvram-wakeup im BIOS des M811 unter '''Power Management Setup''' aktivieren. Wakeup ist auf auf Enabled zu stellen und in der WakeupINT Tabelle muß der RTC interrupt eingeschaltet sein. Außerdem dürfen bei dem ersten Start von nvram-wakeup nicht die Werte Day 0, Hour 0, Min 0, Sek 0 im BIOS stehen, da daß Programm sonst mit einem Fehler beendet wird. Der Einfachheit halber trägt man für
 
jeden Wert eine 1 ein.
 
jeden Wert eine 1 ein.
  
 
Nun wird das Paket nvram-wakeup installiert:
 
Nun wird das Paket nvram-wakeup installiert:
  
  zaphod:~# aptitude install nvram-wakeup
+
  ~# aptitude install nvram-wakeup
  
Unter /etc wird die Datei nvram-wakeup.conf f&uuml;r das M811 erstellt:
+
Unter /etc wird die Datei nvram-wakeup.conf für das M811 erstellt:
  
 
{{Box Datei | /etc/nvram-wakeup.conf |
 
{{Box Datei | /etc/nvram-wakeup.conf |
Zeile 364: Zeile 364:
 
  COMMANDLINE=&quot;--directisa --configfile /etc/nvram-wakeup.conf&quot;
 
  COMMANDLINE=&quot;--directisa --configfile /etc/nvram-wakeup.conf&quot;
  
Nicht vergessen ENABLED=&quot;yes&quot; zu setzen. Ein Reboot ist f&uuml;r nvram-wakeup beim M811 nicht n&ouml;tig.
+
Nicht vergessen ENABLED=&quot;yes&quot; zu setzen. Ein Reboot ist für nvram-wakeup beim M811 nicht nötig.
  
Um die korrekte Funktion zu &uuml;berpr&uuml;fen, sollte man nvram-wakeup jetzt einmal testen:
+
Um die korrekte Funktion zu überprüfen, sollte man nvram-wakeup jetzt einmal testen:
  
  zaphod:~# nvram-wakeup --directisa --configfile /etc/nvram-wakeup.conf --settime $((`date +%s` + 601))
+
  ~# nvram-wakeup --directisa --configfile /etc/nvram-wakeup.conf --settime $((`date +%s` + 601))
  zaphod:~# shutdown -h now
+
  ~# shutdown -h now
  
 
Die Aufwachzeit wird auf 601 Sekunden in die Zukunft gestellt, also bitte mindestens 10 Minuten warten. ;)
 
Die Aufwachzeit wird auf 601 Sekunden in die Zukunft gestellt, also bitte mindestens 10 Minuten warten. ;)
Zeile 375: Zeile 375:
 
== lm_sensors ==
 
== lm_sensors ==
  
Bei einer passiv gek&uuml;hlten CPU erscheint es sinnvoll, die Temperatur zu &uuml;berwachen. Daf&uuml;r wird lm_sensors auf dem System installiert:
+
Bei einer passiv gekühlten CPU erscheint es sinnvoll, die Temperatur zu überwachen. Dafür wird lm_sensors auf dem System installiert:
  
  zaphod:~# aptitude install libsysfs-dev
+
  aptitude install libsysfs-dev
  zaphod:~# wget http://www2.lm-sensors.nu/~lm78/archive/lm_sensors-2.10.0.tar.gz
+
  wget http://www2.lm-sensors.nu/~lm78/archive/lm_sensors-2.10.0.tar.gz
  zaphod:~# tar xzf lm_sensors-2.10.0.tar.gz -C /usr/local/src/
+
  tar xzf lm_sensors-2.10.0.tar.gz -C /usr/local/src/
  zaphod:~# cd /usr/local/src/lm_sensors-2.10.0/
+
  cd /usr/local/src/lm_sensors-2.10.0/
  zaphod:/usr/local/src/lm_sensors-2.10.0# make user
+
  make user
  zaphod:/usr/local/src/lm_sensors-2.10.0# make user_install
+
  make user_install
  
Beim Start des Rechners sollte sensors -s ausgef&uuml;hrt werden:
+
Beim Start des Rechners sollte sensors -s ausgeführt werden:
  
  zaphod:~# grep -A2 sensors /etc/init.d/bootmisc.sh
+
  ~# grep -A2 sensors /etc/init.d/bootmisc.sh
 
  /usr/local/bin/sensors -s
 
  /usr/local/bin/sensors -s
 
   
 
   
 
  : exit 0
 
  : exit 0
  
Der (2.6.) Kernel mu&szlig; folgende Module zur Verf&uuml;gung stellen oder integriert haben:
+
Der (2.6.) Kernel muß folgende Module zur Verfügung stellen oder integriert haben:
  
 
  #
 
  #
Zeile 413: Zeile 413:
 
  CONFIG_SENSORS_IT87=y
 
  CONFIG_SENSORS_IT87=y
  
Die passende /etc/sensors.conf habe ich unten angeh&auml;ngt. Die Ausgabe sieht dann folgenderma&szlig;en aus:
+
Die passende /etc/sensors.conf habe ich unten angehängt. Die Ausgabe sieht dann folgendermaßen aus:
  
  zaphod:~# sensors
+
  ~# sensors
 
  it87-isa-0290
 
  it87-isa-0290
 
  Adapter: ISA adapter
 
  Adapter: ISA adapter
Zeile 425: Zeile 425:
 
== Stromversorgung mit picoPSU ==
 
== Stromversorgung mit picoPSU ==
  
Um die Effizienz bzgl. Stromverbrauch des Systems AMD Geode NX 1750 auf PC-Chips M811 als VDR weiter zu erh&ouml;hen, betreibe ich den Rechner jetzt mit der picoPSU und einem entsprechenden externen Schaltnetzteil: [http://www.vdr-portal.de/board/thread.php?threadid=46176 Thread].
+
Um die Effizienz bzgl. Stromverbrauch des Systems AMD Geode NX 1750 auf PC-Chips M811 als VDR weiter zu erhöhen, betreibe ich den Rechner jetzt mit der picoPSU und einem entsprechenden {{vdrportal board|46176|externen Schaltnetzteil}}.
  
Das System verbraucht im normalen Betrieb (mit einer FF- und drei Budget-Karten, diskless) 50W. Die CPU ist passiv gek&uuml;hlt. Die W&auml;rme wird von einem extrem leisen 120mm L&uuml;fter (8,7dBA, 800rpm) aus dem Geh&auml;use bef&ouml;rdert.
+
Das System verbraucht im normalen Betrieb (mit einer FF- und drei Budget-Karten, diskless) 50W. Die CPU ist passiv gekühlt. Die Wärme wird von einem extrem leisen 120mm Lüfter (8,7dBA, 800rpm) aus dem Gehäuse befördert.
  
[http://www.vdr-portal.de/board/thread.php?postid=453416#post453416 foobar42 hat berichtet], da&szlig; es die picoPSU inzwischen sowohl in einer 120W als auch 80W Version gibt.
+
[http://www.vdr-portal.de/board/thread.php?postid=453416#post453416 foobar42 hat berichtet], daß es die picoPSU inzwischen sowohl in einer 120W als auch 80W Version gibt.
  
 
http://www.on-luebeck.de/kilroy/vdr_komplett.jpg
 
http://www.on-luebeck.de/kilroy/vdr_komplett.jpg
Zeile 435: Zeile 435:
 
== UDMA-Problematik ==
 
== UDMA-Problematik ==
  
Crue hat mit dem Thread [http://www.vdr-portal.de/board/thread.php?threadid=48528 M811 - Mainboard (Geode) StressThreat/ Sorgenkind IDE] auf ein Problem des M811 aufmerksam gemacht, welches die Zusammenarbeit des (2.6.x) Kernels mit IDE Festplatten im UDMA Modus betrifft. Standardm&auml;&szlig;ig wird der  
+
Crue hat mit dem Thread {{vdrportal board|48528|M811 - Mainboard (Geode) StressThreat/ Sorgenkind IDE}} auf ein Problem des M811 aufmerksam gemacht, welches die Zusammenarbeit des (2.6.x) Kernels mit IDE Festplatten im UDMA Modus betrifft. Standardmäßig wird der  
h&ouml;chstm&ouml;gliche UDMA Modus (meist UDMA 5) eingestellt, welcher jedoch Probleme in Form von Daten&uuml;bertragungsfehlern ausl&ouml;st:
+
höchstmögliche UDMA Modus (meist UDMA 5) eingestellt, welcher jedoch Probleme in Form von Datenübertragungsfehlern auslöst:
  
 
  zaphod kernel: hda: dma_intr: status=0x51 &#123; DriveReady SeekComplete Error &#125;
 
  zaphod kernel: hda: dma_intr: status=0x51 &#123; DriveReady SeekComplete Error &#125;
Zeile 442: Zeile 442:
 
  zaphod kernel: ide: failed opcode was: unknown
 
  zaphod kernel: ide: failed opcode was: unknown
  
Das Problem l&auml;&szlig;t sich erfahrungsgem&auml;&szlig; dadurch l&ouml;sen, da&szlig; der UDMA Modus auf 3 oder 4 herabgesetzt wird. Beispiel f&uuml;r UDMA 4 mit Festplatte hda
+
Das Problem läßt sich erfahrungsgemäß dadurch lösen, daß der UDMA Modus auf 3 oder 4 herabgesetzt wird. Beispiel für UDMA 4 mit Festplatte hda
  
 
  hdparm -X udma4 /dev/hda
 
  hdparm -X udma4 /dev/hda
  
Bei der Installation eines Linuxsystems von CD auf Festplatte oder Nutzung einer &quot;Live-CD&quot; mit Festplatte, sollte darauf geachtet werden, da&szlig; der UDMA Modus reduziert oder vorerst komplett abgeschaltet wird, sollte es zu den erw&auml;hnten Fehlermeldungen kommen. Zum Abschalten des DMA &uuml;bergibt man dem Kernel folgenden Parameter:
+
Bei der Installation eines Linuxsystems von CD auf Festplatte oder Nutzung einer &quot;Live-CD&quot; mit Festplatte, sollte darauf geachtet werden, daß der UDMA Modus reduziert oder vorerst komplett abgeschaltet wird, sollte es zu den erwähnten Fehlermeldungen kommen. Zum Abschalten des DMA übergibt man dem Kernel folgenden Parameter:
  
 
  ide=nodma
 
  ide=nodma
Zeile 452: Zeile 452:
 
Das DMA wird dann beim Abarbeiten der Datei /etc/init.d/bootmisc.sh wieder reduziert aktiviert:
 
Das DMA wird dann beim Abarbeiten der Datei /etc/init.d/bootmisc.sh wieder reduziert aktiviert:
  
  zaphod:~$ tail -n4 /etc/init.d/bootmisc.sh  
+
  ~# tail -n4 /etc/init.d/bootmisc.sh  
 
  hdparm -d 1 -X udma4 /dev/hda
 
  hdparm -d 1 -X udma4 /dev/hda
 
   
 
   
 
  : exit 0
 
  : exit 0
 
   
 
   
Der Eintrag mu&szlig; vor dem &quot;exit 0&quot; erfolgen.
+
Der Eintrag muß vor dem &quot;exit 0&quot; erfolgen.
  
 
== BIOS-Update ==
 
== BIOS-Update ==
  
ddgonzo hat auf den Thread [http://www.vdr-portal.de/board/thread.php?threadid=48795 Problem M811 und Geode] aufmerksam gemacht. Dort wird geschildert, daß einige M811 Boards auch mit einem älteren BIOS als das vom 20.10.2005 ausgeliefert werden. Das neue BIOS erkennt den AMD Geode dann auch mit den korrekten Frequenzen. ddgonzo stellt dieses BIOS [http://www.vdr-portal.de/board/thread.php?postid=459628#post459628 hier] zum Download bereit.
+
ddgonzo hat auf den Thread {{vdrportal board|48795|Problem M811 und Geode}} aufmerksam gemacht. Dort wird geschildert, daß einige M811 Boards auch mit einem älteren BIOS als das vom 20.10.2005 ausgeliefert werden. Das neue BIOS erkennt den AMD Geode dann auch mit den korrekten Frequenzen. ddgonzo stellt dieses BIOS [http://www.vdr-portal.de/board/thread.php?postid=459628#post459628 hier] zum Download bereit.
  
 
== Downloads ==
 
== Downloads ==
Zeile 471: Zeile 471:
  
 
== Quellen ==
 
== Quellen ==
# [http://www.vdr-portal.de/board/thread.php?threadid=43329 AMD Geode NX 1750 - Erste Erfahrungen]
+
# {{vdrportal board|43329|AMD Geode NX 1750 - Erste Erfahrungen}}
# [http://www.vdr-portal.de/board/thread.php?threadid=46176 AMD Geode NX 1750 auf PC-Chips M811 mit picoPSU]
+
# {{vdrportal board|46176|AMD Geode NX 1750 auf PC-Chips M811 mit picoPSU}}
# [http://www.vdr-portal.de/board/thread.php?threadid=47678 AMD Geode 1750 NX und Alternativen]
+
# {{vdrportal board|47678|AMD Geode 1750 NX und Alternativen}}
# [http://www.vdr-portal.de/board/thread.php?threadid=48528 M811 - Mainboard (Geode) StressThread/ Sorgenkind IDE]
+
# {{vdrportal board|48528|M811 - Mainboard (Geode) StressThread/ Sorgenkind IDE}}
 
# [http://fab51.com/mobile/tbred/geode_nx-e12.html Geode NX Core Voltage]
 
# [http://fab51.com/mobile/tbred/geode_nx-e12.html Geode NX Core Voltage]
 
# [http://www.datasheets.org.uk/pdf/rt9237-datasheet/rt9237-datasheet.html Datasheet RT9237]
 
# [http://www.datasheets.org.uk/pdf/rt9237-datasheet/rt9237-datasheet.html Datasheet RT9237]

Aktuelle Version vom 20. Februar 2010, 13:10 Uhr

Inhaltsverzeichnis

[Bearbeiten] AMD Geode NX 1750 auf PC-Chips M811 mit picoPSU als stromsparender VDR

Die Kombination des stromsparenden Prozessors AMD Geode NX 1750 in Verbindung mit dem günstigen Mainboard PC-Chips M811 hat sich unter VDR Nutzern zu einem kleinen Geheimtipp entwickelt. Im VDR-Portal gibt es mittlerweile einige Threads zu diesem Thema. Wenn ich es recht überblicke, brachte fabo mit seinem Posting AMD Geode NX 1750 - Erste Erfahrungen den Stein ins Rollen.

Ich möchte an dieser Stelle einmal die wichtigsten Informationen in Form eines HOWTOs zusammenfassen, wobei das HOWTO im VDR Portal regelmäßiger aktualisiert wird. Der Schwerpunkt liegt auf den Stromsparmöglichkeiten dieses Systems.

Die Softwareanpassungen basieren auf einem Debian 3.1 mit jeweils aktuellem Kernel von kernel.org.

Vorab Danke an alle Beteiligten, die geholfen haben, dass dieses HOWTO erstellt werden konnte, und speziell an alex-zero für das Korrekturlesen.

[Bearbeiten] CPU FSB und Vcore einstellen

Das M811 bietet per Jumper (JP2) und BIOS Einstellung die Möglichkeit, den Geode mit 100 oder 133MHz FSB zu betreiben. Der Multiplikator ist nicht einstellbar, was nicht weiter tragisch ist, da die Frequenz der CPU auch im laufenden Betrieb gesenkt werden kann. Dazu später mehr. In der Standardeinstellung läuft der Geode mit 10.5x133MHz=1400MHz. Mit FSB 100Mhz reduziert sich die Frequenz auf 1050MHz. Dieser Wert ist für einen VDR völlig ausreichend.

Von Haus aus besteht beim M811 keine Möglichkeit, die Vcore zu reduzieren so daß die CPU mit 1,425V statt normalerweise 1,250V betrieben wird. Die CPU liefert standardmäßig "10001" als VID-Code (VID[4:0]).

tomfy erarbeitete hier eine Möglichkeit, durch Auftrennung eines Pins des Spannungsregler ICs (RT9237) des M811, die Vcore auf 1,225V einzustellen. Dies reduziert sowohl die Stromaufnahme als auch die CPU Temperatur und ermöglicht eine passive Kühlung.

Warnung
Warnung

Durch die Manipulation am Mainboard erlischt die Gewährleistung. Auch sollte man Erfahrung im Umgang mit dem Lötkolben (z.B ERSA Tip 260, 16W) haben.



[Bearbeiten] Vcore per Jumper oder DIP-Schalter

Durch tomfys Erfolg beflügelt, habe ich durch eine Modifikation des Mainboards die Vcore Einstellung auf beliebige Werte erreicht. Dazu wurden die fünf relevanten Pins des Spannungsregler ICs auf Jumper geführt. Damit läßt sich der Geode bei FSB 100MHz auch mit 1,1V Vcore stabil betreiben. Die Leistungsaufnahme gegenüber 1,425V sinkt um ca. 10W.

+--------------+
|              |
|.  RT9237     |
+--------------+
 ||||||||||||||
 VVVVV
 IIIII
 DDDDD
 43210
 |||||
 °°°°° <- Jumperblock
 °°°°°
 |||||
 +++++---< GND

Der . markiert Pin1 und ist mit VID4 identisch. Im Datenblatt des RT9237 bedeutet eine 1 kein Jumper gesetzt und die 0 Jumper gesetzt.

Jumperstellung für Vcore 1,100V:

VID4  1
VID3  1
VID2  1
VID1  1
VID0  0

0 == GND (0V)
1 == offen

Es ist nur der Jumper für VID0 gesetzt.

Alternativ kann man auch DIP-Schalter benutzen (Vcore=1,100V):

       o
        \
VID4--o  o------|  1  DIP OFF
                |
       o        |
        \       |
VID3--o  o------|  1  DIP OFF
                |
       o        |
        \       |
VDI2--o  o------|  1  DIP OFF
                |
       o        |
        \       |
VID1--o  o------|  1  DIP OFF
                |
       o        |
                |
VID0--o--o------|  0  DIP ON
                |
                ^
              MASSE

OFF == Schalter geöffnet
 ON == Schalter geschlossen

[Bearbeiten] Vcore 1.125V per Pin ablöten

Eine Alternative, zu einer niedrigeren CPU Spannung zu kommen, ist es, zwei Pins des RT9237 abzulöten, d.h., auf logisch 1 zu setzen. Gucken wir uns dazu die VID Einstellung für die Original- und Alternativspannung an:

VID 4 | 3 | 2 | 1 | 0     Vcore
------+---+---+---+------------
    1 | 0 | 0 | 0 | 1 == 1.425V
    1 | 1 | 1 | 0 | 1 == 1.125V

Daraus ist zu ersehen, daß durch Ablöten von VID3 (Pin 2) und VID2 (Pin 3) die CPU Spannung auf 1.125V eingestellt wird, da beide Eingänge von Potential 0 zu 1 wechseln.

zaphod:~$ sensors 
it87-isa-0290
Adapter: ISA adapter
VCore 1:   +1.12 V  (min =  +1.04 V, max =  +1.57 V)

Die Praxis zeigt, daß es am einfachsten ist, wenn man zuerst noch Pin 1 (VID4) ablötet. An seinem Zustand (1) ändert sich dadurch nichts.

Zum Ablöten hält man eine Stecknadel bereit und schiebt diese unter das mit dem Lötkolben (mit Bleistiftspitze) erhitzte Anschlussbeinchen und hebelt dieses ggf. vorsichtig hoch. Ebenso verfährt man dann mit den Pins 2 und 3.


[Bearbeiten] Zusammenfassung

  • a. Freie Spannungswahl: Jumper oder DIP-Schalter einlöten
  • b. 1.225V Vcore: Pin 2 (VID3) auftrennen
  • c. 1.125V Vcore: Pin 2 (VID3) und Pin 3 (VID2) auftrennen

[Bearbeiten] PowerNow! Support

Der AMD Geode NX 1750 unterstützt die Einstellung der Frequenz während des laufenden Betriebes. Somit ist es möglich, die CPU beim "nichts tun" herunterzutakten und im Bedarfsfalle (z.B. DVD erstellen) die volle Leistung abzurufen. alex-zero hat im VDR-Portal eruiert, wie PowerNow! mit dem Geode zu nutzen ist. Der Kernel kann die PowerNow! Möglichkeiten nicht nutzen, da das BIOS hierfür keine Informationen zur Verfügung stellt.

[Bearbeiten] DSDT Patch

Durch eine Modifikation der DSDT erlaubt das Standard powernow-k7 Kernel Modul mit der Geode-CPU zu arbeiten. Das powernow-k7 Modul benutzt nur das control word der PSS Tabelle.

Short HOWTO:

cat /proc/acpi/dsdt > dsdt 
iasl -d dsdt                   # decompilieren
vi dsdt.dsl                    # Hinzufügen _PCT & _PSS Tabelle siehe unten
iasl -tc dsdt.dsl              # Compilieren der dsdt erzeugt dsdt.hex

Kernel erneut compilieren mit "dsdt.hex" eingebunden. Siehe HOWTO Fix Common ACPI Problems [1] für weitere Hintergründe.

Durch hinzufügen einer _PSS Tabelle in der kann man P states in der DSDT definieren.

       ...
       Processor (\_PR.CPU0, 0x00, 0x00004010, 0x06)
       {
           Name(_PCT, Package () // Performance Control object
           {
               ResourceTemplate(){Register(FFixedHW, 0, 0, 0)}, // PERF_CTRL
               ResourceTemplate(){Register(FFixedHW, 0, 0, 0)} // PERF_STATUS
           })
           /* CoreFreq             core CPU operating frequency (in MHz).
              Power                maximum power dissipation (in milliWatts).
              TransitionLatency    worst-case latency in microseconds that the CPU
              BusMasterLatency     worst-case latency in microseconds that Bus Masters.
              Control              Value to be writen in (PERF_CTRL)
                               reserved   sgtc   vid     fid
                               31:30      29:10  9:5     4:0
              Status               Expected status value
           */
           Name (_PSS, Package()
           {   //        freq  power  trl  bml  cntr  status
               Package(){1400, 21500, 500, 300, 0x3222f, 0x00}, // P0
               Package(){1200, 14900, 500, 300, 0x3226c, 0x00}, // P1
               Package(){1133,  8200, 500, 300, 0x322ab, 0x00}, // P2
               Package(){1067,  5000, 500, 300, 0x322ea, 0x00}, // P3
               Package(){1000,  3000, 500, 300, 0x32329, 0x00}, // P4
               Package(){ 800,  2200, 500, 300, 0x32326, 0x00}, // P5
           })
       }
       ...

[Bearbeiten] MSR Patch

Durch einen Patch des Kernels werden die entsprechenden Daten dort eingebaut, so daß das powernow-k7 Modul damit arbeiten kann. Dieser Patch wird hier zur Verfügung gestellt. Im Anhang findet sich ein Patch für den jeweils aktuellen Kernel.

# Patch Datei laden
gunzip powernow-k7-msr-2.6.16.1.patch.gz 
cd /usr/src/linux
patch -p1 < ~/powernow-k7-msr-2.6.16.1.patch

Nun wird der Kernel mit folgenden Einstellungen neu übersetzt:

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y 
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y

#
# CPUFreq processor drivers
#
# CONFIG_X86_ACPI_CPUFREQ is not set
# CONFIG_X86_POWERNOW_K6 is not set
CONFIG_X86_POWERNOW_K7=m
CONFIG_X86_POWERNOW_K7_ACPI=y
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_GX_SUSPMOD is not set
# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
# CONFIG_X86_SPEEDSTEP_ICH is not set
# CONFIG_X86_SPEEDSTEP_SMI is not set
# CONFIG_X86_P4_CLOCKMOD is not set
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
# CONFIG_X86_LONGRUN is not set
# CONFIG_X86_LONGHAUL is not set

Die Datei /etc/modules wird folgendermaßen modifiziert:

~# grep powernow_k7 /etc/modules
powernow_k7 msr_force=1

damit das Modul automatisch geladen wird.

Nach dem Neustart des Kernel überprüft man die möglichen Varianten zur Frequenzeinstellung:

~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
conservative ondemand powersave userspace performance

Nähere Informationen sind hier zu finden: /usr/src/linux/Documentation/cpu-freq/

Mittels dmesg oder in syslog sollte diese Meldung (mit FSB 100MHz) auftauchen:

powernow: PowerNOW! Technology present. Can scale: frequency and voltage.
Detected 1048.423 MHz processor.
powernow: Trying ACPI perflib
powernow: ACPI perflib can not be used in this platform
powernow: ACPI and legacy methods failed
powernow: See http://www.codemonkey.org.uk/projects/cpufreq/powernow-k7.shtml
powernow: Building frequency table from MSR info.
powernow: Minimum speed 599 MHz. Maximum speed 1048 MHz.

Ich betreibe den Geode derzeit mit conservative. Damit dies beim Start aktiviert wird, habe ich folgendes in /etc/init.d/bootmisc.sh eingetragen:

echo conservative > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Mittels

watch -n1 "cat /proc/cpuinfo|grep MHz"

kann man sich laufend die aktuelle Frequenz der CPU anzeigen lassen.

[Bearbeiten] Manual Frequency Table Patch

Auf diesen Patch bin ich durch Elchi aufmerksam gemacht worden. Er beruht wohl auf einen Patch von Milan Enev: Linux 2.6.12.2 PowerNow! K7 Manual Frequency Table

Da der originale Patch bei mir nicht richtig funktionierte, habe ich aus Elchis und Enevs Versionen eine für Kernel 2.6.16.9 funktionierende Variante erstellt.

Der Kernel muß für diesen Patch genauso konfiguriert sein wie für den MSR Patch. Das Einspielen des Patches erfolgt analog.

~# "Patch Datei laden"
~# gunzip powernow-k7-manual-2.6.16.9_enev_kilroy.patch.gz
~# cd /usr/src/linux
zaphod:/usr/src/linux# patch -p1 < ~/powernow-k7-manual-2.6.16.9_enev_kilroy.patch

Das Modul wird wieder per /etc/modules geladen:

~# grep powernow_k7 /etc/modules
powernow_k7 overwrite_table=1 fsb=100000 multiplier=50,60,70,80,90,105

oder alternativ händisch per modprobe:

~# modprobe powernow_k7 overwrite_table=1 fsb=100000 multiplier=50,60,70,80,90,105

Die multiplier Parameter sind variierbar. Beispiel:

~# modprobe powernow_k7 overwrite_table=1 fsb=100000 multiplier=55,75,95,105
~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
550000 750000 950000 1050000

Beispielausgabe des syslog:

zaphod kernel: powernow: PowerNOW! Technology present. Can scale: frequency and voltage.
zaphod kernel: powernow-k7: Current multiplier 10.5. CPU running at 1048MHz
zaphod kernel: powernow-k7: FSB: 100MHz
zaphod kernel: powernow: Overwriting PST table with manual settings
zaphod kernel: powernow-k7: Settling Time: 200 microseconds.
zaphod kernel: powernow-k7:    FID: 0x4 (5.0x [500MHz])^IVID: 0x11 (1.250V)
zaphod kernel: powernow-k7:    FID: 0x6 (6.0x [600MHz])^IVID: 0x11 (1.250V)
zaphod kernel: powernow-k7:    FID: 0x8 (7.0x [700MHz])^IVID: 0x11 (1.250V)
zaphod kernel: powernow-k7:    FID: 0xa (8.0x [800MHz])^IVID: 0x11 (1.250V)
zaphod kernel: powernow-k7:    FID: 0xc (9.0x [900MHz])^IVID: 0x11 (1.250V)
zaphod kernel: powernow-k7:    FID: 0xf (10.5x [1050MHz])^IVID: 0x11 (1.250V)
zaphod kernel: powernow: Minimum speed 500 MHz. Maximum speed 1050 MHz.

Arbeitet powernow erfolgreich, kann mach sich die möglichen Frequenzen anzeigen lassen:

~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 
500000 600000 700000 800000 900000 1050000

Zur automatischen Frequenzumstellung wird powernowd verwendet.

~# aptitude install powernowd

Der Start erfolgt mit folgenden Parametern:

~# cat /etc/default/powernowd 
OPTIONS="-v -n -m 0"

"-m 0" bewirkt, daß die Frequenzänderung einer Sinuskurve folgt. Siehe auch man powernowd.

~# /etc/init.d/powernowd restart

Hier die Ausgabe des powernowd Aufrufes:

Starting powernowd: powernowd: PowerNow Daemon v0.90, (c) 2003-2004 John Clemens
powernowd: Settings:
powernowd:   verbosity:        1
powernowd:   mode:             0     (SINE)
powernowd:   step:           100 MHz (100000 kHz)
powernowd:   lowwater:        20 %
powernowd:   highwater:       80 %
powernowd:   poll interval: 1000 ms
powernowd: Found 1 cpu:
powernowd:   cpu0: 500Mhz - 1050Mhz
powernowd.

Dieser Patch bietet grundsätzlich auch die Möglichkeit, die CPU Spannung anzupassen (Vcore), dieses funktioniert bei mir mit dem M811 Board jedoch nicht.

Wer den Geode mittels JP2 auf dem M811 mit FSB 133MHz laufen läßt, kann powernow-k7 folgendermaßen nutzen:

~# modprobe powernow_k7 overwrite_table=1 fsb=133333 multiplier=40,50,60,70,80,90,105

Das ergibt diese möglichen Frequenzen:

~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 
533332 666665 799998 933331 1066664 1199997 1399996

[Bearbeiten] nvram-wakeup

Zuerst sollte man das nvram-wakeup im BIOS des M811 unter Power Management Setup aktivieren. Wakeup ist auf auf Enabled zu stellen und in der WakeupINT Tabelle muß der RTC interrupt eingeschaltet sein. Außerdem dürfen bei dem ersten Start von nvram-wakeup nicht die Werte Day 0, Hour 0, Min 0, Sek 0 im BIOS stehen, da daß Programm sonst mit einem Fehler beendet wird. Der Einfachheit halber trägt man für jeden Wert eine 1 ein.

Nun wird das Paket nvram-wakeup installiert:

~# aptitude install nvram-wakeup

Unter /etc wird die Datei nvram-wakeup.conf für das M811 erstellt:

Datei
/etc/nvram-wakeup.conf
################################################
##  Mainboard autodetection information:
##
##    - Mainboard vendor:   ""
##    - Mainboard type:     "VT8367-8235"
##    - Mainboard revision: ""
##    - BIOS vendor:        "Phoenix Technologies, LTD"
##    - BIOS version:       "6.00 PG"
##    - BIOS release:       "10/20/2005"

addr_stat        = 0xD2
shift_stat       = 5
addr_day         = 0xD8
addr_hour        = 0xD9
addr_min         = 0xDA
addr_sec         = 0xDB

upper_method = VT8235_37


In /etc/vdr/vdr-nvram-wakeup.conf ist der Parameter COMMANDLINE wie folgt anzupassen:

COMMANDLINE="--directisa --configfile /etc/nvram-wakeup.conf"

Nicht vergessen ENABLED="yes" zu setzen. Ein Reboot ist für nvram-wakeup beim M811 nicht nötig.

Um die korrekte Funktion zu überprüfen, sollte man nvram-wakeup jetzt einmal testen:

~# nvram-wakeup --directisa --configfile /etc/nvram-wakeup.conf --settime $((`date +%s` + 601))
~# shutdown -h now

Die Aufwachzeit wird auf 601 Sekunden in die Zukunft gestellt, also bitte mindestens 10 Minuten warten. ;)

[Bearbeiten] lm_sensors

Bei einer passiv gekühlten CPU erscheint es sinnvoll, die Temperatur zu überwachen. Dafür wird lm_sensors auf dem System installiert:

aptitude install libsysfs-dev
wget http://www2.lm-sensors.nu/~lm78/archive/lm_sensors-2.10.0.tar.gz
tar xzf lm_sensors-2.10.0.tar.gz -C /usr/local/src/
cd /usr/local/src/lm_sensors-2.10.0/
make user
make user_install

Beim Start des Rechners sollte sensors -s ausgeführt werden:

~# grep -A2 sensors /etc/init.d/bootmisc.sh
/usr/local/bin/sensors -s

: exit 0

Der (2.6.) Kernel muß folgende Module zur Verfügung stellen oder integriert haben:

#
# I2C support
#
CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y
#
# I2C Algorithms
#
CONFIG_I2C_ALGOBIT=y
#
# I2C Hardware Bus support
#
CONFIG_I2C_ISA=y
#
# Hardware Monitoring support
#
CONFIG_HWMON=y
CONFIG_HWMON_VID=y
CONFIG_SENSORS_IT87=y

Die passende /etc/sensors.conf habe ich unten angehängt. Die Ausgabe sieht dann folgendermaßen aus:

~# sensors
it87-isa-0290
Adapter: ISA adapter
VCore 1:   +1.10 V  (min =  +1.04 V, max =  +1.57 V)   
fan1:      831 RPM  (min =    0 RPM, div = 8)          
CPU Temp:    +39 C  (low  =   +15 C, high =   +50 C)   sensor = thermistor


[Bearbeiten] Stromversorgung mit picoPSU

Um die Effizienz bzgl. Stromverbrauch des Systems AMD Geode NX 1750 auf PC-Chips M811 als VDR weiter zu erhöhen, betreibe ich den Rechner jetzt mit der picoPSU und einem entsprechenden externen Schaltnetzteil.

Das System verbraucht im normalen Betrieb (mit einer FF- und drei Budget-Karten, diskless) 50W. Die CPU ist passiv gekühlt. Die Wärme wird von einem extrem leisen 120mm Lüfter (8,7dBA, 800rpm) aus dem Gehäuse befördert.

foobar42 hat berichtet, daß es die picoPSU inzwischen sowohl in einer 120W als auch 80W Version gibt.

vdr_komplett.jpg

[Bearbeiten] UDMA-Problematik

Crue hat mit dem Thread M811 - Mainboard (Geode) StressThreat/ Sorgenkind IDE auf ein Problem des M811 aufmerksam gemacht, welches die Zusammenarbeit des (2.6.x) Kernels mit IDE Festplatten im UDMA Modus betrifft. Standardmäßig wird der höchstmögliche UDMA Modus (meist UDMA 5) eingestellt, welcher jedoch Probleme in Form von Datenübertragungsfehlern auslöst:

zaphod kernel: hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
zaphod kernel: hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
zaphod kernel: ide: failed opcode was: unknown

Das Problem läßt sich erfahrungsgemäß dadurch lösen, daß der UDMA Modus auf 3 oder 4 herabgesetzt wird. Beispiel für UDMA 4 mit Festplatte hda

hdparm -X udma4 /dev/hda

Bei der Installation eines Linuxsystems von CD auf Festplatte oder Nutzung einer "Live-CD" mit Festplatte, sollte darauf geachtet werden, daß der UDMA Modus reduziert oder vorerst komplett abgeschaltet wird, sollte es zu den erwähnten Fehlermeldungen kommen. Zum Abschalten des DMA übergibt man dem Kernel folgenden Parameter:

ide=nodma

Das DMA wird dann beim Abarbeiten der Datei /etc/init.d/bootmisc.sh wieder reduziert aktiviert:

~# tail -n4 /etc/init.d/bootmisc.sh 
hdparm -d 1 -X udma4 /dev/hda

: exit 0

Der Eintrag muß vor dem "exit 0" erfolgen.

[Bearbeiten] BIOS-Update

ddgonzo hat auf den Thread Problem M811 und Geode aufmerksam gemacht. Dort wird geschildert, daß einige M811 Boards auch mit einem älteren BIOS als das vom 20.10.2005 ausgeliefert werden. Das neue BIOS erkennt den AMD Geode dann auch mit den korrekten Frequenzen. ddgonzo stellt dieses BIOS hier zum Download bereit.

[Bearbeiten] Downloads

  1. sensors.conf.gz
  2. powernow-k7-msr-2.6.16.11.patch.gz
  3. powernow-k7-manual-2.6.16.11_enev_kilroy.patch.gz
  4. powernow-k7-manual-2.6.18_enev_kilroy.patch.gz
  5. powernow-k7-manual-2.6.19_enev_kilroy.patch.gz

[Bearbeiten] Quellen

  1. AMD Geode NX 1750 - Erste Erfahrungen
  2. AMD Geode NX 1750 auf PC-Chips M811 mit picoPSU
  3. AMD Geode 1750 NX und Alternativen
  4. M811 - Mainboard (Geode) StressThread/ Sorgenkind IDE
  5. Geode NX Core Voltage
  6. Datasheet RT9237
  7. Linux 2.6.8.1 K7 PowerNow! MSR Support
  8. AMD Geode NX Processors
  9. Manual 120W picoPSU
  10. Manual 80W picoPSU
  11. patch-cpufreq-PST
  12. Alle Informationen über das PicoPSU