Stream games via Moonlight and fpv.wtf to your DJI FPV Goggles!
The DJI Moonlight project is made up of three parts:
- dji-moonlight-shim: a goggle-side app that displays a video stream coming in over USB.
- dji-moonlight-gui: a Windows app that streams games to the shim via Moonlight and friends. You are here.
- dji-moonlight-embedded: a fork of Moonlight Embedded that can stream to the shim. The GUI app uses this internally.
Latency is good, in the 7-14ms range at 120Hz (w/ 5900X + 3080Ti via GeForce Experience).
- Install dji-moonlight-shim on your goggles.
- Download the latest release and extract it.
See Sunshine documentation for more guidance.
-
Download and install Sunshine.
-
Sunshine runs as a background service automatically and uses a locally-hosted web UI for settings.
Go to https://localhost:47990/ and set a username and password for future settings fanangling.
Before you can start streaming, you need to pair the GUI app with the host streaming software. This only needs to be done once.
- Run
dji-moonlight-gui.exe
. - Press Pair.
- The PIN will be displayed in the console. This is what you'll need to enter in the host streaming software.
- Go to the Sushine PIN tab on the web UI and enter the pin.
- Run
dji-moonlight-gui.exe
. - Configure the settings to your liking.
- Press Refresh to fetch the list of your games.
- Select a game and press Stream.
There are two streaming modes to choose from: BULK and RNDIS. What does that mean?
RNDIS
This is the default mode. When the goggles are connected to your PC via USB, they appear as a plain old network interface. If you've ever used your phone as a hotspot over USB, then you've used this exact same mechanism before. Since it's just a network interface, all regular networking conventions apply and we can send data to the goggles like any other device.
The main downside is that it's slow! Due to reasons yet unknown, the maximum bitrate we're able to achieve is around 30Mbps before packet loss starts to creep in.
BULK
This mode is more experimental. Rather than using this indirect network route, we can instead send data directly to the goggles via the USB interface. With this, we can easily achieve a bitrate of 100Mbps (as long as your PC can keep up).
The only downside is: driver shenanigans!
- Use the fpv.wtf Driver Installer to install the correct drivers for the goggles. You may have used this already when you rooted your goggles.
- Close any fpv.wtf configurator browser tabs.
- Run
dji-moonlight-gui.exe
. - Select BULK mode.
- Crank that bitrate.
- ...carry on as normal.