SkillAgentSearch skills...

Relativty

An open source VR headset with SteamVR supports for $200

Install / Use

/learn @relativty/Relativty
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<h1 align="center"> <img width="400" alt="Relativty" src="ressources/img/title.png"> </h1> <h3 align="center"> Open-source VR headset with SteamVR support. </h3> <p align="center"> <strong> <a href="https://relativty.com">Website</a> • <a href="https://discord.gg/jARCsVb">Discord</a> </strong> </p>

I’m <a href="https://twitter.com/maxim_xyz?lang=en">Maxim xyz</a> and when my best friend Gabriel Combe and I were 15 years old we built our own VR headset because we couldn't afford to buy one.

5 years later : this headset became Relativty.

  • Fully Open-source - hardware, software, firmware.
  • Steam VR support.
  • Natively displays 2K resolution at 120FPS.
  • Compatible with Arduino.
  • Experimental Body-Tracking

This repo serves as a Build guide, to learn more about the headset see you at <a href="https://relativty.com">Relativty.com</a>

Made for Hackers

Relativty is NOT A CONSUMER PRODUCT. We made Relativty in my bedroom with a soldering iron and a 3D printer and we expect you to do the same: build it yourself.

Relativty at its basics is a 3 Degrees of Freedom (3-DoF) VR headset with no built-in controller support, designed to work with SteamVR. This may limit its practical usability for games that demand knuckle-style VR controllers. If you are looking for a more full-featured DIY VR project 6-Dof tracking and controller support, we recommend you check out <a href="https://github.com/HadesVR/HadesVR">HadesVR</a>.

Whether or not you are building either Relativty or HadesVR, or if you just want to join our community and hang out, we invite you to <a href="https://discord.gg/F8GNKjy6RF">Relativty's Guild on Discord</a>.

It is a place for the DIY/Open-Source VR community to learn, grow, share knowledge, and ask for help.

Start Building Relativty

<p align="center"> <img src="ressources/img/open.jpg"> </p>

Building The Hardware

1. CURRENT RECOMMENDED BUILD - As of May 2023

1.1 Introduction

This is an updated build guide to help people who recently discovered Relativty. It aims to explain how to build the minimum functional product, which can be further improved upon and modified to the individual's liking. The original build guide can still be found further below.

        Following this guide to build a Relativty headset assumes basic understanding of electronics and programming Arduino boards.
        A VR headset is a complex system and can be difficult to figure out what is not working if you get stuck with the build.
        If you encounter any issues, join our Discord and ask for help, we are happy to assist.

1.2 ELECTRONICS

The following electronic components are required:

  • ATmega32U4 Microcontroller (MCU) with USB HID support, such as an <a href="https://www.amazon.co.uk/diymore-Atmega32U4-Development-Microcontroller-Header/dp/B0BKGSVX2X">Arduino Pro Micro</a>
  • Inertial Measurement Unit (IMU) that is supported by the <a href="https://github.com/LiquidCGS/FastIMU">FastIMU Library</a>
  • A small, high resolution and high refresh rate PC display + driver board. <a href="https://github.com/HadesVR/HadesVR/blob/main/docs/Headset.md#displays">This segment of the HadesVR documentation presents possible good options you can choose from</a>. It is important to note that these displays connect to a DRIVER BOARD, which then connects to your computer. ALWAYS purchase the driver board and display(s) in the same bundle if you can to ensure they are compatible with each other. If you have further questions about displays, join us at <a href="https://discord.gg/F8GNKjy6RF">Relativty's Guild on Discord</a>.
NOTES on VR DISPLAYS:
- The display does not connect to the Microcontroller, it only connects to the Computer running your VR Apps.
- Technically, any PC display/monitor can be configured as the display used by Relativty. Therefore, you can simply test your build on your PC monitor
first to make sure it works, before you decide to spend a significant amount of money on lenses, display(s) and other parts.
- High performance, small form factor displays are expensive, and often very delicate. Handle them with care! :)

1.2.1 Wiring the IMU and MCU

The IMU needs to be connected to the MCU for power and communication. The MCU connects to your computer via USB to send the IMU readings to SteamVR.

In case of an Arduino Pro Micro, you need to connect the following pins:

Pro Micro       IMU
VCC         ->  VCC  
GND         ->  GND  
SDA(pin 2)  ->  SDA  
SCL(pin 3)  ->  SCL  

If you use a different MCU, the SDA and SCL pins might be mapped to different pin numbers.

Also, make sure that the VCC of your MCU is compatible with the rated operating voltage of your IMU.

Supplying incorrect voltage to electronic components may cause damage to them.

The MCU itself simply connects to your computer via the USB port.

1.2.2 Connecting the display

As mentioned previously, any display that is compatible with a personal computer should be able to function as your VR display.

In case you are using the recommended one or a similar component that is powered via micro-USB or other USB standard, it is possible that you will encounter situations where the board does not power up. This could be either because the micro-USB cable you are using is too long (so the board cannot power up because the voltage dropped too much), or the board is unable to turn on because the USB port it connects to on the computer side is simply unable to supply enough power. In this case, you might need to try different ports on your computer or a powered USB hub.

1.3 MECHANICAL BUILD

The following parts are required for the Mechanical Build:

  • Housing - .STL files for 3D-printable model provided in Relativty_Mechanical_build folder.
  • Lenses - for building the 3D-printable headset, Lenses with 40mm diameter/50mm focal length required. You can often find these on Aliexpress or similar.
  • Strap and Facial Interface - e.g. replacement strap + foam for HTC Vive. You can often find these on Aliexpress or similar.
<p align="center"> <img src="ressources/img/front.jpg"> </p>

If you do not have access to 3D-printing, it is also possible (and MUCH simpler) to just use an Android VR Phone case, and modify it to fit your screen and so that you can attach your IMU and MCU to it.

The advantage of this approach is that you get everything in one package, often including IPD adjustment.

<p align="center"> <img src="ressources/img/android-vr.jpg"> </p>

1.4 SOFTWARE SETUP

1.4.1 Introduction

Relativty depends on 2 main software components:

  • the Arduino firmware
  • the SteamVR driver

As the system is designed to work with SteamVR, you need to have Steam installed and SteamVR downloaded on your computer.

1.4.2 Programming your MCU

As previously mentioned, we recommend you use an Arduino Pro Micro and an IMU supported by the FastIMU Library. FastIMU is an awesome package that supports many commonly used IMUs and comes with a pre-written Arduino sketch that works with Relativty.

First, you will need to install the Arduino IDE and connect your MCU to your computer via the USB connector.

Once you have it connected and verified your Arduino IDE can work with your MCU, download FastIMU from the library manager.

<p align="center"> <img src="ressources/img/FastIMU-lib.jpg"> </p>

Wire up your IMU as recommended in Section 1.2.1.

Find the Examples/Fastimu/Calibrated_relativty sketch in your Arduino IDE:

<p align="center"> <img src="ressources/img/FastIMU-sketch.jpg"> </p>

And finally, Upload it to your MCU.

FastIMU also includes a built-in calibration tool that can store the calibration data on the IMUs EEPROM.

Calibrating the IMU may help with sensor drift that you can experience over time while using Relativty.

After uploading Calibrated_relativty sketch to the IMU, you can open the Arduino Serial Monitor to initiate a calibration sequence:

<p align="center"> <img src="ressources/img/FastIMU-calib.jpg"> </p>
  NOTE: you only have to do this once, but make sure to follow the instructions given to you in the serial monitor.

1.4.3 Installing The SteamVR Driver

To install the Relativty SteamVR driver:

  • download the <a href="https://github.com/relativty/Relativty/archive/refs/heads/master.zip">master repository</a>
  • inside Relativty-master find the Relativty_Driver\Relativty folder and copy it to your SteamVR installation's drivers directory.
<p align="center"> <img src="ressources/img/driver-copy.jpg"> </p>

1.4.4 Configuring The SteamVR Driver

Once you copied the driver files, it is time to configure the driver to work with your setup and computer.

Inside drivers\Relativty\resources\settings, there should be a file called default.vrsettings.

This is the configuration file for the driver.

There are a few things that you need to change.

Configuring the driver to talk to the MCU

ASSUMING you use an Arduino Pro Micro and the FastIMU library:

In the Relativty_hmd segment find these values:

  • hmdPid
  • hmdVid
  • hmdIMUdmpPackets

and change the values like so:

      "hmdPid" : 32823,
      "hmdVid": 9025,
      "hmdIMUdmpPackets":  false,

If you are using a different MCU, you need to figure out the USB PID and VID values.

Easiest way is to connect it to your computer via USB and check in Arduino IDE.

In the menu bar, select Tools/Get Board Info:

<p align="center"> <img src="ressources/img/board-info.jpg"> </p>

Take the PID and VID values and convert them to decimal with a <a href="https://www.rapidtables.com/convert/number/hex-to-decimal.html">hex converter</a>.

The converted values then go into the hmdPid and hmdVid values in default.vrsettings.

Configuring the Display Settings

Now let's look at c

View on GitHub
GitHub Stars7.2k
CategoryCustomer
Updated14h ago
Forks375

Languages

C++

Security Score

100/100

Audited on Mar 28, 2026

No findings