Normalerweise holt sich der Raspberry Pi die aktuelle Uhrzeit beim Start über das Netzwerk (NTP). Wenn jedoch kein Internet zur Verfügung steht – zum Beispiel in einem autonomen Sensor-Projekt oder einer Offline-Installation – bleibt die Systemuhr nach dem Einschalten falsch. Die Lösung: ein RTC-Modul (Real Time Clock). Das DS1307-Modul hat einen eigenen Quarz und eine Knopfzelle, läuft also unabhängig weiter, auch wenn der Pi ausgeschaltet ist.
Tipp: Wer die Zeit über GPS beziehen möchte, findet dazu unseren Artikel: Raspberry Pi Uhrzeit über GPS beziehen.
![]() |
![]() |
Benötigte Hardware
- DS1307 I2C RTC Modul mit 24C32 Speicher oder
- RTC I2C DS1307 AT24C32 Real Time Clock Module
- Alternativ – genauer: DS3231 RTC Modul (temperaturkompensiert, deutlich präziser)
- Raspberry Pi (beliebiges Modell)
- 4x Jumper-Kabel (Female/Female oder Male/Female)
- Lötkolben und etwas Werkzeug (zum Entfernen der Widerstände)
DS1307 vs. DS3231: Der DS1307 ist günstig, geht aber temperaturabhängig einige Sekunden vor oder nach. Wer sekundengenaue Zeit braucht, greift besser zum DS3231 – der ist temperaturkompensiert und deutlich genauer. Die Einrichtung beider Module ist identisch, nur der dtoverlay-Name unterscheidet sich (siehe unten).
Das RTC-Modul verkabeln
Bevor ihr das Modul anschließt: Auf manchen DS1307-Modulen müssen die Widerstände R2 und R3 entfernt werden. Diese Pull-up-Widerstände könnten sonst zu Konflikten mit den internen Pull-ups des Raspberry Pi führen und ihn im schlimmsten Fall beschädigen. Entlötet sie daher vorsichtig.
![]() |
Verbindet das RTC-Modul mit dem abgeschalteten Raspberry Pi wie folgt:
| Raspberry Pi GPIO-Pin | RTC-Modul Pin (P1) |
|---|---|
| Pin 2 (5V) | VCC |
| Pin 3 (SDA) | SDA |
| Pin 5 (SCL) | SCL |
| Pin 6 (GND) | GND |
I2C aktivieren per raspi-config
I2C muss aktiviert sein, damit der Pi mit dem RTC-Modul kommunizieren kann. Den einfachsten Weg bietet raspi-config:
|
1 |
sudo raspi-config |
Navigiert zu 3 Interface Options → I5 I2C, bestätigt mit Yes und startet neu:
|
1 |
sudo reboot |
Nach dem Neustart prüft ihr, ob das RTC-Modul erkannt wird:
|
1 2 |
sudo apt install i2c-tools -y sudo i2cdetect -y 1 |
Der DS1307 sollte unter Adresse 68 erscheinen:
|
1 2 3 4 5 |
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- ... 60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- |
RTC in /boot/firmware/config.txt eintragen
Damit der Raspberry Pi das DS1307-Modul automatisch beim Start einbindet, fügen wir ein Device Tree Overlay in die Konfigurationsdatei ein. Seit Raspberry Pi OS Bookworm lautet der Pfad /boot/firmware/config.txt:
|
1 |
sudo nano /boot/firmware/config.txt |
Fügt am Ende der Datei folgende Zeile hinzu:
|
1 |
dtoverlay=i2c-rtc,ds1307 |
Für den DS3231 lautet die Zeile entsprechend:
|
1 |
dtoverlay=i2c-rtc,ds3231 |
Speichert mit STRG+X, Y, Enter und startet neu:
|
1 |
sudo reboot |
Hinweis: Der früher verwendete Hack mit /etc/rc.local (manuelles echo ds1307 0x68 > /sys/class/i2c-adapter/...) ist unter Bookworm nicht mehr nötig. Das dtoverlay erledigt das vollautomatisch beim Systemstart.
fake-hwclock deaktivieren
Raspberry Pi OS installiert standardmäßig fake-hwclock, der beim Herunterfahren die letzte Systemzeit auf der SD-Karte speichert und beim nächsten Start wiederherstellt. Mit einem echten RTC-Modul brauchen wir das nicht mehr – im Gegenteil, es kann die Zeit der Hardware-Uhr überschreiben. Entfernt es daher:
|
1 2 |
sudo apt remove fake-hwclock -y sudo update-rc.d -f fake-hwclock remove |
Uhr testen und stellen
Nach dem Neustart lest ihr die aktuelle Zeit der RTC aus:
|
1 |
sudo hwclock -r |
Beim ersten Mal wird die Uhr wahrscheinlich falsch gehen (oft Januar 2000). Prüft zuerst die Systemzeit:
|
1 |
date |
Wenn der Pi Internetzugang hat, ist die Systemzeit durch NTP bereits korrekt. Schreibt sie nun in das RTC-Modul:
|
1 |
sudo hwclock -w |
Zur Kontrolle lest ihr nochmal aus:
|
1 |
sudo hwclock -r |
Ab sofort liest der Raspberry Pi beim Start automatisch die Zeit aus dem RTC-Modul – auch ohne Internetverbindung.
Zeitzone einstellen
Falls die Zeitzone noch nicht korrekt eingestellt ist, erledigt ihr das am einfachsten über raspi-config:
|
1 |
sudo raspi-config |
Navigiert zu 5 Localisation Options → L2 Timezone und wählt eure Zeitzone (z.B. Europe/Berlin). Alternativ direkt per Kommandozeile:
|
1 |
sudo timedatectl set-timezone Europe/Berlin |
Den aktuellen Status (Systemzeit, RTC-Zeit, NTP-Status) prüft ihr mit:
|
1 |
timedatectl status |
Damit ist eure RTC vollständig eingerichtet – der Pi kennt jetzt auch ohne Internet immer die korrekte Uhrzeit.




