Hardware:dbox2:RealTimeClock
Inhaltsverzeichnis
Allgemeines
Achtung: Obwohl die hier beschriebene Hardwareerweiterung funktioniert, ist bisher noch keine vollständige Softwareunterstützung vorhanden (siehe dazu Software). Es wird aber daran gearbeitet ;)
Vor allem in Verbindung mit zeitgesteuerten Aufnahmen ist eine zuverlässige Systemzeit unerlässlich. Da die Boxen im Gegensatz zu PCs über keine batteriegepufferte Echtzeituhr (Real Time Clock, RTC) verfügen, muss die aktuelle Uhrzeit aus dem empfangenen Datenstrom extrahiert und dem System mitgeteilt werden. Das funktioniert natürlich nur, wenn die Sender diese Information auch korrekt übermitteln, was leider oft nicht der Fall ist. Wird die Box für eine Aufnahme aus dem Stand-By aufgeweckt und startet auf einem Sender, der die Uhrzeit nicht oder fehlerhaft übermittelt, dann kann dies die Aufnahme verhindern und/oder die komplette Timerliste verändern.
Um dieses Problem zu lösen, gibt es verschiedene Maßnahmen:
- Vor jede Aufnahme wird ein Umschalttimer auf einen Sender angelegt, der die Zeitinformationen korrekt übermittelt
- Beim Start der Box wird die Systemzeit über NTP gesetzt, der Server kann sich dabei im lokalen Netz oder dem Internet befinden
- es wird eine RTC in die Box eingebaut, wie es auf dieser Seite beschrieben ist :)
Bauteile
Die Schaltung besteht nur aus sehr wenigen Bauteilen, die überall zu bekommen sein sollten. Hier ist eine Liste mit den zugehörigen Bestellnummern von Reichelt.
Menge | Bauteil | Bestellnummer |
1 | Knopfzellenhalter für Ø 20 mm | KZH 20-1 |
1 | Real Time Clock für I2C | DS 1307 |
1 | Lithium-Knopfzelle, 3 Volt | CR 2032 |
1 | IC-Sockel, 8-polig | GS 8 |
1 | Uhrenquarz, 32,768kHz | 0,032768 |
3 | Widerstand, 4,7kOhm | 1/4W 4,7K |
1 | Stiftleiste | SL 2X10G 2,54 |
2 | Kupplungs-Leergehäuse, 2-polig | PSK 254/2W |
1 | Crimpkontakte | PSK-Kontakte |
1 | Flachbandkabel | AWG 28-08G 3m |
Je nachdem, wie man die Schaltung aufbauen (Lochraster, gedruckte Schaltung,...) und anschließen möchte (Pfostenstecker, Lötpads,...), ist die Einkaufsliste zu modifizieren und/oder zu ergänzen.
Schaltplan
Der Schaltplan geht direkt aus dem Datenblatt der RTC hervor und ist sehr einfach. Im Archiv sind der Schaltplan, ein Boardlayout und Postscriptdateien der Bestückungs- und Lötseite, jeweils in einer DIP- und SMD-Version.
Allerdings wurde bisher nur diese ältere Schaltung aufgebaut, daher hier noch Dateien für diese (DIP-)Version:
- Eagle Schema Datei
- Eagle Board Datei
- Postscript Bestückungsseite
- Postscript Kupferseite (zur Belichtung)
Zusammenbau der Schaltung
Wie üblich sind zuerst die flachen Bauteile einzulöten, dann die höheren. Beim Batteriehalter auf richtige Polung achten, ebenso sollte der IC(-Sockel) richtigherum eingesetzt werden. Am besten markiert man auf der Bestückungsseite der Platine nochmals die Anschlüsse (GND/+5V und SDA/SCL) und die Anschlussstecker, falls diese nicht verpolungssicher sind.
Anschluss an die Box
Bevor die Box geöffnet wird, bitte den Netzstecker ziehen! Danach muss trotzdem berücksichtigt werden, dass das Netzteil nach Abnehmen des Deckels ungeschützt ist und auch ohne Verbindung zum Stromnetz tödliche Spannungen führen kann!
Die RTC benötigt im Betrieb eine Spannung von +5V, um die Uhrzeit lesen und schreiben zu können. Fällt die Betriebsspannung unter eine bestimmte Grenze, dann wird auf Batteriebetrieb umgeschaltet und es wird intern nur noch die Uhrzeit aktualisiert. Die +5V können an verschiedenen Stellen abgegriffen werden, die folgenden Abschnitte zeigen mögliche Stellen für die verschiedenen Boxmodelle.
Die Kommunikation mit der RTC findet über den I2C-Bus statt. Da die verschiedenen Chips der Box auch über diesen Bus kommunizieren, wird die Schaltung einfach als weiterer Slave daran angeschlossen. Je nach Boxmodell sind auch hier unterschiedliche Anschlussmöglichkeiten vorhanden.
Da mich mir nicht sicher bin, ob alle Modelle die gleichen oder anschlusskompatible Chips verwenden, habe ich für jeden Hersteller eine eigene Sektion erstellt. Ggf. sind diese zusammenzufassen oder komplett zu löschen.
Stromversorgung
Nokia
An dieser Stelle muss noch Text rein.
Philips
An dieser Stelle muss noch Text rein.
Sagem
Am Transceiverchip kann die benötigte Spannung abgegriffen werden. Die Pins 32 und 28 bieten sich an, da Pin 32 am äusseren Rand liegt und sich so etwas einfacher löten lässt. Pin 28 liegt zwischen Pin 29 und Pin 27, die ebenfalls an VCC angeschlossen sind.
I2C-Bus
Nokia
An dieser Stelle muss noch Text rein.
Philips
An dieser Stelle muss noch Text rein.
Sagem
SDA und SCL des I2C-Buses können am Frontprozessor abgegriffen werden. Da hier beide Pins dicht nebeneinander liegen ist es je nach Fähigkeiten besser, nur eine Leitung am FP anzulöten und die andere bis zu einer weiteren Anschlussmöglichkeit weiterzuverfolgen (rote Punkte in den Bildern).
Einbau
Damit die Platine nicht irgendwo in der Box herumliegt, wurde sie an die Halterung für die Cardreader geschraubt. Die verwendeten Kupplungsgehäuse für den Anschluss der Stromversorgung und I2C-Datenleitungen sind sehr hoch, so dass sie auf einer Seite etwas eingeschnitten wurden, um die Leitungen abgewinkelt herausführen zu können. Zusätzlich wurde die Platine von unten an die Halterung angeschraubt, damit ausreichend Platz zum Deckel bleibt.
Software
Der Treiber für den Chip basiert größtenteils auf einer von Brian Kuschak auf der lmsensors-Mailingliste geposteten Version (Nachricht), das Modul heisst ds1307.o. Um die Uhrzeit einzustellen gibt es das Tool hwrtc.
Solange noch keine offizielle Unterstützung vorhanden ist, muss die Installation folgendermaßen vorgenommen werden:
/etc/init.d/start_neutrino editieren:
date -s 010101001970 # <-- diese Zeile löschen
in /etc/init.d/rcS folgendes vor die Zeile echo "$VENDOR... einfügen:
if [ -e /var/etc/.rtc ]; then modprobe ds1307 /bin/hwrtc hwtosys fi echo "$VENDOR $MODEL - Kernel %r (%t)." > /etc/issue.net
in /etc/init.d/halt folgendes einfügen:
if [ -e /var/etc/.rtc ]; then /bin/hwrtc systohw fi
Bei Änderung der Dateien muss darauf geachtet werden, dass sie mit Unix-Zeilenumbrüchen gespeichert werden (besonders wichtig, falls sie zum Bearbeiten per FTP auf einen Windowsrechner kopiert werden).
Die weiteren Aktionen sind direkt auf der Box auszuführen (serielle Konsole oder über telnet). /var/etc/.rtc anlegen, z.B. mit
touch /var/etc/.rtc
Am besten setzt man gleich die korrekte Zeit mit hwrtc:
hwrtc settime 2005-08-27 04:54:00
Wenn der sectionsd die korrekte Uhrzeit gesetzt hat ist dies nicht unbedingt notwendig, da durch den Eintrag in der start_neutrino vor dem Herunterfahren die Uhrzeit in der RTC gespeichert wird. Das geschieht allerdings nur, wenn die Box über die Fernbedienung ausgeschaltet wird!
Nach einem Neustart sollte auf der seriellen Konsole eine Ausgabe dieser Art erscheinen:
ds1307: $Id: ds1307.c,v 1.1 2005/08/27 01:59:05 chakazulu Exp $ ds1307: I2C Real-Time-Clock detected at addr 0x68 [...] [sectionsd] we have a time set 0105 + 1900 = 2005 >= 2005 : 1
Falls keine serielle Verbindung möglich ist, kann auch der Befehl dmesg zur Ausgabe der Bootmeldungen benutzt werden. Nach korrekter Installation kann mit dem Befehl
cat /proc/clock
die in der Uhr gespeicherte Uhrzeit (in UTC) ausgegeben werden.
Bis auf weiteres stehen das Modul und hwrtc hier zum Download bereit:
Das Modul kopiert man nach /lib/modules/<kernel-version>/misc. Ist das Verzeichnis nicht beschreibbar, dann kopiert man es nach /var und ersetzt die Zeile modprobe ds1307 durch insmod /var/ds1307.o. hwrtc wird nach /bin kopiert. Falls /bin nicht beschreibbar ist kann es ebenfalls unter /var gespeichert werden. Dabei darauf achten, dass der Pfad in start_neutrino angepasst wird!
FAQ
Q: Die Box kann zeitgesteuerte Aufnahmen durchführen, dann muss sie die Uhrzeit doch kennen. Wozu muss man dann eine Uhr einbauen?
A: Die zeitgesteuerte Aufnahme wird nicht über den Abgleich der aktuellen Uhrzeit mit der programmierten Uhrzeit durchgeführt, da die Box wie bereits erwähnt keine richtige Uhr eingebaut hat. Sie hat aber einen Timer, der Sekunden zählen kann. Wenn man eine zeitgesteuerte Aufnahme programmiert hat und die Box herunterfährt, dann wird die Differenz zwischen aktueller Uhrzeit und Aufnahmeuhrzeit ermittelt und der Timer so eingestellt, dass die Box nach Ablauf dieser Zeitspanne wieder aufwacht. Damit lässt sich die Verfügbarkeit einer (in begrenztem Maße) korrekten Uhrzeit bei Systemstart nicht sicherstellen, die in dieser Anleitung eingebaute RTC dagegen läuft auch bei Trennung vom Stromnetz weiter.
Q: Ich habe die Anleitung befolgt, aber es funktioniert nichts. Was soll ich machen?
A: Zuerst sollte der Fehler genauer analysiert werden. Wichtige Fragen sind etwa Startet die Box überhaupt noch, wann bleibt sie ggf. stehen, fehlt die Ausgabe im Bootlog usw.. Mit dieser Beschreibung kann dann im Tuxbox-Forum geholfen werden, am besten auch gleich ein Bootlog posten.
Danksagung
Vielen Dank an tmbinc, Npq und Sat_Man, ohne deren (nächtliche) Hilfe dieses Projekt nicht erfolgreich hätte beendet werden können.
Grundlagen - Installation - Debug-Mode - Hardware - CDK/Development
LCars - Neutrino - Enigma - Plugins - Spiele - Software - Tools - Howto - FAQ - Images
Hauptseite - News - Alle Artikel - Bewertungen - Gewünschte Seiten - Index - Neue Artikel - Impressum - Team
Hilfeportal - Seite bearbeiten - Bilder - Links - Tabellen - Textgestaltung