News   Magazin   Börse   Links   ArcArchie   Homepages
 Magazin  Sommerzeit und CMOS beim Raspberry Pi Home 
Hardware   Software   Praxis   Sonstiges  
Sommerzeit und CMOS beim Raspberry Pi  Carlos Michael Santillán   23. 12. 2013

Als ich meinen Raspberry Pi zum ersten Mal mit RISC OS in Betrieb nahm, folgte ich sofort der Anleitung wie man Netzwerk für den Rechner einrichtet. Nach dem Neustart habe ich mir dann irgendwann die Uhrzeit mit Alarm angeschaut. Die Uhrzeit war um exakt zwei Stunden verschoben. Mir war sofort klar, das die Uhr richtig gestellt war. Der Rechner war nur auf die britische Zeitzone eingestellt und da zusätzlich gerade Sommerzeit war, stimmte die Differenz von zwei Stunden. Offensichtlich wurde die Uhr via NetTime gestellt. Da das preisgünstige Board keine Uhr mitbringt ist das Stellen der Uhr via Internet durchaus sinnvoll.

Einstellung Time and date So habe ich in der Konfiguration, also Doppelklick auf !Boot und dann Klick auf Time and date, die richtige Einstellung vorgenommen. Unter Locality habe ich UTC-01:00 Central Europe eingestellt und da gerade Sommerzeit war auch noch den Harken bei DST active gesetzt. Weil ich schon hier war habe ich dann auch den Harken bei Pick a server automatically abgewählt und statt uk.pool.ntp.org den deutschen Zeitserverpool de.pool.ntp.org eingetragen und das alles dann gespeichert. Nach einen Reboot ging die Uhr um eine Stunde falsch. Also noch mal in der Konfiguration nachgesehen. Die Zeitzone war richtig eingestellt, aber der Rechner war auf Normalzeit eingestellt. Hier war mir dann klar, dass der Rechner kein CMOS oder anderes bietet um die Konfiguration dauerhaft zu speichern. Das kommt jeden A9home Besitzer irgendwie bekannt vor.

Also habe ich mein Programm Summertime und SysLog auf den Raspberry Pi gepackt. Summertime braucht SysLog um die Aktionen zu protokollieren und wird in !Boot.Resources abgelegt. Ich habe Summertime in $.Utilities.System untergebracht. Interessanterweise funktioniert nach einen Boot SysLog nicht, da das SysLog Modul beim Booten der Anwendung nicht geladen wird. Also starte ich das Programm via der Bootkonfiguration als erstes. Dazu muss man auf !Boot doppelklicken nun auf Boot und dann auf Run klicken. Dort SysLog in die linke Fensterhälfte ziehen und Summertime dann unterhalb von SysLog ziehen, so dass beim Booten zuerst SysLog und dann Summertime gestartet werden. Dies speichern. Als ich dann zur Kontrolle auch Alarm beim Booten startete ist mir noch eine kleine Sache aufgefallen. Die Uhr zeigt erst ein Uhr an und erst etwas später die richtige Uhrzeit. Nach etwas Forschung war die Ursache auch gefunden. Die Uhr steht zu Beginn auf den zweiten Januar 1970 ein Uhr morgens. Ein Uhr (Zeitzone) und 1970 (Start der Unixzeit) verstehe ich. Aber warum der 2. Januar als Startdatum gewählt wurde ist mir schleierhaft. Der Rechner stellt während des Starts die Uhr im Hintergrund mit NetTime über das Internet ein und arbeitet die anderen Dinge weiter ab. Das Stellen der Uhr dauert natürlich etwas und Summertime wähnte sich zuerst im Winter 1970. Da aber Summertime in regelmäßigen Abständen prüft ob nicht etwa die Sommerzeit ein- oder ausgestellt werden soll, hat Summertime die Zeit etwas verspätet richtig eingestellt.

Pedantisch wie ich nun mal bin, habe ich mir ein kleines Kommandozeilentool in BASIC geschrieben. Das Programm wartet einige Sekunden im Multitasking und blockiert damit den Rechner nicht in der Zeit. Das Programm habe ich in !Boot.Library abgelegt. Mit folgenden kleinen Obey, dass ich dst_sleep genannt habe, lasse ich dann Summertime mit 20 Sekunden Verspätung starten.

| Set DST/NoDST
mtsleep 20
SDFS::RPi.$.Utilities.System.!Summertim

Bei mit heißt die SD Karte nicht mehr RISCOSpi, da ich diese in RPi umbenannt habe. Dieses Obey liegt bei mir auch in Utilities.System und wird nach SysLog gestartet. Summertime habe ich dann natürlich aus Run at startup entfernt. Dank mtsleep werden in der Wartezeit die restlichen Aufgaben vom Booten ohne merklich Unterbrechung abgearbeitet. Nun stimmt die Zeit zwar nicht sofort, aber deutlich schneller als vorher.

Konfiguration Run at startup Statt des doch etwas aufwendigen Weg mit SysLog, Summertime und mtsleep hätte ich auch ein Obey mit dem Inhalt *Configure DST beim Booten starten können. Aber Ende Oktober müsste ich das mit *Configure NoDST austauschen und einige Monate später wieder ändern und ich habe halt schon vor vielen Jahren Summertime geschrieben um das alles zu automatisieren. Zusätzlich war ich damit mittendrin den Raspberry Pi zu meinen Rechner zu machen.

Da ich einer der A9home Besitzer bin, habe ich mir seinerzeit cmosd geschrieben. Dieses Programm überwacht im Hintergrund die Einstellung des CMOS und speichert jeder Änderung auf Festplatte. Beim Start von cmosd werden die gespeicherten Einstellungen im A9home einrichtet. Ich hätte nicht gedacht, dass ich das Programm außerhalb des kleine blauen Rechners gebrauchen kann, aber so kann man sich irren. Auch cmosd braucht SysLog und wird bei mir als zweites Programm direkt hinter SysLog beim Booten gestartet. Diese ersten Schritte mit dem Raspberry Pi waren etwas steinig, aber nun brauche ich mich nicht mehr so schnell um die richtige Uhrzeit und den Einstellungen im nicht vorhandenen CMOS kümmern.

Kommentar zum Artikel, Fehler gefunden, etwas unklar, Ergänzung oder ein Tipp? Einfach eine Nachricht schicken!

Name: *

EMail:

Text: *
Hardware   Software   Praxis   Sonstiges  
ArcSite   News   Magazin   Börse   Links   ArcArchie   Homepages