An independent operating system project for standalone VR headsets.
This is an experimental ARM64 Linux VR environment and headset board-support project. Quest 3 and Pico Neo3 Pro Eye are development targets. Neo3 Pro requires separate board and calibration checks. There is no validated headset installation image.
The development environment uses Fedora, Armada's FEX packaging, native Monado and OpenXR, and Proton for Windows applications. Quest work retains Meta's vendor kernel and board drivers, with Mesa Turnip for KGSL. QEMU provides a separate virtual target for functional tests.
| Area | Verified | Remaining |
|---|---|---|
| Quest kernel | ARM64 kernel, 272 modules and 14 device-tree artifacts compile; QEMU checks userspace interfaces and simulated thermal behavior | Exact-device boot and peripheral operation |
| Pico kernel | Vendor/Linux builds with 38 modules; Binder, namespace networking and SELinux denial checks pass in QEMU | Physical driver operation, recovery and exact-device boot |
| Pico userspace | Matched native root and unsigned boot containers assembled; QEMU root boots, starts user sessions, enforces service isolation and powers off without disk writes | Physical root transport, complete application stack and hardware startup |
| Pico HMD | Monado HMD with explicit calibration input; orientation, stereo geometry, both controllers and tracking-loss handling pass with synthetic SSC streams | Device calibration, panel output, controller poses and positional tracking |
| Pico VIO | Native Basalt, owned camera/IMU input and HMD pose integration; six reference replays produce matching 185-pose trajectories (6.4 mm RMS) | Live camera startup, active calibration, camera/IMU alignment and physical 6DoF |
| Pico cameras | Sensor/ISP command encoding, request transport, DMA ownership and event routing checked against retained firmware/kernel code and fault-tested offline | Active sensor mapping, initialization, hardware synchronization and capture |
| Pico optics | Radial/RGB and screen-to-texture mapping compared with saved stock code; analytic calibration works through both software compositor paths | Active profile/IPD, panel orientation and physical optical alignment |
| Graphics | KGSL Turnip and native Monado builds; software Vulkan stereo/RGB-distortion framebuffer checks, synchronization and display-selection tests | GPU execution, panel scanout and compositor timing on the headset |
| VR applications | Native and Windows OpenXR stereo samples and virtual controller actions in QEMU | Games, physical tracking, controllers, audio and sustained performance |
| SteamVR | Native Frame ARM64 presentation, cached Library navigation/scrolling with both virtual controllers, and Windows OpenXR on fresh native backends pass in QEMU; translated baseline retained | Complete reproducible image, compositor validation/timing, game and sustained runtime acceptance |
| Android container | Lepton boots Android 11 on the Quest test kernel; Binder, isolation, APK input/saves and networking pass. Private Android Mesa builds render Vulkan and GLES OpenXR stereo through native SteamVR, with independent compositor captures and normal shutdown | Matching source-built init, reproducible Android driver packaging, persistent XR orchestration, frame timing, controller actions, actual games and hardware graphics |
| Installation | Authenticated current-build stock OTA, boot-container assembly and integrity checks | Accepted custom boot, exact stock recovery and a tested installation/rollback procedure |
VM results do not establish hardware compatibility or flash readiness. Read the device installation requirements before planning any device changes.
Requirements: Python 3.11+, just, an ARM64 Linux container engine, and
qemu-system-aarch64. Docker Desktop on Apple Silicon is supported. Device-tree
tests also need cc, dtc and fdtoverlay.
just check
just build
just test
just build-vm output/vm-new
just run-vm output/vm-newThe virtual acceptance tests use software Vulkan and a simulated headset.
Outputs are stored in output/; builders require new output directories to
preserve earlier artifacts. Run just --list for the supported workflows.
See project naming and existing builds when using
artifacts produced before the rename.
For an interactive desktop with the native ARM64 Steam client:
just build-steam
just build-desktop output/desktop-new output/desktop-client-new
just desktop output/desktop-newjust desktop-online output/desktop-new enables user-mode networking for Steam
sign-in and downloads. The persistent QCOW2 overlay references its base disk;
keep them together. A fresh desktop build does not yet include every dependency
used by the recorded SteamVR tests.
- Kernel and board support, boot containers, and offline root filesystem
- Turnip, Monado, and DMA-buffer synchronization
- SteamVR, native ARM64 runtime, Windows OpenXR, and controller acceptance
- VR acceptance milestones, Steam Frame components, and Android container checks
- Pico firmware and boot access, HMD integration and calibration, visual-inertial tracking
Source revisions, archive hashes and build profiles are recorded under
profiles/. Build tooling retains upstream license files. Firmware, calibration,
device inventories, downloaded binaries and local investigation journals are
excluded from this repository; headset firmware must be supplied locally.
Reframed VR builds on Armada and armada-packages, including their Fedora build and packaging work, FEX packaging, and selected kernel and graphics patches. ROCKNIX also provides upstream work used through those projects. Their handheld boot layout and updater are not a headset installer.
The project also depends on Fedora, Linux, Mesa/Turnip, Monado, Basalt, OpenXR, FEX, Proton, and Valve's published runtimes, with Meta and Pico vendor sources for board support. Upstream names, licenses, copyright notices, source URLs, and pinned revisions remain attached to their respective components.