如何在搭配NAS套件的NanoPi NEO LTS上加载板载DS1307 RTC?
解决NanoPi NEO LTS板载DS1307 RTC加载问题
步骤1:启用I2C总线
DS1307是I2C设备,先确保系统启用对应总线:
- 加载必要内核模块:
sudo modprobe i2c-dev sudo modprobe rtc-ds1307 - 查看系统I2C总线列表:
记下板载RTC连接的总线编号(通常是i2cdetect -li2c-0或i2c-1)。 - 扫描对应总线确认DS1307存在(默认地址为0x68):
输出中出现sudo i2cdetect -y 068即表示设备正常连接。
步骤2:手动绑定DS1307到I2C总线
通过sysfs完成设备绑定:
echo ds1307 0x68 | sudo tee /sys/class/i2c-adapter/i2c-0/new_device
将命令中的i2c-0替换为你实际查到的总线编号。执行后检查/dev目录,应该能看到rtc1:
ls -al /dev/rtc*
步骤3:配置开机自动加载
确保重启后设备自动生效:
- 创建模块加载配置文件,让系统开机自动加载所需模块:
echo -e "i2c-dev\nrtc-ds1307" | sudo tee /etc/modules-load.d/rtc-ds1307.conf - 创建systemd服务实现设备自动绑定:
创建文件/etc/systemd/system/rtc-ds1307-setup.service,写入以下内容:
同样将[Unit] Description=Bind DS1307 RTC to I2C bus After=sysinit.target [Service] Type=oneshot ExecStart=/bin/sh -c 'echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device' RemainAfterExit=yes [Install] WantedBy=multi-user.targeti2c-0替换为实际总线编号。 - 启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable --now rtc-ds1307-setup.service
步骤4:设置默认RTC为DS1307
让系统优先使用板载DS1307避免重启时间重置:
- 确认RTC设备对应关系:
确认cat /sys/class/rtc/rtc0/name cat /sys/class/rtc/rtc1/namertc1对应ds1307。 - 设置默认RTC并同步时间:
也可以编辑sudo hwclock -w -f /dev/rtc1 sudo ln -sf /dev/rtc1 /dev/rtc/etc/default/hwclock文件,将HWCLOCKDEVICE修改为/dev/rtc1,保存后重启系统验证。
内容的提问来源于stack exchange,提问作者JavaUser007
相关产品推荐
相关产品推荐

