Contribute to Retina-Sync Override (UtahsQuest2Upgrade) — a Python desktop + CLI tool that optimizes Meta Quest headsets via ADB.
Background reading: Technical Overview · VR Landscape
git clone https://github.com/utahisnotastate/UtahsQuest2Upgrade.git
cd UtahsQuest2Upgrade
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux / macOS
source .venv/bin/activate
pip install -r requirements.txtRequirements include CustomTkinter (GUI), PyInstaller (optional packaging), and pytest (tests).
| Path | Role |
|---|---|
main.py |
GUI entry (RetinaSyncApp) |
quest_gui.py |
CustomTkinter: Overlay, lenses, Thermal Shield, Advanced |
quest_logic.py |
ADB, batch apply/read, silicon probes, Chrono, MetaLens |
quest_profiles.py |
Named presets + ThermalShield |
quest_benchmark.py |
Spatial telemetry runner |
quest_cli.py |
Headless argparse CLI |
build_exe.py |
PyInstaller onefile build |
tests/ |
Device-free unit tests |
docs/ |
Audience + technical documentation |
Dependency direction (keep it acyclic):
main → quest_gui → quest_logic → quest_profiles
→ quest_benchmark → quest_logic
quest_cli → quest_logic / quest_benchmark / quest_profiles
- Add the property to
QuestLogic.PROP_LABELS(and usuallyOPTIMIZATIONS/DEFAULTS). - If it is a user-facing preset, add it under
GAMING_PROFILESinquest_profiles.py. - Expose it in Advanced UI via
create_setting_rowinquest_gui.pyif operators need a manual control. - Meta-Lens and Micro-Lens automatically score any key present in the expected matrix / labels.
Rules of thumb
- Prefer documented Meta
debug.oculus.*properties over undocumented vendor keys. - Always handle unauthorized / missing-device ADB states.
- Sysfs probes must return
"N/A"orNone, never raise on missing paths. - Prefer
apply_properties_batchover per-keysetproploops for latency.
When linking width→height, use QuestLogic.linked_height() / height_for_width() (~1.1×). Square buffers are fine for aggressive presets, but stock Quest 2 proportions are rectangular.
Persisted at ~/.retina_sync_chrono_history.json (capped ~200 events).
from quest_logic import QuestLogic
logic = QuestLogic()
logic.apply_preset("Max GPU")
logic.rewind_previous() # undo to prior entry
logic.rewind_to_index(0) # re-apply newestEach history row stores ts, label, settings, success_count, total, and often elapsed_ms.
logic.thermal_shield.auto_apply = True
logic.evaluate_thermal_shield()
logic.apply_thermal_profile("THERMAL_BYPASS")
logic.maybe_auto_thermal_apply() # no-op unless auto_apply and threshold crossedHysteresis: enter bypass near ceiling (~82 °C); leave only after recover (~72 °C) to avoid flapping.
python quest_cli.py status
python quest_cli.py deploy
python quest_cli.py preset "Competitive"
python quest_cli.py shield --auto on
python quest_cli.py benchmarkUseful for CI smoke checks (connection-dependent) and power-user scripting. Host-side unit tests should not require a headset.
pytest -qtests/test_quest_logic.py covers MetaLens verdicts, ThermalShield hot-swap, profile catalogs, Chrono persistence, and height heuristics — no ADB required.
When adding device-touching integration tests, gate them behind an env flag (e.g. RETINA_SYNC_ADB=1) so default CI stays offline-safe.
python build_exe.pyOutput: dist/RetinaSyncOverride.exe (onefile, windowed). Hidden imports cover quest_logic, quest_gui, quest_benchmark, quest_profiles, and quest_cli.
- Never call blocking ADB on the Tk main thread.
- Use
threading.Thread+self.after(...)to marshal results back to the UI (existing pattern inquest_gui.py). - Telemetry is debounced (
_debounce_ms) to coalesce device-monitor ticks.
- Branch:
git checkout -b feature/your-change - Keep diffs focused; update docs when behavior or public CLI changes.
- Run
pytest -q. - Open a pull request with a short “why” summary.
Do not commit secrets, local Chrono JSON from your home directory, or PyInstaller build/ / dist/ artifacts unless intentionally releasing.
- Utah-Vidia — PC GPU middleware concepts (thermal JIT profiles, gaming presets). Retina-Sync ports the ideas to Quest ADB; it does not embed CUDA.
- Meta Horizon docs — system properties for Quest developers (authoritative for property semantics).