Files
Monitorink/kobo
jerem 5925b0f9d2 Reboot Kobo: 3 appuis bouton de page (evdev EV_KEY) au lieu du triple-tap tactile
L'ancien triple-tap via finger_trace dessinait des points noirs (outil de demo
FBInk), ne respawnait pas (mort definitif si le process tombait) et le tactile ne
reveille pas l'appareil. Le power, lui, n'emet que des scancodes MSC_SCAN parasites
(etat de charge USB). Les boutons de page emettent des EV_KEY propres (codes 193/194).

reboot_watcher.sh: lit l'evdev (FD persistant, pas de perte d'evenements), declenche
sur 3 press EV_KEY < 3 s, boucle de respawn. Plus de finger_trace.

Refresh: full force au (re)demarrage (reset=1 cote client -> oubli de prev_image cote
serveur) pour eviter un refresh partiel pose sur un ecran efface par le reboot.
2026-06-15 19:38:15 +02:00
..

Client Kobo — Monitorink

Affiche le dashboard Monitorink (/image.png) sur une Kobo Libra 2 (FW 4.38.x) déjà équipée de NickelMenu. Approche : boucle WiFi → fetch image → fbink → suspend rtcwake.

Ces scripts sont un overlay : ils réutilisent les binaires ARM et les helpers WiFi pré-compilés/éprouvés du projet usetrmnl/trmnl-kobo, afin de ne pas réinventer (et risquer de casser) la gestion WiFi/suspend spécifique au matériel.

Contenu de ce dossier

  • monitorink.sh — point d'entrée (lancé par NickelMenu).
  • monitorinkloop.sh — boucle d'affichage (réutilise bin/ et scripts/ de trmnl-kobo).
  • nm/monitorink — entrée NickelMenu.

Installation (Kobo branchée en USB)

  1. Récupérer les binaires + helpers WiFi depuis trmnl-kobo :

    git clone https://github.com/usetrmnl/trmnl-kobo
    

    On a besoin de src/TRMNL/bin/ (fbink, fbdepth, busybox_kobo) et src/TRMNL/scripts/ (enable-wifi.sh, disable-wifi.sh, force-wifi-connection.sh, obtain-ip.sh, release-ip.sh, ledToggle.sh, getrssi.sh).

  2. Construire le dossier Monitorink sur la Kobo, à /mnt/onboard/.adds/Monitorink/ :

    Monitorink/
      monitorink.sh            (ce repo)
      monitorinkloop.sh        (ce repo)
      bin/                     (copié depuis trmnl-kobo/src/TRMNL/bin/)
      scripts/                 (copié depuis trmnl-kobo/src/TRMNL/scripts/)
    
  3. Entrée NickelMenu : copier nm/monitorink dans /mnt/onboard/.adds/nm/monitorink.

  4. Configurer l'URL dans monitorink.sh (MONITORINK_URL) et l'intervalle (MONITORINK_REFRESH, en secondes).

  5. Éjecter proprement la Kobo → l'entrée « Monitorink » apparaît dans NickelMenu.

Utilisation

  • Lancer « Monitorink » depuis NickelMenu. La boucle démarre : l'écran se met à jour, puis le device passe en suspend et se réveille à chaque intervalle.
  • Mode prod (réglages par défaut) : refresh 5 min (MONITORINK_REFRESH=300), rétroéclairage éteint (frontlight à 0), et WiFi cyclé — la radio est rallumée le temps du fetch puis coupée pendant le suspend rtcwake -m mem pour économiser la batterie.
  • Redémarrer / restaurer Nickel : 3 appuis rapides (< 3 s) sur un bouton de page (frontal). reboot_watcher.sh lit l'evdev et déclenche un reboot logiciel propre sur 3 press EV_KEY (codes 193/194). Sur batterie le device est en suspend profond et les boutons frontaux ne le réveillent pas : faire d'abord un appui power (réveil), puis les 3 appuis dans la fenêtre d'éveil. Filet de secours : appui power long = reboot matériel.
    • Pourquoi pas le bouton power directement : sur ce Kobo (mx6sll) le power n'émet que des scancodes bruts MSC_SCAN, parasités par l'état de charge USB (peu fiable). Les boutons frontaux émettent des EV_KEY propres.
    • reboot_watcher.sh tourne en arrière-plan avec une boucle de respawn (il ne reste jamais mort). Calage/debug : lancer avec MONITORINK_PWR_DEBUG=1 pour logger chaque évènement (type/code/val), puis repasser à 0.
  • finger_trace (ancien déclencheur triple-tap tactile) n'est plus utilisé : on peut le retirer de bin/fbink/.
  • Logs : /tmp/monitorink.log (effacés au reboot).

À valider sur l'appareil (cf. plan, tâche 8)

  • Orientation framebuffer : si l'image sort tournée, soit pivoter côté serveur, soit ajouter ./bin/fbdepth -r 2 avant l'affichage et -r -1 après.
  • Frontlight : frontlight_off() écrit 0 dans /sys/class/backlight/*/brightness. Vérifier ls /sys/class/backlight/*/brightness sur l'appareil et ajuster le glob si le nœud diffère.
  • Stabilité de rtcwake -m mem sur FW 4.38.23171 (sinon le fallback state-extended prend le relais ; en dernier recours sleep).
  • Cycle WiFi : confirmer qu'au réveil la reconnexion DHCP aboutit en < ~24 s (has_ip OK).
  • Boutons (reboot) : sur ce Kobo, find_button_dev retient /dev/input/event3 et les boutons de page émettent EV_KEY codes 193/194 (struct input_event 16 o). Sur un autre modèle, recaler via MONITORINK_PWR_DEBUG=1 (codes/format dans le log). Sur batterie, vérifier le geste réveil-power → 3 appuis frontaux dans la fenêtre d'éveil (les frontaux ne réveillent pas du suspend).
  • Autonomie réelle sur 24 h.