SMT-Wakeup
(→Über SMT-WakeUp) |
(→Inbetriebnahme) |
||
Zeile 204: | Zeile 204: | ||
− | + | === Funktion des Controllers prüfen === | |
+ | Dazu müssen die Spannungsversorgung, das zweipolig Kabel zur Festplatte und das Frontpanel an der Mikrocontroller-Platine angeschlossen sein. Es schadet nicht, wenn Temperatursensor und Modemkabel auch angeschlossen sind, sonst muss man dies vor dem Einspielen der Software nachholen. Nun die Box starten. Bei Festplattenzugriffen sollte nun die rote LED im Frontpanel aufleuchten. Da der Mikrocontroller das Signal vom IDE-Kabel abgreift und damit die LED steuert, ist das ein Zeichen, dass der Mikrocontroller arbeitet. | ||
+ | Falls die LED nicht leuchtet können folgende Fehler aufgetreten sein: | ||
+ | * die LED wurde falsch angelötet | ||
+ | * der Atmega48 wurde nicht richtig programmiert | ||
+ | * Versorgungsspannung (Gnd = schwarz, 5V = lila) liegt nicht korrekt an. | ||
+ | * Der Quartz schwingt nicht | ||
+ | * Kabelbrüche oder kalte Lötstellen | ||
+ | {{Box Warnung| | ||
+ | Vor Änderungen an der Elektrik immer den '''Stecker der Box ziehen''', weil das Wakeup-Board mit der 5V-Standby versorgt wird. Ausschalten reicht nicht, um das Board spannungsfrei zu machen! | ||
+ | }} | ||
+ | === Die Modemschnittstelle aktivieren === | ||
+ | Im Verzeichnis /usr/model/7020 oder /usr/sbin (je nach Distribution) befindet sich das Programm '''smt-ready''', das bei seinem Aufruf die interne Modemschnittstelle im BIOS deaktiviert. Mit folgenden Befehlen schaltet man das Programm aus: | ||
+ | <pre> | ||
+ | cd /usr/model/7020 | ||
+ | mv smt-ready smt-ready.orig | ||
+ | touch smt-ready | ||
+ | chmod +x smt-ready | ||
+ | </pre> | ||
+ | Anschließend das System neu starten und mit der F2-Taste in das BIOS gehen. Hier müssen jetzt die beiden Punkte bei '''ICH2 GPUs Configuration''' auf '''Off''' gestellt werden. Falls in Euren Startscripten das Programm 'smt-ready' bisher nicht aufgerufen wurde ist jetzt damit schon alles O.K. Falls das Programm 'smt-ready' jedoch auf Eurer Box schon mal ausgeführt wurde, müssen wir die Sache jetzt leider aufwändiger beheben. Es hat sich nachfolgendes Vorgehen bewährt: | ||
+ | |||
+ | Wenn die beiden Punkte bei "ICH2 GPUs Configuration" im BIOS schon auf OFF stehen, diese bitte auf ON stellen und die BIOS-Daten speichern. Jetzt startet die 'Kiste' ja neu. Sofort beim 'blauen BIOS-Bildschirm' wieder F2-Taste drücken und in das BIOS gehen. Die beiden Punkte jetzt auf OFF stellen, speichern und bis in das Betriebssystem (Linux) booten. Sollten die Punkte im BIOS allerdings von Anfang an auf ON gestanden haben, ist vorher nochmal ein Schritt von ON auf OFF notwendig! | ||
+ | |||
+ | Ablauf bei Anfangswert OFF im BIOS: | ||
+ | von OFF auf ON stellen-->speichern-->BIOS-reboot-->von ON auf OFF stellen-->speichern-->Linux booten | ||
+ | Ablauf bei Anfangswert ON im BIOS: | ||
+ | von ON auf OFF stellen-->speichern-->BIOS-reboot-->von OFF auf ON stellen-->speichern-->BIOS-reboot-->von ON auf OFF stellen-->speichern-->Linux booten | ||
+ | |||
+ | Falls Ihr die Einstellungen im SMT-BIOS nicht korrekt vornehmt, ist später keine Kommunikation der Box über die interne Modemschnittstelle mit dem Wakeup-Controller möglich! Sprich die ganze Sache funktioniert dann nicht! | ||
+ | === Einspielen und Übersetzen der Software === | ||
+ | {{Box Hinweis| | ||
+ | Die folgende Beschreibung bezieht sich auf Det's-ISO V2.0b. Bitte selber an die eigene Distribution anpassen und danach diese Beschreibung hier ergänzen. | ||
+ | }} | ||
+ | |||
+ | Die Box ist mit dem Linux-Betriebssystem gebootet. Jetzt bitte das Archiv mit den von Steve135 im [http://www.vdrportal.de/board/thread.php?threadid=74362&threadview=0&hilight=&hilightuser=0&page=1 VDR-Portal-Thread] zur Verfügung gestellten Linux-Quellen herunterladen und z.B. in /usr/local/src/SMT entpacken. Die beiden Quelldateien heißen: | ||
+ | <pre> | ||
+ | SMTWakeup_LinuxSrc.zip | ||
+ | SMTWakeup_LinuxBeispielScripts.zip | ||
+ | </pre> | ||
+ | Auf [http://www.vdrportal.de/board/thread.php?threadid=74362&threadview=0&hilight=&hilightuser=0&page=6 Seite 6 des Threads] finden sich entsprechende Scripte für andere Distributionen: | ||
+ | <pre> | ||
+ | gen2vdr_scripte.tar.bz2 | ||
+ | zenslack_scripte.tar.bz2 | ||
+ | </pre> | ||
+ | Von den Quellen wird zunächst SMTWakeup_LinuxSrc gebraucht. | ||
+ | Wir gehen nun in jedes Unterverzeichnis von /usr/local/src/SMT und übersetzen das jeweilige Programm mit | ||
+ | <pre> | ||
+ | make all | ||
+ | </pre> | ||
+ | Außer dem Programm '''SMTConnectTest''' werden alle übersetzten Programme in das Verzeichnis /usr/model/7020 kopiert. | ||
+ | Hatte man die .zip-Dateien unter Windows entpackt, kann es sein, dass SMTSCD sich nicht übersetzen lässt, da die Groß- in eine Kleinschreibung umgewandelt wurde. Hier den Dateinamen einfach wieder in Großschreibung umsetzen. | ||
+ | === Test der Modemschnittstelle === | ||
+ | Jetzt gehen wir in das Verzeichnis /usr/local/src/SMT/SMTConnectTest und rufen das übersetzte Programm '''SMTConnectTest''' auf. Wenn die Kommunikation korrekt läuft und alles funktioniert kommen jetzt z.Bsp. nachfolgende Bildschirmausgaben: | ||
+ | <pre> | ||
+ | Gelesener Wert: 6 | ||
+ | Gelesener Wert: 27 | ||
+ | </pre> | ||
+ | Das sagt nur aus, das vom Atmel-Controller ein Kommando 'GetTemp' (Wert 6) mit dem Wert 27 (sprich 27 Grad) übermittelt wurde. Im Sekundentakt sollte jetzt eigentlich immer so eine Kommandosequenz eintreffen. Der Wert für die Temperatur ist natürlich von der Temp in Eurer Box abhängig und es ist kein Fehler wenn er nicht 27 ist! | ||
+ | Für diesen Verbindungstest darf das Programm '''SMTSCD''' welches sich auch in dem Quellarchiv befindet noch '''nicht''' aktiv sein!!! | ||
+ | Wenn soweit alles O.K. war und Ihr die entsprechenden Konsolenausgaben bekommen habt, SMTConnectTest einfach mit Ctrl+C abbrechen. | ||
+ | |||
+ | === Einbinden der Programme === | ||
+ | |||
+ | Nun das Archiv mit den Beispiel-Scripts SMTWakeup_LinuxBeispielScripts.zip öffnen. Im Archiv findet man im Verzeichnis /usr/model/7020 die zwei Scripte '''fanmon2.sh''' und '''TemperatureInfo.sh'''. Diese nach /usr/model/7020 kopieren und mit chmod ausführbar machen. | ||
+ | Dann aus dem Archiv das Script /usr/local/bin/vdrshutdown nach /usr/local/bin kopieren und auch wieder mit chmod ausführbar machen. | ||
+ | Im Archiv befindet sich jetzt noch im Verzeichnis /etc/init.d/ das Beispiel-Script '''RCStart'''. Ihr müsst in Eure RCStart jetzt noch den Aufruf von SMTSCD und fanmon2.sh einfügen. Das könnt z.Bsp. so aussehen: | ||
+ | {{Box Datei|/etc/init.d/RCStart| | ||
+ | <pre> | ||
+ | ##### Model ##### | ||
+ | if lspci | egrep '01:08.0' > /dev/null | ||
+ | then | ||
+ | # fbset 720x576-60 | ||
+ | modprobe i2c-dev | ||
+ | modprobe i2c-i810 | ||
+ | modprobe cx88xx card=57 | ||
+ | modprobe cx88-dvb | ||
+ | modprobe dvb-core | ||
+ | modprobe stv0299 | ||
+ | /usr/model/7020/fanmon.sh & | ||
+ | /usr/model/7020/fanmon2.sh & | ||
+ | /usr/model/7020/SMTSCD | ||
+ | /usr/model/7020/smtlircd | ||
+ | /usr/bin/irexec & | ||
+ | /usr/model/7020/tvout.sh | ||
+ | fi | ||
+ | </pre> | ||
+ | }} | ||
+ | Nun müssen wir noch im Script '''/etc/init.d/Runvdr''' den Parameter '-s /usr/local/bin/vdrshutdown' an den Aufruf vom vdr-Programm anhängen. | ||
+ | |||
+ | Im Script '''/etc/init.d/RCShutdown''' muss jetzt noch der nachfolgende Block angepasst werden. Das sollte dann in etwa so aussehen: | ||
+ | {{Box Datei|/etc/init.d/RCShutdown| | ||
+ | <pre> | ||
+ | if [ ${MODEL} == SMT ]; then | ||
+ | hwclock --systohc | ||
+ | /bin/sync | ||
+ | sleep 2 | ||
+ | #Power-Off in 3 Sekunden | ||
+ | /usr/model/7020/SMTPowerOff -p 3 | ||
+ | /sbin/hdparm -Y /dev/hda | ||
+ | sleep 5 | ||
+ | #und jetzt das spezielle poweroff | ||
+ | echo -e -n "\x20\x30\x20\x30\x20\x30\x01\x01" > /dev/ttyS1 | ||
+ | else | ||
+ | </pre> | ||
+ | }} | ||
+ | Den Block im Script '''/etc/init.d/halt''' in etwa so anpassen: | ||
+ | {{Box Datei|/etc/init.d/halt| | ||
+ | <pre> | ||
+ | if [ ${MODEL} == SMT ]; then | ||
+ | /bin/sync | ||
+ | sleep 2 | ||
+ | #Power-Off in 3 Sekunden | ||
+ | /usr/model/7020/SMTPowerOff -p 3 | ||
+ | /sbin/hdparm -Y /dev/hda | ||
+ | sleep 5 | ||
+ | #und jetzt das spezielle poweroff | ||
+ | echo -e -n "\x20\x30\x20\x30\x20\x30\x01\x01" > /dev/ttyS1 | ||
+ | else | ||
+ | if [ ${MODEL} == Z101 ]; then | ||
+ | /bin/stty 38400 cs8 -parenb -cstopb < /dev/ttyS1 > /dev/ttyS1 | ||
+ | echo -e '\xa2\xb1\xa2\xb1\xa2\xb1' > /dev/ttyS1 | ||
+ | fi | ||
+ | #und fuer die normalen Rechner | ||
+ | halt -d -f $netdown $poweroff $hddown | ||
+ | fi | ||
+ | </pre> | ||
+ | }} | ||
+ | Jetzt sind erstmal die Start/Stop-Scripte so angepasst, das das Ausschalten mit der 'neuen Technik' korrekt funktionieren sollte. Leider können wir den VDR nun immer noch nicht mit einem '''kurzen''' Druck auf die Power-Taste der Fernbedienung ausschalten. Damit das korrekt funktioniert, sind noch zwei weitere Änderungen notwendig: | ||
+ | |||
+ | In '''/etc/lirc/lircrc''' den nachfolgenden Block entfernen... | ||
+ | {{Box Datei|/etc/lirc/lircrc| | ||
+ | <pre> | ||
+ | begin | ||
+ | button = POWER | ||
+ | prog = irexec | ||
+ | repeat = 0 | ||
+ | config = /usr/model/7020/smt-sleep.sh | ||
+ | end | ||
+ | </pre> | ||
+ | }} | ||
+ | In '''/etc/vdr/remotes.conf''' die Zeile 'LIRC.Power Power' in 'LIRC.Power POWER' abändern. | ||
+ | |||
+ | Jetzt lässt sich nach einem Neustart der VDR durch einen '''kurzen''' Druck auf die Power-Taste der Fernbedienung herunterfahren/ausschalten. | ||
+ | |||
+ | Im VDR-Einstellungsmenü noch bei 'System-->VDR-Setup-->VDR-Einstellungen-->Sonstiges-->VDR ausschalten bei Inaktivität(min)' einen Wert > 0 (z.Bsp. 180) eintragen. | ||
+ | |||
+ | Jetzt sollten alle notwendigen Veränderungen durchgeführt sein und der VDR lässt sich mit einem aktiven Timer (muss mindestens 30 Minuten in der Zukunft liegen!!!) herunterfahren. Dabei sollte dann natürlich die gelbe Timer-LED im Frontpanel angehen. |
Version vom 24. Juni 2008, 15:21 Uhr
Inhaltsverzeichnis |
Über SMT-WakeUp
Dokumentation zur SMT-WakeUp-Erweiterung, vorgestellt und entwickelt im VDR-Portal von "Steve135". Link zum Thread im VDR-Portal
Die SMT-WakeUp-Erweiterung dient zum timergesteuerten Aufwecken des linuxfähigen DVB-S-Receivers Samsung SMT7020s. Die Festplattenaktivität und der Timerstatus werden über zwei zusätzliche LEDs im Frontpanel derSMT7020s angezeigt. Optional ist eine PWM-Lüftersteuerung integriert. Die Funktionen werden über einen Atmel ATmega48-RISC-Prozessor gesteuert, der auch die Kommunikation über die serielle Schnittstelle ttyS0 der SMT7020s bewerkstelligt.
Die Erweiterung besteht aus drei Platinen, einer Hauptplatine, einer Temperatursensorplatine und einer Frontpanelplatine. Die Hauptplatine ersetzt nach dem Umbau die Modemplatine in der SMT7020s. Für die Kommunikation mit der Wakeup-Controller-Platine wird die bisher durch das integrierte Modem verwendete serielle Schnittstelle ttyS0 benutzt.
Anleitung zum "Bau" der Platine
Die zwei folgenden Links zeigen jeweils auf einen Warenkorb bei Reichelt, welcher die Bauelemente für eine der zwei möglichen Bestückungsvarianten enthält:
http://www.reichelt.de/?ACTION=20;AWKID=67515;PROVID=2084
http://www.reichelt.de/?ACTION=20;AWKID=67519;PROVID=2084
Der erste Warenkorb beinhaltet alle Bauelemente die für die Komplettversion (inklusive Lüftersteuerung) benötigt werden. Der zweite Warenkorb beinhaltet ausschließlich die Bauelemente, die für die reine Wakeup Funktion der Platine benötigt werden.
Hier ist die Platine im Rohzustand zu sehen:
Zum Bestücken der Platinen bitte folgende Stück-Liste benutzen: Die Bauelemente-Positionen sind jeweils mit den Abkürzungen der Bauteile durch den Bestückungsdruck auf der Platine gekennzeichnet:
C1 22pF C2 22pF C3 0,1μ C4 0,1μ C5 0,1μ C6 0,1μ C7 47μ C8 330μ C9 22μ (47μ) C10 0.1μ D1 1N5819 IC1 74HCT00 IC2 ATMEGA48 IC3 LM75CIM-5 K1 AVR-ISP K2 K1X10 K3 K1X5 K4 K1X3 K5 K1X5 K6 K1X5 K7 K1X2 K8 K1X13 K9 K1X5 Q1 11,0592MHZ R1 15K R2 150 R3 15K R4 15K R5 1,0K R6 15K R7 1K R8 120 R9 10K R10 1,5K R11 1K R12 1K R13 1K R14 1K R15 1K R16 1K R17 15K R18 15K R19 15K T1 BC556B T2 BC550B T3 BC550B T4 BC547C (BC550B/C) T5 BC640
Bestückt und gelötet sieht das dann folgendermaßen aus (oben ohne Lüftersteuerung, unten mit Lüftersteuerung):
Nachdem die Platinen fertig sind, geht es ans Kabelverlegen...
Fangen wir mit der Spannungsversorgung an. Hier ist zu beachten, dass Netzteile lange Spannung speichern können und noch einige Zeit nach dem Abschalten gefährliche Spannung führen können. Deswegen am besten den Netzstecker ziehen und anschließend den Einschalter nochmals drücken um die Entladung der Kondensatoren im Netzteil zu unterstützen.
Auf dem Bild sind die entsprechenden Lötpunkte zum Anlöten der Stromversorgung für die Wakeup-Controller-Platine an das Netzteil zu sehen:
Zum Anschluß der Hauptplatine an die SMT7020s wird die bisherige Modem-Schnittstelle verwendet. Die Hauptplatine besitzt zwei Bohrungen, sodass diese dann statt dem Modem an der vorhandenen Modemhalterung befestigt werden kann. Zum Anschließen wird das originale Modem-Kabel verwendet, welches direkt über dem Anschluß auf der 'alten' Modemplatine abgeschnitten wird. Anschließend wird die zur Wakeup-Controller-Platine führende Seite des Kabels mit den Metallsteckkontakten verlötet die dann in die zehnpoligen Stecker-Leergehäuse 'eingeklickt' werden.
Auf diesem Bild sieht man das Kabel angeschlossen an der Box und Platine.
Frontpanel
Kommen wir nun zum Frontpanel. Hier müssen ein paar Leitungen angeschlossen werden um die Box später durch den Wakeup-Controller ein- und ausschalten zu können. Zusätzlich werden 2 LED's in das Sichtfenster des Frontpanels gelegt (HDD, Timer). Auf dem 1.Bild ist rechts die Platine für das Frontpanel zu sehen. Diese wird mittels einer in ein Stück Plastik eingeklebten M3-Schraube befestigt(Bild 2). Auf Bild 3 ist die Platine für das Frontpanel zusehen.
Hier ist jetzt die genaue Beschaltung der Frontplatine zu sehen, extra durchnummeriert
Die Beschaltung ist wie folgt:
Die Belegung der Anschlüsse der Frontpanel-Zusatzplatine:
1: GND 2: HDD-LED-Kathode 3: Panel-Reset 4: Power-Switch 5: Timer-LED-Anode (1-5) werden verbunden mit "Front" links auf der Hauptplatine. 6: Timer-Led Anode (+) 7: Timer-Led Kathode (-) 8: zum Power-Taster (weiss) 9: zum Panel Reset (grau) 10: HDD LED Kathode 11: HDD LED Anode 12: Frontpanel 5V (rot) 13: Frontpanel GND (blau)
Beschaltung der Hauptplatine
Die Kabel die an der Front Platine der Samsung Box angebracht werden müssen, werden wie folgt verbunden
auf der Rückseite der Platine ist noch ein weiteres Kabel anzulöten wie auf dem Bild zusehen
Dann müssen nur noch die LED's auf Pin 6,7(Timer Led) und 10,11(HDD Led) angelötet werden
Die Led's müssen mit einem Stück Plastik isoliert von der Platine auf dieser verklebt werden, hierfür hat sich Sekundenkleber als praktisch erwiesen. Um die Led-Zuleitungen etwas zu fixieren, diese am besten vorsichtig durch die Kontakte des Steckverbinders fädeln. Wenn alles fertig verlötet ist sollte es etwa so aussehen wie auf der nächsten Seite. Bevor das Front-Panel wieder angebracht wird sollte noch das Loch für die Befestigungsschraube (M3-Senkkopf) des Temperatur-Sensors an der Gehäuse-Vorderseite gebohrt werden (wird natürlich für die 'nur Wakeup-Variante' nicht benötigt!). Natürlich kann man die Schraube auch auf einem Stück Metall innen ankleben. Beim Bohren bitte aufpassen das keine Metall-Späne in das Gehäuse bzw. das Mainboard fallen! Aus dieser Sicht ist das Ankleben eines Stückchen Metalls mit der Schraube wohl der 'sichere' Weg. Bitte nochmal überprüfen das die Kabel des Sensors weit genug vom Gehäuse weg sind damit es keine Kurzschlüsse gibt. Anschließend natürlich noch das Kabel des Temperatur-Sensors an den Wakeup-Controller anstecken. Über den Schraubenkopf habe ich zur Sicherheit immer nochmal drei Lagen Isolierband geklebt damit er auch im ungünstigsten Fall keinen Kurzschluss auf der Front-Panel-Platine 'zaubern' kann.
Temperaturfühler Platine
Fertig bestückt sollte die Platine etwa so aussehen:
Oben auf dem Bild mit der beschrifteten Hauptplatine ist zu sehen wie die Temperaturfühlerplatine mit der Hauptplatine verbunden werden muss.
HDD LED
Bei Verwendung einer 3,5" Festplatte muss Pin 39 am IDE Kabel(liegt bei der Nase), mit Pin 2 auf der Hauptplatine verbunden werden.
Zu der Variante mit einer 2,5" Festplatte gibt es ein Bild zur Beschaltung, Pin 1 an der Platine muss an das schwarze Kabel an dem IDE Adapter, Pin 2 siehe Bild
Bei LEDs ist auf die Polung zu achten, da die LED sonst nicht leuchtet, zur Erkennung von Anode und Kathode die Markierungen an den LEDs wie nachstehend beachten.
Programmierung
Der verbaute ATMEGA muss erst noch programmiert werden um seine Funktion auszuführen. Dies geschieht über die standardisierte ISP Schnittstelle die auf der Wakeup-Controller-Platine enthalten ist. Zur Programmierung kann jeder zum Atmel-STK 200/300/500 kompatible Programmer verwendet werden.
Die Belegung des Stecker lautet:
Pin 1 MOSI Pin 2 5V Pin 3 n.c. Pin 4 GND Pin 5 /Reset Pin 6 GND Pin 7 SCK Pin 8 GND Pin 9 MISO Pin10 GND
Zum Programmieren des ATMEGA48 kann entweder ein fertiges Programmiergerät verwendet werden oder es besteht auch die Möglichkeit solch eines selbst zu bauen. Auf dieser Seite gibt es z.Bsp. Anleitungen für Parallele und Serielle Interfaces: http://s-huehn.de/elektronik/avr-prog/avr-prog.htm
Zum Programmieren unter Windows/Linux kann die kostenlose Software PonyProg benutzt werden. Das aktuelle Flash-File ladet ihr am besten direkt im VDR Portal.
Wichtig ist, dass für den Atmel-Controller einmalig die entsprechenden Fuse-Bits gesetzt werden, bevor der ATMEGA48 mit dem eigentlichen 'Abarbeitungsprogramm' programmiert wird. Ein geschirmtes Kabel zwischen ISP und Interface ist zu empfehlen, um Übertragungsfehler zu vermeiden. Die benötigte Einstellung der Fuse-Bits ist auf dem folgenden Bild zu sehen.
Inbetriebnahme
Funktion des Controllers prüfen
Dazu müssen die Spannungsversorgung, das zweipolig Kabel zur Festplatte und das Frontpanel an der Mikrocontroller-Platine angeschlossen sein. Es schadet nicht, wenn Temperatursensor und Modemkabel auch angeschlossen sind, sonst muss man dies vor dem Einspielen der Software nachholen. Nun die Box starten. Bei Festplattenzugriffen sollte nun die rote LED im Frontpanel aufleuchten. Da der Mikrocontroller das Signal vom IDE-Kabel abgreift und damit die LED steuert, ist das ein Zeichen, dass der Mikrocontroller arbeitet. Falls die LED nicht leuchtet können folgende Fehler aufgetreten sein:
- die LED wurde falsch angelötet
- der Atmega48 wurde nicht richtig programmiert
- Versorgungsspannung (Gnd = schwarz, 5V = lila) liegt nicht korrekt an.
- Der Quartz schwingt nicht
- Kabelbrüche oder kalte Lötstellen
Vor Änderungen an der Elektrik immer den Stecker der Box ziehen, weil das Wakeup-Board mit der 5V-Standby versorgt wird. Ausschalten reicht nicht, um das Board spannungsfrei zu machen!
Die Modemschnittstelle aktivieren
Im Verzeichnis /usr/model/7020 oder /usr/sbin (je nach Distribution) befindet sich das Programm smt-ready, das bei seinem Aufruf die interne Modemschnittstelle im BIOS deaktiviert. Mit folgenden Befehlen schaltet man das Programm aus:
cd /usr/model/7020 mv smt-ready smt-ready.orig touch smt-ready chmod +x smt-ready
Anschließend das System neu starten und mit der F2-Taste in das BIOS gehen. Hier müssen jetzt die beiden Punkte bei ICH2 GPUs Configuration auf Off gestellt werden. Falls in Euren Startscripten das Programm 'smt-ready' bisher nicht aufgerufen wurde ist jetzt damit schon alles O.K. Falls das Programm 'smt-ready' jedoch auf Eurer Box schon mal ausgeführt wurde, müssen wir die Sache jetzt leider aufwändiger beheben. Es hat sich nachfolgendes Vorgehen bewährt:
Wenn die beiden Punkte bei "ICH2 GPUs Configuration" im BIOS schon auf OFF stehen, diese bitte auf ON stellen und die BIOS-Daten speichern. Jetzt startet die 'Kiste' ja neu. Sofort beim 'blauen BIOS-Bildschirm' wieder F2-Taste drücken und in das BIOS gehen. Die beiden Punkte jetzt auf OFF stellen, speichern und bis in das Betriebssystem (Linux) booten. Sollten die Punkte im BIOS allerdings von Anfang an auf ON gestanden haben, ist vorher nochmal ein Schritt von ON auf OFF notwendig!
Ablauf bei Anfangswert OFF im BIOS: von OFF auf ON stellen-->speichern-->BIOS-reboot-->von ON auf OFF stellen-->speichern-->Linux booten Ablauf bei Anfangswert ON im BIOS: von ON auf OFF stellen-->speichern-->BIOS-reboot-->von OFF auf ON stellen-->speichern-->BIOS-reboot-->von ON auf OFF stellen-->speichern-->Linux booten
Falls Ihr die Einstellungen im SMT-BIOS nicht korrekt vornehmt, ist später keine Kommunikation der Box über die interne Modemschnittstelle mit dem Wakeup-Controller möglich! Sprich die ganze Sache funktioniert dann nicht!
Einspielen und Übersetzen der Software
Die folgende Beschreibung bezieht sich auf Det's-ISO V2.0b. Bitte selber an die eigene Distribution anpassen und danach diese Beschreibung hier ergänzen.
Die Box ist mit dem Linux-Betriebssystem gebootet. Jetzt bitte das Archiv mit den von Steve135 im VDR-Portal-Thread zur Verfügung gestellten Linux-Quellen herunterladen und z.B. in /usr/local/src/SMT entpacken. Die beiden Quelldateien heißen:
SMTWakeup_LinuxSrc.zip SMTWakeup_LinuxBeispielScripts.zip
Auf Seite 6 des Threads finden sich entsprechende Scripte für andere Distributionen:
gen2vdr_scripte.tar.bz2 zenslack_scripte.tar.bz2
Von den Quellen wird zunächst SMTWakeup_LinuxSrc gebraucht. Wir gehen nun in jedes Unterverzeichnis von /usr/local/src/SMT und übersetzen das jeweilige Programm mit
make all
Außer dem Programm SMTConnectTest werden alle übersetzten Programme in das Verzeichnis /usr/model/7020 kopiert. Hatte man die .zip-Dateien unter Windows entpackt, kann es sein, dass SMTSCD sich nicht übersetzen lässt, da die Groß- in eine Kleinschreibung umgewandelt wurde. Hier den Dateinamen einfach wieder in Großschreibung umsetzen.
Test der Modemschnittstelle
Jetzt gehen wir in das Verzeichnis /usr/local/src/SMT/SMTConnectTest und rufen das übersetzte Programm SMTConnectTest auf. Wenn die Kommunikation korrekt läuft und alles funktioniert kommen jetzt z.Bsp. nachfolgende Bildschirmausgaben:
Gelesener Wert: 6 Gelesener Wert: 27
Das sagt nur aus, das vom Atmel-Controller ein Kommando 'GetTemp' (Wert 6) mit dem Wert 27 (sprich 27 Grad) übermittelt wurde. Im Sekundentakt sollte jetzt eigentlich immer so eine Kommandosequenz eintreffen. Der Wert für die Temperatur ist natürlich von der Temp in Eurer Box abhängig und es ist kein Fehler wenn er nicht 27 ist! Für diesen Verbindungstest darf das Programm SMTSCD welches sich auch in dem Quellarchiv befindet noch nicht aktiv sein!!! Wenn soweit alles O.K. war und Ihr die entsprechenden Konsolenausgaben bekommen habt, SMTConnectTest einfach mit Ctrl+C abbrechen.
Einbinden der Programme
Nun das Archiv mit den Beispiel-Scripts SMTWakeup_LinuxBeispielScripts.zip öffnen. Im Archiv findet man im Verzeichnis /usr/model/7020 die zwei Scripte fanmon2.sh und TemperatureInfo.sh. Diese nach /usr/model/7020 kopieren und mit chmod ausführbar machen. Dann aus dem Archiv das Script /usr/local/bin/vdrshutdown nach /usr/local/bin kopieren und auch wieder mit chmod ausführbar machen. Im Archiv befindet sich jetzt noch im Verzeichnis /etc/init.d/ das Beispiel-Script RCStart. Ihr müsst in Eure RCStart jetzt noch den Aufruf von SMTSCD und fanmon2.sh einfügen. Das könnt z.Bsp. so aussehen:
##### Model ##### if lspci | egrep '01:08.0' > /dev/null then # fbset 720x576-60 modprobe i2c-dev modprobe i2c-i810 modprobe cx88xx card=57 modprobe cx88-dvb modprobe dvb-core modprobe stv0299 /usr/model/7020/fanmon.sh & /usr/model/7020/fanmon2.sh & /usr/model/7020/SMTSCD /usr/model/7020/smtlircd /usr/bin/irexec & /usr/model/7020/tvout.sh fi
Nun müssen wir noch im Script /etc/init.d/Runvdr den Parameter '-s /usr/local/bin/vdrshutdown' an den Aufruf vom vdr-Programm anhängen.
Im Script /etc/init.d/RCShutdown muss jetzt noch der nachfolgende Block angepasst werden. Das sollte dann in etwa so aussehen:
if [ ${MODEL} == SMT ]; then hwclock --systohc /bin/sync sleep 2 #Power-Off in 3 Sekunden /usr/model/7020/SMTPowerOff -p 3 /sbin/hdparm -Y /dev/hda sleep 5 #und jetzt das spezielle poweroff echo -e -n "\x20\x30\x20\x30\x20\x30\x01\x01" > /dev/ttyS1 else
Den Block im Script /etc/init.d/halt in etwa so anpassen:
if [ ${MODEL} == SMT ]; then /bin/sync sleep 2 #Power-Off in 3 Sekunden /usr/model/7020/SMTPowerOff -p 3 /sbin/hdparm -Y /dev/hda sleep 5 #und jetzt das spezielle poweroff echo -e -n "\x20\x30\x20\x30\x20\x30\x01\x01" > /dev/ttyS1 else if [ ${MODEL} == Z101 ]; then /bin/stty 38400 cs8 -parenb -cstopb < /dev/ttyS1 > /dev/ttyS1 echo -e '\xa2\xb1\xa2\xb1\xa2\xb1' > /dev/ttyS1 fi #und fuer die normalen Rechner halt -d -f $netdown $poweroff $hddown fi
Jetzt sind erstmal die Start/Stop-Scripte so angepasst, das das Ausschalten mit der 'neuen Technik' korrekt funktionieren sollte. Leider können wir den VDR nun immer noch nicht mit einem kurzen Druck auf die Power-Taste der Fernbedienung ausschalten. Damit das korrekt funktioniert, sind noch zwei weitere Änderungen notwendig:
In /etc/lirc/lircrc den nachfolgenden Block entfernen...
begin button = POWER prog = irexec repeat = 0 config = /usr/model/7020/smt-sleep.sh end
In /etc/vdr/remotes.conf die Zeile 'LIRC.Power Power' in 'LIRC.Power POWER' abändern.
Jetzt lässt sich nach einem Neustart der VDR durch einen kurzen Druck auf die Power-Taste der Fernbedienung herunterfahren/ausschalten.
Im VDR-Einstellungsmenü noch bei 'System-->VDR-Setup-->VDR-Einstellungen-->Sonstiges-->VDR ausschalten bei Inaktivität(min)' einen Wert > 0 (z.Bsp. 180) eintragen.
Jetzt sollten alle notwendigen Veränderungen durchgeführt sein und der VDR lässt sich mit einem aktiven Timer (muss mindestens 30 Minuten in der Zukunft liegen!!!) herunterfahren. Dabei sollte dann natürlich die gelbe Timer-LED im Frontpanel angehen.