| | |
|
|
|
|
Raspberry Pi: RasClock (PCF2127AT) RTC-Modul verwenden |
|
|
|
Der Raspberry Pi hat einen großen Haken: Er besitzt - wie viele ähnliche Geräte dieser Größe und mit diesem Preis - keine Echtzeituhr (RTC). Nach einem Neustart (und ohne Internetverbindung zu einem NTP-Server) ist er also erstmals dumm und erinnert sich nicht mehr an das aktuelle Datum oder die Uhrzeit. 1970 wäre dann theoretisch seine Weltanschauung, nur dank fake-hwclock erinnert er sich zu mindestens an die Uhrzeit, die beim Herunterfahren aktuell war. Das reicht aber meistens nicht und kann bei einigen Einsatzszenarien zum echten Problem werden.
Glücklicherweise gibt es für den Raspberry Pi schon einige fertige RTC-Module zum Aufstecken auf die GPIO-Kontakte. Eines davon ist z.B. die RasClock von ModMyPi, welches ich aktuell für zwei RPi's verwende. Dieser Händler bietet auch gleich eine relativ gute Anleitung an, die man sich vor der Inbetriebnahme unbedingt durchlesen sollte: Installing the RasClock - Raspberry Pi Real Time Clock
Zur Nutzung ist ein eigenes Kernelmodul notwendig. Wie man es selbst kompilieren kann, will ich an dieser Stelle nicht erklären. Dafür gibt es genügend andere Seiten im Internet. Nur so viel sei gesagt: Es reicht, wenn man diesen Patch auf den eigenen RPi+ Kernel anwendet. Der verlinkte Patch ist für Archivzwecke auch im Pastebin von HAPPYTEC gespeichert. Die folgende Kernelkonfiguration ist zu empfehlen, damit das Modul später wie gewünscht funktioniert.
Code: CONFIG_I2C_BCM2708=m
CONFIG_RTC_CLASS=y
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y
CONFIG_RTC_DRV_PCF2127A=m |
Die folgenden Schritte wurden unter einem aktuellem Raspbian Wheezy getestet. Zuerst sollte man die Fake-Hardwareuhr aus dem System komplett entfernen. Dieses Paket würde später nur noch stören. Wichtig dabei ist, es wirklich restlos zu entfernen, da ansonsten die Init-Scripte zurückbleiben!
Code: apt-get purge fake-hwclock |
Alle anderen gefundenen Anleitungen würden jetzt die rc.local modifizieren, um das gewünschte Ergebnis zu erreichen. Ich habe aber lieber echte Init-Scripte und außerdem wäre mir die Ausführung bei meinem System über die rc.local deutlich zu spät. Deswegen verfolge ich einen anderen Ansatz mit einem kleinen eigenen Script. Der Vorteil daran ist außerdem, dass hierbei die Revision des Raspberry Pi (1/2) automatisch erkannt wird. Die Initialisierung der Kernelmodule erfolgt so auch gleich im selben Schritt. Der Inhalt des Scripts ist aus Gründen der Übersichtlichkeit im Pastebin ersichtlich und auch downloadbar: HAPPYTEC Pastebin Eintrag #255
Code: touch /etc/init.d/rtc-pcf2127a.sh
chmod +x /etc/init.d/rtc-pcf2127a.sh
nano /etc/init.d/rtc-pcf2127a.sh
insserv rtc-pcf2127a.sh |
Eigentlich wollte ich es ja vor "hwclock" ausführen lassen und die restliche Arbeit dem bestehendem Script überlassen. Aber leider weigert sich das hwclock.sh Script beim Booten die Systemzeit zu setzen. Im laufenden Betrieb funktioniert es hingegen problemlos. Falls da also jemand eine noch bessere Lösung parat hat, immer nur her damit! Weiter im Text: Nach einem Neustart des Systems kann das RTC-Modul erstmals mit einer Uhrzeit gefüttert werden, falls das seit dem Einsetzen der Batterie noch nie gemacht wurde.
Danach kann man das System noch einmal neu starten (am Besten ohne Netzwerkverbindung!) und auf der Konsole die aktuelle Uhrzeit mit "date" kontrollieren. Normalerweise sollte das Datum und die Zeit jetzt richtig sein und nicht 1970 oder 1999 anzeigen. Sonst ist etwas schief gelaufen.
Weiterführende Links:
|
Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt am 05.05.2013, 20:07. |
Nach oben |
|
Kommentare: 0 |
Kommentare sind deaktiviert |
|
Autor |
Nachricht |
Für diesen Beitrag können zur Zeit keine neuen Kommentare verfasst werden. Kontaktiere den Autor des Beitrages, falls du Fragen dazu hast. |
Verwendete Zeitzone: CET (Europe/Berlin ) Aktuelles Datum & Uhrzeit: 11.12.2024, 01:26 |
Nach oben |
|
|
|
|
|
|
| | |