dji-moonlight-gui
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).


Usage
Setup: dji-moonlight-gui
- Install dji-moonlight-shim
on your goggles.
- Download the latest
release and
extract it.
Setup: Sunshine
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.
Pairing
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.
Streaming
- 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.
Modes: BULK vs. RNDIS
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!
Using BULK mode
- 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.