SMT-Wakeup
Dentec (Diskussion | Beiträge) |
Hulk (Diskussion | Beiträge) K |
||
(60 dazwischenliegende Versionen von 19 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | == SMT-WakeUp == | + | == Über SMT-WakeUp == |
− | Dokumentation zur SMT- | + | Dokumentation zur SMT-WakeUp-Erweiterung, vorgestellt und entwickelt im VDR-Portal von "Steve135". [http://www.vdr-portal.de/board/thread.php?threadid=74362 Link zum Thread im VDR-Portal] |
− | Die SMT-WakeUp-Erweiterung dient zum timergesteuerten Aufwecken des linuxfähigen DVB- | + | 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 | + | Die Erweiterung besteht aus drei Platinen, einer Hauptplatine, einer Temperatursensorplatine und einer Frontpanelplatine. |
− | Die Hauptplatine ersetzt die Modemplatine in der | + | 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=67515;PROVID=2084] | ||
+ | |||
+ | [http://www.reichelt.de/?ACTION=20;AWKID=67519;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: | ||
+ | |||
+ | [[Bild:SMT_Wakeup_Rohplatine.jpg]] | ||
+ | |||
+ | 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: | ||
+ | <pre> | ||
+ | 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 | ||
+ | </pre> | ||
+ | Bestückt und gelötet sieht das dann folgendermaßen aus (oben ohne Lüftersteuerung, unten mit Lüftersteuerung): | ||
+ | |||
+ | [[Bild:SMT_Wakeup_Bestueckt.jpg]] | ||
+ | |||
+ | 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: | ||
+ | |||
+ | [[Bild:SMT_Wakeup_Netzteil.jpg|800px]] | ||
+ | Belegung Netzteil Stecker: | ||
+ | <pre> | ||
+ | 1: GND | ||
+ | 2: 12V | ||
+ | 3: Nicht belegt | ||
+ | 4: 5V | ||
+ | 5: Dauer 5V | ||
+ | </pre> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | [[Bild:SMT_Wakeup_Modemkabel.jpg|800px]] | ||
+ | |||
+ | Auf diesem Bild sieht man das Kabel angeschlossen an der Box und Platine. | ||
+ | |||
+ | [[Bild:SMT_Wakeup_Platine_verbaut.jpg]] | ||
+ | |||
+ | == 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. | ||
+ | |||
+ | Bild 1 | ||
+ | [[Bild:SMT_Wakeup_Power_taster.jpg]] | ||
+ | |||
+ | Bild 2 | ||
+ | [[Bild:SMT_Wakeup_Schraube.jpg]] | ||
+ | |||
+ | Bild 3 | ||
+ | [[Bild:SMT_Wakeup_Frontplatine.jpg]] | ||
+ | |||
+ | |||
+ | Hier ist jetzt die genaue Beschaltung der Frontplatine zu sehen, extra durchnummeriert | ||
+ | [[Bild:SMT_Wakeup_Frontplatine_beschriftet.jpg]] | ||
+ | |||
+ | Die Beschaltung ist wie folgt: | ||
+ | |||
+ | Die Belegung der Anschlüsse der Frontpanel-Zusatzplatine: | ||
+ | <pre> | ||
+ | 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) | ||
+ | </pre> | ||
+ | |||
+ | == Beschaltung der Hauptplatine == | ||
+ | : | ||
+ | [[Bild:SMT_Wakeup_Hauptplatine_beschriftet.jpg]] | ||
+ | |||
+ | Die Kabel die an der Front Platine der Samsung Box angebracht werden müssen, werden wie folgt verbunden | ||
+ | |||
+ | [[Bild:SMT_Wakeup_Frontplatine_samsung.jpg]] | ||
+ | auf der Rückseite der Platine ist noch ein weiteres Kabel anzulöten wie auf dem Bild zusehen. | ||
+ | Auf dem Foto ist leider nicht genau zu sehen wohin Pin9 verbunden werden muss - direkt unterhalb der beiden anderen Punkte (13 und 12). | ||
+ | |||
+ | [[Bild:SMT_Wakeup_Power_taster_2.jpg]] | ||
+ | |||
+ | Dann müssen nur noch die LED's auf Pin 6,7(Timer Led) und 10,11(HDD Led) angelötet werden | ||
+ | |||
+ | [[Bild:SMT_Wakeup_LEDs.jpg]] | ||
+ | |||
+ | 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 (Anmerkung: Bei mir funktionierte Heisskleber wesentlich besser). 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: | ||
+ | |||
+ | [[Bild:SMT_Wakeup_Temp_platine.jpg]] | ||
+ | |||
+ | 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 | ||
+ | |||
+ | [[Bild:SMT_Wakeup_2_5_Zoll.jpg]] | ||
+ | |||
+ | 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. | ||
+ | |||
+ | |||
+ | [[Bild:SMT_Wakeup_SMD_LED.jpg]] | ||
+ | |||
+ | == 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. | ||
+ | |||
+ | [[Bild:SMT_Wakeup_ISP.jpg]] | ||
+ | |||
+ | Die Belegung des Stecker lautet: | ||
+ | <pre> | ||
+ | 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 | ||
+ | </pre> | ||
+ | |||
+ | 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. B. 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 [http://www.vdrportal.de/board/thread.php?postid=715982#post715982 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. | ||
+ | Vor dem Programmieren sicherstellen, dass die 5V an PIN 2 anliegen und der ATMEGA seine Betriebsspannung erhält. Die Platine muss zum Programmieren mit den 5V versorgt werden, da die einfachen seriellen und parallelen Programmierschaltungen die 5V selbst nicht bereitstellen. | ||
+ | |||
+ | [[Bild:SMT_Wakeup_FuseBits.jpg]] | ||
+ | |||
+ | == Inbetriebnahme == | ||
+ | |||
+ | |||
+ | === Funktion des Controllers prüfen === | ||
+ | Dazu müssen die Spannungsversorgung, das zweipolige 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 herum angelötet (verpolt) | ||
+ | * 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 aus der Steckdose ziehen''', weil das Wakeup-Board mit der ATX 5V-Standby-Spannung des Netzteils versorgt wird. Ausschalten reicht nicht, um das Board spannungsfrei zu machen! Nach dem Ausziehen Powertaster so lange drücken zum Einschalten der Box, bis alle Kondensatoren des Netzteils entladen sind! Erst dann die SMT öffnen! | ||
+ | }} | ||
+ | |||
+ | === 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 der sechs Unterverzeichnisse 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 ändern. | ||
+ | |||
+ | '''Die Aufgaben der Programme:''' | ||
+ | |||
+ | '''SMCSCD''' ist der Kommunikations-Daemon, der die eigentliche Kommunikation mit dem Atmel-Controller über die TTYS0 abwickelt. Alle anderen Programme 'sprechen' mit SMTSCD über zwei Named-Pipes. Einzige Ausnahme davon ist SMTPowerOff. Da zum Zeitpunkt des Aufrufes von SMTPowerOff der Daemon SMTSCD nicht mehr aktiv ist (wurde ja wie alle Prozesse vom RCShutdown bzw. halt Script beim herunterfahren beendet) schreibt dieses Programm direkt auf die TTYS0 zum Atmel-Controller. | ||
+ | |||
+ | '''SMTPowerOff''' schaltet nach einer über den Kommandozeilenparameter -p anzugebenden Zeit in Sekunden die Betriebsspannung der Box über einen Reset des Frontpanels hart aus. Deshalb sollten vor dem Aufruf von SMTPowerOff noch ein paar Kommandos zum Sync, Read-Only-Mount der HDD-Partitionen sowie dem vorherigen Parken der Festplatte ausgeführt werden. Der Aufruf des Programms gehört deshalb nicht direkt in das VDR-Shutdown-Script '/usr/local/bin/vdrshutdown' sondern in die RCShutdown und das halt Script. (siehe auch 'Einbinden der Programme') | ||
+ | <pre> | ||
+ | SMTPowerOff [Optionen] | ||
+ | |||
+ | Optionen: | ||
+ | -p n Setzt Power-Off-Zeit in n Sekunden (n im Bereich von 1..255) | ||
+ | -l Logge Ausgaben zu syslogd anstatt zu stdout/stderr | ||
+ | -v Drucke Versionsinformation | ||
+ | -h Drucke Hilstext (unabhängig von Option -l) | ||
+ | </pre> | ||
+ | |||
+ | '''SMTWakeup''' überträgt die Zeit in Sekunden bis zum nächsten Timer an den Atmel-Controller. Dieses Programm wird daher im VDR-Shutdown-Script '/usr/local/bin/vdrshutdown' aufgerufen (wird dem VDR per Parameter -s auf der Kommandozeile übergeben. Siehe auch 'Einbinden der Programme'). Wenn kein aktiver Timer mehr vorhanden ist wird dem Atmel-Controller beim herunterfahren '-s 0' gesendet, was einen eventuell noch gespeicherten Timer im Atmel löscht. Ein aktiver Timer muss mindestens 30 Minuten in der Zukunft liegen, falls es weniger ist, verschiebt der VDR automatisch den 'Aufwachtermin' auf SYSTIME+30 Minuten!!! Das ist keine Funktionalität von mir, sondern eine VDR-Standard-Funktionalität! Im Normalfall kommt ja auch beim Herunterfahren des VDR dann eine Warnung das ein Timer in weniger als 30 Minuten ansteht. Diese Warnung sollte man eigentlich dann auch nicht ignorieren! | ||
+ | <pre> | ||
+ | SMTWakeup [Optionen] | ||
+ | |||
+ | Optionen: | ||
+ | -s n Setzt Aufwachzeit in n Sekunden (n=0 deaktiviert den Wakeup) | ||
+ | -d Deaktiviert den Wakeup (dasselbe wie Option -s 0) | ||
+ | -l Logge Ausgaben zu syslogd anstatt zu stdout/stderr | ||
+ | -v Drucke Versionsinformation | ||
+ | -h Drucke Hilstext (unabhängig von Option -l) | ||
+ | </pre> | ||
+ | |||
+ | '''SMTGetTemp''' fragt die Temperatur vom SMTSCD über Named-Pipes ab. Der Atmel-Controller sendet dazu jede Sekunde die aktuell vom Temperatursensor gemessene Temperatur an SMTSCD. | ||
+ | |||
+ | '''SMTSetPWM''' steuert mittels Pulsweitenmodulation die Drehzahl des an das Wakeup-Board angeschlossenen Lüfters. | ||
+ | <pre> | ||
+ | SMTSetPWM [Optionen] | ||
+ | |||
+ | Optionen: | ||
+ | -s n Setzt Pulsweite zur Steuerung des Lüfters (n im Bereich von 1..255) | ||
+ | -l Logge Ausgaben zu syslogd anstatt zu stdout/stderr | ||
+ | -v Drucke Versionsinformation | ||
+ | -h Drucke Hilstext (unabhängig von Option -l) | ||
+ | </pre> | ||
+ | |||
+ | '''SMTConnectTest''' dient dem Test der TTYS0-Verbindung. Es wird im eigentlichen Betrieb nicht mehr gebraucht. | ||
+ | |||
+ | === 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. | ||
+ | |||
+ | == Einbau eines leisen Lüfters== | ||
+ | Ein geeigneter leiser Lüfter ist der 'SilenX iXtrema PRO 80mm 11 dBa - 15 mm (IXP-52-11)', da | ||
+ | er eine Bauhöhe von nur 15mm hat. Er kostet z.B. bei HoH etwa 12€. | ||
+ | |||
+ | Der Lüfter wird an der Innenseite des Deckels befestigt, weshalb ein Loch von 75 mm | ||
+ | Durchmesser dort hinein muss (Maße, siehe Bild). | ||
+ | |||
+ | [[Bild:SMT_Wakeup_Luefterloch.jpg|800px]] | ||
+ | |||
+ | Bei diesen Maßen passt der Lüfter auch bei eingebautem Wakeup-Board und 2,5 Zoll Festplatte. Wenn man den Lüfter einklebt, werden die vier Befestigungslöcher im Bild nicht gebraucht. | ||
+ | |||
+ | Mit dem Zirkel oder mit Hilfe des Lüfters das Loch innen anzeichnen. Die Oberfläche aussen wo | ||
+ | das Loch hin soll grossflächig mit Malerkrepp abkleben (falls man mal abrutscht ;-)). Dann | ||
+ | einfach oben und unten je ein Loch innen nah an den Kreisrand bohren und das ganze dann mit | ||
+ | der Laubsäge und runden Metallsägeblättern langsam und vorsichtig innen vom Strich aussägen. | ||
+ | Das Loch ist dann noch nicht perfekt und muss nachgearbeitet werden. Hierzu zwei erprobte | ||
+ | Möglichkeiten: | ||
+ | * Eine Spraydose bzw. Flasche mit geeignetem Durchmesser suchen und Schleifpapier (besser welches mit Textilem Grundträger-kein Papier) mit Körnung 40 drumwickeln. Damit dann das Loch korrekt rund aufreiben/feilen. Da vergeht übrigens einige Zeit... Am wichtigsten ist wirklich das vorherige, vorsichtige und genaue Sägen am Kreis-Innen-Strich. Sonst machst Du Dich bei der 'Nacharbeit' mit der Spraydose 'blasig'. | ||
+ | * Einen großen runden Schleifstein (4 cm bis 5 cm Durchmesser) für die Bohrmaschine besorgen und bei nicht zu hoher Drehtzahl das Loch glattschleifen. Dadurch, dass man den Druck nicht gleichmäßig aufbringt, kann man sich aber auch leicht ein "Ei" schleifen. Hat das Loch die richtige Form, muss es noch entgratet werden. Besonders dabei kann man leicht abrutschen. | ||
+ | |||
+ | Damit die Kanten nicht rosten werden sie mit Klarlack eingepinselt. Jetzt erst darf der | ||
+ | Malerkrepp beseitigt werden. | ||
+ | |||
+ | Als Abdeckung habe ich mit Heißkleber ein 80mm Lüftergitter in das Loch geklebt (der äußere | ||
+ | Ring hatte genau 75 mm). Die Ösen des Gitters waren nicht flach, weshalb ich sie mit der | ||
+ | Zange bearbeiten musste. Dabei brechen die Ösen leicht ab. Bei dem Beispiellüfter sind | ||
+ | Gummibefestigungen dabei. Diese in die Lüfterbefestigungslöcher stecken und das Ganze mit | ||
+ | Sekundenkleber am Deckel befestigen. Der Abstand zum Lüftergitter ist dann noch so groß, dass | ||
+ | sich die beiden nicht berühren. | ||
+ | |||
+ | Wen das Röhren des alten Lüfters beim Booten stört, kann einen 51 Ohm Widerstand in dessen | ||
+ | Zuleitung löten und ihn mit Gummipuffern direkt am Kühlkörper des Prozessors festmachen. Die | ||
+ | entsprechenden Gummipuffer zur Befestigung gibt's unter anderem bei Reichelt für 4 Stück x | ||
+ | 0,54€. Damit dreht er auf jeden Fall schnell genug für die CPU-Kühlung. | ||
+ | |||
+ | '''Test des Lüfters:''' | ||
+ | |||
+ | Mit | ||
+ | <pre> | ||
+ | killall SMT-fanmon2.sh | ||
+ | </pre> | ||
+ | die Steuerung des Lüfters per Skript deaktivieren. Danach mit | ||
+ | <pre> | ||
+ | /usr/bin/SMTSetPWM -s 255 | ||
+ | </pre> | ||
+ | den Lüfter 'volles Rohr' laufen lassen. | ||
+ | |||
+ | Falls das nicht funktioniert, SMTGetTemp aufrufen. Es sollte auf jeden Fall ein Wert größer 0 | ||
+ | angezeigt werden, da sonst der Lüfter nicht läuft. | ||
+ | |||
+ | [[Kategorie:Wakeup]] | ||
+ | [[Kategorie:SMT]] |
Aktuelle Version vom 27. Februar 2010, 19:13 Uhr
Inhaltsverzeichnis |
[Bearbeiten] Ü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.
[Bearbeiten] 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:
1: GND 2: 12V 3: Nicht belegt 4: 5V 5: Dauer 5V
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.
[Bearbeiten] 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)
[Bearbeiten] 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. Auf dem Foto ist leider nicht genau zu sehen wohin Pin9 verbunden werden muss - direkt unterhalb der beiden anderen Punkte (13 und 12).
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 (Anmerkung: Bei mir funktionierte Heisskleber wesentlich besser). 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.
[Bearbeiten] 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.
[Bearbeiten] 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.
[Bearbeiten] 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. B. 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. Vor dem Programmieren sicherstellen, dass die 5V an PIN 2 anliegen und der ATMEGA seine Betriebsspannung erhält. Die Platine muss zum Programmieren mit den 5V versorgt werden, da die einfachen seriellen und parallelen Programmierschaltungen die 5V selbst nicht bereitstellen.
[Bearbeiten] Inbetriebnahme
[Bearbeiten] Funktion des Controllers prüfen
Dazu müssen die Spannungsversorgung, das zweipolige 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 herum angelötet (verpolt)
- 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 aus der Steckdose ziehen, weil das Wakeup-Board mit der ATX 5V-Standby-Spannung des Netzteils versorgt wird. Ausschalten reicht nicht, um das Board spannungsfrei zu machen! Nach dem Ausziehen Powertaster so lange drücken zum Einschalten der Box, bis alle Kondensatoren des Netzteils entladen sind! Erst dann die SMT öffnen!
[Bearbeiten] 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!
[Bearbeiten] 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 der sechs Unterverzeichnisse 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 ändern.
Die Aufgaben der Programme:
SMCSCD ist der Kommunikations-Daemon, der die eigentliche Kommunikation mit dem Atmel-Controller über die TTYS0 abwickelt. Alle anderen Programme 'sprechen' mit SMTSCD über zwei Named-Pipes. Einzige Ausnahme davon ist SMTPowerOff. Da zum Zeitpunkt des Aufrufes von SMTPowerOff der Daemon SMTSCD nicht mehr aktiv ist (wurde ja wie alle Prozesse vom RCShutdown bzw. halt Script beim herunterfahren beendet) schreibt dieses Programm direkt auf die TTYS0 zum Atmel-Controller.
SMTPowerOff schaltet nach einer über den Kommandozeilenparameter -p anzugebenden Zeit in Sekunden die Betriebsspannung der Box über einen Reset des Frontpanels hart aus. Deshalb sollten vor dem Aufruf von SMTPowerOff noch ein paar Kommandos zum Sync, Read-Only-Mount der HDD-Partitionen sowie dem vorherigen Parken der Festplatte ausgeführt werden. Der Aufruf des Programms gehört deshalb nicht direkt in das VDR-Shutdown-Script '/usr/local/bin/vdrshutdown' sondern in die RCShutdown und das halt Script. (siehe auch 'Einbinden der Programme')
SMTPowerOff [Optionen] Optionen: -p n Setzt Power-Off-Zeit in n Sekunden (n im Bereich von 1..255) -l Logge Ausgaben zu syslogd anstatt zu stdout/stderr -v Drucke Versionsinformation -h Drucke Hilstext (unabhängig von Option -l)
SMTWakeup überträgt die Zeit in Sekunden bis zum nächsten Timer an den Atmel-Controller. Dieses Programm wird daher im VDR-Shutdown-Script '/usr/local/bin/vdrshutdown' aufgerufen (wird dem VDR per Parameter -s auf der Kommandozeile übergeben. Siehe auch 'Einbinden der Programme'). Wenn kein aktiver Timer mehr vorhanden ist wird dem Atmel-Controller beim herunterfahren '-s 0' gesendet, was einen eventuell noch gespeicherten Timer im Atmel löscht. Ein aktiver Timer muss mindestens 30 Minuten in der Zukunft liegen, falls es weniger ist, verschiebt der VDR automatisch den 'Aufwachtermin' auf SYSTIME+30 Minuten!!! Das ist keine Funktionalität von mir, sondern eine VDR-Standard-Funktionalität! Im Normalfall kommt ja auch beim Herunterfahren des VDR dann eine Warnung das ein Timer in weniger als 30 Minuten ansteht. Diese Warnung sollte man eigentlich dann auch nicht ignorieren!
SMTWakeup [Optionen] Optionen: -s n Setzt Aufwachzeit in n Sekunden (n=0 deaktiviert den Wakeup) -d Deaktiviert den Wakeup (dasselbe wie Option -s 0) -l Logge Ausgaben zu syslogd anstatt zu stdout/stderr -v Drucke Versionsinformation -h Drucke Hilstext (unabhängig von Option -l)
SMTGetTemp fragt die Temperatur vom SMTSCD über Named-Pipes ab. Der Atmel-Controller sendet dazu jede Sekunde die aktuell vom Temperatursensor gemessene Temperatur an SMTSCD.
SMTSetPWM steuert mittels Pulsweitenmodulation die Drehzahl des an das Wakeup-Board angeschlossenen Lüfters.
SMTSetPWM [Optionen] Optionen: -s n Setzt Pulsweite zur Steuerung des Lüfters (n im Bereich von 1..255) -l Logge Ausgaben zu syslogd anstatt zu stdout/stderr -v Drucke Versionsinformation -h Drucke Hilstext (unabhängig von Option -l)
SMTConnectTest dient dem Test der TTYS0-Verbindung. Es wird im eigentlichen Betrieb nicht mehr gebraucht.
[Bearbeiten] 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.
[Bearbeiten] 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.
[Bearbeiten] Einbau eines leisen Lüfters
Ein geeigneter leiser Lüfter ist der 'SilenX iXtrema PRO 80mm 11 dBa - 15 mm (IXP-52-11)', da er eine Bauhöhe von nur 15mm hat. Er kostet z.B. bei HoH etwa 12€.
Der Lüfter wird an der Innenseite des Deckels befestigt, weshalb ein Loch von 75 mm Durchmesser dort hinein muss (Maße, siehe Bild).
Bei diesen Maßen passt der Lüfter auch bei eingebautem Wakeup-Board und 2,5 Zoll Festplatte. Wenn man den Lüfter einklebt, werden die vier Befestigungslöcher im Bild nicht gebraucht.
Mit dem Zirkel oder mit Hilfe des Lüfters das Loch innen anzeichnen. Die Oberfläche aussen wo das Loch hin soll grossflächig mit Malerkrepp abkleben (falls man mal abrutscht ;-)). Dann einfach oben und unten je ein Loch innen nah an den Kreisrand bohren und das ganze dann mit der Laubsäge und runden Metallsägeblättern langsam und vorsichtig innen vom Strich aussägen. Das Loch ist dann noch nicht perfekt und muss nachgearbeitet werden. Hierzu zwei erprobte Möglichkeiten:
- Eine Spraydose bzw. Flasche mit geeignetem Durchmesser suchen und Schleifpapier (besser welches mit Textilem Grundträger-kein Papier) mit Körnung 40 drumwickeln. Damit dann das Loch korrekt rund aufreiben/feilen. Da vergeht übrigens einige Zeit... Am wichtigsten ist wirklich das vorherige, vorsichtige und genaue Sägen am Kreis-Innen-Strich. Sonst machst Du Dich bei der 'Nacharbeit' mit der Spraydose 'blasig'.
- Einen großen runden Schleifstein (4 cm bis 5 cm Durchmesser) für die Bohrmaschine besorgen und bei nicht zu hoher Drehtzahl das Loch glattschleifen. Dadurch, dass man den Druck nicht gleichmäßig aufbringt, kann man sich aber auch leicht ein "Ei" schleifen. Hat das Loch die richtige Form, muss es noch entgratet werden. Besonders dabei kann man leicht abrutschen.
Damit die Kanten nicht rosten werden sie mit Klarlack eingepinselt. Jetzt erst darf der Malerkrepp beseitigt werden.
Als Abdeckung habe ich mit Heißkleber ein 80mm Lüftergitter in das Loch geklebt (der äußere Ring hatte genau 75 mm). Die Ösen des Gitters waren nicht flach, weshalb ich sie mit der Zange bearbeiten musste. Dabei brechen die Ösen leicht ab. Bei dem Beispiellüfter sind Gummibefestigungen dabei. Diese in die Lüfterbefestigungslöcher stecken und das Ganze mit Sekundenkleber am Deckel befestigen. Der Abstand zum Lüftergitter ist dann noch so groß, dass sich die beiden nicht berühren.
Wen das Röhren des alten Lüfters beim Booten stört, kann einen 51 Ohm Widerstand in dessen Zuleitung löten und ihn mit Gummipuffern direkt am Kühlkörper des Prozessors festmachen. Die entsprechenden Gummipuffer zur Befestigung gibt's unter anderem bei Reichelt für 4 Stück x 0,54€. Damit dreht er auf jeden Fall schnell genug für die CPU-Kühlung.
Test des Lüfters:
Mit
killall SMT-fanmon2.sh
die Steuerung des Lüfters per Skript deaktivieren. Danach mit
/usr/bin/SMTSetPWM -s 255
den Lüfter 'volles Rohr' laufen lassen.
Falls das nicht funktioniert, SMTGetTemp aufrufen. Es sollte auf jeden Fall ein Wert größer 0 angezeigt werden, da sonst der Lüfter nicht läuft.