Portable Remote Desktop with GearVR

I love coding and traveling. Naturally, I wanted to explore how to integrate code deeper into my travel experience, be it in city or around the world.

Thanks to the recent advancements on the GearVR front, this is now possible with a bit of nerdery.


Assembly Goods




Tunes (for inspirado):

Laptop Setup

  1. Use the USB Wifi adapter to host a Wifi Hotspot with Virtual DNS

    We want to host a dedicated Wifi connection to establish a channel of communication between the GearVR and laptop.

    This will assure low/consistent latency when streaming the desktop Environment into the GearVR with VNC the protocol.

    Using the create_ap tool, create a HotSpot with internet sharing with cascading Wifi interfaces:

     	sudo create_ap wlp0s20u1 wlp2s0b1 "vr_wifi_hotspot" "my_password" &

    This will allow the laptop to maintain a dedicated native connection to standard Wifi networks and the connection will be shared with our new subnetwork.

    Additionally, it allows the subnetwork to work in isolation, so we can still jam offline (see goals)

    Run ifconfig to get the IP associated with your laptop on the new software subnetwork:

     	wlp0s20u1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
     	       inet  netmask  broadcast
     	       inet6 fe80::76da:38ff:fe59:d034  prefixlen 64  scopeid 0x20<link>
     	       ether 74:da:38:59:d0:34  txqueuelen 1000  (Ethernet)
     	       RX packets 0  bytes 0 (0.0 B)
     	       RX errors 0  dropped 0  overruns 0  frame 0
     	       TX packets 33  bytes 6962 (6.7 KiB)
     	       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
     	wlp2s0b1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
     	       inet  netmask  broadcast
     	       inet6 fe80::9694:26ff:fe04:de6e  prefixlen 64  scopeid 0x20<link>
     	       ether 94:94:26:04:de:6e  txqueuelen 1000  (Ethernet)
     	       RX packets 57433  bytes 55012835 (52.4 MiB)
     	       RX errors 0  dropped 0  overruns 0  frame 0
     	       TX packets 52602  bytes 9910754 (9.4 MiB)
     	     TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  2. Enable VNC streaming from laptop display

    Broadcast VNC on the primary X display for consumption on subnet by the GearVR

     	x0vncserver -display :0 -passwordfile ~/.vnc/passwd

    Recommended to provide a VNC password but this could be argued as unnecessary if you protect the AP HotSpot well.

  3. Pair Bluetooth Devices

    For sure, you will want to pair a bluetooth keyboard since VR Keyboard layouts stink.

    The bluetoothCtl utility works well for this in Arch; use what makes sense for this.

    Optionally pair a bluetooth mouse, but I encourage you to use the directive-focus pointer provided in VNC Remote Desktop Client that works well with GearVR’s headset touch sensor.

  4. Disable Laptop Lid Shut Suspend

    After we have our desktop broadcasting over a local HotSpot, we want to tuck the laptop out-of-site and keep it rolling.

    This can be achieved by altering the login.d settings in Arch. Just check your OS power management settings.

    Additionally, I always set an idle time to avoid endless laptop uptime after ceasing GearVR engagement.

     	# /etc/systemd/logind
  5. Hide laptop in thin nerd-bag

    Wifi range is means you can drop your laptop in a bag and tuck under a seat.

    I have even had the actual laptop in the trunk of an uber and still had really wonderfully low VNC latency.

    Warning: increased latency if using VR in/near nuclear reactors

    Recommended fashionable approach is to purchase a Built NY Laptop Vest and put on a nice JCrew Flannel (noone expects lumber jacks to have tech)



Phone Setup

  1. Disable the GearVR Application Service

    GearVR has a default sevice running that allows activation/suspend of the device based on the proximity sensor in the visor.

    Install Samsung Package Disabler Pro and disable service Gear VR Service (com.samsung.android.hmt.vrsvc)

    GearVR Service Disable

    This will allow you to run the stereoscopic apps (Cardboard included) without the GearVR OS kickin’

  2. Connect to the Virtual HotSpot (AP) hosted from laptop

    Use the standard Wifi interface on the Galaxy to connect to your laptop hosted Virtual HotSpot.

    This will assign a software managed subnet address that will be in the same range as your inner-network laptop address.

    From this connection, we have a dedicated safe channel with consistent through-put between the GearVR and laptop.

    Virtual HotSpot

  3. Setup the VNC client

    Install the VNC Remote Desktop Client and configure the folowing in settings:

    • Orientation Provider=Google Cardboard
    • Inter-lens distance=60mm
    • Screen to lens distance=40mm
    • Vertical distance to lense center=30mm

    VNC Setup

  4. Enable video pass-through

    I recommend enabling Camera preview so you can feed your ego by watching the crowd respond to your VR headset’s glean.

    • Camera Preview=On
    • Select size of the Camera preview=100%

    VNC Setup

  5. Opt for VR managed cursor

    If you decided to pair your own mouse, skip this.

    Otherwise, VNC Viewer adheres to the common UX of directed-focus selection. That is, you look at something you want to engage with and use the tap sensor to select.

    • Enable local cursor=On

    The Caveats here are lack of Drag-selection and right-click. Both possible with keyboard configurations in X.

  6. Connect to Laptop VNC Server

    Add the laptop VNC server into the VNC Viewer app by using the virtual HotSpot Subnet address to the laptop. Remember, we don’t want this communication to go over external routers since we can’t assure consistent latency.

    • Viewer Mode=Off

    You can optionally provide the VNC password during this setup.

    VNC Setup
    VNC Setup


Screenshot on GearVR

This effectively creates a low-latency, 100% portable Virtual Desktop that can accelerate to public Wifi networks as you travel.

Using a keyboard driven desktop manager (i3) you can easily earn elite hipster status while slamming heavy work tasks (recompiling Clang for LLVM )

IMO, this is even better than a tethered Rift DK2 experience because it is wireless.