Hallo
ich habe festgestellt das die Wakeup funktionalität der Boards ohne Hardware RTC nicht sauber funktioniert. Der RTC kann (so wie ich es getestet habe) nur bis ca. 70 Minuten gesetzt werden.
Werden grössere Zeiten eingetragen werden dann wacht das Board früher auf weil die Zeit wohl wrapped.
Bei den Tests ist mir aufgefallen das es egal ist welchen Timer man nutzt. Also meson-vrtc oder aml_vrtc haben den gleichen Fehler. Wir hatten ja den Device Tree gepacht damit der meson-vrtc zum Einsatz kommt. Dieser Patch ist nicht nötig.
Ich habe herausgefunden das es mit dem aml_pm Treiber viel einfacher geht den wakeup timer zusetzen. Man kann den Timer einfach in /sys/kernel/debug/wakeup_time setzen.
Also mit "echo wakeup_in_x_sekunden >/sys/kernel/debug/wakeup_time" kann der Timer gesetzt werden. Wobei hier die relative Zeit bis zum Aufwachen in Sekunden zu setzen ist. Also NICHT die absolute Aufwachzeit in Sekunden seit 1970. Dabei ist es egal welchen vrtc Treiber man nutzt. Der aml_pm Treiber wird immer geladen. da muss man nix tun.
Damit ist das Problem mit den 70 Minuten aber noch nicht gelöst. Dafür muss der SCP Prozess gepatcht werden. Hier hat CoreELEC noch einen Fehler in ihrem bl301.bin blob.
Ich habe den bl301 blob angepasst und einen Patch dafür bereitgestellt (siehe Anhang). Der müsste dann von Zabrimus noch in den build Prozess eingebaut werden.
Es werden beim build drei bl301 Repositories geladen. Der Patch muss wohl in jedem laufen.
Damit das ganze dann auch klappt muss das System in den Suspend gefahren werden. Am einfachsten geht das über das Shutdown Script vom vdr.
Beispiel:
Wobei man evtl. von $2 (Zeit bis zum nächsten Timer in Sekunden) noch 300 abziehen sollte um etwas vorlauf zu haben.
$2 ist null wenn kein Timer gesetzt ist. Diese 0 muss auch gesetzt werden damit ein evtl. alter Wert überschrieben wird vor dem suspend.
Viel Spass
jojo61