Introduction: Livingroom VR Ready Gaming With Linux
Introduction
I wanted to make a gaming rig for VR and social gaming in my living room. I'm a fan of Linux and the open source community so the question was "can Linux Do VR?", Linux is very capable gaming OS - in no small part thanks to WineHQ, Steam and their work on Proton. I have been using Linux for gaming for years now and games like Half-Life, Kerbal Space Program, Alien Isolation to name a few work really well. I hope this guide will show you how to get a kick-*** VR setup and why you'd want to.
Why VR?
VR offers a new way to interact with the world, removing some of the barriers between you and the world your entering, this can be a profound difference for people who are not comfortable or able to use the standard keyboard/mouse or controller interface. Modern VR allows you to use your body more naturally and as the Nintendo Wii Sports showed, a natural interface can make a game more accessible for everyone and change peoples viewpoint on "gaming".
VR isn't just for shoot-em-up games, it opens up a whole range of creative possibilities like Google's Tilt Paint or nvrmind allowing you to create 3D art in intuitive ways and explore real and and imaginary places from the comfort of your home.
Games made for VR can take a different approach to emersion, games like Beat Saber works so well because it is a simple concept and takes full advantage of the inputs that VR provides. A lot of games can be played sitting or standing, this has interesting posibilities for accessability. Slow paced games like Moss give you a new world to experience and projects like Google Earth VR lets you explore the earth.
I'd also like to mention Disrupt for his great VR experiment video.
VR isn't without problems, the main one being motion sickness. If you suffer from motion sickness it's worth trying out VR before investing, try looking for local VR experiences or demos near you and if you take the plunge, go slowly with simple static games from a sitting position.
Building a PC
VR has some unique demands on computing power, especially for intense games but also for scenic games such as a tip to the ISS, they need to maintain a smooth experience to prevent motion sickness. Building your own PC is a fun and rewarding challenge which can also save you money compared to buying a new PC.
Apart from a few compatibility issues you need to watch out for, its easier than you might think thanks to modern compatibility. If this is your first build, do some research, double check the compatibility and ask people on your favourite geeky site if your plan looks good. Modern PC components are so standardised the worst that might happen is that the system is unbalanced - it'll still work. PC Part Picker is a great site for narrowing down the huge number of available options and allows you to sanity checking your build.
Things to watch out for:
- Intel or AMD CPU - Motherboards only support one of the two and often only one series.
- Case size - Don't try to fight physics, it wins every time.
- Power usage - "whats that smell?" is not a good start to PC building.
- Budget - Be frugal and ignore the fan boys and their "you must have...".
Later on I'll walk though the PC that I created and why I chose the components I did.
Budget
I thought this point was worth diving into. Modern PC equipment is amazing, the newest models are impressive but they're really putting extra cherries on an already fully loaded sundae. It's easy to get caught up in the comparisons and reviews (10% more here, more RGB there) so keep your budget in mind. Often going for an older generation or slightly lower spec can save a lot of money and you probably won't notice the difference. Linus Tech Tips has a good breakdown of the myth of bottlenecks.
Expect to pay between £500 to £1000 to get a VR capable machine, my build cost a little more than I would have liked due to bad timing on ebay (dont bid to win, bid to get a good deal) - If your on a tight budget, have patence, hold out for bargins.
VR is a special case because it puts heavy load on both the CPU and GPU. There is much more data comming into the system, normal gaming has to deal with a mouse, keyboard and one screen. VR (typically) adds 2 controllers each with six-dimensional positioning (the position is 3D space + the orientation of the controller) and six-dimensional headset. It then has to render two images not one. Higher refresh rates compound the issue, so it pays to tailor your build to the VR system you plan to use.
Supplies
Step 1: Selecting Your Hardware
VR
At the time of writing there are four main contenders, assuming that your going down the PC-VR route, instead of games consoles. The are loads of reviews and comparisons, I suggest reading and watching as many as you can so you understand the pros and cons, remember opionions are like...noses - everyones got one. I've oversimplified the choices here and at the time of writing, both the Oculus headsets do not support linux:
- Oculus Rift S - PC only, good choice for fast paced games.
- Oculus Quest + link cable - Do-it-all, best value.
- Valve index - Best in class.
- HTC Vive Cosmos - Quality headset, poor controllers.
I choose the index for the overal quality, the groundbreaking controllers which can track indevidual fingers, but mainly for Half-Life Alyx which is included, the extra cost seemed worth it to me - Decide for you self if I'm mad or stupid.
To get the full 120Hz HD experience is going to take more than a entry level budget PC, but as before, temper your expectations, minimum requirements will still run and with careful planning you can always upgrade later.
PC
Spoiler alert - This is my final setup.
I already had some of these things to hand which brought down the cost, other parts were chosen because they were a good deal at the time. Some great deals can be found on places like eBay or clearances lines, don't be afraid to compromise a bit for a good deal.
Motherboard £140 You need to make sure that the board supports your CPU and graphics card. It should have a 16x PCI-e slot for the graphics card. USB3.1 is also a requirement of most VR devices. You will need some sort of network connectivity, ideally build-in Ethernet, some motherboards come with built in WiFi.
Case £50 If this is going to be on display it's worth spending a little extra on this - better cases should also have better airflow. The smaller you go the more careful you have to be with compatibility. mITX or mini-ATX cases are neat and can be unobtrusive. This mITX case is not the smallest but it has room for a full sized graphics card and normal ATX power supply (some use smaller SFF power supplies which can be hard to source).
Video Card £350 Most importantly, make sure that the card has the right connection for your VR headset, at least one each of HDMI and Display Port is a good start. Some cards can be very long, make sure it will fit in your case, the details for which should include a "GPU clearance"
CPU £165 You can't beat AMD for value for money and the Ryzen 5 3600 is good value for money if you want a new generation processor. The important thing to look for is good single core performance as games don't parallelise well. You can use PassMark to compare your options.
CPU Cooler £50 Modern Ryzens boost their clocks automatically as long as there is enough heat dissapation and as I plan on putting this in a cupboard this was money well spent. This cooler is also very quiet so my VR world wont come with a jet engine soundtrack. If you go for an after-market cooler, make sure your case has room for it (check for "CPU clearance") and that it won't interfere with the memory modules.
Power Supply £80 Anything over 500W will usually be enough power for most systems, a better unit will be able to maintain more stable voltages which will improve system stability. This is a "you get what you pay for" component.
Storage I already had a 256GB M.2 for the OS and a 1TB Sata SSD for games. This is overkill, M.2/NVME drives are amazing, but for gaming SSD's are great and spinning disks are fine. They only realy make a difference to load times.
Memory £70 With DDR memory you should always use pairs of modules. This fast 2x8GB memory was on offer, there's no point in spending extra on speeds which your processor cannot support. I wouldn't suggest going below 8GB.
Keyboard £25 A wireless keyboard makes setup a lot easier.
It's worth noting that some of the assumptions above change if your using the system for other things, a great gaming PC doesn't necessarily make a good video editor or development machine.
Image credit: ThisIsEngineering
Step 2: Building the Rig
The Play Area
You want to set aside a play area for your VR exterience, take a look at the area and imagine using it to put a dress on an angry cat - what would happen, what could you run into? If your going to be sitting, how far can you reach with the controllers?
There are a few things you can do to help keep your bearings while in VR. A small textured surface like a bath mat can subconsiously tell you if your still in your "play area".
A fan pointing towards your play area will keep you cool and give you a subconsious cue about your orientation in the room and help prevent dizzyness.
The PC
Once you've collected all your parts you can start assembling the PC. Ensure your properly grounded before touching any sensitive parts. Before installing the motherboard, check if the case will let you install the CPU, sometimes you might need to install the CPU and cooler onto the motherboard before putting it all in the case.
If your cooler doesn't come with pre-applied thermal paste, use just enough to cover the contact plate on the cpu.
Take your time to plan the route of the cables so that they do interfere with the air flow. Remember to attach the secondary 6/8 pin power cables for the motherboard and GPU. Once everything is connected, take a breath, double check and give it go before closing up the case, most modern motherboards have an LED or display to report any errors if it cant boot up.
Housing
I planned on putting the rig under the TV, this is less than ideal but my partner isn't keen on me taking over another room! I used a circular cutter to cut holes top and bottom of the space to allow air to come in from the bottom and out the top. In Testing this seems to work quite well, the system never goes over 60oC during idle. Under load this does go up and I will need to open the door on long gaming sessions.
Accessories
- Ceiling cable run - If your headset uses a cable, putting some hooks in the ceiling will keep the cables away from your feet. You can also use retractable coils to allow the cable to be pulled without ripping the hook from the ceiling.
- lens cover - You should never allow sunlight into the headset, the light will damage the sensitive displays.
- Microfibre cloths - To clean the lenses without damaging them.
- Headset stand - To keep it safe and show it off.
Step 3: Install the OS
BIOS Update
Step one is to make sure the BIOS is up to date, this is especially true if your using a newer Ryzen processor (3rd gen+) and your motherboard needs a bios update before it'll even boot - Some Asus boards can flash without a CPU. Format a flash drive with FAT32, copy the unzipped BIOS update to the drive - I found a 32Gb drive worked where a larger 128Gb drive wouldn't.
When booting the PC, press the DEL key when you see the spash screen to enter the BIOS setup. Once you find the option to "Flash BIOS" in the menus you should be able to select the new file from your flash drive.
Dual boot
If you plan to dual boot, its best to install windows first, then shrink the partition to make room for Linux. If you live in Linux like me there are ways of making a Windows 10 boot disk without windows.
Linux
For this setup I went with Manjaro as its a nice combination of cutting edge support for all that new hardware and ease of setup. There a lots of distributions of Linux, all have different qualities but at their heart they're a repository of applications, whether your on Ubuntu,Fedora or HML(don't use this one!), you can still install an application using the package manager, which will keep the system up to date automatically.
Download the image of your choice and copy the image to a flash drive.
You will need the propreitary drivers for your graphics card so when the image boots, make sure you select the "non-free drivers" option, some will install them by default, some will not... cough... ubuntu.
For the desktop environment I'm going with KDE which it great for showing off the flashy new GPU. There's no need to stick with the one, if you install some others you can choose which one you use each time you log in. I also like XFCE4 for lightweight remote desktops and I use Cinnamon for work as it's got good features to make life easier.
If your distrobution doesn't come with steam installed, install it with the package manager which you can find in the equivilent to the "start" menu. Login and you can start getting the basics for VR:
Backup your Brain
As time goes on, you'll solve lots of little problems, it pays to keep notes on the little things, you never know when you'll need them again and it's very irritating when you know you've fixed the problem before but can't remember it. Keep an old-school notebook or an online brain such as GitLab snippets or GitHub gists.
The snippets I've collected during this are available here.
Configuration
- Improve security with hardware RNG
- Setup a Firewall like the simple UFW or powerful Firewalld
- Enable "Steam Play" for all titles.
- Enable "Steam Remote play" to stream games to another PC or laptop.
Tuning
A note on Ryzen 3rd Gen CPUs and overclocking: There are been a lot of tests done which show that PB/PCO/Auto OC has little or no effect, even manual overclocking is arguably not worth the effort ("Booo!" says the overclockers). The other way to look at this is that AMD have done an amazing job with their latest CPUs. Give it good cooling and it will try it's hardest to give you the best performance.
These changes make very little difference, so don't worry about them if you don't feel comfortable messing with low level settings.
- Lower the swapiness by adding vm.swappiness=10 to /etc/sysctl.d/70-swappiness.conf
- As long as your aware of the risks and your not using this PC for critical things you can add mitigations=off and apparmor=0 to the kernel parameters to gain some performance improvements.
Arch linux has a good Tweaking guide.
Step 4: Train Like Your First Time on a Bike
It might be tempting to jump into that game you've been dying to try but take it slow. When you put on the headset you are tricking your mind into a literal alternate reality, it may not like it at first, you need to train your eyes and inner ear to adjust to the disconnect between what your seeing and hearing and your other senses.
When setting up the game, go for smooth graphics, high FPS over "ultra" graphics so that the illusion isn't interrupted by pauses or stuttering.
Start off with things like the Steam VR Lab, Google Earth, Tilt brush or Job simulator where you can stop and look around. A bonus of VR is the physical movement involved, you can build up more of a sweat than just moving a mouse, don't forget to take a break.
I hope you enjoyed this quick tour of VR, let me know if you'd like me to go into more detail on anything I've mentioned.
Innovate
Got an idea for a new VR experience - Make it! A lot of the tools you need are freely available. Platforms like Unity game engine already have all the building blocks for creating a virtual environment. Oculus also has it's own development guide. Blender is an excellent open source 3D tool with a large community.
Photo by Eugene Capon from Pexels