Kobo: fix nm (:sh au lieu de :exec), logs USB-visibles + marqueurs debug, LC_ALL/policy0

This commit is contained in:
2026-06-15 11:42:53 +02:00
parent 77ee465bd3
commit b4cfb74792
3 changed files with 36 additions and 26 deletions

View File

@@ -1,67 +1,72 @@
#!/bin/sh
# Monitorink — boucle d'affichage e-ink sur Kobo Libra 2.
#
# Conçu comme un OVERLAY sur un checkout de https://github.com/usetrmnl/trmnl-kobo :
# il réutilise ses binaires ARM pré-compilés (bin/fbink, bin/busybox_kobo) et ses
# helpers WiFi éprouvés (scripts/enable-wifi.sh, etc.). On remplace l'appel API TRMNL
# par un simple fetch de notre image de dashboard.
#
# Lancé par monitorink.sh (lui-même lancé via NickelMenu).
# ⚠️ La séquence suspend/rtcwake est à valider sur l'appareil (FW 4.38.23171).
# Overlay sur https://github.com/usetrmnl/trmnl-kobo : réutilise ses binaires ARM
# (bin/fbink, bin/busybox_kobo) et ses helpers WiFi (scripts/*.sh). On remplace l'appel
# API TRMNL par un simple fetch de notre image de dashboard.
# Lancé par monitorink.sh (via NickelMenu). Logs -> ../monitorink.log
BASE="$(dirname "$0")"
cd "$BASE" || exit 1
IMAGE_URL="${MONITORINK_URL:-http://monitorink.homelab.nestor-server.fr/image.png}"
REFRESH="${MONITORINK_REFRESH:-600}" # secondes entre deux rafraîchissements
IMAGE_URL="${MONITORINK_URL:-https://monitorink.homelab.nestor-server.fr/image.png}"
REFRESH="${MONITORINK_REFRESH:-600}"
TMP="/tmp/monitorink.png"
FBINK="./bin/fbink/fbink"
BUSYBOX="./bin/busybox_kobo"
log() { echo "[$(date '+%H:%M:%S')] $*"; }
# Ferme les FD hérités pour ne pas bloquer l'éjection USB.
exec 3>&- 2>/dev/null
log "boucle démarrée — BASE=$BASE URL=$IMAGE_URL refresh=${REFRESH}s"
log "fbink présent: $([ -x "$FBINK" ] && echo oui || echo NON) ; busybox: $([ -x "$BUSYBOX" ] && echo oui || echo NON)"
display() {
# Affiche l'image plein écran, full refresh (-f) anti-ghosting, clear (-c) avant.
"$FBINK" -g file="$TMP",valign=CENTER,halign=CENTER -c -f
log "fbink rc=$?"
}
suspend_for() {
# Suspend-to-RAM avec réveil RTC. Si rtcwake échoue (retour < 10 s), fallback
# séquence Kobo (state-extended) puis sleep en dernier recours.
secs="$1"
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
echo mem > /sys/power/state 2>/dev/null
echo 0 > /sys/power/state-extended 2>/dev/null
# Si même ça n'a pas tenu, on dort simplement.
now=$(date +%s)
[ $((now - start)) -lt 10 ] && sleep "$secs"
[ $((now - start)) -lt 10 ] && { log "suspend KO -> sleep $secs"; sleep "$secs"; }
fi
}
while true; do
log "--- itération ---"
./scripts/ledToggle.sh on 2>/dev/null
# WiFi à la demande (ON -> fetch -> OFF) pour préserver la batterie.
./scripts/enable-wifi.sh
./scripts/force-wifi-connection.sh
./scripts/obtain-ip.sh
log "wifi: enable"
./scripts/enable-wifi.sh >/dev/null 2>&1
./scripts/force-wifi-connection.sh >/dev/null 2>&1
./scripts/obtain-ip.sh >/dev/null 2>&1
log "ip: $(ip addr show 2>/dev/null | grep -o 'inet [0-9.]*' | grep -v '127.0' | head -1)"
if curl -fsSL -m 30 -o "$TMP" "$IMAGE_URL"; then
log "curl OK ($(wc -c < "$TMP" 2>/dev/null) octets)"
display
else
log "curl ECHEC (rc=$?)"
"$FBINK" -pmh "Monitorink : image indisponible ($(date '+%H:%M'))"
fi
./scripts/release-ip.sh
./scripts/disable-wifi.sh
./scripts/release-ip.sh >/dev/null 2>&1
./scripts/disable-wifi.sh >/dev/null 2>&1
./scripts/ledToggle.sh off 2>/dev/null
log "suspend ${REFRESH}s"
suspend_for "$REFRESH"
done