An independent operating system project to bring a SteamOS experience to 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. The Pico path targets Valve’s native ARM64 SteamVR compositor and gamescope’s OpenVR Steam overlay. 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 |
| Quest cameras | Sensor/PHY/IFE setup, stream packets, DMA ownership, MCU commands and timestamped capture tested against retained stock code and the vendor kernel, including failure cleanup | Active camera routing/settings, exposure timing, physical capture and shutdown |
| Quest tracking | Installed ARM64 runtime connects FIFO/IMU input, stereo capture, calibrated geometry and Basalt; reference replay and tracking-loss tests pass | Exact-device camera/IMU alignment, active calibration, controller poses and physical 6DoF |
| Pico kernel | Native 4.19 RAM boots and verified stock returns; live USB, camera/ISP, SSC and MCU operation | Persistent installation, newer DRM features and remaining peripherals |
| Pico userspace | Native Linux USB-root sessions with isolated Bionic SLAM dependencies and read-only stock firmware/calibration | Reproducible installed Frame-based application stack and unattended startup |
| Pico HMD | Physical Neo3 SteamVR driver loads factory optics and receives live SLAM; native dashboard checks return tracked HMD poses | Lens acceptance, measured head calibration and controllers |
| Pico VIO | Live vendor SLAM consumes native synchronized camera/IMU input and publishes tracked head poses; Basalt reference replays retained | Measured position scale/direction, head/world acceptance and sustained integration |
| Pico cameras | All four tracking cameras stream natively; 2,249 synchronized head-frame sets consumed in a 90-second run, with clean shutdown | Physical camera-order/exposure verification and longer captures |
| Pico optics | Factory-profile structure and 52,272 distortion UV comparisons pass; SteamVR constructs both eye distortion meshes | Clean lens output, active IPD and physical optical alignment |
| Graphics | Pico passes binary/timeline GPU sharing; Valve's compositor renders Steam's setup UI into both eye views through both DMA planes | Sustained timing, physical motion accuracy, input usability and clean lens acceptance |
| 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.
Host Python tests require NumPy and Pillow; both are included in the development
container.
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, and native SteamVR integration
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.