diff --git a/kobo/monitorink.sh b/kobo/monitorink.sh index 07034dd..4f3165a 100755 --- a/kobo/monitorink.sh +++ b/kobo/monitorink.sh @@ -21,5 +21,8 @@ for gov in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo ondemand > "$gov" 2>/dev/null done +# Synchronise l'horloge RTC sur l'heure système (sinon rtcwake calcule mal -> suspend KO). +hwclock -w -u 2>/dev/null + # Lance la boucle, tout est journalisé dans $LOG. exec sh "$BASE/monitorinkloop.sh" >> "$LOG" 2>&1 diff --git a/kobo/monitorinkloop.sh b/kobo/monitorinkloop.sh index 1c254a2..beb8015 100755 --- a/kobo/monitorinkloop.sh +++ b/kobo/monitorinkloop.sh @@ -37,19 +37,23 @@ display() { } suspend_for() { + # Séquence Kobo éprouvée (trmnl-kobo) : state-extended=1 AVANT rtcwake, puis + # suspend manuel (echo mem) si rtcwake n'a pas vraiment suspendu. secs="$1" + sync + echo 1 > /sys/power/state-extended 2>/dev/null start=$(date +%s) "$BUSYBOX" rtcwake -a -s "$secs" -m mem 2>/dev/null - end=$(date +%s) - if [ $((end - start)) -lt 10 ]; then - log "rtcwake fallback (state-extended)" - echo 1 > /sys/power/state-extended 2>/dev/null - sleep 2 + elapsed=$(( $(date +%s) - start )) + log "rtcwake elapsed=${elapsed}s" + if [ "$elapsed" -le 10 ]; then + log "suspend manuel via echo mem" + sleep 1; sync; sleep 2 + m_start=$(date +%s) echo mem > /sys/power/state 2>/dev/null - echo 0 > /sys/power/state-extended 2>/dev/null - now=$(date +%s) - [ $((now - start)) -lt 10 ] && { log "suspend KO -> sleep $secs"; sleep "$secs"; } + log "echo mem elapsed=$(( $(date +%s) - m_start ))s (≈${secs}=OK, ≈0=Nickel bloque)" fi + echo 0 > /sys/power/state-extended 2>/dev/null } while true; do