Hall of horrors: GearVR

The GearVR is a fantastic VR headset. It’s mobile, it’s got really good rotational tracking (in that I’ve never noticed it lag) and its screen blows away the DK2. So what’s this page for? Well, I bought SQRT(72)’s GearVR Innovator Edition for the S6 last Christmas, 2015, and did diddly-squat with it since then. Nevertheless, I’ve learned a few things about it which might prove useful to readers from the future like you.

Here I used the following:

  • Unity3D 5.3.4f1
  • Android SDK Tools 25.1.3
  • Android SDK Platform-Tools 23.1
  • GearVR Service 2.4.29
  • GearVR System 1.0.10
  • Android Marshmallow 6.0.1

Hopefully that covers everything.

In which they think they know better than to let you know what’s wrong

[insert app name here] has closed unexpectedly.

I harbor a disproportionate amount of hatred for people who do not explain what’s wrong in error messages. How difficult is it to tell you something you can Google at the very least? Anyway, to rectify this we have to do a couple of things.

One of the greatest invention of mankind is the read-print-eval loop. Having to build your project in Unity, putting the resulting .apk in your phone, putting your phone on your GearVR, then wearing it gets old pretty quick. So what we want is get out of paper-tape-land and remove the middleman. How do we do that?

  1. In your Android device, go to Settings -> Application Manager -> Gear VR Service -> Manage Storage.
  2. Tap on VR Service Version repeatedly until the Developer Mode option appears.
  3. Enable Developer Mode.

You ought to see your screen flicker. Why is this so? It seems the S6’s screen has a low-persistence mode and this option enables it amongst other things (including CPU/GPU throttling issues1). Nevertheless, you will find it wonderful that you can now deploy to your S6 directly from Unity! Just hit File -> Build & Run and (assuming you’ve got your settings down pat) it will update the app on your phone for you and launch it in stereo mode without the GearVR.

[insert adb stuff here]

In which you must sign all papers

In my short stint pushing things to the GearVR, this probably counts as the most common — and most annoying error — I have found.

Thread priority security exception. Make sure the APK is signed.

What this means is that you haven’t configured your “osig” properly. What is an “osig”, you ask?

Fig. 1: Nightmare fuel (though the background has improved).

An osig file is what you get when you put your phone’s serial number here. It’s something you have to put in your app so that you can use your GearVR with your phone. Now I don’t know what the hell Oculus was thinking when they designed this system but this osig business means you can’t show your own apps to your friends without ruffling through their phones first. Only they have the power to make your .apks run on any GearVR device. What’s up with that?


Definitions

DK2, Oculus Rift
the second Rift development kit from Oculus
GearVR
the first decent mobile VR headset by Samsung
Hall of horrors series
where I figure out others’ abominations (as charitably as I can wince)
Read-print-eval loop
an interactive I/O session with your favourite programming language
S6, Samsung Galaxy
Samsung’s flagship phone from 2015 March to 2016 February
Samsung
a South Korean tech chaebol — probably THE South Korean chaebol as of 2016-04-29
Stereo mode
the iconic fisheye splitscreen found in early recordings of VR
SQRT(72)
see A self-centered history of neo-VR

 


  1. See this post on Reddit.