RTC-Modul für Raspberry Pi

Der Raspberry Pi hat ja bekanntlich kein RTC-Modul. Wird der Raspberry Pi ohne funktionierende Netzwerkverbindung gestartet, so passt die Uhrzeit nicht, da er sich die im Betrieb erst per NTP abholt. Abhilfe schafft ein RTC (RealTimeClock)-Modul. Solche findet man bei EBay, Amazon & Co massenweise für wenige Euros.

Ich kaufte mir für 7,99 EUR das „Baoblaze DS1307 Echtzeituhr-Speichermodul“. Neben dem Modul benötigt man noch eine Knopfzelle. Hat man die eingesetzt, kommt der spannende Teil: es gibt keine brauchbare Anleitung für das Teil. In der Packung war auch nichts.

Beginnen wir erstmal mit der Montage des Moduls. Wie es auf den Raspberry Pi aufgesteckt werden muss, kann man anhand des Produktfotos erahnen:

Daraufhin passierte aber erstmal nichts. Logisch – man muss das Modul im Raspberry Pi auch erstmal konfigurieren. Da ich mir die Anleitungen aus vielen Bruchstücken im Netz zusammengesucht habe, hier die komplette Fassung:

  1. Modul einbauen
  2. I2C-Interface aktivieren -> sudo raspi-config aufrufen, dann auf Punkt 5 „Interfacing Options“ gehen und dort das I2C-Interface auf enabled stellen, Raspberry dann neu starten
  3. Zwei weitere Pakete müssen instaliert werden, was der Befehl erledigt: sudo apt-get install python-smbus i2c-tools
  4. Nun kann man prüfen, ob das Modul erkannt wird. Die ID 68 muss angezeigt werden, wenn man diesen Befehl eingibt: sudo i2cdetect -y 1
    Wird stattdessen UU angezeigt, ist das entsprechende Kernel-Modul bereits aktiv.
  5. Jetzt müssen wir das Kernel-Modul aktivieren. Hierzu editiert man die Datei /boot/config.txt (z.B. per sudo nano /boot/config.txt). Je nach verwendeten Modul muss man nun folgende Zeile hinzufügen:
    DS1307: dtoverlay=i2c-rtc,ds1307
    PCF8523: dtoverlay=i2c-rtc,pcf8523
    DS3231: dtoverlay=i2c-rtc,ds3231
    Ist das erledigt, wird der Raspberry nochmal neu gestartet.
  6. Nun wiederholen wir Schritt 4. Diesmal muss im Feld 68 der Wert UU angezeigt werden.
  7. Um den Kernel-Treiber richtig zu aktivieren, muss man das Paket fake-hwclock entfernen. Wichtig ist, das vorher der Schritt 6 erfolgreich war! Das Entfernen erfolgt mit diesen beiden Befehlen:
    sudo apt-get -y remove fake-hwclock
    sudo update-rc.d -f fake-hwclock remove
  8. Nun müssen wir noch das Skript, welches die HWClock setzt anpassen. Dies erfolgt mit dem Befehl:
    sudo nano /lib/udev/hwclock-set
    Ziemlich am Anfang der Datei stehen diese 3 Zeilen:
    if [ -e /run/systemd/system ] ; then
    exit 0
    fi
    Diese Zeilen kommentiert man aus, in dem man in jede dieser 3 Zeilen direkt an den Anfang ein # schreibt. Datei dann abspeichern.
  9. Nun lesen wir mal die Zeit aus dem RTC-Modul aus – dies geht mit
    sudo hwclock -D r
  10. Nun prüfen wir, ob Datum und Uhrzeit vom Raspberry richtig gesetzt sind. Hierzu einfach date eintippen.
  11. Passt die Zeit vom Raspberry, können wir die aktuell Raspberry-Zeit zum RTC schreiben mit:
    sudo hwclock -w
    So lange die Batterie im Modul nicht leer wird, wird dieser Befehl auch nicht mehr benötigt.
  12. Mit sudo hwclock -r können wir die Zeit nun aus dem Modul lesen.

So – das wars. Schon wird die Zeit vom Raspberry Pi immer korrekt sein.

 

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.