Files
Monitorink/kobo/README.md
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

77 lines
4.3 KiB
Markdown

# 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`](https://github.com/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 :
```sh
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.