Hi, 1). I have placed the following lines in the /etc/rc.local, and system time gets updated with external RTC DS3231 automatically at every reboot
*echo ds3231 0x68 > /sys/class/i2c-adapter/i2c-1/new_device* *hwclock -s -f /dev/rtc1* 2) I have put the line *dtb_overlay = /lib/firmware/BB-I2C2-RTC-DS3231.dtbo * in /boot/uEnv.txt but it does not create /dev/rtc1 and system time not updated with external RTC DS3231. The dmesg are root@beaglebone:/dev# dmesg | grep 3231 [ 2.132312] console [ttyS0] enabled root@beaglebone:/dev# dmesg | grep rtc [ 2.221605] omap_rtc 44e3e000.rtc: already running [ 2.222249] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0 [ 2.572035] PM: bootloader does not support rtc-only! [ 2.573042] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 02:14:15 UTC (946692855) root@beaglebone:/dev# dmesg | grep rtc1 root@beaglebone:/dev# root@beaglebone:/dev# dmesg | grep rtc [ 2.221605] omap_rtc 44e3e000.rtc: already running [ 2.222249] omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0 [ 2.572035] PM: bootloader does not support rtc-only! [ 2.573042] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01 02:14:15 UTC (946692855) root@beaglebone:/dev# date Tue Jul 14 13:07:39 IST 2020 root@beaglebone:/dev# hwclock -r -f /dev/rtc Sat 01 Jan 2000 07:46:54 AM IST -0.651632 seconds Best regards, NK On Tuesday, August 18, 2020 at 8:25:30 PM UTC+5:30 Tarmo wrote: > On Tuesday, 18 August 2020 17:47:00 UTC+3, Tarmo wrote: >> >> On Tuesday, 18 August 2020 14:45:23 UTC+3, Robert Heller wrote: >>> >>> At Tue, 18 Aug 2020 02:40:41 -0700 (PDT) [email protected] >>> wrote: >>> > I am using beagle Bone Black with debian image. Could any please >>> suggest >>> > how to automatically set the system time (on every reboot) by external >>> RTC >>> > module DS3231. Once internet is connected, i want to update both >>> system >>> > time and DS3231 with the network time. >>> > >>> > I am controlling a relay based on system time, my application should >>> take >>> > DS3231 time and run perfectly even if internet is disconnected and not >>> > available for so many days. >>> > >>> > Few things i have tried, the following content has been kept in the >>> script >>> > and running @reboot script in crontab. The system time has been >>> changed if >>> > we enter this command manually after boot but not in auto start >>> script. >>> > Please advice. >>> > >>> > *echo ds3231 0x68 > /sys/class/i2c-adapter/i2c-1/new_device* >>> > >>> > *hwclock -r -f /dev/rtc1* >>> >>> Well, the simple / dumb option would be to put the above two lines in >>> /etc/rc.local, which will restore the system clock from the RTC. >>> >>> The other option is to create a proper RTC service. A properly setup >>> RTC >>> service will restore the system clock from the RTC early in the boot >>> process >>> and save the system clock late in the shutdown process. >>> >> >> A proper RTC service is already implemented by the systemd-timesyncd >> service, installed by default on the debian images: >> >> https://www.freedesktop.org/software/systemd/man/systemd-timesyncd.service.html >> >> It does everything Niresh needs out of box. There's a caveat: >> systemd-timesyncd only works with */dev/rtc0* device. By default >> */dev/rtc0* is grabbed by the AM335x CPU-s internal RTC (which has no >> battery backup) and the external RTC is left with */dev/rtc1* which gets >> ignored. I did not find any way to configure systemd-timesyncd to use the >> other device. >> >> Robert pointed me to a device tree which very conveniently swapped the >> device nodes for those RTCs so the external one got */dev/rtc0*. I just >> had to load the device tree via /boot/uEnv.txt and time syncing worked >> beautifully. For Niresh, I suggest trying this one: >> >> >> https://github.com/beagleboard/bb.org-overlays/blob/master/src/arm/BB-I2C2-RTC-DS3231.dts >> >> <https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fbeagleboard%2Fbb.org-overlays%2Fblob%2Fmaster%2Fsrc%2Farm%2FBB-I2C2-RTC-DS3231.dts&sa=D&sntz=1&usg=AFQjCNEt87UyBS-inpep25aZNVAfhEhfXw> >> > > To clarify the "trying" step: you'll probably find the compiled device > tree in the Beagle's file system: "/lib/firmware/BB-I2C2-RTC-DS3231.dtb". > Just add this to /boot/uEnv.txt using standard method and reboot. > Monitoring the boot log via dmesg should tell you which RTC device was > awarded /dev/rtc0. > > -- > Kind regards, > Tarmo > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/b62dd16a-b587-4286-b634-768c1f24d32cn%40googlegroups.com.
