This is a custom headset driver for SteamVR that allows the MeganeX 8K and Dream Air to operate as native SteamVR headsets. It provides significant image customization to all native SteamVR headsets through the custom shader.

- Download the latest release from the releases page
- Extract the whole folder within the zip to a place you want it.
- Run
custom-headset-gui.exeinCustomHeadsetGUIto finish the installation and configure settings.
Manual Driver Installation
You do not need to do this if you installed the driver with the GUI.- Copy the
CustomHeadsetOpenVRfolder from inside the zip intoC:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers - Disable the MeganeXSuperlight driver in SteamVR
- Restart SteamVR
- Download the latest release from the releases page
- Extract the whole folder within the zip to a place you want it.
- Run
custom-headset-gui.exeinCustomHeadsetGUI - Go to the about page and install the new driver.
Run custom-headset-gui.exe to configure settings.
Almost all settings will be immediately applied when the file is saved without restarting SteamVR.
If you find this project helpful, consider supporting it through donations or using the affiliate links below:
If my project improved your VR experience, consider donating.
Patreon
Ko-fi
If my driver is a major factor in your decision of purchasing the Dream Air, use my affiliate link at no cost to you. You can use the affiliate links for other Pimax headsets to support me as well.
Pimax with $25 off
- Clone the repository wit
git clone https://github.com/sboys3/CustomHeadsetOpenVR.git - Navigate to the repository folder with
cd CustomHeadsetOpenVRin the terminal. - Pull the submodules with
git submodule update --init --recursivethengit pull --recurse-submodules - Open the solution in Visual Studio.
- Change the configuration to Release.
- Build the solution. It will create the driver folder in
outputand copy it to the SteamVR drivers folder.
To pull the latest changes, run git pull --recurse-submodules
- Follow the cloning steps above
cd CustomHeadsetOpenVR/CustomHeadsetOpenVRmkdir build && cd buildcmake .. -DCMAKE_BUILD_TYPE=Releasemake -j16rsync -a --delete CustomHeadsetOpenVR/ ~/.steam/steam/steamapps/common/SteamVR/drivers/CustomHeadsetOpenVR/
Enter %APPDATA%/CustomHeadset into the file browser top bar to get to the settings folder.
Edit the settings.json file based on the Config header file
Distortion profiles go in a folder named Distortion and they are referenced by their name.
The DRM related functionality on the Dream Air is not open source, but the released driver can be used with a compiled from source driver.
The onlyHandlePrivateFunctionality property allows you to run a compiled source driver alongside the closed-source driver. When set to true in the root of the config, it disables all functionality in the driver that contains private code except for the private code itself. This allows a compiled source driver to handle all the important parts of the driver. A driver without the closed source components is unaffected by the option.
To use this feature:
- Build the driver from source following the steps above
- Rename the released driver folder, the DLL, and the name in
driver.vrdrivermanifestto something else (e.g.,CustomHeadsetOpenVR_Private) - Set
onlyHandlePrivateFunctionality: truein the root of yoursettings.jsonconfig file - The closed-source driver will handle private functionality while your source-built driver handles everything else
- MeganeX and Dream Air
- Running as a native headset
- Ignore other headsets
- Code to generate the distortion mesh
- Darken the display when no motion is detected
⚠️ Be careful with high brightnesses to avoid burn in on the MeganeX. This driver does not automatically dim the headset in bright scenes which may permanently dim the panel if viewed for many hours.
- Support for non square outputs to light edges of the display
- A good default distortion profile
- A near perfect default distortion profile
- Multiple distortion profiles
- Hidden area mesh
- Custom Shader
- Support all native headsets (MeganeX, Dream Air, BSB 1&2, Index, Vive, etc)
- Replace SteamVR compositor shaders at runtime
- Configure contrast, chroma, and gamma
- Subpixel shifts for the MeganeX and Vive
- sRGB color correction for the MeganeX
- Remove mura correction or black clamp for any native headset
- Config
- Define the structure of the config file
- Create MeganeX section
- Read config file
- Hot reload when the config is changed
- Load custom distortion profiles
- Define the structure for the overrides section
- GUI
- Create a Tauri project
- Create a Angular project within it
- Configure MeganeX settings
- Edit distortion profiles my dragging points on a curve
- Create overrides for any headset
- Install the driver
- Change physical MeganeX settings
- Driver
- Linux build support
- Override any property of any SteamVR device based on the config
- Change device types
- Apply presets to devices ex: Vive tracker or generic headset
- Output json file with information about SteamVR and devices for configuration utilities to use.
This project is licensed under the GPLv2 license. See the LICENSE file for more details. I may relicense this project for to allow for use that GPLv2 does not allow for so be aware of that when you contribute
By committing to this repository you give me the right to relicense your code for others to use. If you want to make a significant contribution but do not want to comply with this, mark your code as such and let me know so I will be able to remove it if I need to.
Try to keep the coding style consistent with existing files. But other than keeping tabbing consistent, I will not enforce strict guidelines.
Thanks to everyone who has shown appreciation to me for this project. It has been an amazing experience having so many people thank me for my work. I really appreciate the kind words you all had for me and I have a special appreciation to those who went a step further and donated.
If you want your info displayed, send me a message on the platform you donated on. You can tell me where to get an icon, a name to display when hovered, and a link to wherever you want. You can provide any combination of the 3 and I will add it. Alternatively you can remain autonomous as a generic icon. I can always change it for you in the future, but information will stay in github history forever.










