mirror of
https://github.com/DeeJanuz/frametop.git
synced 2026-10-06 06:00:09 +02:00
A user on a fresh install got "Calibration failed: only 0 of 21 dots" with no reason. The installer never installed our tracker, so gaze used SteamVR's, and the only way SteamVR's tracker rejects a dot is losing an eye for most of the look. The panel just showed a red ring. - install.sh: step 9/10 installs our tracker (gaze/tracker/install.sh) after gaze mode, yes by default; it needs sudo, so --yes runs it only when sudo won't prompt. If it fails, gaze keeps SteamVR's tracker. Configs that still say GAZE_TRACKER=steam (the old template) are asked whether to switch. - GAZE_TRACKER=auto, the new default: ours when it's installed (the frame grabber, its unit, and ft-eyes' Python), else SteamVR's. ft-gazed rechecks every second, so installing it switches over. Input Settings lists Own tracker first as recommended, and says how to install it when it's missing (checking the host's /etc through /run/host from the dev container). - The calibration panel has a note line, orange over the instructions: why a dot wasn't taken (an eye lost, a blink, the eyes disagreeing for SteamVR's tracker, from steady_samples' new drop counts; ft-eyes' reply for ours), what a click is still waiting for after 1.5 s, and a failed calibration's most common reason, which the Gaze page shows too. steady_samples keeps the same samples as before (checked on 2037 windows of recordings); a lost eye is named before a blink, since its openness reads 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
45 lines
2.1 KiB
Bash
Executable File
45 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Install (or remove) the frame grabber our own eye tracker needs: ft-eyegrab, as the system
|
|
# service frametop-eyegrab.service. It copies the eye-camera frames, read-only, out of
|
|
# SteamVR's eyetracking process into /dev/shm/frametop-eyes-cams for ft-eyes, and only while
|
|
# ft-eyes wants them. The gaze service (gaze/ft-gazed) runs ft-eyes itself, when ours is the
|
|
# tracker in use (GAZE_TRACKER=auto, the default, picks it once this is installed) or the gaze
|
|
# probe uses it. install.sh offers this after gaze mode.
|
|
# Needs host sudo, for the binary (/etc/frametop/ft-eyegrab, root's) and the unit: it asks for
|
|
# the password in the terminal, on the Frame or from a PC, or runs SUDO_ASKPASS when that's set
|
|
# (frame_sudo in scripts/_env.sh, which also takes it from the repo's .env).
|
|
# Usage: gaze/tracker/install.sh [install|uninstall|status|log [lines]]
|
|
set -euo pipefail
|
|
|
|
root=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)
|
|
. "$root/scripts/_env.sh"
|
|
src=$FRAME_REPO/gaze/tracker
|
|
unit=frametop-eyegrab.service
|
|
|
|
sudo_run() { frame_sudo "$1"; }
|
|
|
|
case ${1:-install} in
|
|
install)
|
|
"$root/gaze/tracker/build.sh"
|
|
ids=$(on_frame 'echo "$(id -u):$(id -g)"')
|
|
fill_template "$root/gaze/tracker/$unit" | sed "s|@UID@|${ids%:*}|g; s|@GID@|${ids#*:}|g" |
|
|
on_frame "cat > /tmp/$unit"
|
|
sudo_run "set -e
|
|
install -D -m 0755 -o root -g root $src/build/ft-eyegrab /etc/frametop/ft-eyegrab
|
|
install -D -m 0644 -o root -g root /tmp/$unit /etc/systemd/system/$unit
|
|
rm -f /tmp/$unit
|
|
systemctl daemon-reload
|
|
systemctl enable $unit
|
|
systemctl restart $unit
|
|
sleep 1
|
|
echo \"$unit: \$(systemctl is-active $unit)\""
|
|
;;
|
|
uninstall)
|
|
sudo_run "systemctl disable --now $unit 2>/dev/null
|
|
rm -f /etc/systemd/system/$unit /etc/frametop/ft-eyegrab
|
|
rmdir /etc/frametop 2>/dev/null; systemctl daemon-reload; echo removed" ;;
|
|
status) on_frame "systemctl is-active $unit; ls -l /dev/shm/frametop-eyes-cams 2>/dev/null" || true ;;
|
|
log) on_frame "journalctl -u $unit --no-pager -o cat -n ${2:-20}" ;;
|
|
*) echo "usage: $0 [install|uninstall|status|log [lines]]" >&2; exit 2 ;;
|
|
esac
|