NVIDIA Shield
Jump to navigation
Jump to search
Moonlight PC to Shield Streaming
Overview
- You can stream your PC to your NVIDIA Shield including games allowing you to play on your tv
- Using a Shield controller, or any other Shield-compatible Bluetooth controller, makes it feel very much like a console experience
- This is a legitimate replacement for a console for everything except for games that aren't available on PC
- All you need is your PC, NVIDIA GeForce Experience PC app, NVIDIA Shield, and the Moonlight Streaming Shield app
It Turns Out The Ultimate Console Experience Is On The PC
- Streaming is so good with this setup I have no need of buying a console or their games to play on a big screen
- I have a PS5 and have a number of games but I've discovered those same games, when available on PC, are superior in resolution, framerate, and visual quality
- If I can stream those superior PC versions to a TV and use a controller then I see no benefit from a console
- The only situation that exists now where you'd want a console is a console exclusive title or console early access
Requirements
- Host:
- PC, MAC, Linux, Android, or any device capable of running the Sunshine server
- NVIDIA, AMD, or Intel Graphics Card for hardware acceleration
- Software encoding is supported and may work fine actuallly but hardware acceleration is nice to have
- Client:
- NVIDIA Shield, Android Device, Mac, PC or any device that can install the Moonlight client
- Network:
- Wired or Wireless
- 10-100Mbit/sec
- Recommended: 1000Mbit/sec, not because game streaming needs it (it looks great at 80Mbit/sec) but just in case something else starts heavily using your network bandwidth while streaming.
Steps
- PC
- NVIDIA GeForce Experience
- Add Desktop Streaming Launcher
- Settings > Shield > Add:
- C:\Windows\System32\mstsc.exe
- This is the command that will allow you to stream your plain desktop to your Shield
- I recommend finding a Microsoft Windows logo to set as an image
- C:\Windows\System32\mstsc.exe
- Settings > Shield > Add:
- Configure Steam to always use full desktop resolution
- Start > Steam > Right Click > Open File Location> Properties > Right Click > Properties > Target: Add a space and
-fulldesktopres
after the "...\Steam.exe" part- This causes Big Picture Mode to always start in your current resolution when you start Steam from the Start menu
- Start > Steam > Right Click > Open File Location> Properties > Right Click > Properties > Target: Add a space and
- Add Desktop Streaming Launcher
- Start Steam Big Picture Mode
- NVIDIA GeForce Experience
- Shield
- Install Moonlight Streaming app
- Open the Moonlight app
- There's probably some setup here to tell it how to see your PC, I can't remember if it's automatic
- Run the Desktop Streaming Launcher
- You should see Steam Big Picture Mode
Recommended PC-TV-Shield Settings
- PC
- My PC: Windows 10 PC, Intel i7 12700KF, EVGA 3080 FTW3 10GB, MSI Optix G32CQ4
- Monitor
- Disable Gsync/FreeSync
- Not strictly necessary but if you're easily hitting your fps target then it's not needed
- Disable Gsync/FreeSync
- Windows
- Disable any in-game overlays such as Steam, NVIDIA, Xbox, Windows Game Bar, etc. (RTSS overlay seems okay). Try this last just in case it's not needed.
- Sunshine
- Install the latest Sunshine: At least v2025.213.180858 (pre-release as of 2025-02-15)
- Defaults except for the following setting changes
- Disable allowing the client to change resolution (Menu: Audio/Video). This settings has gone missing in nightlies (250214).
- Games
- Fullscreen not Windowed or Borderless
- Vsync Enabled (Standard vsync. I haven't tested "Adaptive" vsync or Gsync/FreeSync or whatever else.)
- This works on some games that don't even give you an option to vsync to 60hz eg. V-Rally 4 vsyncs to my 165hz native and Forza Horizon 4 vsyncs to 55hz(?!) but it all still works
- RTSS 60fps limit
- Network
- Wired gigabit ethernet
- Route: Client <> Switch A <> Router <> Switch B <> Host
- Router: D-Link DSR-250N Gigabit 802.11N Wireless Router
- Switch A+B: D-Link DGS-105 Gigabit Unmanaged Metal Desktop Switch
- Client: NVIDIA Shield Pro (2019)
- Host: Windows 10 PC, Intel i7 12700KF, EVGA 3080 FTW3 10GB, MSI Optix G32CQ4
- TV
- Enable Game Mode
- Enable "Instant Game Response" mode
- Disable Filmmaker Mode and disable Automatic Filmmaker Mode Detection
- Disable Gsync/FreeSync
- Not strictly necessary but if you're easily hitting your fps target then it's not needed
- Shield
- Enable Automatic Game Mode in Settings > Display > Advanced and confirm Moonlight is enabled under Customize Game Mode App List
- Moonlight
- Defaults except for the following setting changes
- Resolution: 1440p
- Framerate: 60fps
- Bitrate: 40mbps
- Frame pacing: Smoothest Video.
- Lowest Latency (default) is also probably fine but I had a few stutters that weren't there in Smoothest Video and any latency (as they note) was too small for me to notice.
- Enable Xbox 360/One USB game pad driver (if you're using one)
Notes:
- I now consider this a perfect 60fps, console killer experience. All the graphical power of a PC and all the benefits of big screen and controller gaming.
- Some of the changes above may not actually be needed to achieve a stable 60fps but these are the settings that eventually resulted in my stable 60fps experience
- Tested: V-Rally 4, Forza Horizon 4, Test Drive Unlimited 2, Trials Evolution Gold Edition, Grid Legends, Shift 2 Unleashed
- RTSS=Riva Tuner Statistics Server which comes with MSI Afterburner (works with any video card)
How I diagnosed the issue:
- I knew my setup should have been overkill (i7 12700kf + 3080 + wired gigabit ethernet) so I was pretty convinced there should be a way to get virtually perfect streaming
- I didn't know how to test some things explicitly but over time I gradually ruled out each component of the steaming pipeline as being the problem and eventually became convinced it was the 3080's dedicated encoders that were either not keeping up or were "out-of-time" or had some kind of timing issues
- Test your host's gaming performance by playing the game natively. If it doesn't play perfect there, you won't get a perfect stream.
- Confirm your CPU and GPU utilization using Windows Task Manager's Performance tab which now includes breakouts for 3D vs encoding performance.
- This is also how you test your host's encoding performance
- Confirm your CPU and GPU utilization using Windows Task Manager's Performance tab which now includes breakouts for 3D vs encoding performance.
- Test your network by streaming at the highest bitrate you can
- Confirm your network utilization in Windows Task Manager and ensure that when streaming the graph line can hold a steady bitrate with no significant spikes or dips
- Don't worry if the stream is bad, all you're looking for here is if your network can keep up
- Test your client's decoding performance by streaming and checking to see if there are at least stretches where it looks and feels like smooth 60fps
- Some of this is science and some of it is just feel, it will take time
- It took me over a week of trying various combinations of settings to become convinced that everything was over-performant except for the GPU's dedicated encoders
- Once I knew it was the encoders, I researched a lot and started to gain an idea that the issue had to do with encoding framerate synchronization/timing issues. And that convinced me to give vsync a try again, which I had discounted before because, at some previous configuration step, it hadn't helped. But that was the key. Vsync seems to have helped the 3080 get the timing of encoded frames correct.
GPU Dedicated Encoders:
- NVIDIA GPUs since the 20-series have had dedicated encoder chips
- These chips do not take away from your 3D performance meaning encoding has no impact on your game's performance (in theory)
- Sunshine uses these dedicated encoders if properly setup like for example setup to autodetect or explicitly use NVENC
- Since the encoders are dedicated chips, there seems to be an issue with framerate timing when doing realtime encoding. I imagine it doesn't matter when it's not realtime like for example encoding a video for YouTube upload.
- Vsync seems to help the dedicated encoders sync to the framerate such that the output encoded frames are timed or spaced much as you would expect from a native display.
- That's my best take on encoders and my isssue, anyway.
Optimizing Streaming
Prefer Software Framerate Limiting: Gsync/FreeSync can cause Stutter (Vsync is okay though)
- Prefer framerate limiting in software such as the MSI Afterburner's Riva Tuner Statistics Server (RTSS), NVIDIA Control Panel, nVidia Profile Inspector app, etc.
- Gsync/FreeSync, and other in-game display sync options, may cause stutter (but 60hz vsync was necessary for me for smooth framerate)
- Some games, like V-Rally 4, provide "Off", "Standard", and "Adaptive" V-Sync options and "Adaptive" caused stutter for me while "Off" consume all GPU resources which also impacts video smoothness so a framerate limiter is needed
- Some games, like Forza Horizon 4, vsync to 55hz(?!) but it still worked fine for me
- PC vs TV Refresh Rate
- There may be some difference between your PC's monitor refresh and your TV's frame rate
- In my case, my PC monitor is 165hz while my TV is 60hz
- This may cause video smoothness issues (60hz vsync solved my smoothness issues)
Save Some GPU Capacity For Streaming Overhead
- Use a framerate limiter to conserve GPU resources so you have some left over for the stream overhead
- The NVIDIA Control Panel and nVidia Profile Inspector app can be used to limit framerate
- Some games can be run flat out to produce a much higher framerate than your monitor is capable of displaying and this will cause a high GPU usage
- If GPU usage is too high, it may slow down video streaming
Close All Other Apps While Streaming To Improve Streaming
- Improve video smoothness reliability by closing other apps which may be taking resources in the background
- Double-tap the O button on the Shield controller and close every window except Moonlight
Improving The Experience
Add a Wireless or Bluetooth Keyboard for Typing and Touchpad
- Adding a Wireless or Bluetooth keyboard can open up games or other windows functions that require typing
- Some keyboards coming with a touchpad which opens up games that are better with a mouse, such as an adventure game or a real-time strategy game
Recommendation:
- People seem to like the Logitech K400 Plus Wireless Touch TV Keyboard that comes with a touchpad. It connects by a usb dongle for a wireless connection and the NVIDIA Shield has USB ports.
- I tried it and it works very well. So well you could play old keyboard and point-and-click adventure games like King's Quest, Quest for Glory, etc.
- The touchpad makes it much easier on the streamed desktop to move the mouse cursor through the Start menu, over icons, through file menus, etc.
Tips and Tricks
Long Press Start Button for Mouse Emulation
- On a Steam controller, hold down the Start button for 1sec+, release, and you should be able to move the mouse cursor around with your joystick
- A is left-click, B is right-click
Gotchas
Moonlight Shield App Launches Steam Low Resolution
- tl;dr Start Steam on Windows then launch the Desktop Streaming app from Moonlight instead (See #Steps)
- When starting Steam from Moonlight, Steam will start Big Picture Mode and, for some reason, start in a low resolution.
- It looks bad, changes your whole desktop's resolution (possibly messing up your desktop icons and open window sizes), and games start in low resolution
- Solution:
- Start > Steam > Right Click > Open File Location> Properties > Right Click > Properties > Target: Add a space and
-fulldesktopres
after the "Steam.exe" part- This causes Big Picture Mode to always start in your current resolution
- You must start Steam Big Picture Mode on your PC because Moonlight doesn't know to start Steam with
-fulldesktopres
- You must start Moonlight streaming with the Desktop Streaming launcher
- Start > Steam > Right Click > Open File Location> Properties > Right Click > Properties > Target: Add a space and
Workarounds
Issues With Higher Than 60hz/60fps Video
- Prefer Fullscreen display mode, not windowed, and a 60hz monitor refresh rate or at least 60fps limited in-game
- Shield/GameStream/Moonlight only use 30/60hz anyway by default. 90/120hz can be unlocked in Moonlight settings (under Experimental settings) but anything over that and you're wasting processing power and bandwidth
- If your native refresh rate is higher than 60hz, something in the pipeline from your PC to Shield doesn't like it and your visual smoothness will suffer
- Could be on-PC encoding overloading your video card or on-Shield decoding of a high refresh rate signal down to a 60hz signal overloading the Shield
- Example: I have a 165hz display. I was running V-Rally 4 at 165hz but when streamed to the Shield it did not feel very smooth. Once I changed to Fullscreen mode and 60hz vsync, in-game, it felt buttery smooth at the Shield.
Do NOT use the Moonlight Shield App Steam launcher
- This launches Steam in Big Picture Mode but without the
-fulldesktopres
fix mentioned above - This results in a low resolution Steam interface, low resolution desktop, and games will start in low resolution
- Just be sure to use the Desktop Streaming launcher from Moonlight mentioned above that you create in NVIDIA GeForce Experience
Known Issues
Audio Muted On PC After Closing Moonlight Streaming
- tl;dr You must manually quit your Moonlight session otherwise you have to reboot your PC
- Moonlight will correctly stream video and audio but when you stop streaming your PC doesn't seem to properly "recapture" audio
- You must manually quit your Moonlight session: Go back to Moonlight, tap the launcher you ran before, and it should show you a context menu where you can choose to quit the session
You can't turn off your PC monitor / Beware OLED users
- For some reason, your PC monitor will have to stay on even while you stream to your TV
- LED/LCD users don't need to worry (OLED users do need to worry)
- LEDs don't suffer from burn-in
- LEDs do suffer from backlight dimming or failure but this is very rare and leaving your LCD on is generally okay
- I don't worry about leaving my LEDs it on for hours
- OLED users should worry about burn-in
- OLEDs can suffer burn-in from users forgetting their PC monitor is on
- So, you'll want to remember to turn off your OLED after your TV streaming session