How to stream games to a Fire TV using NVIDIA GameStream

An alternate title to this post could be, “How to play Watch Dogs on a FireTV,” because that’s what I’m doing right now.

One of the things I want my console to be able to do is stream games. If I keep my console in the living room, I want to be able to play it from the bedroom without needing a second console. For anybody who hasn’t put the money into a computer that they can keep next to the TV, streaming this way can also help. You can keep your PC in a bedroom or office, but still use it to play games in the living room.

One of the benefits of switching to a PC based system is that you can stream your games to so many devices. For my living room TV, I like to use a FireTV. At it’s core, it’s a $100 Android based set top box. $39 if you get the FireTV Stick (which also works for this). I already have one on every TV in the house for Plex and Netflix, so using it to play games just makes sense.

1. A small introduction to NVIDIA Gamestream

The NVIDIA Shield is a small handheld device that runs Android. It has a controller built in, and you can stream games from your PC to it. There’s also a version for your TV, now. The software they use to stream games is called Gamestream. Gamestream was originally meant to be used with NVIDIA hardware, but the protocol has been reverse engineered. Now you can use it on Windows, Mac, Linux, and Android. There’s even an iOS version coming up. Moonlight (formerly known as Limelight) is app that does this. It’s open source and freely available. Since the FireTV is running Android under the hood, it can run Moonlight.That’s what we’re going to do here. Here’s how.

2. Make sure you can use NVIDIA Gamestream

The only caveat to doing this is that you need to have a NVIDIA video card for this to work. If you don’t have a GeForce GTX 600 series or higher, this just wont be an option. You’ll also need a decent router. Streaming an entire game takes a lot of bandwidth.

To tell if your system will work with this, open NVIDIA GeForce Experience, click on “My Rig”, and click on “GameStream”. If your system is supported, you’ll see a checkbox in the bottom left corner that says “Ready”. If you don’t have NVIDIA Geforce Experience, you can grab it here.

It should look something like this:

NVIDIA Geforce Experience

3. Set up NVIDIA GeForce Experience

Before you try to play anything, make sure that Geforce Experience can find your games, particularly if you installed Steam in a non-usual location.

Click on the “Games” tab. I have Steam installed on a different hard drive under the location X:\Opt\Steam, so my Games tab looked like this:

No supported games

If that’s the case for you, click on the Preferences tab and then click on Games. Add any paths here that you put games in, then scan for games.

If you have games you want to play that weren’t picked up in the scan, don’t worry. Gamestream will automatically pick up Steam, so you’ll actually be able to launch anything on your FireTV that you can launch in Steam. If you haven’t added them to Steam, or you want to launch them directly, click “Preferences”, then “Gamestream”. This is a list of additional games you’ve added. If you click the + sign on the right, you can add any games that weren’t picked up earlier.

Add additional games

4. Download Moonlight

Moonlight is the app that will play the games. You can download it directly using your FireTV – nothing special required here. Just do a search for it and install it. You can also tell Amazon to install it to your FireTV from the web, here.

Running it is pretty simple. It should automatically find your PC, as long as your PC and your FireTV are connected to the same network. If they aren’t, you’ll need to give it your PC’s local IP address. Lifehacker has a good video explanation of how to find yours here.

When you select your computer, you should see Steam in the list already, as well as any other games NVIDIA picked up from it’s scan. If you don’t see Steam, go back to the Geforce Experience app and add it manually as an additional game. Don’t add the shortcut that you would normally use on your computer – make a shortcut to the url “steam://open/bigpicture” and add that. This will make sure you open the game in big picture mode, which is useful for using a controller.

5. Pair with your computer

The first time you try to connect to to your computer, it will give you a special code that you need to enter. A small window will pop up on your computer that looks like this:

nvidia_geforce_shield_code

 

Enter the code on your FireTV, and click “Connect’.

You only need to do this once.

6. Play

That’s all there is to it! Select one of the games, or open Steam and choose a game like you normally would.

Other Things to Think About

1. Controllers

You have some options here. You can use the standard FireTV controller. I haven’t used one yet myself, but it looks a lot like the XBox 360 controller, and it’s guaranteed to work. You can also use an XBox 360 controller if you buy the reciever. My favorite controller for the FireTV is actually the DuelShock 4 controller for Playstation 4.

Keep in mind you have some limitations if you have a FireTV Stick instead of a full FireTV. The XBox 360 controller requires a USB port, making it FireTV only, since the FireTV Stick doesn’t have a USB port. Oddly, the DuelShock 4 controller doesn’t work with the FireTV Stick either. It just doesn’t pair, although I have no idea why. So if you have a FireTV Stick, this setup will still work, but be careful with what controller you buy.

Whatever controller you choose, the button in the center of the controller that opens the Steam overlay (Xbox button on an XBox controller) will not work. The FireTV makes that button the FireTV home button, so when you press it, it will actually go back to the home screen. There might be ways to remap this if your device is rooted, but it’s not necessary.

Another option, depending on how far away your FireTV is from your PC, is to just use any controller that is paired with your PC. I do this sometimes. My PC is upstairs at a desk, and my FireTV is downstairs in the living room. My XBox controller has a long enough range, so I can launch the game using the FireTV remote, and use the XBox controller to actually play the game.

Some people have had problems with button mapping using a DuelShock 4 controller. I’ve had that problem before with an Android phone, but I’ve personally never had a problem with it on a FireTV. Maybe Amazon fixed it in a more recent release. I don’t know. But if you have trouble with that, there are a number of guides on the internet on how to fix it. You can start here. It requires a rooted device though, which voids your warranty, so it’s up to you if it’s worth the trouble.

2. Launching via Steam vs launching games directly

Launching games directly will work fine in most cases, but I prefer to launch Steam Big Picture mode and launch other games from there. This is useful for a number of reasons. You can shop for new games in Steam, install any games in your library that aren’t installed, or launch any non-Steam games you’ve added without also having to add them to Geforce Experience. I run a lot of emulated games, so this works better for me. If you are using a controller that is paired with your actual PC instead of the FireTV, you can also access the Steam overlay.

Another good reason to launch games via Steam is when you haven’t played the game yet on that computer. New games sometimes open DirectX installers, or show you a CD key, and launching via Steam Big Picture will make those dialogs compatible with your controller. For example, I recently starting playing Watch Dogs. It’s an Ubisoft game, and requires UPlay to play, so when you launch it, Steam will give you the CD key, in case you need it. Launching without Big Picture mode looked like this:

watch_dogs_cd_key_not_steam

Launching from Steam Big Picture mode looks like this:

watch_dogs_cd_key_steam

Much better.

3. Sometimes you will still need to access the computer

I had this pop up on my screen once when opening a game:

app_on_pc_needs_dotnet_framework

Obviously, I couldn’t close it with my controller. I needed to click it with my mouse.

This happens from time to time, and I don’t think it can really be avoided. I’ve had Windows inform me that it needed to restart for updates, too.

My favorite way to deal with these inconveniences is by using Chrome Remote Desktop. It’s a small app you can install on your computer and phone that lets you access your computer from anywhere. The great thing about Chrome Remote Desktop, as opposed to setting up a VNC server, is that you don’t have to worry about IP addresses or port forwarding. As long as you are logged into your Google account from both machines, Google will handle the rest.

When I need to click something on the screen, but I don’t want to go all the way upstairs, I press three buttons on my phone and my screen turns into a second mouse. You can grab the desktop app on the Chrome Web Store here, the Android app here, and the iPhone app here. Google has a tutorial here, and there are a number of other articles and Youtube videos explaining it, but I found it to be pretty intuitive to set up.

4. Performance

When playing this way, the performance of the games isn’t limited by your FireTV – it’s limited by your network connection. If you have any performance issues, don’t lower the graphics of your game. Keep the graphics that same as they would be if you were playing directly on your PC.

The best thing you can do to increase performance is get a better router. Note that your internet speed doesn’t matter here unless you are playing over the internet – for streaming games to another room in your house, only your router’s speed matters. I play with a Wireless N router and it does pretty well. A wireless AC router or a good wired connection would do even better. If upgrading isn’t an option, you can also adjust the bandwidth settings in the app.

Please note that the following screenshots were taken on an Android phone, because it’s much easier to take screenshots on a phone than on a FireTV. The interface is the same, so you should still be able to follow along.

On the screen where you select your computer, there is a cog icon in the upper left corner for the settings.

moonlight_android

When you select that icon, it will take you to the settings screen.

moonlight_android_settings

First, select “Select resolution and FPS target”.

moonlight_android_resolution

Here you can select your resolution target (720p or 1080p) and your FPS target (30 FPS or 60 FPS). These are not guaranteed values, but Moonlight will target these values when transcoding the video. If you have performance issues, lower this setting.

The other setting you can change to increase performance is “Select target video bitrate”.

moonlight_android_bitrate

 

Try lowering this value until the game performs better. Note that if this value gets too low, your game is going to look bad. This is the same effect that happens if you are trying to watch Netflix with a bad connection – the video just looks downgraded and low quality. On the other hand, if your game already runs smoothly, you can increase this value to get a better picture.

Both of those settings require a little bit of playing around with to find the values that work best for your connection.

Conclusion

That should get you started streaming games to other rooms in your house. A good console should be able to stream its games. The same process works on phones too, with a little adjustment. I’ll cover that more in depth in a future article, but the possibilities for streaming are huge. You can even put down a game on your FireTV and pick it up again on a cell phone.

If you have any questions, or have any tips or suggestions to add, feel free to post a comment below.

mike

Michael Day is a web engineer, javascript junkie, video game enthusiast, and blogger. Hating how the big console makers were taking advantage of gamers, he made the switch to PC and set it upon himself to make a machine that did everything the more popular consoles wouldn't.

  • lfd1351

    great articles on your blog but a question I was wondering before I purchase a Fire TV. Have you tried getting Dolphin emulator to work with Moonlight with WII emulation?

    • Michael Day

      I haven’t tried streaming Dolphin for Wii games yet, but I have streamed Dolphin playing a Gamecube game. It worked, but there are a couple of problems streaming emulated games with Moonlight.

      The first problem is that if you Stream Steam, and then open an emulated game via Steam, it wont work if there are any spaces in the file name. Due to some sort of bug with the Nvidia layer that is launching Steam as a sub process, quotes get removed from the final command, so “c:game title.iso” will be treated like two separate arguments – “c:game” and “title.iso”, leading the emulator to give you an error saying it can’t find “c:game”. The best way around this that I’ve found, when it comes to streaming with Moonlight, is to add the game directly to Nvidia Geforce Experience and skip launching it via Steam.

      The second problem you’ll encounter is with input devices. When you stream something with Nvidia Gamestream, it creates a virtual controller on your system, and any input received from the host device (your FireTV, in this case), gets translated to the virtual devices that Nvidia is managing. That means I doubt you could get the actual Wiimote to behave properly – even if you could get it working on the FireTV, that would be lost when translating events to Nvidia’s virtual device on your remote computer.

      There’s also the problem, with emulators, of having to map keys. Because of the virtual device that Nvdia sets up, any button mapping you do on your computer will need to be redone when you start streaming. You could use a remote desktop connection like Chrome Remote Desktop or VNC to control the mouse while you do this, but it’s a pain. I’m still looking for a way around this for most emulators. The good news for you is that Dolphin will automatically pick up XInput devices and map the buttons properly, so as long as you are playing a Gamecube or Controller game, it will find the virtual controller and work fine. There is also a way to do this with a XInput plugin for PCSX2.

      So as long as you are doing controller games, give it a shot. Just remember to add the games to Geforce Experience and not to launch them via Steam. There’s a tutorial on this coming up at some point in the future, but you can also sideload Dolphin for Android onto your FireTV. I haven’t tried playing any games on it, but if you want to take the time to experiment, it’s worth trying. A good Android app called AGK Fire AGK Fire makes it really easy to sideload apps. I’ve also had success syncing roms and save data between a FireTV and Computer using Dropbox by using an app called Dropsync.

      Good luck!