Hardware:dbox2:RealTimeClock

Aus TuxBoxWIKI
Wechseln zu: Navigation, Suche

Vorlage:Debug Warnung


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:


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


Stop hand.png An dieser Stelle muss noch Text rein.


Philips


Stop hand.png 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.

Anschluss an Pin 32 (GND) und Pin 28 (+5V).


I2C-Bus

Nokia


Stop hand.png An dieser Stelle muss noch Text rein.


Philips


Stop hand.png 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).

Anschluss an den I2C-Bus (Übersicht)
Anschluss an den I2C-Bus: Pin 13 (SDA) und Pin 14 (SCL) des Frontprozessors.
Alternativer Anschluss an SCL des I2C-Buses.


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.

RTC fertig eingebaut


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.



Review-KandidatDieser Artikel befindet sich derzeit im Reviewprozess. Hilf mit, ihn zu verbessern! Falls du bei weiteren Artikeln helfen willst, findest du hier eine Auswahl offener Artikel.