I made the above changes to the file 99-rtc1.rules file as follows:
colibri-imx6-10866289:/etc/udev/rules.d$ ls
10-imx.rules 90-toradex-gpio.rules 92-toradex-spidev.rules 94-toradex-pwm.rules 99-toradex.rules
10-toradex-net-rename.rules 91-toradex-i2cdev.rules 93-toradex-backlight.rules 99-rtc1.rules touchscreen.rules
colibri-imx6-10866289:/etc/udev/rules.d$ cat 99-rtc1.rules
KERNEL=="rtc1", SUBSYSTEM=="rtc", DRIVER=="", ATTR{name}=="m41t0", SYMLINK="rtc", MODE="0666"
colibri-imx6-10866289:/etc/udev/rules.d$
but nothing seems to have changed.
I still get:
colibri-imx6-10866289:~$ dmesg | grep rtc
[ 1.555881] imx-drm display-subsystem: bound imx-ipuv3-crtc.2 (ops ipu_crtc_ops)
[ 1.555986] imx-drm display-subsystem: bound imx-ipuv3-crtc.3 (ops ipu_crtc_ops)
[ 1.596417] snvs_rtc 20cc000.snvs:snvs-rtc-lp: registered as rtc1
[ 2.069201] hctosys: unable to open rtc device (rtc0)
which I guess is okay, since I have disabled rtc0 in the device tree.
colibri-imx6-10866289:~$ sudo hwclock -v
Password:
hwclock from util-linux 2.35.1
System Time: 1659469025.375691
Trying to open: /dev/rtc0
Trying to open: /dev/rtc
Trying to open: /dev/misc/rtc
No usable clock interface found.
hwclock: Cannot access the Hardware Clock via any known method.
I guess there is some file which dictates what order to look for the RTC…
Also noticed that in the line:
KERNEL=="rtc1", SUBSYSTEM=="rtc", DRIVER=="", ATTR{name}=="m41t0", SYMLINK="rtc", MODE="0666"
I also see in the device tree that m41t0 is the name given to the RTC on the carrier board, so I’m wondering if that’s the problem (since I want the one on the SoM)… Maybe I need another name here?
/*
* Colibri I2C: I2C3_SDA/SCL on SODIMM 194/196 (e.g. RTC on carrier board)
*/
&i2c3 {
status = "okay";
/* M41T0M6 real time clock on carrier board */
rtc_i2c: rtc@68 {
compatible = "st,m41t0";
reg = <0x68>;
};
};
also found this helpful link:
arch linux - How can the link target of /dev/rtc be changed? - Unix & Linux Stack Exchange
in that link he says I can run a test command…
colibri-imx6-10866289:/etc/udev/rules.d$ udevadm test /sys/class/rtc/rtc1
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.
Load module index
Parsed configuration file /usr/lib/systemd/network/99-default.link
Parsed configuration file /etc/systemd/network/10-toradex-wifi-ifnames.link
Created link configuration context.
Reading rules file: /usr/lib/udev/rules.d/10-dm.rules
Reading rules file: /etc/udev/rules.d/10-imx.rules
Reading rules file: /etc/udev/rules.d/10-toradex-net-rename.rules
Reading rules file: /usr/lib/udev/rules.d/11-dm-lvm.rules
Reading rules file: /usr/lib/udev/rules.d/13-dm-disk.rules
Reading rules file: /usr/lib/udev/rules.d/50-udev-default.rules
Reading rules file: /usr/lib/udev/rules.d/60-autosuspend-chromiumos.rules
Reading rules file: /usr/lib/udev/rules.d/60-block.rules
Reading rules file: /usr/lib/udev/rules.d/60-cdrom_id.rules
Reading rules file: /usr/lib/udev/rules.d/60-drm.rules
Reading rules file: /usr/lib/udev/rules.d/60-evdev.rules
Reading rules file: /usr/lib/udev/rules.d/60-fido-id.rules
Reading rules file: /usr/lib/udev/rules.d/60-input-id.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-alsa.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-input.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage-tape.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-v4l.rules
Reading rules file: /usr/lib/udev/rules.d/60-sensor.rules
Reading rules file: /usr/lib/udev/rules.d/60-serial.rules
Reading rules file: /usr/lib/udev/rules.d/61-autosuspend-manual.rules
Reading rules file: /usr/lib/udev/rules.d/64-btrfs.rules
Reading rules file: /usr/lib/udev/rules.d/69-dm-lvm-metad.rules
Reading rules file: /usr/lib/udev/rules.d/70-joystick.rules
Reading rules file: /usr/lib/udev/rules.d/70-mouse.rules
Reading rules file: /usr/lib/udev/rules.d/70-power-switch.rules
Reading rules file: /usr/lib/udev/rules.d/70-touchpad.rules
Reading rules file: /usr/lib/udev/rules.d/70-uaccess.rules
Reading rules file: /usr/lib/udev/rules.d/71-seat.rules
Reading rules file: /usr/lib/udev/rules.d/73-seat-late.rules
Reading rules file: /usr/lib/udev/rules.d/75-net-description.rules
Reading rules file: /usr/lib/udev/rules.d/75-probe_mtd.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-cinterion-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-dell-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-dlink-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-ericsson-mbm.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-fibocom-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-haier-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-huawei-net-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-longcheer-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-mtk-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-nokia-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-pcmcia-device-blacklist.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-quectel-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-sierra.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-simtech-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-telit-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-tplink-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-ublox-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-usb-device-blacklist.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-usb-serial-adapters-greylist.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-x22x-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-zte-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/78-sound-card.rules
Reading rules file: /usr/lib/udev/rules.d/80-drivers.rules
Reading rules file: /usr/lib/udev/rules.d/80-mm-candidate.rules
Reading rules file: /usr/lib/udev/rules.d/80-net-setup-link.rules
Reading rules file: /usr/lib/udev/rules.d/80-udisks2.rules
/usr/lib/udev/rules.d/80-udisks2.rules:176 Invalid key/value pair, ignoring.
Reading rules file: /usr/lib/udev/rules.d/85-nm-unmanaged.rules
Reading rules file: /usr/lib/udev/rules.d/90-nm-thunderbolt.rules
Reading rules file: /etc/udev/rules.d/90-toradex-gpio.rules
Reading rules file: /usr/lib/udev/rules.d/90-vconsole.rules
Reading rules file: /etc/udev/rules.d/91-toradex-i2cdev.rules
Reading rules file: /etc/udev/rules.d/92-toradex-spidev.rules
Reading rules file: /etc/udev/rules.d/93-toradex-backlight.rules
Reading rules file: /etc/udev/rules.d/94-toradex-pwm.rules
Reading rules file: /usr/lib/udev/rules.d/95-dm-notify.rules
Reading rules file: /usr/lib/udev/rules.d/99-fuse3.rules
Reading rules file: /etc/udev/rules.d/99-rtc1.rules
Reading rules file: /usr/lib/udev/rules.d/99-systemd.rules
Reading rules file: /etc/udev/rules.d/99-toradex.rules
Reading rules file: /etc/udev/rules.d/touchscreen.rules
Invalid inotify descriptor.
DEVPATH=/devices/soc0/soc/2000000.aips-bus/20cc000.snvs/20cc000.snvs:snvs-rtc-lp/rtc/rtc1
DEVNAME=/dev/rtc1
MAJOR=253
MINOR=1
ACTION=add
SUBSYSTEM=rtc
UDISKS_FILESYSTEM_SHARED=1
USEC_INITIALIZED=11876071
Unload module index
Unloaded link configuration context.
colibri-imx6-10866289:/etc/udev/rules.d$ udevadm test /sys/class/rtc/rtc1
which seems to get an error: invalid inotify descriptor.
I do see the device in /dev though:
colibri-imx6-10866289:/dev$ ls | grep rtc
colibri-uartc
rtc1
I also get this useful information if I type the following udevadm command…
colibri-imx6-10866289:/dev$ udevadm info -a -p /sys/class/rtc/rtc1
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/soc0/soc/2000000.aips-bus/20cc000.snvs/20cc000.snvs:snvs-rtc-lp/rtc/rtc1':
KERNEL=="rtc1"
SUBSYSTEM=="rtc"
DRIVER==""
ATTR{name}=="snvs_rtc 20cc000.snvs:snvs-rtc-lp"
ATTR{hctosys}=="0"
ATTR{range}=="[0,4294967295]"
ATTR{date}=="1970-01-08"
ATTR{time}=="00:11:21"
ATTR{max_user_freq}=="64"
ATTR{since_epoch}=="605481"
ATTR{wakealarm}==""
looking at parent device '/devices/soc0/soc/2000000.aips-bus/20cc000.snvs/20cc000.snvs:snvs-rtc-lp':
KERNELS=="20cc000.snvs:snvs-rtc-lp"
SUBSYSTEMS=="platform"
DRIVERS=="snvs_rtc"
ATTRS{driver_override}=="(null)"
looking at parent device '/devices/soc0/soc/2000000.aips-bus/20cc000.snvs':
KERNELS=="20cc000.snvs"
SUBSYSTEMS=="platform"
DRIVERS==""
ATTRS{driver_override}=="(null)"
looking at parent device '/devices/soc0/soc/2000000.aips-bus':
KERNELS=="2000000.aips-bus"
SUBSYSTEMS=="platform"
DRIVERS==""
ATTRS{driver_override}=="(null)"
looking at parent device '/devices/soc0/soc':
KERNELS=="soc"
SUBSYSTEMS=="platform"
DRIVERS==""
ATTRS{driver_override}=="(null)"
looking at parent device '/devices/soc0':
KERNELS=="soc0"
SUBSYSTEMS=="soc"
DRIVERS==""
ATTRS{revision}=="1.4"
ATTRS{soc_id}=="i.MX6DL"
ATTRS{family}=="Freescale i.MX"
ATTRS{machine}=="Toradex Colibri iMX6DL/S on Colibri Evaluation Board V3"