Sunday, October 16, 2016

Virtual Reality Experiences - The Arrival and Setup

I finally did it! I bought myself a HTC Vive! On the 4th of August 2016, I became the proud owner of my very own virtual reality kit...

I was so excited when it arrived during the middle of the day, which was problematic because I still had work to do. However, I soldiered on and once the end of the day rolled around I quickly opened the box... First thing that hit me was the odour; that wonderful new consumer electronics smell, but this was different somehow. Almost like I was smelling the future!

I have to apologise for not providing any photos of the un-boxing process; I was pretty damn excited about the new arrival and I didn't want to waste any time getting the the thing set up! As it turns out, I really needed it... But I'll get onto that in a moment, first here's what's in the box:

  • The head-mounted display (HMD).
  • A pair of controllers, complete with USB cables and chargers.
  • Two base-stations/lighthouses, with wall-mounts, power supplies and a link cable.
  • Link box and a power supply.
  • HDMI and USB cables.
  • In-ear headphones.
  • Two cloths for lens cleaning.

I may have missed something, but I think that's the majority of it! Now, onto the details of getting the Vive working!

Initial Setup

So, essentially, the Vive is pretty easy to set up:

  1. Set up base stations.
  2. Connect the link box to your PC.
  3. Connect the HMD to the link box./li>
  4. Run the room setup routine.

Because I wasn't sure how the lighthouses would work in my office, I came up with a novel technique for testing their placement: I carefully positioned one on top of the bookcases, the other balanced on a stack of boxes on top of my PC... I'm not usually as precarious as this, and I was extremely paranoid about knocking the base stations over, but I wanted to be sure the whole system worked before I went ahead and drilled holes in the wall!

The next step was to connect the link box to my PC. Fortunately for me, my 970 has just enough ports for me to connect the HDMI cable; the two DVI ports and single DisplayPort are each connected to a monitor already. With the display connected, I plugged in the USB cable, powered up the box and connected the HMD and watched all the various drivers install.

Error 108

So, at this point, I'm practically sick with excitement. I fire up SteamVR to set up my play space and...

Error 108: Headset not found

Huh. No matter, I thought, I'll just try to fire up SteamVR again. Error 108. Shit. This wasn't good. So, I started Googling around and I found out that error 108 could be related to driver problems or worse, a DOA headset. However, I was fairly certain I didn't have a broken HMD as the PC had recognised the new device; all the drivers installed when I first connected it, and I could also see an "HTC Vive" entry in my device list:

So, after some further research, I found a few tips that might help:

  • Rebooting the headset.
  • Completely disconnecting everything and reconnecting.
  • Trying another USB port.
  • Removing all the USB drivers related to the Vive and starting the whole installation process again.

I tried all of the above suggestions, none of which worked, but the troubleshooting process introduced me to a sweet little application called USBDeview. This allowed me to see was all the USB devices that had ever been connected to my PC and I used this application to forcibly remove all the USB drivers that had been installed recently.

A quick aside: have you ever noticed how Windows will see a new device each time you connect it to a different USB port? Over the years, I've ended up with a Razer Megalodon, Razer Megalodon-2, Razer Megalodon-3, Razer Megalodon-4 and even a Razer-Megalodon-5 listed as my audio device... Using USBDeview, I was able to see all the instances of this device and remove them all; this was a completely unnecessary step in fixing my Vive, but it allowed me to fix this particular bugbear of mine!

After several hours of tearing my hair out and it drawing late in the evening, I was ready to throw in the towel and (shudder), raise a support ticket, until I found one last suggestion... Executing Steam with the "Run as administrator" option. Now, I had tried running Steam in my admin account, as opposed to using my regular "limited" account, but I hadn't tried this. Sure enough, when I used this option and launched SteamVR, my headset was detected! I can't tell you how elated I was to see the SteamVR application finish loading and show all the connected devices:


With the Vive finally working I quickly got to setting up my space. There are two options here:

  • Room-Scale - this is the ideal option. You have the ability to literally walk about in the play space and certain titles require it (e.g. Job Simulator and Fantastic Contraption). In order for this to work, you need a minimum of 1.5m x 2m of space available.
  • Standing Only - if you have less than the minimum space, you can configure the Vive in this mode. Some titles will work fine with this setup (e.g. The Lab), especially if they're seated experiences (e.g. Elite: Dangerous).

I thought I'd be able to get away with a room-scale setup in our office, but it turned out I was wrong... It was standing room only for me, which was frustrating because two of the games I'd received as part of the Vive bundle required a room-scale setup; Fantastic Contraption and Job Simulator. However, despite the disappointment, I kicked off the tutorial to get myself acquainted with the system.

I had heard how accurately the Vive's controllers were tracked, but I almost couldn't believe how easily I was able to pick up the pair of them as they hung suspended in the air of the Aperture Science testing chamber (they were on the office desk)! After being introduced to the system by a helpful Core I spent a good few minutes messing with the different mechanics available to me. To be honest, I was blown away by even this "simple" demonstration. The sense of scale in the testing chamber was amazing, and I found myself giggling like a school-child at my ability to inflate different colour balloons, bat them away and zap them with a laser! I had to share the experience with my wife immediately, and she too was soon enjoying herself by creating colourful balloons and sending them drifting away from herself.

The thing we both agreed on was how impressive the sense of scale was "inside" the Vive... After both of us took the HMD off, we experienced a powerful feeling of disorientation; similar to the sensation of waking from a particularly vivid dream. What I've found interesting, is that over the past month or so since I've been using the Vive, I think this sensation has lessened. After particularly long sessions, there's a slight feeling of detachment, but I think my brain has become more used to being transported "between worlds". After the successful test run with the tutorial software, I fired up Valve's The Lab and tried out a couple of the activities available there; the archery scenario was particularly fun! However, by this time, it had gotten very late, so I packed up for the evening, with a plan to return to the world of VR as soon as possible!

Friday, September 16, 2016

Virtual Reality Experiences - PC Prep

When the consumer versions of both the Oculus Rift and HTC Vive were announced, I was pleasantly surprised to find they had similar minimum requirements:

So, it seemed as though I'd be set if I decided to splash out on a head mounted display (HMD)... Until Frontier Studios made a rather disconcerting announcement regarding their own requirements for playing Elite Dangerous in VR. The minimum specs they described were:

Oof, an i7 and a 980?!? I wonder if there's any leeway there?

"We are passionate about VR and Elite Dangerous is leading the way in cutting edge VR software development. This is what we consider to be a minimum spec to have a good experience on forthcoming consumer VR headsets."

OK, well maybe not.

This placed me in a bit of a dilemma: I really wanted to be able to play Elite in VR, but I wouldn't be able to afford to upgrade my GPU as well as buying a VR kit. After a brief period of personal crisis, I realised I would be able to squeeze some more performance out of my current system by attempting to overclock it. I never managed to get around to this when I originally built my main rig, Icarus, because of perceived thermal issues (something I have since resolved, and the potential subject of another blog post).

Overclocking and Benchmarking

I won't go into detail of my overclocking adventures, but suffice to say I spent a lot of time attempting trying to get my CPU to 4.3Ghz, but I couldn't quite achieve that, so I ended up with a 4.2Ghz overclock that seems stable. That's still a decent jump up from the stock 3.8GHz of the 4760K. The GPU was a tad easier; I managed to get the GPU clock of my MSI GTX 970 Gaming 4G from the stock 1253MHz boost clock to 1504MHz without too much trouble, while the memory clock I managed to get to 3.5GHz.

I actually think my 970 could clock much higher; the temperature of the GPU was still within acceptable limits (the maximum it reached during load tests was 75°C), but I appeared to be hitting voltage and power limits. This was despite me already having set the over-voltage as high as I can in MSI Afterburner. Check out this screen cap of the Afterburner profiling utility:

If you look at the power, volt and OV max limits, you can see them flapping between 0 and 1. The power limit is reached when the TDP of the card is hit and the GPU has to throttle, while the voltage and OV max limits are for when the voltage limit is reached. Now, I can't increase the voltage limit any further with Afterburner, nor is it possible to tweak the power limit through utilities like this. Instead, I'll need to consider the use of vBIOS modding... Something for the future maybe?

So, I'd achieved a stable overclock for both my CPU and graphics card, but what would I use to test how much performance I'd rung out of my hardware. In the past, I've used a combination of synthetic and real world tests to benchmark, but being in a bit of a hurry, I decided to keep it simple this time. I decided to use Unigine Valley, which is successor to the Unigine Heaven benchmark, but I also just become aware of a utility that Valve had released that I thought would be perfect to use as well: the SteamVR Performance Test. This runs a small section of Valve's own VR title, The Lab, and provides a score out of 11, based on how well your system can render the VR content at 90 frames-per-second (the current optimum frame-rate for consuming VR). It's also able to provide feedback based on the results, suggesting possible upgrades to your system.

As usual, I ran each benchmark 5 times at stock and again when the system was overclocked. Then I took the median of each set of results and used that to compare the before and after configurations.

Performance Comparison

So, as you can see from the below graphs, I managed to get an increase in performance of at least 10% in the two tests, which isn't bad for a few hours work. I'd love to see what I could achieve with a vBIOS mod increasing the power and voltage limits.

The most encouraging factor here is that even at stock settings, my system hardly had any frames rendered at less than the optimum 90fps, and once overclocked it never missed this target at all. However, the real question was how this would translate to VR performance in Elite: Dangerous. Something I couldn't really achieve without a VR headset... But that's another story!

Saturday, September 10, 2016

The Blog is Back!

I am resurrecting this blog after an absence of a couple of years! Back when I founded my own company, AzTek Native Ltd., I migrated all the content from here over to the new blog. Since then, I had written a few consumer-tech related posts on the company blog, but mostly I had been focusing on DevOps, infrastructure automation, etc. A few months back I realised that I was diluting the company message, but I still wanted to be able to write about the stuff I enjoy tinkering with in my spare time, hence the decision to bring this site back online. Even with the occasional consumer-related posts being made, I still have some updates that I probably should mention here. I may get around to writing individual posts for each of them, but for now, I'll just list 'em off:
  • I bought an MSI Geforce GTX 970 Gaming 4GB to replace my Sapphire Radeon 6950.

  • I managed to finally overclock my i5-4670K after isolating the heat dissipation issue.

  • My wife and I had our disused garage converted into a new home office, where we can both work and play side-by-side.

  • I bought myself an HTC Vive...

Oh, and there's one other, pretty important thing... My wife and I are expecting (hence the new office construction)!!

Sunday, July 12, 2015

Noise Pollution: Replacing Fans on a Sapphire Radeon HD 6950 2GB

A few years back, I bought a Sapphire Radeon HD 6950 2GB for my main gaming PC, which I've since replaced with an MSI GTX 970 Gaming 4GB card. However, towards the end of it's service, one or both of the fans on the card started to make a lot of noise; especially when they spun at faster speeds needed to keep the thing cool while I played games! I've wanted to put the card back into service in my wife's PC, but not before I'd done something about that racket, so I found some compatible fans on Ebay and went about replacing them. Here's my check list of items I used, in case you fancy giving this a go yourself
My trusty Sapphire Radeon HD 6950

Four screws holding the heat sink in place.

Heat sink removed

Removing the plastic shroud meant unscrewing these little fellas

Bleaurgh... Dust build up in the heat sink

The plastic shroud and noisy fan(s)

Shroud with fans removed

Replacement fans

New fans fitted to the shroud

GPU covered in thermal paste - this needs to go!

All clean - this was so reflective, taking a photo was almost impossible!

"Job's a good-un", as they say...

The procedure took me just under two hours to complete and so far seems to have been a complete success; the card has returned to normal noise levels when under load. Something interesting that I noticed when I had the heat sink off is that it doesn't appear to make direct contact with the video memory chips on the board, but the clearance between the two doesn't facilitate the installation of after-market heat sinks. This is a bit disappointing as video memory can get quite hot as well as the GPU itself!

Wednesday, June 10, 2015

Head Tracking with FaceTrackNoIR

I've been aware of head tracking solutions since I started playing Arma 2; the game (and it's sequel, Arma 3) has the ability to "freelook", meaning you can continue to walk or point your weapon in a certain direction, while you scan your surrounding environment. This is extremely useful from a tactical standpoint, but it's also particularly helpful when piloting vehicles (especially helicopters). Probably the most well-known commercial solution is TrackIR; this kit comes with everything you need to start using head tracking in games that support it, but it's a little on the expensive side (around £175). Despite some serious consideration, I never actually bought the kit myself; I didn't think it was worth it considering the relatively small number of games I play that would benefit from it, especially when consumer versions of both the Oculus Rift and HTC Vive are not far off. So I was extremely excited when I happened across a post discussing head tracking on the Elite: Dangerous subreddit that mentioned a free alternative: FaceTrackNoIR. As it's name suggests, this little bit of software can use a webcam attached to your machine to track your actual face; when you hit "start", it identifies the basic shape of your face, then translates your movements into the desired protocol for the game to understand.
Tracking my FACE!

The application has quite a few configuration options and it took me a fair amount of time tinkering with them to achieve the desired results, but to say I was impressed is an understatement: being able to simply move my head and look down at the spot where I was trying to land my heli was not only super cool, but useful too! Once I started using it, I didn't want to stop, however it does have a couple of drawbacks:
  • It's sensitive to poor lighting - I actually found if it was particularly bright outside, the software would often lose or simply not be able to recognise my face.
  • The CPU usage is fairly high - it seemed to fluctuate between roughly 5-10% when in use; that's a fair amount of precious CPU cycles that could be put to use by a game engine (Arma 3 being particularly CPU hungry)!
After having a play around with the different settings in the application and reading the FaceTrackNoIR wiki, I discovered that there are a few different tracking sources available, one of which works in a similar fashion to TrackIR. This helps to improve accuracy and/or reduce the CPU load, but unfortunately is still susceptible to poor lighting and also requires an IR clip providing three points to track. However, on the same Reddit post I mentioned earlier, somebody commented that they had bought a "relatively cheap" IR clip to use with this particular mode of operation: the DelanClip. Given the low cost, I thought I'd give it a go myself. The kit I bought is the most basic model and comes with a USB powered IR clip, two cable ties and a couple of sections of coloured film that can be used to create a light filter for your webcam:
Attached DelanClip

Webcam with filters attached.

After I'd finished setting up, I downloaded the latest version of the PointTracker plugin (overwriting the version that ships with FaceTrackNoIR), tweaked my config and fired it up. I found that I only really had to tweak the curves that define the translation between your actual head and your in-game character to my liking (here's my config file if you're interested) and make sure there were no direct light sources in the webcam's field of view.
3x IR point tracking

I've definitely had more luck using the PointTrack plugin than the FaceAPI; there has been much fewer incidents of the software "losing" me. If there's anybody reading this wondering just how beneficial free-look in games can be, let me just show off a couple of Elite: Dangerous screen caps I took while using FaceTrackNoIR:
Checking my flight path is clear before leaving the landing pad.

Tracking an enemy ship that would have otherwise flown out of my line of sight.

Of course, these actions could be achieve using regular input (mouse, keyboard or even a hat-switch on a joystick), but I honestly feel that head tracking provides a more natural and (sigh) immersive experience. The only thing that will surpass this (in my opinion) will be a full VR headset, which I'll definitely be wanting to get my hands on once consumer devices are available!

Wednesday, September 24, 2014

Nvidia Game24

I was very disappointed to not be able to attend the Game24 event in London last week; an unfortunate combination of poor connectivity and memory on my part! However, I was determined to take part in the 24 hour celebration of PC gaming (oh, and the launch of a couple of little products by Nvidia), so my wife and I set up a mini-LAN party in our lounge:

The Two Towers: Icarus (white) and Daedalus (blue).

I watched a fair bit of the Nvidia Twitch streams; it was nice to see such a wide range of topics discussed and different interviews. However, we mostly just played a lot of Guild Wars 2!

Cleanin' Out My Closet: MacBook Pro SSD Upgrade and Clean Up

Despite my dislike for all things Apple, I do actually own a MacBook Pro 6,2 (Mid 2010) that I've been using as a work machine for the last 4 years. This system has helped me understand a great deal about multibooting operating systems, GPT vs. MBR and (U)EFI booting, so it's not all bad! For a while now, the system has been showing it's age, with the mechanical hard disk the primary bottleneck. It's also been in desperate need of both a physical clean out of all the dust that's gradually built up over time and a re-installation of the three operating systems I have on the machine. I finally made the decision to actually try and carry out this much needed maintenance after the recent release of Corsair's MX100 SSD:

It's not the fastest SATA SSD you can buy currently, but it certainly has the lowest price per GB (at the time of writing): I ended up buying the 512GB model from Amazon, costing just under £150, to replace the HDD in my Mac. To facilitate the transfer of my data back onto my laptop, I picked up a cheap USB 3.0 HDD caddy as well. As I was going to have to open the system up, I decided to not only clean out the dust from the system, but to completely strip the laptop down and replace the thermal paste under the heat sink. I already have a couple of tubes of Arctic Silver 5 thermal paste, so I simply added some ArctiClean and some compressed air to my order. Later, after commencing the disassembly of the system, I was unable to find my Torx screwdrivers necessary to complete the process, so I ended up buying a replacement set:

I have replaced many storage devices in Apple laptops over the past few years, so I was comfortable with the SSD upgrade, however, the cleanout and thermal paste replacement seemed like it would be a far more complex task. Thankfully, iFixIt have some excellent guides on the maintenance of Apple products and I found a specific guide for removing the heat sink assembly; it's worth noting that iFixIt have flagged this process as "difficult", confirming my initial fears! Still, I was determined to take on the challenge, as I'll demonstrate with pictures I took throughout the process:
Removing the bottom of the laptop's chassis; this step is necessary for pretty much all the hardware maintenance you'll need to perform on this particular model.


Double eww.

WTF!?! After removing the heat sink, I was greeted with this sight: this seems to be far too much thermal paste.

The CPU and GPU ready for fresh thermal paste. I stopped short of scraping the remnants from around the chip edges as I was afraid I'd break something - I'm used to chips with integrated heat spreaders!

After putting the system back together,  I made a small prayer and offering to the Machine Spirit within and powered it on: success! It booted without issue and I was pleased to find that during the arduous process of installing/updating the three operating system, it not only performed a lot better (thanks to the SSD), but it was a lot quieter. However, since I've been working with the machine for a few days, I've noticed that the fans still spin up fairly regularly while I'm working in Linux; but there seems to be rather high CPU utilisation, even after switching to the proprietary Nvidia driver. Something for me to investigate further; at least I know it's able to actually dissipate the heat after I've cleaned out the heat sink!