mirror of
https://github.com/DeeJanuz/frametop.git
synced 2026-10-06 05:00:08 +02:00
Hands: check the tracking cameras before recording, and watch for losing them
After the headset wakes, XRService sometimes fails to load the colour module's VCINT FPGA image; then only the two side cameras run, without the IR light, and the tracker finds no hands. hands/camcheck.py reads XRService's log, the video nodes it holds and ft-camd's ring, and says ok, degraded or unknown. The recorder won't start while degraded (--ignore-cameras overrides it), offers a confirmed SteamVR restart, and stops the first hand-size step when the tracker sees no hand at all. ft-camwatch (unit file only, not enabled) follows the log, notifies, and with CAMWATCH_AUTO_RESTART=1 restarts SteamVR when the headset isn't worn and nothing else uses VR. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
79eb251d6c
commit
3ebae6a88f
11 files changed
+2029
-28
No files matched your search
@@ -0,0 +1,21 @@
|
||||
# Template: the installer replaces @REPO@ with the repo path on the Frame. Not installed or
|
||||
# enabled by anything yet (hands/README.md, "Camera check").
|
||||
[Unit]
|
||||
Description=Frametop camera watch: tells you when SteamVR leaves the headset's upper cameras off
|
||||
Documentation=file://@REPO@/hands/README.md
|
||||
# Not PartOf=steamvr.service: it has to outlive the SteamVR restart it may ask for.
|
||||
|
||||
[Service]
|
||||
# On the host, system Python, standard library only. It stats the XRService log every 2 s and
|
||||
# reads only what's new. Notifications go to the Frametop desktop's own D-Bus (found through its
|
||||
# plasmashell). With CAMWATCH_AUTO_RESTART=1 in ~/.config/frametop.conf it may restart SteamVR
|
||||
# while the headset isn't worn: that also closes the Frametop desktop.
|
||||
ExecStart=/usr/bin/python3 @REPO@/hands/ft-camwatch
|
||||
Restart=on-failure
|
||||
RestartSec=30
|
||||
Nice=10
|
||||
CPUQuota=5%
|
||||
MemoryMax=64M
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
Reference in new issue
Block a user