Investigation on a returned unit (docs/display-blank-investigation.md): the dark-panel/backlight-on failure reproduces with a warm reboot or a 200 ms pulse on the panel reset line, with no kernel message. After the U-Boot logo hand-off the panel powers/avee GPIOs stay undriven inputs. - Fresh boot: DPMS off/on before the UI starts (unit Before=buttontask), so the driver runs the full panel power-on and drives those lines. - Daily preventive re-init (01:30 UTC, or every 24 h of uptime without NTP); not counted towards reboot escalation. - Previous boot found by saved boot_id, not 'journalctl -b -1' (clock jumps reorder boots); log cold/warm boot from the rk809 RTC (reset to 2017-08-04 on power loss); keep the RTC set from NTP; uptime in every incident line; loop timers on the monotonic clock. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
24 lines
763 B
Desktop File
24 lines
763 B
Desktop File
[Unit]
|
|
Description=ButtonTask display/GUI watchdog (panel re-init, crash escalation)
|
|
# Before the UI: on a fresh boot it re-inits the panel while nobody holds the
|
|
# display, then reports READY and buttontask starts (see boot_takeover).
|
|
Before=buttontask.service
|
|
StartLimitIntervalSec=0
|
|
|
|
[Service]
|
|
# Runs as root: needs fb0/blank, systemctl stop/start and reboot.
|
|
# See the header of bt-displaywatch for what it watches.
|
|
Type=notify
|
|
NotifyAccess=main
|
|
WatchdogSec=60
|
|
# Never hold the UI back for long if something hangs before READY.
|
|
TimeoutStartSec=30
|
|
Environment=BUTTONTASK_ROOT=/opt/buttontask
|
|
Environment=PYTHONUNBUFFERED=1
|
|
ExecStart=/usr/bin/python3 /opt/buttontask/scripts/bt-displaywatch run
|
|
Restart=always
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|