Streaming from desktop with NVIDIA GameStream to iOS and macOS



10 Oct 2016

I recently discovered an alternative to remote control my Windows 7/10 desktop PC, instead of using Microsoft Remote Desktop. This method requires a computer with a modern NVIDIA graphics card with GameStream and works with iOS and macOS using a client called Moonlight!

There must be many people using MS Remote Desktop for macOS, since it's perpetually in the top "Free" apps chart. There is also an iOS version.

But, from what I've experienced so far, NVIDIA's GameStream is faster, fast enough to play games! Depending on your WiFi speed, you can stream video from 30 fps at 720p (5 Mbps) up to 60 fps at 4K (80 Mbps), with audio. And it supports XBox controllers, in addition to the standard keyboard/mouse combo.

Desktop (GameStream Server)

First, you'll need to have a modern NVIDIA graphics card (apparently GTX 600 and above), and I'd recommend the latest drivers and GeForce Experience 2.11.4 (GFE).

I'm using GFE 2.11.4 and not the latest GFE 3 because the latter requires login to NVIDIA is generally hated. If you need to downgrade, uninstall GFE and download the previous version from NVIDIA directly:

Then, in the GeForce Experience tool, visit Preferences > SHIELD and make sure GameStream is enabled by checking Allow this PC to stream games to SHIELD devices.

Normally, GFE will allow detected games to be streamed, but in the bottom half of the screen, you can add any other applications. So, to remotely control the entire Windows, there is a little trick. Click the + button and add mstsc.exe typically found in C:\windows\system32\mstsc.exe (mstsc is Remote Desktop client, previously know as MS Terminal Services Client). You can rename this "Desktop".

Finally, open the NVIDIA Control Panel, and from the menu, make sure Desktop > Show Notification Tray Icon is checked! This is required to popup the connection request authentication window on the desktop PC.

NVIDIA Control Panel Show Notification Tray Icon

As a slight aside, if you keep getting a request to update GFE 2, head over to %programdata%\NVIDIA Corporation\GeForce Experience\Update and delete all the files there. Then in GFE Preferences > General make sure to disable both options under Updates.

GameStream Client on iOS and macOS

Now, you'll need a client (since nobody has an NVIDIA Shield anyway!), and I found Moonlight, an open source GameStream client.

For macOS, you'll need Google Chrome installed first. Then, download Moonlight Chrome, either following the links from the Moonlight home or directly from GitHub. The installation instructions are quite clear:

  • Download moonlight-chrome.crx.
  • Open Chrome's extensions page, via the menu Window > Extensions.
  • Uninstall any previous version.
  • Drag the CRX file into the extensions page.

Once that's done, go ahead and start Moonlight from Launchpad, or from Chrome's bookmarks bar Chrome Apps. Enter your desktop hostname (e.g. "homepc.local") or IP address, select a game or "Desktop" and Connect!

Moonlight Chrome on macOS

If it manages to connect you'll be prompted to enter a code on your desktop.

NVIDIA GameStream Connection Code Request on Desktop

If it does not, check your Windows Firewall. I have no specific recommendations here as I had no trouble in this regard. If there is no popup window on the desktop, make sure to check the Show Notification Tray Icon described above.

Moonlight Chrome is currently in Alpha, but will eventually replace Moonlight PC, which is a slow Java-based client without hardware decoding. In addition, it's not available on the Chrome App Store yet.

For iOS, just download Moonlight from the App Store. It's even easier as it automatically found my desktop and displayed installed games with box art!

Here is my iPad mini 2 running No Man's Sky. You can see the buttons emulating a virtual controller. It's pretty slow on my old iPad mini, but quite playable on my MacBook Pro, despite my slow Wi-Fi!

Moonlight iOS

Moonlight also supports Windows, Android, Raspberry Pi and Linux too. Amazing stuff! Wish could do this with AirPlay.

Updated 10 Oct: Addded the bit about downgrading to GFE 2 since I accidentally had mine updated. Download info was taken from this thread on Reddit.