Starting from Trixie, some paths have changed. Here is the complete walkthrough for the process:
Install necessary tools (i2c-tools and hwclock are not present by default in Armbian trixie):
sudo apt install i2c-tools util-linux-extra
Edit armbianEnv.txt:
sudo nano /boot/armbianEnv.txt
Append i2c0 to the line that says overlays=...:
overlays=... i2c0
("..." denotes some overlays already written, do not delete them).
Reboot (compulsory to load i2c module):
sudo reboot now
Inquire availability of module rtc-ds1307 in the kernel (present in trixie):
sudo modinfo rtc-ds1307
If it returns some description, the module is present. If not, then install its driver from GitHub.
Open modules file:
sudo nano /etc/modules
Add line rtc-ds1307 in it. Save and close.
Run the following command:
sudo i2cdetect -y 0
It should return 68 in the grid:
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Then add module to start up:
sudo modprobe rtc-ds1307
sudo echo ds1307 0x68 > /sys/class/i2c-dev/i2c-0/device/new_device
The DS1307 should now be available at /dev/rtc1, which you can check:
sudo ls /dev/ | grep rtc
Initialize rtc1 (once)
sudo hwclock --rtc /dev/rtc1 --systohc
Create a new file rtc_ds1307.sh:
sudo nano /usr/local/bin/rtc_ds1307.sh
Add following lines in it:
#!/bin/bash
echo "Creating entry for rtc_1307 service" | systemd-cat -p info
sudo echo ds1307 0x68 > /sys/class/i2c-dev/i2c-0/device/new_device
echo "Done" | systemd-cat -p info
echo "Symlinking /dev/rtc1 to /dev/rtc" | systemd-cat -p info
sudo ln -f -s /dev/rtc1 /dev/rtc
echo "Done"
echo "Syncing RTC time to system time" | systemd-cat -p info
sudo hwclock --hctosys --noadjfile --utc -f /dev/rtc1
echo "Done"
Save and exit. Make this file executable:
sudo chmod +x /usr/local/bin/rtc_ds1307.sh
Create a systemd service to run this script at startup:
sudo nano /etc/systemd/system/rtc_ds1307.service
Add following lines in it:
[Unit]
Description=Synchronize system clock to RTC
Requires=systemd-modules-load.service
After=systemd-modules-load.service
ConditionPathExists=/sys/class/i2c-dev
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/bin/rtc_ds1307.sh
[Install]
WantedBy=multi-user.target
Save and exit. Enable the service:
sudo chmod 644 /etc/systemd/system/rtc_ds1307.service
sudo systemctl enable rtc_ds1307.service
Reboot and check system date time by running:
timedatectl