RTC einbauen

Sammlung von Anleitungen und HowTos für dBox2
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

RTC einbauen

Beitrag von ChakaZulu »

Hi,

im Wiki http://wiki.tuxbox-cvs.sourceforge.net/RealTimeClock habe ich beschrieben, wie man eine Echtzeituhr (RTC) in die Box einbaut. Ist noch nicht perfekt, aber schon ganz gut 8)

ciao,

ChakaZulu
Npq
Senior Member
Beiträge: 1339
Registriert: Donnerstag 24. April 2003, 12:12

Beitrag von Npq »

Hey, super, endlich tut sich mal wieder was in der Treibersektion. :D

Warum eigentlich ein eigenes dbox-device? Ging das nicht über das reguläre /dev/rtc?
gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 21:06

Beitrag von gurgel »

ich hab die Schaltung mal etwas optimiert und vor allem den Schaltplan sauber gezeichnet.
Wo darf ich das hinschicken? Ne SMD-Variante folgt noch.
Test
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Beitrag von ChakaZulu »

hi,
Npq hat geschrieben: Warum eigentlich ein eigenes dbox-device? Ging das nicht über das reguläre /dev/rtc?
Nunja, soweit ich das verstanden habe, wäre dafür der Kernel zu patchen, weil eine RTC über I2C wohl nicht so vorgesehen war. Allerdings habe ich von der Funktionsweise und wie das in den Kernel integriert ist, nicht so die Ahnung. Wenn Du also willst ;)
Ich war mir deshalb auch nicht sicher, wie aufwändig das dann wird, falls man es nachträglich in ein Image einbauen will.
gurgel hat geschrieben: ich hab die Schaltung mal etwas optimiert und vor allem den Schaltplan sauber gezeichnet.
Wo darf ich das hinschicken? Ne SMD-Variante folgt noch.
cool, Du kannst es an chakazulu(at)mschuele.de schicken. Ich habe das Zeug auf meinem Webspace liegen, weil ich nicht verstanden habe, wie man das ins Wiki hochlädt (geht das überhaupt?).

ciao,

ChakaZulu
gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 21:06

Beitrag von gurgel »

email ist raus, auch mit SMD-Version :wink:
Test
gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 21:06

Beitrag von gurgel »

warum sehen die Postscriptfiles eigentlich völlig anders aus als die Eagle-Files?
Test
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

ChakaZulu hat geschrieben:
Ich habe das Zeug auf meinem Webspace liegen, weil ich nicht verstanden habe, wie man das ins Wiki hochlädt (geht das überhaupt?).

ciao,
Ja kann man hochladen. Ich habe dort schon einmal ein Bild hochgeladen.
Ansonsten geht es recht einfach über Arcor.

Gruß Gorcon
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Beitrag von ChakaZulu »

gurgel hat geschrieben:warum sehen die Postscriptfiles eigentlich völlig anders aus als die Eagle-Files?
oh Mist, das ist eine ziemlich kaputte Version der Eagle-Files :oops:

Ich hatte einen Schaltplan für eine DS1302 und dachte, die Beschaltung sollte ähnlich sein. Allerdings war das ein Fehler, hat so nicht funktioniert. Die Postscript-Dateien sind die richtigen gewesen... Ausserdem hat der Batteriehalter, den ich von reichelt bekommen habe, nur zwei Anschlüsse und nicht drei...

Mit Diode und Widerstand hat es nicht funktioniert (aus dem anderen Schaltplan übernommen), stand dann auch im Datenblatt, man solle es nicht so machen ;)

Eigentlich wollte ich das mit den 33Ohm-Widerständen auch machen und die Uhr dann vor die 33er des Chips setzen. Allerdings habe ich den "nackten" Bus nicht gefunden und es dann einfach mal so probiert :)

ciao,

ChakaZulu
Z80
Erleuchteter
Erleuchteter
Beiträge: 710
Registriert: Dienstag 3. September 2002, 12:54

Beitrag von Z80 »

Ich habe mir mal die RTC im Wiki angeschaut, bin aber irgendwie verwirrt.
Hier insbesondere im Hinblick auf die Aussage von schufti
Was die Zerstörung der CPU angeht, so kann ich mir das nur vorstellen, wenn der IIC direkt an den CPU Anschlüssen abgegriffen und damit die Pegelwandler umgangen wurden (CPU: 3,3V IIC: 5V).
[..]
Da IIC ein open Kollektor Design ist, arbeiten alle Devices gegen die Pullups am Bus (ca. 3k) daher sind es eher 33 Ohm zur 'Entkopplung' (mit 33kOhm kann man gegen einen 3kOhm Pullup wohl nichts ausrichten).
Es befinden sich mehrere Schematics/PCBs/PS in DIL/SMD-Versionen in den Archiven.
Irgendwie paßt das aber alles nicht so recht zusammen.
Daher die Frage:
Welche der Versionen ist nun zu bevorzugen:
- die ursprüngliche mit 33Ohm an SDA/SCL angebundene Variante oder
- die mit den 4k7 Pullups und ohne weitere Entkopplung durch Widerstände an SDA/SCL?
Erstere ist lt. ChakaZulu getestet.
Wer hat letztere getestet und für "gut" befunden?

Wer bringt Licht ins Dunkel? :wink:
heisly
Interessierter
Interessierter
Beiträge: 46
Registriert: Sonntag 22. August 2004, 16:31

Timerliste leer trotz Uhrzeit und Datum per RTC

Beitrag von heisly »

Hallo Zusammen,

bevor ich jetzt einen neuen Thread aufmache, häng ich meine Frage hier noch mit dran. Am Wochenende habe ich in meine Nokia-Kabel eine RTC (M41T00) eingebaut. Die hatte ich fertig aufgebaut gerade zur Verfügung! Lt. Datenblatt liegen die meisten Daten gleich wie in der DS1307.

Mit dem Snap vom 9.10. sehe ich im Bootlog, dass die RTC (als 1307) erkannt und der Treiber wird geladen.
Jetzt habe ich auch beim Hochfahren auf dem RTL Transponder sofort die Richtige Uhrzeit! Bisher musste ich immer erst auf einen anderen Transponder wechseln.

So weit so gut, jedoch funktionieren Timeraufnahmen immer noch nicht :-((. Wenn ich direkt nach dem Hochfahren per Webinterface in die Timerliste schaue, ist die noch leer, obwohl bereits die Uhrzeit da ist! Das Kommando "date" per Telnet bestätigt mir auch, dass die Uhrzeit incl. Datum und Jahr richtig ist. Die Timerliste wird jedoch erst wieder nach dem Zappen auf einen anderen Transponder korrekt angezeigt.

So, das war jetzt ne ganze Menge, falls jemand eine Idee dazu hat, so bin ich dankbar für jeden Ansatz.

Vielen Dank für die super Unterstützung hier im Forum und da ich mich so selten Melde gleich noch ein riesen Dankeschön an alle Entwickler und Mitwirkende.

Grüße vom Bodensee, Stephan
gurgel
Tuxboxer
Tuxboxer
Beiträge: 2473
Registriert: Dienstag 8. Oktober 2002, 21:06

Beitrag von gurgel »

Übrigens könnte man sich die Batterie auch sparen, wenn man die Box nicht stromlos macht, denn auch im Deep-Standby wird die RTC mit Strom versorgt (gilt zumindest für Nokia, bei den anderen habe ich nicht gemessen ob die 5V dann auch anliegen).
Test
heisly
Interessierter
Interessierter
Beiträge: 46
Registriert: Sonntag 22. August 2004, 16:31

Timerliste leer trotz Uhrzeit und Datum per RTC

Beitrag von heisly »

Als Würgaround wäre es schon hilfreich, wenn die Box immer z.B. auf ARD steht, wenn sie aus dem Deepstandby hochfährt. Kann ich das irgendwo in einem Config-File eintragen?
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Re: Timerliste leer trotz Uhrzeit und Datum per RTC

Beitrag von ChakaZulu »

heisly hat geschrieben: So weit so gut, jedoch funktionieren Timeraufnahmen immer noch nicht :-((. Wenn ich
jo, da müsste man dem sectionsd beibringen, bei Bedarf weder auf rdate noch auf die DVB-Zeit zu warten.

ciao,

ChakaZulu
heisly
Interessierter
Interessierter
Beiträge: 46
Registriert: Sonntag 22. August 2004, 16:31

Re: Re: Timerliste leer trotz Uhrzeit und Datum per RTC

Beitrag von heisly »

Hallo ChakaZulu,

danke für deine Antwort, auch wenn sie mich nicht so glücklich macht. Ich dachte mit der RTC gehören meine Timerprobleme endgültig der Vergangenheit an. Wer könnte denn das genannte dem sectionsd beibringen :lol: ? Evtl. kann sich ja einer der Devs mit sectionsd-Erfahrung mal zu der Sache äußern.

Hat noch einer einen Workaround auf Lager, um nach dem Booten auf einem festgelegten Kanal (mit Zeitsignal) zu stehen?

Gruß, Stephan
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

sectionsd müsste nur wissen dass eine richtige Uhrzeit da ist.
Das geht bisher über
dvb - Zeit empfangen
ntp - Zeit empfangen

dann wird ein Flag gesetzt dass die Uhrzeit da ist und der timerd rennt richtig los. Am einfachsten lässt man sectionsd mit einem flag starten dass die Uhrzeit schon aktuell ist oder man liest ein /var/etc/.rtc_is_there (noch nicht implementiert).

Houdini
heisly
Interessierter
Interessierter
Beiträge: 46
Registriert: Sonntag 22. August 2004, 16:31

Beitrag von heisly »

Hallo Houdini,

danke für deine Anregungen. Ich bin jetzt mal ganz furchtlos rangegangen und hab die Sourcen ausgecheckt. Die entsprechende Stelle in sectionsd.cpp hab ich zum Testen auch mal modifiziert. Nur ein lauffähiges Image konnte ich noch nicht erstellen, aber das ist eine andere Geschichte und gehört nicht hier rein.

Sobald sich aber was ergeben hat oder kurz bevor ich gefrustet das Handtuch werfe, werde ich mich hier wieder melden.

heisly
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

wenns mit dem image nicht klappt, im Zweifel mal mit einer yadd starten
heisly
Interessierter
Interessierter
Beiträge: 46
Registriert: Sonntag 22. August 2004, 16:31

Beitrag von heisly »

Also,
das mit dem Image erstellen aus dem CVS hab ich nun hingekriegt. Weil ich es nicht besser weis, hab ich die geänderte sectionsd.cpp mit den Änderungen zum Testen im /tuxbox-cvs Verzeichnis ersetzt und alles noch mal gemacht (autogen, configure und make).
Ergebnis: Neues Image, lauffähig, modifizierter sectionsd, jedoch wird der Treiber für die RTC beim Start nicht wie beim JTG-Image geladen (hwrtc in /bin fehlt im Image :-((). Jetzt steh ich erstmal wieder da.

Zum Thema "mit einer yadd starten", gibt es dazu nähere Informationen? Also nicht direkt zum Starten einer yadd, vielmehr zum erstellen.
Oder was für mein generelles Verständnis noch wichtiger wäre, ist an irgend einer Stelle dokumentiert, was beim Erstellen von Software für die dbox so alles gemacht wird, also wo etwas mehr auf den Ablauf eingegangen wird? So was wäre echt hilfreich.

gruß, heisly

P.S: Bei der Software-Entwicklung für Mikrocontroller ist die Welt zumeist schon etwas einfacher - Einfach die paar Quelldateien Compilieren, Linken und in den Speicher damit...
heisly
Interessierter
Interessierter
Beiträge: 46
Registriert: Sonntag 22. August 2004, 16:31

Beitrag von heisly »

Hallo Zusammen,

gute Neuigkeiten! YADD erstellen hab ich mit houdinis kernel aus dem "YADD bootet nicht" -Thread erstmal zum Laufen bekommen.

Dann hab ich den sectionsd jetzt so modifiziert, dass er bei eingebauter und aktivierter RTC nicht mehr auf ein Zeitsignal via DVB bzw. NTP angewiesen ist, um richtig "loszurennen". (Aktiviert wird die RTC Zeitsynchonisation im sectionsd über den Eintrag "network_rtcenable=true" in der neutrino.conf.)

Somit sind nun auch die Einträge in der Timerliste sofort nach dem Start verfügbar. Weiterhin wird es so gehandhabt, dass anschließend die Uhr wenn möglich via DVB bzw. NTP abgeglichen wird. Somit muss man sich nicht um das Stellen der Uhr kümmern.

So sehen die Auszüge aus dem Bootlog aus:
Zunächst das Laden des Moduls:

Code: Alles auswählen

ds1307: $Id: ds1307.c,v 1.1 2005/08/27 01:59:05 chakazulu Exp $
ds1307: I2C Real-Time-Clock detected at addr 0x68
Dann wird die Zeit einmalig aus der RTC bezogen:

Code: Alles auswählen

[timeThread] Time set via RTC, going to sleep for 60 seconds.
Da der RTL Transponder kein (korrektes) Zeitsignal sendet, schlagen die folgenden Synchronisierungsversuche via DVB zunächst fehl:

Code: Alles auswählen

[sectionsd] getUTC: read: Connection timed out
[timeThread] Time set via DVB, going to sleep for 60 seconds.
Ein Zapping auf SAT 1 liefert etwas später dann die DVB-Zeit:

Code: Alles auswählen

[timeThread] - 30.10.2006 21:52:43, tim: Mon Oct 30 21:52:43 2006
[timeThread] Time set via DVB, going to sleep for 60 seconds.
Beim Herunterfahern wird die Uhrzeit dann in der RTC abgespeichert (generelles Vorgehen wie im WIKI beschrieben), beim Starten wird sie wieder ausgelesen.
So, nun hoffe ich auf einen Entwickler, der sich den modifizierten Code (http://morlaundmorpheus.de/tuxbox/sectionsd.zip) mal ansieht und die Sache, falls soweit in Ordnung und nichts dagegen spricht, ins CVS bringt. Evtl. können es auch noch ein paar andere testen?!
Was haltet ihr davon? Ich denke gerade in Bezug auf das IDE-Interface, bei dem man ja relativ schnell eine RTC mit einbauen kann, wäre eine Verbesserung der RTC Unterstützung sinnvoll.

heisly
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

soweit schon ganz gut, nur gefällt mir die zusätzliche bool-variable nicht.
könnte man das nicht so machen, das auswählbar:


rtc->ntp->epg
ntp->epg
epg only

also der reihe nach abarbeiten.
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Beitrag von ChakaZulu »

hi,

ich habe mir das nicht angeschaut, aber ich hätte einfach einen Kommandozeilenparameter hinzugefügt. Der sorgt dafür, dass dem timerd sofort mitgeteilt wird, dass die Uhrzeit korrekt ist (so wie es Houdini ja auch schon vorgeschlagen hat). Dann können nämlich noch zig weitere Uhrsynchronisationsmechanismen eingebaut werden, ohne dass der sectionsd etwas davon wissen muss (rdate muß ja auch nicht unbedingt vom sectionsd aufgerufen werden "one tool for one job" oder so ;))

Aber ich will hier Deine Leistung nicht schlecht machen; schön, daß Du dran gearbeitet hast und zu einer funktionierenden Lösung gekommen bist!

ciao,

ChakaZulu
heisly
Interessierter
Interessierter
Beiträge: 46
Registriert: Sonntag 22. August 2004, 16:31

Beitrag von heisly »

Hallo,

vielen Dank erstmal für eure Anregungen und die konstruktive Kritik. Keine Angst, das kann ich schon vertragen ;-). Das ist mein erster Programmierversuch an der dBox. Der gesamte dbox Softwareaufbau ist mir auch noch etwas unklar. Daher bin ich für alle Tipps dankbar.

@mb405: Eine Variante hast du noch vergessen: rtc -> epg (Mein Favorit!)
Der Reihe nach abarbeiten wäre auch machbar. Ich werde mich evtl. noch mal hinhocken!

@ChakaZulu: Houdini gab mir den eigentlichen Tipp für die gemachten Änderungen am sectionsd:
Am einfachsten lässt man sectionsd mit einem flag starten dass die Uhrzeit schon aktuell ist oder man liest ein /var/etc/.rtc_is_there
Ach ja, die Lösung ist für mich erst dann so richtig "funktionsfähig", wenn sie in einem "offiziellen" Image integriert ist :lol:.

@all:
Ich denke, dass es generell nicht ausreichend ist, dem sectionsd mitzuteilen, dass die Uhrzeit korrekt ist. Denn bei dem Setzen der Uhrzeit beim Systemstart z.B: mit der RTC muss ja irgendwann einmal sichergestellt werden, dass die Uhrzeit in der RTC korrekt ist. Das würde dann wiederum bedeuten, dass die Uhrzeit von Hand gestellt werden muss (auch bei der Zeitumstellung).
Es sei denn, man würde im sectionsd lediglich die zeitgesteuerte Zeitsynchronisation via DVB belassen und dann lediglich ein Flag setzen, wenn die Uhrzeit bei Systemstart "irgendwie anders" bereits gesetzt wurde (rdate, rtc, ...). Dann würde die Zeit über RTC auch wieder automatisch gestellt werden.

Ich habe die Änderung aber auch bewusst so gestaltet, dass sich der sectionsd ohne Änderungen in ein vorhandenes System integrieren lässt. Wenn ein zusätzlicher Parameter in der neutrino.conf erstellt wird, kann die neue Funktionalität genutzt werden. Wenn nicht, bleibt alles beim Alten. Ich hoffte so generell auf bessere Akzeptanz. Wer baut schon gern viel an seinem System um, nur um eine kleine Neuerung einfließen zu lassen.

heisly
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Beitrag von ChakaZulu »

heisly hat geschrieben: @ChakaZulu: Houdini gab mir den eigentlichen Tipp für die gemachten Änderungen am sectionsd:
Am einfachsten lässt man sectionsd mit einem flag starten dass die Uhrzeit schon aktuell ist oder man liest ein /var/etc/.rtc_is_there
das meinte ich ja auch :) Aber in Form eines Kommandozeilenparameters. Ich bin mir sicher Houdini meinte das auch so ;)
heisly hat geschrieben: @all:
[...] Es sei denn, man würde im sectionsd lediglich die zeitgesteuerte Zeitsynchronisation via DVB belassen und dann lediglich ein Flag setzen, wenn die Uhrzeit bei Systemstart "irgendwie anders" bereits gesetzt wurde (rdate, rtc, ...). Dann würde die Zeit über RTC auch wieder automatisch gestellt werden.
So meinte ich es. Die Information, dass die Uhrzeit zum Startzeitpunkt korrekt ist, sollte unabhängig von der Aktualisierung der Uhrzeit sein. D.h. der Parameter beeinflußt nur die Kommunikation zum timerd, der DVB-Teil bleibt wie gehabt.

Wie das mit der Zeitumstellung ist, weiß ich gerade nicht. Die Zeit müßte in UTC in der Uhr stehen und sollte entsprechend der timezone die Systemzeit setzen. Das habe ich aber ehrlich gesagt nicht richtig getestet. Könnte man ja mal machen ;)

ciao,

ChakaZulu
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

hehe :) ChakaZulu und Houdini sind hier.
und alles wird gut.
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

Wie wär es wenn man beim runterfahren nocheinmal die Uhrzeit aus dem EPG ausliest und damit die RTC bei bedarf korrigiert?
Denn alzu genau sind die Dinger ja nicht da ihnen ja ein Trimmer fehlt um den Quarz zu ziehen.

Gruß Gorcon