Getting Immersed VR setup on Ubuntu

Documenting how to get Immersed VR working on Ubuntu Linux

code
roadwarrior
Author

Richard Decal

Published

February 1, 2024

In my quest to perfect my “road warrior” setup, I have been experimenting with coding in VR. I have been using the Immersed VR app on my Quest 3 headset to create a virtual workspace. Unfortunately, the official Immersed documentation is not very clear on how to get Immersed VR setup on Ubuntu. Here are the steps I took to get it working. I would like to credit this blog post by Alexandre Souza for pointing me in the right direction, my contribution is porting the steps to Ubuntu Linux.

Steps: * Follow the instructions on the Immersed VR website to install the Immersed VR app on your headset and on Linux (download page here). * Install the required dependencies:

sudo apt install v4l2loopback-dkms v4l2loopback-utils
sudo vim /etc/systemd/system/v4l2loopback.service

Here are the settings I used for the service file, based on the aforementioned blog post. The device is set to /dev/video9 to avoid conflicts with other devices.

[Unit]
Description=v4l2loopback

[Service]
ExecStart=/bin/modprobe v4l2loopback video_nr=9 card_label="ImmersedVR" exclusive_caps=1
ExecStop=/bin/rmmod v4l2loopback
Type=simple
RemainAfterExit=yes

[Install]
WantedBy=default.target
sudo systemctl enable v4l2loopback
sudo systemctl start v4l2loopback
# before:
# "CameraDevice": "/dev/video0"
# after:
"CameraDevice": "/dev/video9"
chmod +x Immersed-x86_64.AppImage
./Immersed-x86_64.AppImage

On my machine, the app will display a “Virtual camera device is not found at /dev/video0” error, even though we set the config file to use /dev/video9. I just click “OK” and the app correctly uses the /dev/video9 device.

Another tip is that you can create virtual monitors, even if you don’t have a physical monitor connected. This is natively supported by the Immersed app on Windows/Mac, but for Linux you need to use a tool like xrandr to create a virtual monitor. This blog post by Craig Wardman explains how to do it.