 
 
 
Frederic Plourde 
October 31, 2025
Reading time:
At Collabora our mission is to make open source XR more accessible, interoperable, and inclusive. Continuing this commitment, today we are happy to announce that Monado, the open source OpenXR runtime maintained by Collabora, now supports Google Cardboard and similar mobile VR viewers through a new driver developed by our XR team!
This contribution opens up an entirely new class of low-cost, easily accessible devices for XR experimentation, education, and inclusion.
Credits for this awesome work go to the very talented Simon Zeni, Rylie Pavlik, and Korcan Hussein from the Collabora XR Team.
VR can be experienced using a regular Android phone inserted into a simple viewer such as Google Cardboard. One of the key advantages of these ultra-low-cost VR devices is their easy calibration: users can simply scan a QR code—usually printed on the viewer itself—which encodes the device’s optical parameters to ensure correct lens distortion and projection. While these viewers do not support full positional tracking, they remain an excellent entry point to immersive content and a valuable tool for accessibility, education, and outreach.
The new Cardboard driver for Monado enables users of OpenXR applications on Android to scan such QR codes and automatically apply the corresponding distortion parameters. This provides OpenXR developers with a lightweight, fully integrated solution for deploying immersive experiences on phone-based VR—featuring stereoscopic rendering, IMU-based rotational head tracking, and basic input support.
Monado’s Cardboard driver borrows some header files and constructs from the Google Cardboard SDK code, but our implementation is largely independent from it. Adding the Google Cardboard SDK as a new dependency was deemed incompatible with Monado, as it would have added unnecessary complexity through difficult integration, excessive code weight, and unwanted Android-specific dependencies.
This work was released and upstreamed through the following merge request:
Moreoever, since Monado already includes all the necessary components for stereoscopic rendering, distortion shaders, and generic sensor support on Android, our integration is limited to using the following components from the SDK:
For QR code scanning, we initially considered using Google ML Kit — the solution recommended for Google Cardboard — but its closed-source nature made it unsuitable for Monado. Instead, we chose BarcodeScannerView, a lightweight and open source alternative well-suited for projects that only need to scan barcodes without embedding a full scanning view.
QR Code Scanning and Calibration
The QR scanning feature lives under the src/xrt/auxiliary/android_cardboard folder and involves two main components:
1. QrScannerActivity.kt This activity provides the camera preview and QR detection logic.
2. CardboardParamUtils.kt This utility class handles the decoding and validation of the calibration payload extracted from the QR code. It leverages the protobuf schema definitions derived from the Google Cardboard SDK to parse the optical parameters
android_sensors.c  In this native source file, we implemented the load_cardboard_distortion that loads and decodes a Google Cardboard calibration file, extracting lens distortion and field-of-view parameters to configure the device’s optical settings.
Getting started is easy! Simply download the Android prebuilt here and sideload to your Android phone. When you launch the Monado app on your phone, you’ll notice a QR code icon in the top-right corner of the screen.

Tap that icon to open your phone’s camera and scan the QR code printed on your Cardboard viewer. Monado will automatically load the correct distortion and field-of-view parameters for your specific headset.

That’s it — now launch any OpenXR app, slide your phone into the viewer, and enjoy a properly calibrated experience tailored to your device!
Note: Of course, as always when using Monado on an Android phone, you need to have previously downloaded and installed the OpenXR Runtime Broker app (published by The Khronos Group Inc.) and make sure Monado is set as the default selected OpenXR runtime on your system.
Note: As with any Monado setup on Android, make sure you’ve downloaded and installed the OpenXR Runtime Broker app (published by The Khronos Group, Inc. on the Google Play Store) and that Monado is selected as your device’s active OpenXR runtime.
This work was partly funded by Collabora’s internal R&D program, as well as our 1% for the Planet commitment — a program that we dedicate a portion of Collabora’s engineering efforts toward socially impactful technology.
One of the first projects to benefit from the new Cardboard driver was the SOMAR Project, a Godot-powered open source XR experience developed in collaboration with SOMAR, a non-profit organization that focuses on protecting dolphins, whales, and marine life in the Algarve. Their mission is to raise awareness about the impact of human activities—like underwater noise pollution—on marine ecosystems. The SOMAR Project was designed as an educational and inclusive XR journey, allowing students to explore vivid underwater environments and learn about the negative impacts of underwater noise pollution on marine ecosystems.
While the SOMAR Project also runs on high-end XR headsets such as the Meta Quest, its educational mission made it only natural to extend support to low-cost, smartphone-based viewers. Thanks to Monado’s new Cardboard driver, entire classrooms can now experience SOMAR’s virtual ocean environments using affordable, easy-to-deploy Cardboard devices — making immersive learning accessible to many more students and institutions around the world.
The Android application, as well as prebuilt binaries for Monado and Khronos OpenXR Loader were released on itch.io:
Monado’s Google Cardboard driver exemplifies Collabora’s desire to make XR open, sustainable, and available to all. Whether through high-end headsets or simple cardboard viewers, we believe XR should be accessible — not exclusive.
We look forward to seeing what the community builds with this new capability, and we invite developers and researchers interested in mobile XR to explore, test, and extend this work.
To learn more or discuss, visit Monado's discord server.
31/10/2025
Collabora has advanced Monado's accessibility by making the OpenXR runtime supported by Google Cardboard and similar mobile VR viewers so…
27/10/2025
By resolving critical synchronization bugs in Zink’s Vulkan–OpenGL interop, Faith Ekstrand paved the way for Zink+NVK to become the default…
25/09/2025
Abandoned vendor-provided BSP roadblocks can be overcome when mainline Open Source projects like the Linux kernel are integrated directly.…
06/08/2025
This second post in the Tyr series dives deeper into GPU driver internals by using the Vulkan-based VkCube application to explain how User…
22/07/2025
Getting into kernel development can be daunting. There are layers upon layers of knowledge to master, but no clear roadmap, especially when…
15/07/2025
This past May, we met with the community at the GStreamer Spring Hackfest in Nice, France, and were able to make great strides, including…
Comments (0)
Add a Comment