THeyd
Topic Author
Posts: 3
Joined: 14 Nov 2022, 10:49

RTC Treiber neu starten

14 Nov 2022, 11:56

Moin zusammen,

ich habe ein Problem mit der Real Time Clock festgestellt. Und zwar wenn das Revolutionpi Core 3+ nach längerer Nichtbenutzung neu gestartet wird, kann die RTC nicht vom Treiber gelesen werden, scheinbar weil sich die Kapazität noch auflädt. Der Kernel gibt in diesem Fall folgende Fehlermeldung:
[    2.814106] rtc-pcf2127-i2c: probe of 1-0051 failed with error -121

Nach einem Reboot funktioniert dann alles wieder:
[    2.935838] rtc-pcf2127-i2c 1-0051: oscillator stop detected, date/time is not reliable
[    2.936073] rtc-pcf2127-i2c 1-0051: registered as rtc0
[    2.937195] rtc-pcf2127-i2c 1-0051: oscillator stop detected, date/time is not reliable
[    2.937202] rtc-pcf2127-i2c 1-0051: hctosys: unable to read the hardware clock

Nun möchte ich per Skript checken, ob die RTC richtig initialisiert wurde und ggf. den Treiber neu laden, um ein Reboot zu vermeiden.
Allerdings bereitet mir das Laden des Treibers zur Laufzeit Probleme.

Laut Devicetree wird der Treiber "pcf2129" genutzt, welcher einen alias des "rtc_pcf2127" Treiber darstellt.

Daher kam mir die Idee, das Kernel Modul "rtc_pcf2127" mit modprobe neu zu laden:
>>sudo modprobe rtc_pcf2127 -v

Allerdings scheint das Laden mit modprobe nicht geklappt zu haben, da mit dmesg im kernel log nichts geschrieben wurde und auch lsmod nicht anzeigt, dass das Modul geladen wurde. Modprobe selber liefert kein Ausgabe

Interessanterweise schreibt modinfo, dass das Modul nicht gefunden wurde:
>>modinfo rtc_pcf2127
modinfo: ERROR: Module rtc_pcf2127 not found.
Nach etwas herumprobieren habe ich herausgefunden, dass der pcf2127 Treiber in den Modulen für die Kernelversion "v7l" enthalten sind (unter /lib/modules/5.10.103-rt62-v7l/kernel/drivers/rtc/), der laufende Kernel hat aber die Version "v7".

modprobe -S Kernelversion hat auch nicht geklappt
 
>>sudo modprobe -S 5.10.103-rt62-v7l rtc-pcf2127 -v
insmod /lib/modules/5.10.103-rt62-v7l/kernel/drivers/base/regmap/regmap-spi.ko
modprobe: ERROR: could not insert 'rtc_pcf2127': Exec format error
bzw. Logeintrag im dmesg:
 
[15818.711307] regmap_spi: disagrees about version of symbol module_layout

Wie kann ich nun den Treiber der RTC zur Laufzeit neu laden?
Danke im Voraus für jegliche Tipps und Hinweise!

Liebe Grüße
Torben
 
User avatar
nicolaiB
KUNBUS
Posts: 714
Joined: 21 Jun 2018, 10:33
Answers: 1
Location: Berlin
Contact:

Re: RTC Treiber neu starten

15 Nov 2022, 09:05

Hi Torben,

der RTC Treiber für v6 und v7 ist fest in den Kernel eincompiliert, sodass es nicht als Modul geladen bzw. entladen werden kann. Dein Versuch schlägt fehl, da du versuchst das v7l Modul zu laden. Du kannst den Treiber aber auch ohne das Modul zu entladen zurücksetzen:
# I2C Adresse bestimmen (z.B. 1-0051)
ls /sys/bus/i2c/drivers/rtc-pcf2127-i2c/

# Adresse freigeben (Adresse ggf. mit der im ersten Schritt bestimmten austauschen) 
echo 1-0051 > /sys/bus/i2c/drivers/rtc-pcf2127-i2c/unbind

# Adresse binden (Adresse ggf. mit der im ersten Schritt bestimmten austauschen)
echo 1-0051 > /sys/bus/i2c/drivers/rtc-pcf2127-i2c/bin


Danach solltest du im Kernel Log sehen, dass der Treiber neu geladen wurde.

Gruß Nicolai
 
THeyd
Topic Author
Posts: 3
Joined: 14 Nov 2022, 10:49

Re: RTC Treiber neu starten

16 Nov 2022, 11:16

Hallo Nicolai,

danke für den Tipp, werde es bei Gelegenheit ausprobieren und gebe dann Rückmeldung, ob es geklappt hat.

Beste Grüße
Torben
 
THeyd
Topic Author
Posts: 3
Joined: 14 Nov 2022, 10:49

Re: RTC Treiber neu starten

16 Nov 2022, 14:05

wenn ich
sudo echo 1-0051 > /sys/bus/i2c/drivers/rtc-pcf2127-i2c/unbind

eingebe bekomme ich eine permission denied Meldung.

mit
 
 sudo sh -c "echo 1-0051 > /sys/bus/i2c/drivers/rtc-pcf2127-i2c/unbind"
 sudo sh -c "echo 1-0051 > /sys/bus/i2c/drivers/rtc-pcf2127-i2c/bind"
klappt es dann aber.

Vielen Dank!

Who is online

Users browsing this forum: No registered users and 0 guests