Wrap-up documentation after the first tests on the Steam Frame

README: status, new Steam Frame facts (Steam's generated app manifest,
OpenVR library, display and font metrics) and open points. PROGRESS:
partial results of T1, T2 and T4, and what is open next.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-08 00:21:52 +02:00
co-authored by Claude Opus 5.5
parent 7f14551a6a
commit 5a10cdf7ca
2 changed files with 53 additions and 12 deletions
+25 -3
View File
@@ -318,10 +318,10 @@ Deploy: `build_scripts/steamframe/deploy-to-frame.sh <user>@<frame>` (SteamVR ru
| # | Check | Criterion | Result | | # | Check | Criterion | Result |
|---|---|---|---| |---|---|---|---|
| T1 | `install.sh`: registration works (log: "Manifest reinstalled", via Background) | R2 | first try failed: abort without a display (fixed, see above); retest open | | T1 | `install.sh`: registration works (log: "Manifest reinstalled", via Background) | R2 | partly: "Manifest reinstalled" after three fixes (display, OpenVR library, Steam's entry), but SteamVR keeps Steam's entry for the key (see "Finding: app key …") |
| T2 | Tab appears in the dashboard, UI correct (OpenGL) | R2, R3 | open | | T2 | Tab appears in the dashboard, UI correct (OpenGL) | R2, R3 | partly: tab appears; root page and "Chaperone Settings" correct after the style fix; other pages not checked |
| T3 | `./run.sh vulkan`: UI correct | R3 | open | | T3 | `./run.sh vulkan`: UI correct | R3 | open |
| T4 | Laser right way up, click, scrolling on several pages (both APIs) | R4 | open | | T4 | Laser right way up, click, scrolling on several pages (both APIs) | R4 | partly: laser and navigation work (OpenGL, user's observation); scrolling and Vulkan not checked |
| T5 | Text field (e.g. new profile name): SteamVR keyboard opens, input arrives | R4 | open | | T5 | Text field (e.g. new profile name): SteamVR keyboard opens, input arrives | R4 | open |
| T6 | An OVRAS action arrives (e.g. push-to-talk, log/notification) | R4 | open | | T6 | An OVRAS action arrives (e.g. push-to-talk, log/notification) | R4 | open |
| T7 | Play area before/after start unchanged; log: "CommitWorkingCopy skipped" | R7 | open | | T7 | Play area before/after start unchanged; log: "CommitWorkingCopy skipped" | R7 | open |
@@ -338,3 +338,25 @@ Deploy: `build_scripts/steamframe/deploy-to-frame.sh <user>@<frame>` (SteamVR ru
(working rules, conventions), `docs/steamframe/OVRAS-FEATURES.md` (feature analysis). (working rules, conventions), `docs/steamframe/OVRAS-FEATURES.md` (feature analysis).
- **Still open in iteration 1:** phase 4 (tests on the Frame, T1–T11) and phase 5 - **Still open in iteration 1:** phase 4 (tests on the Frame, T1–T11) and phase 5
(assessment). (assessment).
### Wrap-up (2026-10-08)
- **First tests on the Frame (2026-10-07/08):** six fixes, each its own commit:
`537539a` manifest commands without a display, `317db68` OpenVR library
`bin/linuxarm64`, `ec82b5f` registration when Steam lists the key, `bbb3d1b` no debug
output by default, `d664f86` layout diagnosis (font log, `--snapshot`), `ff4ea8f` Fusion
style instead of Material.
- **State on the Frame:** package of `ff4ea8f` deployed, running with
`--snapshot /tmp/ovras.png` (OpenGL).
- **Open, in this order:**
1. Page-by-page layout check with `--snapshot` (SteamVR, Offsets, Motion, Rotation,
Space Fix, Audio, Video, Utilities, Statistics, Settings, Chaperone sub-pages). Known:
icon slightly overlaps the text on "Chaperone" and "Space Fix".
2. Rest of T1–T11, especially T3 (Vulkan), T5 (keyboard), T8 (quit), T9 (auto-start),
T10 (CPU), T11 (uninstall).
3. App key: Steam's entry still wins (see README "Known open points"); auto-launch is
switched on for Steam's key (`~/.config/openvr/config/vrappconfig/steam.overlay.1009850.vrappconfig`,
created by our `install.sh`). Decide on an own app key (option 2).
4. R6: three synchronous PulseAudio queries per tick for the microphone mute state.
- **Not in the repository:** the headset photo `frame-headset-2026-10-07T22-00-14-104Z.png`
in the working tree (untracked).
+28 -9
View File
@@ -12,16 +12,22 @@ point for continuing the work on any computer.
| [OVRAS-FEATURES.md](OVRAS-FEATURES.md) | OVRAS's features and how they are implemented; issues found while reading | | [OVRAS-FEATURES.md](OVRAS-FEATURES.md) | OVRAS's features and how they are implemented; issues found while reading |
| [`/CLAUDE.md`](../../CLAUDE.md) | Working rules and conventions (for people and for Claude Code) | | [`/CLAUDE.md`](../../CLAUDE.md) | Working rules and conventions (for people and for Claude Code) |
## Status (2026-10-07) ## Status (2026-10-08)
- **Iteration 1 ("native start on the Frame"): implemented, not yet tested on the Frame.** - **Iteration 1 ("native start on the Frame"): implemented; testing on the Frame has
started** (phase 4). OVRAS starts natively on the Frame, the dashboard tab appears, laser
and navigation work, the root page and "Chaperone Settings" fit (OpenGL). Five problems
found on the first deployment were fixed (details in [PROGRESS.md](PROGRESS.md)):
manifest commands without a display, wrong aarch64 OpenVR library, app key already
registered by Steam, debug log flood, layout cut off (Material style).
- Tested without a headset: - Tested without a headset:
- Linux x86_64 build. - Linux x86_64 build.
- aarch64 cross build: no private Qt API except `QVulkan*`, Qt 6.8, GLIBC ≤ 2.38. - aarch64 cross build: no private Qt API except `QVulkan*`, Qt 6.8, GLIBC ≤ 2.38.
- Render tests with OpenGL and Vulkan; Vulkan with validation layers and no messages. - Render tests with OpenGL and Vulkan; Vulkan with validation layers and no messages.
- Release package (1.6 MB). - Release package (1.6 MB).
- **Next step:** test checklist T1–T11 on the Frame ([PROGRESS.md](PROGRESS.md)), record - **Next step:** continue on the Frame: page-by-page layout check with `--snapshot`, then the
the results there, then assessment. rest of the test checklist T1–T11 ([PROGRESS.md](PROGRESS.md), "Wrap-up (2026-10-08)"
lists what is open), then assessment.
- **After that:** iteration 2. R5 hides the features that are native in SteamVR or don't - **After that:** iteration 2. R5 hides the features that are native in SteamVR or don't
work on the Frame. Then the remaining features are checked one by one. work on the Frame. Then the remaining features are checked one by one.
@@ -144,14 +150,23 @@ Verified with the template on SteamOS holo 0.4.3; details in FrameAssistant's
- **Manifest and SteamVR:** - **Manifest and SteamVR:**
- The manifest needs `binary_path_linux_arm`; entries without it are skipped silently. - The manifest needs `binary_path_linux_arm`; entries without it are skipped silently.
- SteamVR refuses `VRApplication_Utility`. Manifest commands therefore fall back to - SteamVR refuses `VRApplication_Utility`. Manifest commands therefore fall back to
`Background`, which needs a running SteamVR. `Background`, which needs a running SteamVR. (2026-10-07: with OVRAS, SteamVR accepted
`Utility`; the fallback stays.)
- Steam's generated `~/.local/share/Steam/config/steamapps.vrmanifest` lists every VR app
the user owns, installed or not, with a `steam://` URL. For a key listed there, SteamVR
keeps using Steam's entry even after our manifest is added (seen 2026-10-07).
- Use the OpenVR SDK's `bin/linuxarm64/libopenvr_api.so`; the SDK's `lib/linuxarm64` one
looks for the path registry in `/data/work` and never finds SteamVR.
- `VR_Shutdown` must run before the graphics device is destroyed (crash with Vulkan - `VR_Shutdown` must run before the graphics device is destroyed (crash with Vulkan
otherwise). otherwise).
- **Rendering and input:** - **Rendering and input:**
- OpenGL runs through zink (no native GL driver); Vulkan is about 1.9× faster per frame. - OpenGL runs through zink (no native GL driver); Vulkan is about 1.9× faster per frame.
- SteamVR reports overlay mouse coordinates with y from the bottom. - SteamVR reports overlay mouse coordinates with y from the bottom.
- **Processes and display:** - **Processes and display:**
- Over SSH there is no display: set `DISPLAY=:0` (the scripts do). - Over SSH there is no display: set `DISPLAY=:0` (the scripts do). Commands that draw
nothing run with `QT_QPA_PLATFORM=offscreen`.
- X screen 1920×1080 with `Xft.dpi: 144`, yet Qt reports logical DPI 96 and device pixel
ratio 1 for OVRAS; default font Noto Sans (20 pt = 27 px).
- Process names are cut to 15 characters: find instances by command line. - Process names are cut to 15 characters: find instances by command line.
- An executable must not be named like a SteamVR process (e.g. `vrdashboard`). - An executable must not be named like a SteamVR process (e.g. `vrdashboard`).
- **Private package repositories:** the Frame's `/etc/pacman.conf` points to private Valve - **Private package repositories:** the Frame's `/etc/pacman.conf` points to private Valve
@@ -161,9 +176,13 @@ Verified with the template on SteamOS holo 0.4.3; details in FrameAssistant's
- **SteamVR keyboard:** text fields may not get focus. The template had to send the offscreen - **SteamVR keyboard:** text fields may not get focus. The template had to send the offscreen
window an explicit `FocusIn`; `qt6` doesn't (T5). window an explicit `FocusIn`; `qt6` doesn't (T5).
- **Unverified on the Frame:** - **App key taken by Steam's entry:** whoever owns OVRAS on Steam has
- QML modules: Controls/Material, Layouts, Dialogs, Multimedia. `steam.overlay.1009850` in Steam's `steamapps.vrmanifest`, and SteamVR keeps using that
- libXt/libXtst present? libstdc++ ≥ GLIBCXX_3.4.32? entry (auto-start would launch the Steam version). On the author's Frame it is still
listed after removing the license from the account. Possible fix: an own app key for the
native build (option 2, DESIGN.md section 2a; needs its own design).
- **Unverified on the Frame:** QML modules Dialogs and Multimedia (Controls, Layouts and
the binary's libraries load, since OVRAS runs).
- **Remaining play-area commit:** "auto-apply chaperone" (opt-in, default off) still commits - **Remaining play-area commit:** "auto-apply chaperone" (opt-in, default off) still commits
at start-up; this belongs to R5. at start-up; this belongs to R5.
- **Windows:** the Windows build is broken on `steamframe`. There is no D3D11 render path - **Windows:** the Windows build is broken on `steamframe`. There is no D3D11 render path