DS3231 RTC-Modul 'einbauen' und aktivieren (Jessie)

  • Ich habe das in http://www.forum-raspberrypi.d…tivieren?highlight=ds3231 erwähnte Modul mal auch bei einem Jessie-PI in Betrieb genommen.


    Dabei bin ich hauptsächlich nach gegangen.


    nachdem das Modul aufgesteckt und in der "/boot/config.txt" die I²C-Schnittstelle aktiviert wurde

    Code
    1. dtparam=i2c_arm=on
    2. dtparam=i2s=on
    3. dtoverlay=i2c-rtc,ds3231


    wird die Datei "/etc/conf.d/rtc-i2c" erstellt. (Das Verzeichnis /etc/conf.d muss noch erstellt werden)

    Code
    1. # /etc/conf.d/rtc-i2c
    2. #
    3. # My chip is actually a ds3231n, but ds1307 driver works fine (ds3232 does not!)
    4. #
    5. CHIP="ds1307"
    6. ADDRESS="0x68"
    7. BUS="1"


    In die Datei "/etc/modules-load.d/rtc-i2c.conf" kommt

    Code
    1. # /etc/modules-load.d/rtc-i2c.conf
    2. i2c-dev
    3. i2c_bcm2708


    Dann werden zwei Dateien in "/etc/udev/rules.d" erstellt

    Code
    1. # /etc/udev/rules.d/50-rtc-i2c.rules
    2. #
    3. #
    4. #I2C hardware device driver
    5. ACTION=="add", KERNEL=="i2c_bcm2708", SUBSYSTEM=="module", TAG+="systemd"


    und

    Code
    1. # /etc/udev/rules.d/60-i2c_start.rules
    2. #
    3. #
    4. #I2C hardware device driver
    5. ACTION=="add", SUBSYSTEM=="rtc", ATTRS{hctosys}=="0", RUN+="/usr/bin/hwclock -s --utc"




    Als nächsten kommt die Datei "/lib/systemd/system/rtc-i2c.service" dran



    Jetzt kann man mit "systemctl enable rtc-i2c.service" den systemd-Dienst starten.


    Nicht vergessen, das Paket "fake-hwclock" zu deinstallieren und die Datei "/etc/adjtime" zu löschen.


    Nach einen Neustart (wenn man das Modul schon drauf hat) oder runterfahren, aufstecken und neustarten
    sollte alles laufen.



    Wie man sieht, hat die Uhr die I²C-Adresse 0x68 und wurde initialisiert. Weitere I²C-Geräte kann man natürlich weiterhin betreiben. Wem das Modul, das ich genannte habe, nicht gefällt, kann, mit etwas basteln, z.B. auch http://www.raspberrypi-spy.co.…05/ds3231_01-1024x683.jpg nehmen. Es müssen hier dann aber einige Widerstände http://www.raspberrypi-spy.co.…ads/2015/05/ds3231_02.jpg entfernt werden. Man kann auch bei dem von mir genannten den Stecker entfernen und dafür Leitungen einlöten.


    Ein Problem ist nur die Batterie auf dem Modul. Die ist recht klein und gelötet.
    Berichten im Internet nach hält sie nur ein Jahr :(
    Wenn man Platz hat, sollte man Die Batterie durch einen Halter für eine CR2032 ersetzten.
    Die hält ersten länger und ist zweitens leichter zu wechseln.


    (Da die Befehle als 'root' abgesetzt werden müssen, bin ich nach dem Anmelden gleich mit "sudo su-" root geworden.)

    Selber denken,
    wie kann man nur?

    Edited once, last by Rasp-Berlin ().

  • cool!


    Ich habe ja noch ein DS1307 im bastelPI nach der Anleitung vom "Cheffe" aber in meinen Arduinos laufen schon alle DS3231 mit der DS1307new.lib


    WirdZeit das ich meinem bastelPI auch mal ein update gönne, die DS1307 läuft einfach zu ungenau.

    lasst die PIs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr


  • Ich habe das in http://www.forum-raspberrypi.d…tivieren?highlight=ds3231 erwähnte Modul mal auch bei einem Jessie-PI in Betrieb genommen.


    Dabei bin ich hauptsächlich nach gegangen.


    nachdem das Modul aufgesteckt und in der "/boot/config.txt" die I²C-Schnittstelle aktiviert wurde

    Code
    1. dtparam=i2c_arm=on
    2. dtparam=i2s=on
    3. dtoverlay=i2c-rtc,ds3231


    In Debian Jessie ist die Aktivierung der GPIO Module wie das RTC Modul mit den Overlays-Support des Kernels jetzt automatisch, es reicht einfach in /boot/config.txt eine Zeile (und nur diese Zeile) mit dem Text "dtoverlay=i2c-rtc,ds3231" aufzuführen.


    Das RTC Module wird nach dem Boot-Vorgang automatisch erkannt :D


    Jetzt muss nur noch die System-Zeit mit dem RTC-Zeitgeber und oder NTP-Quelle initialisiert werden, und dies habe ich im englischsprachigen Rasperry Pi Forum und im UbuntuMate Forum bis ins letzte Detail beschrieben.


    Am besten den 2. beschriebenen Ansatz mit "systemd" verfolgen. Ich hoffe es hilft :thumbs1:

    Edited once, last by carriba ().


  • :danke_ATDE::thumbs1::bravo2:


    Nach drei Tagen Suche und den immer wieder gleichen und leider genauso wenig funktionierenden Anleitungen,
    habe ich es mit Deinem beschriebenen Ansatz endlich geschafft das DS3231 RTC Modul in Betrieb zu nehmen.


    Mir war es zwar gelungen per o.g. Overlay mit der Uhr zu kommunizieren und die Uhrzeit in beide Richtungen manuell zu setzen,
    nach einem Neustart des RasPi3 war die RTC Zeit aber immer unbrauchbar:


    Code
    1. hwclock: The Hardware Clock registers contain values that are either invalid (e.g. 50th day of month) or beyond the range we can handle (e.g. Year 2095)


    Nochmals ein grosses DANKE!

  • EDIT: PEBKAC --- i2detect zeigte zwar alles richtig an, anscheinend war die Stromversorgung nicht stabil auf meinem Breadboard. Und wegen sowas raucht einem den ganzen Tag der Kopf...


    Dein/Euer Guide ist super und alles klappt, wie es soll :)



    Liebe Leute,


    ich versuche mich nun schon den gesamten Tag an der Sache und komme einfach nicht weiter.


    Ich bin diesem Guide hier gefolgt, dem von Carriba verlinkten natürlich auch und der Quelle bei GitHub inkl. Kommentaren ( + - irgendwo war mal ein = zu wenig, dann war der Pfad zur hwclock in /usr/bin, bei mir ist er in /sbin/.



    Eigenartig ist, dass, solange in der /etc/modules der bcm2708 NICHT auskommentiert ist, folgender Fehler erscheint:


    [font="Menlo"] 4.178228] i2c /dev entries driver[/font]
    [font="Menlo"][ 4.189017] bcm2708_i2c 3f804000.i2c: BSC1 Controller at 0x3f804000 (irq 79) (baudrate 100000)[/font]
    [font="Menlo"][ 4.354525] systemd[1]: Failed to start Load Kernel Modules.[/font]
    [font="Menlo"][ 4.375011] systemd[1]: Dependency failed for Initialize i2c hardware RTC device driver.[/font]




    hwclock will einfach nicht:
    [font="Menlo"]root@raspberrypi:/home/pi# hwclock --debug[/font]
    [font="Menlo"]hwclock from util-linux 2.25.2[/font]
    [font="Menlo"]hwclock: cannot open /dev/rtc: No such file or directory[/font]
    [font="Menlo"]No usable clock interface found.[/font]
    [font="Menlo"]hwclock: Cannot access the Hardware Clock via any known method.[/font]



    dmesg:


    [font="Menlo"]-- Unit hwclock-sync.service has begun starting up.[/font]
    [font="Menlo"]May 26 19:21:56 raspberrypi systemd[1]: Failed to reset devices.list on /system.slice: Invalid argument[/font]
    [font="Menlo"]May 26 19:21:56 raspberrypi hwclock[1575]: hwclock: Cannot access the Hardware Clock via any known method.[/font]
    [font="Menlo"]May 26 19:21:56 raspberrypi hwclock[1575]: hwclock: Use the --debug option to see the details of our search for an access method.[/font]
    [font="Menlo"]May 26 19:21:56 raspberrypi systemd[1]: hwclock-sync.service: main process exited, code=exited, status=70/n/a[/font]
    [font="Menlo"]May 26 19:21:56 raspberrypi systemd[1]: Failed to start Time Synchronization from RTC Source.[/font]
    [font="Menlo"]-- Subject: Unit hwclock-sync.service has failed[/font]


    i2cdetect zeigt aber die RTC an (und meinen ADXL345 - SDA und SDL in Reihe)


    [font="Menlo"]root@raspberrypi:/home/pi# i2cdetect -y 1[/font]
    [font="Menlo"] 0 1 2 3 4 5 6 7 8 9 a b c d e f[/font]
    [font="Menlo"]00: -- -- -- -- -- -- -- -- -- -- -- -- -- [/font]
    [font="Menlo"]10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- [/font]
    [font="Menlo"]20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- [/font]
    [font="Menlo"]30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- [/font]
    [font="Menlo"]40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- [/font]
    [font="Menlo"]50: -- -- -- 53 -- -- -- -- -- -- -- -- -- -- -- -- [/font]
    [font="Menlo"]60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- [/font]




    Weitere Methoden, die ich erfolglos ebenfalls ausprobiert habe, sind
    https://feilipu.me/2014/12/21/ds3231-for-raspberry-pi/ (glaube für Jessie nicht mehr aktuell)
    sowie
    http://owenduffy.net/blog/?p=2637


    hwclock allerdings war jedes Mal gleich stur...

    Habt ihr noch eine Idee, wie ich hier weiterkommen kann?
    Ist das RTC-Modul evtl einfach defekt?


    Vielen Dank und viele Grüße
    Jonas

    Edited once, last by jonase ().

  • Moin zusammen,


    ich habe mit der RTC DS3231 folgendes Problem. Wenn ich über den Befehl "sudo i2cdetect -y 1" die Adresse Abfrage kommt die Tabelle mit der "57" und der "68" (alles prima). Wenn ich mit "sudo i2cget -y 1 0x68 0" abfrage bekomme ich auch die Werte für Sekunde etc zurück. Soweit so gut. Aber wenn ich in die Konsole gebe: "sudo hwclock", dann kommt der Error:
    hwclock: Cannot Access the Hardware Clock via any know method.
    hwclock: Use the --debug option to see the ditails of our search for an access method.


    Ich nutze das DS3231 Combo Breakout Modul, laut Datenblatt sind keine Pullup Widerstände drauf, ich sehe auch keine auf dem Board. Falls sie es doch wären würde ich doch auch über die i2c-Befehle nichts vernünftiges zurück bekommen?


    Immer wenn ich den Pi neustarte fängt er wieder bei 01:00Uhr an...

  • Hi dose_hh!



    ...
    hwclock: Cannot Access the Hardware Clock via any know method.
    hwclock: Use the --debug option to see the ditails of our search for an access method.


    Das hört sich für mich nach einem fehlenden /dev/rtc an.
    Hast Du mal wie empfohlen hwclock mit --debug gestartet?
    Das /dev/rtc wird durch ein overlay in der /boot/config.txt erzeugt:
    [font="Consolas, Andale Mono WT, Andale Mono, Bitstream Vera Sans Mono, Nimbus Mono L, Monaco, Courier New, monospace"]dtoverlay=i2c-rtc,ds3231[/font]


    Ich nutze das DS3231 Combo Breakout Modul, laut Datenblatt sind keine Pullup Widerstände drauf, ich sehe auch keine auf dem Board. Falls sie es doch wären würde ich doch auch über die i2c-Befehle nichts vernünftiges zurück bekommen?


    Da Du die Uhr offensichtlich ansprechen kannst, würde ich das Problem bei der Konfiguration der Software suchen.


    Immer wenn ich den Pi neustarte fängt er wieder bei 01:00Uhr an...


    Der Fehler ist früher zu suchen.

  • Servus,


    ... Ich nutze das DS3231 Combo Breakout Modul, laut Datenblatt sind keine Pullup Widerstände drauf ...


    die braucht's auch nicht, der Bus hat am RPi 1k8 pullups fest verbaut. Da wären weitere sogar kontraproduktiv. da parallel geschaltet.
    cu,
    -ds-

  • Hi,
    ich habe die Version 4.4.16-v7+ (Jessie) und möchte den systemd beim booten der RTC nutzen.
    Anscheinend klapp das booten und die Uhrzeit ist auch ohne Netz aktuell. Also muss irgendwas passen.
    hwclock -r ; date
    Do 25 Aug 2016 19:05:29 CEST -0.241902 seconds
    Do 25. Aug 19:05:28 CEST 2016


    Aber in der syslog sind Fehler.
    systemd[1]: rtc-i2c.service: main process exited, code=exited, status=1/FAILURE
    systemd[1]: Failed to start Initialize i2c hardware RTC device Driver.
    kernel: [ 5.850506] i2c i2c-1: Failed to register i2c client ds1307 at 0x68 (-16)


    auch das Kommando
    systemctl status rtc-i2c.service
    ● rtc-i2c.service - Initialize i2c hardware RTC device driver
    Loaded: loaded (/lib/systemd/system/rtc-i2c.service; enabled)
    Active: failed (Result: exit-code) since Do 1970-01-01 01:00:05 CET; 46 years 7 months ago
    Process: 124 ExecStart=/bin/sh -c echo ${CHIP} ${ADDRESS} > /sys/class/i2c-adapter/i2c-${BUS}/new_device (code=exited, status=1/FAILURE)
    Main PID: 124 (code=exited, status=1/FAILURE)


    Jan 01 01:00:05 raspberrypi systemd[1]: rtc-i2c.service: main process exited, code=exited, status=1/FAILURE
    Jan 01 01:00:05 raspberrypi systemd[1]: Failed to start Initialize i2c hardware RTC device driver.
    Jan 01 01:00:05 raspberrypi sh[124]: sh: echo: I/O error
    Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
    gibt folgendes aus.


    Ich komme nicht weiter, könnt Ihr helfen

  • Hallo Heinz!


    Also muss irgendwas passen.
    hwclock -r ; date
    Do 25 Aug 2016 19:05:29 CEST -0.241902 seconds
    Do 25. Aug 19:05:28 CEST 2016


    Dein RasPi bezieht die Uhrzeit zunächst aus der fake-hwclock und dann per ntp.
    Bei u.g. Fehlermeldung dürfte keine Kommunikation mit dem RTC-Modul möglich sein...


    Quote

    Aber in der syslog sind Fehler.
    systemd[1]: rtc-i2c.service: main process exited, code=exited, status=1/FAILURE
    systemd[1]: Failed to start Initialize i2c hardware RTC device Driver.
    kernel: [ 5.850506] i2c i2c-1: Failed to register i2c client ds1307 at 0x68 (-16)


    Prüfe zunächst mittels "[font="Menlo"]i2cdetect -y 1[/font]" die Verbindung zur RTC (siehe oben).
    Auf dem Bus sollte zumindest ein 0x68er Device (die RTC) antworten.
    Ich vermute den Fehler an dieser Stelle.
    Meist ein Problem der Pullup-Widerstände(siehe oben).


  • Danke für die Infos, denn ich verstehe nicht was hier los ist.


    Ich habe mich an die Anleitung von Rasp_Berlin gehalten.
    Ich habe den NTP deinstalliert und den ntpdate installiert.
    fake-hwclock ebenfalls deinstalliert
    Irgendwo habe ich auch gelesen, dass man die /etc/adjtime auch löschen soll. Das habe ich auch gemacht, aber nach einem reboot ist sie wieder da.
    Ich habe den pi gestoppt und das netzkabel gezogen.
    Nach dem zuschalten läuft er.
    i2cdetect -y 1
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --
    root@raspberrypi:~# hwclock -r ; date
    Fr 26 Aug 2016 12:15:49 CEST -0.092257 seconds
    Fr 26. Aug 12:15:48 CEST 2016
    d.h. doch hwclock kann zugreifen


    Aber systemctl status rtc-i2c.service liefert immer wieder den Fehler
    systemctl -l status rtc-i2c.service
    ● rtc-i2c.service - Initialize i2c hardware RTC device driver
    Loaded: loaded (/lib/systemd/system/rtc-i2c.service; enabled)
    Active: failed (Result: exit-code) since Do 1970-01-01 01:00:05 CET; 46 years 7 months ago
    Process: 123 ExecStart=/bin/sh -c echo ${CHIP} ${ADDRESS} > /sys/class/i2c-adapter/i2c-${BUS}/new_device (code=exited, status=1/FAILURE)
    Main PID: 123 (code=exited, status=1/FAILURE)


    Jan 01 01:00:05 raspberrypi systemd[1]: rtc-i2c.service: main process exited, code=exited, status=1/FAILURE
    Jan 01 01:00:05 raspberrypi systemd[1]: Failed to start Initialize i2c hardware RTC device driver.
    Jan 01 01:00:05 raspberrypi sh[123]: sh: echo: I/O error
    Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.


    Die Fehler sind auch in den syslog und kernel.log zu sehen
    Aug 26 12:30:16 raspberrypi systemd[1]: Failed to start Initialize i2c hardware RTC device driver.
    Aug 26 12:30:16 raspberrypi systemd[1]: Unit rtc-i2c.service entered failed state.
    ...
    Aug 26 12:30:16 raspberrypi kernel: [ 5.746027] i2c i2c-1: Failed to register i2c client ds1307 at 0x68 (-16)


    Aug 26 12:30:16 raspberrypi kernel: [ 5.400693] bcm2708_i2c 3f804000.i2c: BSC1 Controller at 0x3f804000 (irq 83) (baudrate 100000)
    Aug 26 12:30:16 raspberrypi kernel: [ 5.419954] i2c /dev entries driver
    Aug 26 12:30:16 raspberrypi kernel: [ 5.440708] rtc-ds1307 1-0068: rtc core: registered ds3231 as rtc0
    Aug 26 12:30:16 raspberrypi kernel: [ 5.746027] i2c i2c-1: Failed to register i2c client ds1307 at 0x68 (-16)



    Ist es ein timing Problem bei der Bootreihenfolge?
    Was ich nicht ganz verstehe ist, dass kein weiterer dieses Problem hat, oder lassen alle die Uhr in der rc.local starten?