Kobo: réglages suspend post-validation + log batterie
Validé sur une nuit (34 cycles, 34 suspends pleins ~901s) : - délai de décharge VEE 8 -> 12s : le suspend réussit dès la 1re tentative (les logs montraient tentative=1 KO / tentative=2 OK vers ~12s), un cycle suspend/resume gâché en moins par itération. Retry conservé comme filet. - DIAG verbeux remplacé par un filet compact (alim + dmesg PM/epdc), ne se déclenche qu'en cas d'échec total des retries. - log de la capacité batterie à chaque itération (CAP|CHG) pour suivre le drain réel en %/h sur les prochaines sessions.
This commit is contained in:
@@ -123,38 +123,16 @@ frontlight_off() {
|
||||
|
||||
DIAG_DONE=0
|
||||
suspend_diag() {
|
||||
# DIAGNOSTIC (one-shot) : quand un suspend échoue sur batterie, capture la raison
|
||||
# du veto noyau dans le log. À retirer une fois la cause identifiée.
|
||||
# Filet (one-shot) : si le suspend échoue malgré les retries (anormal), capture une fois
|
||||
# l'état alim + la raison du veto noyau (dmesg) pour diagnostic.
|
||||
[ "$DIAG_DONE" = 1 ] && return
|
||||
DIAG_DONE=1
|
||||
log "===== DIAG suspend (one-shot) ====="
|
||||
log "===== DIAG suspend ====="
|
||||
for d in /sys/class/power_supply/*/; do
|
||||
n=$(basename "$d")
|
||||
log " $n: status=$(cat "${d}status" 2>/dev/null) online=$(cat "${d}online" 2>/dev/null) present=$(cat "${d}present" 2>/dev/null)"
|
||||
log " $(basename "$d"): status=$(cat "${d}status" 2>/dev/null) online=$(cat "${d}online" 2>/dev/null)"
|
||||
done
|
||||
log " wakeup_count=$(cat /sys/power/wakeup_count 2>/dev/null) state-extended=$(cat /sys/power/state-extended 2>/dev/null)"
|
||||
# IRQ responsable du DERNIER réveil — la clé du mystère.
|
||||
log " pm_wakeup_irq=$(cat /sys/power/pm_wakeup_irq 2>/dev/null) last_resume_reason=$(cat /sys/kernel/debug/wakeup/last_resume_reason 2>/dev/null)"
|
||||
# Quels devices d'entrée sont armés comme source de réveil (1=oui).
|
||||
log " -- input devices (name | wakeup) --"
|
||||
for inp in /sys/class/input/input*/; do
|
||||
nm=$(cat "${inp}name" 2>/dev/null)
|
||||
wk=$(cat "${inp}power/wakeup" 2>/dev/null)
|
||||
[ -n "$nm" ] && log " $(basename "$inp"): \"$nm\" wakeup=$wk"
|
||||
done
|
||||
# debugfs (souvent non monté) -> wakeup_sources triés par nb d'évènements.
|
||||
mount -t debugfs none /sys/kernel/debug 2>/dev/null
|
||||
if [ -r /sys/kernel/debug/wakeup_sources ]; then
|
||||
log " -- top wakeup_sources (event_count) --"
|
||||
awk 'NR>1 && ($3+0)>0 {print $3"\t"$1}' /sys/kernel/debug/wakeup_sources 2>/dev/null \
|
||||
| sort -rn | head -8 | while IFS= read -r l; do log " $l"; done
|
||||
fi
|
||||
# Les IRQ qui montent = source matérielle qui spamme (touch elan, gpio, etc.).
|
||||
log " -- /proc/interrupts (lignes non nulles) --"
|
||||
awk 'NR>1 && ($2+0)>0 {print $0}' /proc/interrupts 2>/dev/null \
|
||||
| sort -t: -k2 -rn 2>/dev/null | head -12 | while IFS= read -r l; do log " $l"; done
|
||||
log " -- dmesg : lignes PM/wakeup/elan/gpio (40 dernières) --"
|
||||
dmesg 2>/dev/null | grep -iE 'PM:|wakeup|abort|suspend|elan|gpio|irq' | tail -40 \
|
||||
log " -- dmesg (PM/epdc/suspend) --"
|
||||
dmesg 2>/dev/null | grep -iE 'PM:|epdc|suspend|abort|wakeup' | tail -15 \
|
||||
| while IFS= read -r l; do log " $l"; done
|
||||
log "===== /DIAG ====="
|
||||
}
|
||||
@@ -170,7 +148,8 @@ suspend_for() {
|
||||
# le suspend jusqu'à ce qu'il prenne.
|
||||
secs="$1"
|
||||
sync
|
||||
sleep 8 # laisse l'EPDC couper ses rails (VEE) ~10s après le refresh
|
||||
sleep 12 # laisse l'EPDC couper ses rails (VEE) : ~12s suffisent pour
|
||||
# réussir dès la 1re tentative (mesuré), retry = filet
|
||||
attempt=0
|
||||
while [ "$attempt" -lt 6 ]; do
|
||||
attempt=$((attempt + 1))
|
||||
@@ -219,7 +198,7 @@ frontlight_off
|
||||
|
||||
FIRST=1 # 1er cycle après lancement -> demande un full refresh (reset=1) au backend
|
||||
while true; do
|
||||
log "--- itération ---"
|
||||
log "--- itération --- batterie=$(read_battery)" # CAP|CHG, pour suivre le drain
|
||||
frontlight_off # réaffirme après chaque réveil
|
||||
./scripts/ledToggle.sh on 2>/dev/null
|
||||
|
||||
|
||||
Reference in New Issue
Block a user