24.04.2018, 20:23
Bekanntermaßen besitzt der Raspberry Pi ja keine eingebaute Echtzeituhr. Normalerweise ist das kein Problem solange der Pi eine Internetverbindung hat und über diese die korrekte Uhrzeit beziehen kann. Doch was tun wenn der Pi in einem Auto verbaut ist und somit eine Internetverbindung garnicht oder nur umständlich herzustellen ist? In diesem Fall ist eine Real Time Clock (RTC) die Lösung!
Dieses Tutorial beschreibt wie man ein RTC-Modul unter Raspbian Jessie einbindet. Dazu verwenden wir ein DS3231, das wesentlich genauer arbeitet als ein DS1307.
##############################################################################
WARNUNG: Wie immer bei Eingriffen ins System ist es ratsam, vorher ein Backup zu erstellen!
##############################################################################
1. Hardware-Setup:
Verbindet das RTC-Modul entsprechend folgendem Schema mit dem Pi:
[attachment=457]
(Anmerkung: Falls schon ein Radio-Modul (SI4703) am Pi angeschlossen ist, dann sind die I2C-Pins (GPIO2 und GPIO3) bereits belegt. Das macht aber überhaupt nichts. Hängt einfach das Modul dazu, der I2C kann damit umgehen.)
Nun gehts an’s Eingemachte:
2. Terminal-Fenster öffnen und die /boot/config.txt bearbeiten:
Hier die folgende Zeile einfügen:
Speichern (CTRL-o und ENTER) und schließen (CTRL-x)
3. Nun müssen die zukünftig nicht mehr gebrauchten Dienste fake-hwclock und ntp beendet werden:
4. Neue Datei erstellen
und mit folgendem Inhalt versehen:
Speichern und schließen.
5. Bearbeiten
folgendes vor „exit 0“ einfügen:
Speichern und schließen.
6. Neue Datei:
mit folgendem Inhalt:
Speichern und schließen.
7. Mit folgendem Kommando wird die automatische Zeit-Synchronisierung über RTC (oder NTP falls Internetverbindung besteht) beim Systemstart angestoßen:
8. Anstatt eines Reboots starten wir die Dienste manuell:
Damit ist die Einrichtung abgeschlossen. Ob alles richtig gelaufen ist, können wir nun mit
testen. Die Ausgabe sollte in etwa so aussehen:
Local time: So 2018-01-05 14:00:34 CET
Universal time: So 2018-01-05 13:00:34 UTC
RTC time: So 2018-01-05 13:00:33
Time zone: Europe/Vienna (CET, +0100)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
9. Die Dienste ntp und fake-hwclock werden nun nicht mehr benötigt und können deinstalliert werden. Dafür einfach folgende Schritte nacheinander ausführen:
Hinweis: Gerade nach einer Ersteinrichtung kann es sein, dass die RTC nicht synchron mit der Netzwerkzeit ist. Deshalb führen wir als letzten Schritt noch einen Reset der RTC durch
Falls Datum/Uhrzeit immer noch nicht stimmen:
Synchronisieren mit ntp:
Das war’s!
Credits: Ehre wem Ehre gebührt! Das ganze habe ich mir nicht selbst ausgedacht. Weitestgehend habe ich das dieser Quelle entnommen. Ich habe es nur übersetzt und in kleineren Details abgeändert.
Wer sich mehr in's Thema vertiefen möchte, kann hier mal reinschauen:
https://oberguru.net/linux/zeit-zeitserv...n-rtc.html
https://wiki.archlinux.org/index.php/Tim...ronization
Have fun!
Dieses Tutorial beschreibt wie man ein RTC-Modul unter Raspbian Jessie einbindet. Dazu verwenden wir ein DS3231, das wesentlich genauer arbeitet als ein DS1307.
##############################################################################
WARNUNG: Wie immer bei Eingriffen ins System ist es ratsam, vorher ein Backup zu erstellen!
##############################################################################
1. Hardware-Setup:
Verbindet das RTC-Modul entsprechend folgendem Schema mit dem Pi:
[attachment=457]
(Anmerkung: Falls schon ein Radio-Modul (SI4703) am Pi angeschlossen ist, dann sind die I2C-Pins (GPIO2 und GPIO3) bereits belegt. Das macht aber überhaupt nichts. Hängt einfach das Modul dazu, der I2C kann damit umgehen.)
Nun gehts an’s Eingemachte:
2. Terminal-Fenster öffnen und die /boot/config.txt bearbeiten:
Code:
sudo nano /boot/config.txt
Hier die folgende Zeile einfügen:
Code:
dtoverlay=i2c-rtc,ds3231
Speichern (CTRL-o und ENTER) und schließen (CTRL-x)
3. Nun müssen die zukünftig nicht mehr gebrauchten Dienste fake-hwclock und ntp beendet werden:
Code:
sudo systemctl stop hwclock.sh fake-hwclock ntp
sudo systemctl disable hwclock.sh fake-hwclock ntp
sudo systemctl mask hwclock.sh fake-hwclock ntp
4. Neue Datei erstellen
Code:
sudo nano /etc/systemd/system/hwclock-sync.service
und mit folgendem Inhalt versehen:
Code:
[Unit]
Description=Time Synchronization from RTC Source
After=systemd-modules-load.service
RequiresMountsFor=/dev/rtc
Conflicts=shutdown.target
[Service]
Type=oneshot
ExecStart=/sbin/hwclock -s
TimeoutSec=0
[Install]
WantedBy=time-sync.target
5. Bearbeiten
Code:
sudo nano /etc/rc.local
folgendes vor „exit 0“ einfügen:
Code:
[ ! -e /var/lib/systemd/clock -a "`systemctl is-active systemd-timesyncd | grep -i active`" ] && timedatectl set-ntp 1 > /dev/null 2>&1
6. Neue Datei:
Code:
sudo nano /etc/systemd/timesyncd.conf
mit folgendem Inhalt:
Code:
[Time]
NTP=0.europe.pool.ntp.org 1.europe.pool.ntp.org 2.europe.pool.ntp.org 3.europe.pool.ntp.org
FallbackNTP=0.europe.pool.ntp.org 1.europe.pool.ntp.org 2.europe.pool.ntp.org 3.europe.pool.ntp.org
7. Mit folgendem Kommando wird die automatische Zeit-Synchronisierung über RTC (oder NTP falls Internetverbindung besteht) beim Systemstart angestoßen:
Code:
sudo systemctl enable hwclock-sync systemd-timesyncd
8. Anstatt eines Reboots starten wir die Dienste manuell:
Code:
sudo systemctl start hwclock-sync systemd-timesyncd
Damit ist die Einrichtung abgeschlossen. Ob alles richtig gelaufen ist, können wir nun mit
Code:
timedatectl
Local time: So 2018-01-05 14:00:34 CET
Universal time: So 2018-01-05 13:00:34 UTC
RTC time: So 2018-01-05 13:00:33
Time zone: Europe/Vienna (CET, +0100)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
9. Die Dienste ntp und fake-hwclock werden nun nicht mehr benötigt und können deinstalliert werden. Dafür einfach folgende Schritte nacheinander ausführen:
Code:
sudo systemctl stop fake-hwclock ntp
sudo systemctl disable fake-hwclock ntp
sudo apt-get -y remove fake-hwclock ntp
sudo rm -f /etc/init.d/{fake-hwclock,ntp}
sudo rm -f /etc/default/{fake-hwclock,ntp}
sudo rm -f /etc/rc?.d/{S,K}??fake-hwclock
sudo rm -f /etc/rc?.d/{S,K}??ntp
sudo rm -f /etc/ntp.conf
sudo rm -f /etc/cron.daily/ntp
sudo rm -f /etc/cron.hourly/fake-hwclock
sudo rm -f /var/log/ntpstats
Hinweis: Gerade nach einer Ersteinrichtung kann es sein, dass die RTC nicht synchron mit der Netzwerkzeit ist. Deshalb führen wir als letzten Schritt noch einen Reset der RTC durch
Code:
timedatectl set-local-rtc false
Falls Datum/Uhrzeit immer noch nicht stimmen:
Synchronisieren mit ntp:
Code:
timedatectl set-ntp 1
Das war’s!
Credits: Ehre wem Ehre gebührt! Das ganze habe ich mir nicht selbst ausgedacht. Weitestgehend habe ich das dieser Quelle entnommen. Ich habe es nur übersetzt und in kleineren Details abgeändert.
Wer sich mehr in's Thema vertiefen möchte, kann hier mal reinschauen:
https://oberguru.net/linux/zeit-zeitserv...n-rtc.html
https://wiki.archlinux.org/index.php/Tim...ronization
Have fun!