‹ projects

reverb-m1

Native wired VR on Apple silicon: Reverb G1 display bring-up and stereo demo
git clone https://umhau.org/code/reverb-m1.git
Log | Files | Refs

commit f9e8de8a43182b5ecb9b11e6c9d0e3f413891a95
parent 5733747618335531bc5860334847cdf7f1b37874
Author: umhau <umhau@example.invalid>
Date:   Fri, 23 Oct 2026 12:00:00 +0000

Document public history privacy and isolate demo validation

Diffstat:
MNOTES.md | 4++--
APRIVACY.md | 28++++++++++++++++++++++++++++
MSETUP.md | 6+++---
MSources/VRWorkstation/LensWarp.swift | 2+-
Atools/check.sh | 13+++++++++++++
5 files changed, 47 insertions(+), 6 deletions(-)

diff --git a/NOTES.md b/NOTES.md @@ -117,7 +117,7 @@ Offline checks: swiftc -O Sources/VRWorkstation/Calibration.swift Tests/CalibrationChecks.swift -o /tmp/vr-calibration-checks /tmp/vr-calibration-checks swiftc -O -D LENS_WARP_CHECKS Sources/VRWorkstation/Calibration.swift Sources/VRWorkstation/LensWarp.swift Tests/LensWarpChecks.swift -framework Metal -o /tmp/vr-lenswarp-checks -/tmp/vr-lenswarp-checks "$HOME/Library/Application Support/VRWorkstation/factory.json" +/tmp/vr-lenswarp-checks "$HOME/Library/Application Support/ReverbM1Demo/factory.json" ``` The calibrated live build also passed a forced panel-off recovery: display ADD after 4.576 s, then the known @@ -130,7 +130,7 @@ The running demo logs to `/tmp/vr-calibrated-live.txt`; Q or Escape in its windo The Mac has a Headset optics window with scene/white-grid/green-grid patterns, red strength, and separate horizontal/vertical blue strengths (-100% to 400%). 100% is the original factory compensation; zero uses green geometry for that channel. The controls pass settings to -the render worker under a lock, and debounce-save them to Application Support/VRWorkstation/optics-adjustments.json. +the render worker under a lock, and debounce-save them to Application Support/ReverbM1Demo/optics-adjustments.json. Factory JSON remains unchanged. Green-only mode disables the color sliders. Reset restores factory color strengths. Separately, the floor's 1.5 cm geometric grid strips projected below one panel pixel at distance. They were replaced diff --git a/PRIVACY.md b/PRIVACY.md @@ -0,0 +1,28 @@ +# Public demo history + +This repository preserves the development sequence through the standalone stereo +demo. Its historical commits have been rewritten to omit private information. +The private development repository is separate and is not an upstream dependency. + +The public history omits personal contact addresses, account-specific filesystem +paths, device serial numbers, compiled Python caches, per-unit optical geometry, +personal optical adjustments and their fingerprints. Later application development +and its raw movement/capture data are outside this export. + +Commit calendar dates are retained; original wall-clock times and timezones are +not. The replacement times do not represent when work occurred. Recorded epoch +timestamps in historical evidence were shifted by a common private offset, so +elapsed intervals remain useful but the values are no longer wall-clock times. +Clock-time mentions in notes are redacted. Historical hashes have changed. + +The project handle, upstream copyright and license notices, tested hardware model, +macOS/toolchain versions, protocol constants, and aggregate performance results +are intentionally public technical context. + +The demo reads calibration from the connected headset at runtime. Calibration +dumps can contain device identifiers: keep them private and do not add them to +Git. Diagnostic feature payloads, device-serial output, and individual optical +adjustment logs are suppressed. The standalone demo keeps its settings under +`~/Library/Application Support/ReverbM1Demo/`, separate from the workstation app. +Review any new logs or captures before sharing; a clean source-history audit does +not automatically sanitize files produced later. diff --git a/SETUP.md b/SETUP.md @@ -80,7 +80,7 @@ zsh tools/build.sh # builds the app + the signe - The helper reports failure (exit 1) unless the controller's DATA1 result is 0. A result of 0x04 has been seen after an accepted DRST that still restored the display; the app treats ADD, not the helper's exit code, as proof. - First launch reads the headset's factory optical calibration before enabling the rendering session, then caches it at - `~/Library/Application Support/VRWorkstation/factory.json`. Later launches validate and reuse that file. + `~/Library/Application Support/ReverbM1Demo/factory.json`. Later launches validate and reuse that file. `--calibration /path/to/factory.json` explicitly selects another saved calibration; invalid calibration stops startup. - Each eye renders with its calibrated asymmetric field of view to a 3024x3024 target. A final pass applies the factory Polynomial-3K lens correction separately to red, green, and blue before native 4320x2160 output. There is no @@ -115,7 +115,7 @@ zsh tools/build.sh # builds the app + the signe startup, then no drops. - Factory calibration: `.build/debug/VRWorkstation --read-calibration <path>` reads the headset's config store over HID (10,737 bytes, under 1 s; do it before the app enables the IMU). The app caches it at - `~/Library/Application Support/VRWorkstation/factory.json`. Lens correction using it is in progress. + `~/Library/Application Support/ReverbM1Demo/factory.json`. Lens correction using it is in progress. ## How the boot-arg was found `amfi_get_out_of_my_way` controls code signing, not HDCP, so we searched this Mac's own kernel: @@ -153,7 +153,7 @@ zsh tools/build.sh # builds the app + the signe The **Headset optics** window on the Mac switches between the 3D scene, a stationary white grid, and a green-only sharpness grid. Red correction and separate blue horizontal/vertical correction range from -100% to 400%; 100% is -factory compensation. Changes save automatically to `~/Library/Application Support/VRWorkstation/optics-adjustments.json`. +factory compensation. Changes save automatically to `~/Library/Application Support/ReverbM1Demo/optics-adjustments.json`. The factory reset button restores 100% for all three controls. Color controls are disabled for the green-only pattern. The floor now uses a filtered procedural grid to avoid subpixel line aliasing at distance. diff --git a/Sources/VRWorkstation/LensWarp.swift b/Sources/VRWorkstation/LensWarp.swift @@ -10,7 +10,7 @@ struct HeadsetOptics { let bounds: [Poly3KBounds] static var cacheURL: URL { FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)[0] - .appendingPathComponent("VRWorkstation/factory.json") + .appendingPathComponent("ReverbM1Demo/factory.json") } init(json: Data) throws { diff --git a/tools/check.sh b/tools/check.sh @@ -0,0 +1,13 @@ +#!/bin/zsh +# Offline checks: no HID commands, display changes or USB-PD resets. +set -euo pipefail +cd "$(dirname "$0")/.." +mkdir -p .build/checks +swiftc -O Sources/VRWorkstation/Calibration.swift Tests/CalibrationChecks.swift -o .build/checks/calibration +.build/checks/calibration +swiftc Sources/VRWorkstation/LinkRecovery.swift Sources/VRWorkstation/MainRunLoop.swift Tests/LinkRecoveryChecks.swift -o .build/checks/recovery +.build/checks/recovery +if [[ $# -gt 0 ]]; then + swiftc -O -D LENS_WARP_CHECKS Sources/VRWorkstation/Calibration.swift Sources/VRWorkstation/LensWarp.swift Tests/LensWarpChecks.swift -o .build/checks/lenswarp -framework Metal + .build/checks/lenswarp "$1" +fi