What happened to Limelight?/Why did you change your name?
On April 21, 2015, we received a Cease and Desist letter from Limelight Networks, Inc. They also do streaming services and were concerned about confusion between this project and their company trademarks. To comply with the terms of their C&D, we've decided to rename our project to Moonlight.
Main website: http://moonlight-stream.com
iOS GitHub project: https://github.com/moonlight-stream/moonlight-ios
iOS TestFlight beta testing requests: https://github.com/moonlight-stream/...-ios/issues/20
iOS IPAs for jailbroken devices: https://github.com/moonlight-stream/...t-ios/releases
Android GitHub project: https://github.com/moonlight-stream/moonlight-android
Android GitHub releases page (APKs): https://github.com/moonlight-stream/...droid/releases
Embedded project (for Raspberry Pi and other embedded devices): https://github.com/irtimmer/limelight-embedded
PC port (beta) - Last updated April 18, 2015
PC port binaries: https://github.com/moonlight-stream/...ht-pc/releases
PC port source: https://github.com/moonlight-stream/moonlight-pc
Video latency reduction on current Qualcomm devices
If the latency on your Qualcomm-based device isn't to your liking, ensure you're running GFE 2.4 or higher.
Android Beta Testing Group
Join the beta testing group to get pre-release builds via Google Play: https://plus.google.com/communities/...34463232285067
App Store Availability (Non-root version)
Play Store - Latest build (3.1.7)
Amazon app store - Latest build (3.1.7)
Ouya store - Latest build (3.1.7)
GitHub releases page (link above) - Latest build (3.1.7)
App Store Availability (Root version)
Play Store - Latest build (3.1.7)
Amazon app store - Older build (3.1.4)
GitHub releases page (link above) - Latest build (3.1.7)
General Streaming Latency Information
The latency of streaming is dependent on the device you're streaming to and the network you're streaming over. Different devices have different H.264 hardware decoding latency. After streaming, a toast will show up with latency numbers. It will show the total client latency and the portion of the total client latency spent waiting for the hardware decoder. Note that the total client latency does NOT include network latency, so the real latency is higher than the number you see. The total client latency is a measure of the time that the first packet in a frame is received to the time that the frame is released for rendering on screen.
Anecdotal Hardware Decoder Latency Numbers
These are some latency numbers (from memory) I've seen on my test devices as of Moonlight Android 3.1.5. I'll try to keep updating this as I test.
Tier 1 devices:
Tegra 4 - Nvidia Shield - 5 ms - 1080p60 supported
Intel Atom/Bay Trail/Moorefield - Nexus Player - 8 ms - 1080p60 supported
Tegra K1 - Nexus 9 - 15 ms - 1080p60 supported
Tegra 3 - OUYA and Nexus 7 (2012) - 17 ms - 1080p60 supported
Broadcom VideoCore IV - Fire TV Stick - 20 ms - 720p60/1080p30 supported
Tier 2 devices:
Snapdragon 801 - HTC One M8 GPE - 40 ms - 1080p60 supported
Snapdragon 800 - Nexus 5 - 40 ms - 1080p60 supported
Tier 3 devices:
Snapdragon 600 - Fire TV - 50 ms - 720p60/1080p30 supported
Snapdragon S4 Pro (rebranded 600) - Nexus 7 (2013) - 50 ms 720p60/1080p30 supported
Adding games/apps that aren't automatically found
You can stream any almost any game or app by adding the EXE file to GFE manually (if it's not found by the automatic app scan). Open GeForce Experience, click the Preferences tab, click GameStream on the sidebar, then click the add (+) button on the right. Browse to the app or file you want to add and click OK. You can rename the app using the edit button on the right (near the add button).
Using Moonlight as a remote desktop solution
You can stream the entire Windows desktop via Moonlight. Follow step 2 from this guide
Streaming over the Internet
GeForce Experience 2.0 enables streaming over the Internet. As long as the appropriate ports are forwarded or UPnP is enabled (see http://tinyurl.com/k6hf2c6 for details), you should be able to stream over the Internet.
Ports to forward manually:
TCP 35043, 47984, 47989, 47995, 47996, 48010
UDP 47998, 47999, 48000
Using a wired/wireless controller connected to the GFE PC instead of the streaming device
Normally, Moonlight sends controller input from the streaming client which gets sent to the game by GFE. If you want to connect a controller to your PC instead of the streaming device, GFE can cause some problems because the emulated controller still appears to games as controller 1. Luckily there is a workaround for this. You'll need to rename the DLL that Nvidia is using to send controller input so it won't be used anymore. On 32-bit and 64-bit Windows, rename rxinput.dll to rxinput.dll.old on in C:\Program Files\NVIDIA Corporation\NvStreamSrv. On 64-bit versions, there's another copy of the DLL in C:\Program Files (x86)\NVIDIA Corporation\NvStreamSrv which you'll want to rename. You may have to do the renaming again if GFE does an update, but it should allow you to use your controller normally on games that only support 1 controller.
Video and audio are working. Mouse is implemented with support for the touchscreen as a touchpad or using a real mouse or touchpad. Pressing back/select and start together on your controller will bring up the Steam overlay. Keyboard support is also implemented.
General requirements for current APK:
SoC capable of decoding H.264 High Profile in hardware (Snapdragon, Exynos, Tegra 3 or higher, Rockchip, and more)
Android 4.1 or higher
GeForce Experience with a GTX 600/700/800/900 GPU or GTX 600M/700M/800M (GT-series not supported)
Xbox, PS3 (with SixAxis app), Moga (B/HID mode), Shield, or Ouya controller (other controllers may work too in HID mode)
Mid to high-end wireless router (preferably dual-band 802.11n or better)
Good wireless connection to your Android device
1. Make sure GeForce Experience is installed, up-to-date, and that you've scanned for games.
2. Make sure your device is on the same network as your computer for initial pairing.
3. Try disabling any firewall software running on your machine.
4. Try rebooting your machine. Sometimes the streaming software gets into a messed up state where it won't work normally until the machine is rebooted.
5. Make sure your Android device has a strong wireless connection (and your PC too, if it's connected wirelessly).
6. For Internet streaming, make sure UPnP is enabled on your router or the ports are manually forwarded. See http://tinyurl.com/k6hf2c6 for details.
7. To check if GFE is working properly, try navigating to the following URLs on your GFE PC:
For those with latency issues, please see this post.
Depending on the wireless chipset on your phone/tablet, you may have a bad streaming experience if Bluetooth is active while streaming. Unfortunately, there's nothing we can do about this. If you experience significant connection degradation with a Bluetooth controller connected, you could try connecting the controller to your PC (see the section above), a USB Ethernet adapter, or controller that connects directly to your Android device (assuming your Android device supports USB OTG)
See GitHub releases page for recent changes: https://github.com/moonlight-stream/...droid/releases
Update 12 - March 13, 2014:
Significant video quality improvements. Lower video latency. New UI that makes it easier to choose the best streaming settings. Transient messages are displayed while streaming if network or device problems are detected.
Tegra hardware decoding latency bug is fixed. Hardware decoding is now used by default on Tegra and Rockchip devices. Performance is vastly improved on Tegra devices (1080p60 decodes in real-time, even on Tegra 3). The parser bug causing additional artifacts and image corruption is (finally) fixed.
Added options to force either hardware or software decoding. Reduce audio decoding CPU usage. Fix image quality and performance regressions from update 9.
Reduced CPU usage of video decoding. Added options to choose target resolution (720p or 1080p) and FPS (30 or 60).
Added a checkbox to choose image quality vs performance (only for CPU decoding). Optimize CPU decoding further. The frame rate is now playable on the Ouya with its Tegra 3..
Connectivity issues should be resolved now. Update to the latest APK if you were experiencing connection failures with the last couple of releases.
There's now GUI feedback when connecting. The whitelist for hardware decoding (that only included Qualcomm decoders) has now been replaced with a blacklist (currently containing TI and Nvidia decoders). The Exynos decoder in Exynos 5 Octa has been confirmed to work.
The app will now request a new reference frame if packet loss occurs on the video stream. This means that the stream will recover from blockiness and artifacting that occur when video packets get lost. CPU decoding for non-Snapdragon devices is a bit better. Fixed back button on Shield.
Added multithreaded CPU H264 decoding support for non-Snapdragon devices with ffmpeg. Both landscape orientations now work. This grows the APK significantly so don't be alarmed when this download is larger than previous builds.
Tegra 4 is now very smooth in the games I've tested. Tegra 3 works significantly better than before, but still not perfect (and won't likely ever be as smooth as Snapdragon or Tegra 4).
For Qualcomm devices, a dual-core SoC (even as old as Cortex-A8 stuff) is sufficient due to the hardware decoder. For other devices, CPU decoding will now be used. These devices will need more CPU horsepower (a quad-core Tegra 3 is almost enough).
Look forward to keyboard support and a better GUI coming in the next several days.
Frame pacing improvements for Snapdragon and Tegra devices, although Tegra still has more latency than Snapdragon devices. If you have issues with blockiness or discoloration in the video stream, make sure that you have a good wireless connection. Moonlight doesn't currently deal with packet loss as well as the Shield streaming app.
PS3, Xbox, Shield, and Moga Pro controllers are working with the latest APK.
Audio is now working. Video is working pretty well on Snapdragon devices (with some lag on Tegra devices). I've attached the current APK here for those that want to test. Due to the framework we're using for video decoding, this app requires Android 4.1 or higher. This is still in alpha so expect bugs.
Here is a demo of a WIP app that uses the same Shield streaming technology to stream to any Android device. Controller and mouse input works. Keyboard input isn't implemented yet. Video support works (minus some artifacts at rare points and minor frame pacing issues). Audio doesn't work yet (not sure what format it is).
We've had success with very low H264 decoding latency on Snapdragon S4 Pro/600 devices (like the 2013 Nexus 7 and HTC One), but the Tegra 3/4 decoder has a high latency per frame (~1 second) that makes streaming more laggy on devices like the Ouya, 2012 Nexus 7, and even the Shield itself.
The next big step to a release-ready app is audio support (and the obligatory code cleanup). I'd be happy to respond to any questions about the way the app or the GFE streaming protocol works. If there's significant interest in this, I'll try to put more time into finishing it ASAP.
Demo video (a bit old now):
I'd recommend downloading the app from the Play Store. Updates are automatically applied through the Play Store when they are released. Crash reports also get to us automatically if you use the Play Store version and click the Report button if Moonlight crashes.
For those Amazon folks out there:
Sometimes APKs are more convenient for sideloading and other things, so they will continue to be posted.
You can find the latest APKs on the GitHub page here: https://github.com/moonlight-stream/...droid/releases