Moonlight Wii U

Moonlight Wii U is a port of Moonlight Embedded, which is an open source client for Sunshine and NVIDIA GameStream. Moonlight allows you to stream your full collection of games and applications from your PC to other devices to play them remotely.

It's using the hardware-accelerated h264 library of the Wii U which results in pretty fast decoding.
Using my LAN Adapter 720p@60fps runs almost flawlessly.

Here's a little demo (and april fools) video:


Quick Start​

ℹ️ A Wii U LAN Adapter is recommended!
  • Grab the latest version from the releases page and extract it to the root of your SD Card.
  • Enter the IP of your Sunshine/GFE server in the moonlight.conf file located at sd:/wiiu/apps/moonlight.
  • Ensure your Sunshine/GFE server and Wii U are on the same network.
  • If using GFE, turn on Shield Streaming in the GFE settings.
  • Pair Moonlight Wii U with the server.
  • Accept the pairing confirmation on your PC.
  • Connect to the server with Moonlight Wii U.
  • Play games!
Configuration
You can configure all of the documented settings in the moonlight.conf file located at sd:/wiiu/apps/moonlight.
Note that a lot of option are commented out by default, to edit them you need to remove the # in front of them.

Supported controllers
  • Gamepad (can be disabled with the disable_gamepad option).
  • Up to 4 Wii U Pro Controllers and Wii Classic Controllers (Pro).
    The Gamepad needs to be disabled to use the 4th controller.

Troubleshooting​

Input doesn't work when using Sunshine​

Verify that you've installed Nefarius Virtual Gamepad and restarted your PC after the installation.

The stream disconnects frequently/immediately​

Depending on your network connection you need to adjust the configuration to find a stable bitrate and resolution.Try something like this to get started:
Code:
width = 854
height = 480
fps = 30
Code:
bitrate = 1500
Then slowly increase the bitrate until the stream is no longer stable.

Can't find app Steam​

Moonlight Wii U tries to start the app "Steam" by default, but sunshine does not have a default Application called "Steam".
You can either rename the app in the moonlight.conf to
Code:
app = Steam Big Picture
which is a default option in sunshine or add a new application called "Steam" in the sunshine configuration.

Releases: https://github.com/GaryOderNichts/moonlight-wiiu/releases
Source code: https://github.com/GaryOderNichts/moonlight-wiiu


Special thanks to agilly1989, rw and QuarkTheAwesome.
 
Last edited by GaryOderNichts,
Moonlight no longer connects to server:

I get the following Sunshine errors in console trying to connect the wiiu client to the latest …. sunshine-beta Version 2026.222.224531 ....It previously ran awesome 2 weeks ago :

…..

[2026-02-23 14:44:37.546]: Info: Found H.264 encoder: h264_videotoolbox [videotoolbox]
[2026-02-23 14:44:37.546]: Info: Executing [Desktop]
[2026-02-23 14:44:37.612]: Info: New streaming session started [active sessions: 1]
[2026-02-23 14:44:37.642]: Info: CLIENT CONNECTED
[2026-02-23 14:44:37.699]: Info: Detecting displays
[2026-02-23 14:44:37.699]: Info: Detected display: Built-in Retina Display (id: 1) connected: true
[2026-02-23 14:44:37.699]: Info: Configuring selected display (1) to stream
[2026-02-23 14:44:37.790]: Info: Creating encoder [h264_videotoolbox]
[2026-02-23 14:44:37.790]: Info: Color coding: SDR (Rec. 601)
[2026-02-23 14:44:37.790]: Info: Color depth: 8-bit
[2026-02-23 14:44:37.790]: Info: Color range: MPEG
[2026-02-23 14:44:37.790]: Info: Streaming bitrate is 3428000
[2026-02-23 14:44:37.793]: Warning: [h264_videotoolbox @ 0x7fbae4916300] PrioritizeEncodingSpeedOverQuality property is not supported on this device. Ignoring.
[2026-02-23 14:44:37.794]: Info: [h264_videotoolbox @ 0x7fbae4916300] This device does not support the AllowOpenGop option. Value ignored.
[2026-02-23 14:44:48.089]: Info: CLIENT DISCONNECTED


I think this is the key piece ******** Info: [h264_videotoolbox @ 0x7fbae4916300] This device does not support the AllowOpenGop option. Value ignored.


“ AllowOpenGop option. Value ignored. “ Is that the setting thats killing my sunshine setup to moonlight wiiu, that used to run awesome…. Can I adjust this somewhere ? Or am I missing something. .. My other Moonlight clients connect fine ….wtf?
 
Moonlight no longer connects to server:

I get the following Sunshine errors in console trying to connect the wiiu client to the latest …. sunshine-beta Version 2026.222.224531 ....It previously ran awesome 2 weeks ago :

👆** update: this was caused by an osx Update on Sequoia 10.7.4 from 10. 7 .2 and something it's doing with permissions . Not Sunshine Beta it seems. ... I runs fine the first time you connect Sunshine on your computer to WiiU moonlight ...then refuses ....Until you reboot ...or something....
 
I am using this quite a lot for streaming visual novels and that type of stuff(Ace Attorney), so huge thanks to GaryOderNichts! ❤

Tired of fighting with WiiU shitty Wifi and hopping back and forth to adjust bitrate, needed a bit more fluff and functionality, so here is this... maybe will be useful to someone else.

Basically fully configurable through UI, Rumble support for GamePad and you can set correct(imo) Rec.709 color space & full range settings to get proper color saturation and black level when viewed on GamePad( did not really test how it all looks on TV since my console is not even connected to one atm)

https://github.com/dougheater/wibelight
 
  • Love
Reactions: eddienw and jackazz
I am using this quite a lot for streaming visual novels and that type of stuff(Ace Attorney), so huge thanks to GaryOderNichts! ❤

Tired of fighting with WiiU shitty Wifi and hopping back and forth to adjust bitrate, needed a bit more fluff and functionality, so here is this... maybe will be useful to someone else.

Basically fully configurable through UI, Rumble support for GamePad and you can set correct(imo) Rec.709 color space & full range settings to get proper color saturation and black level when viewed on GamePad( did not really test how it all looks on TV since my console is not even connected to one atm)

https://github.com/dougheater/wibelight
Trying this right now! Great UI and easy to use. No longer have to keep exiting the moonlight and using vgedit to edit the config file! Anyway to access the settings while streaming? I mainly use moonlight to stream movies and shows. Its not the best solution because the gamepad keeps going to inactive mode. Anyone knows better streaming options?
 
@GaryOderNichts I found an issue in v1.6, local audio is disabled and there is no way to turn it back on. I change the cfg of local audio from true/false, and viceversa and nope, no audio on local, however going back to v1.5 with the same config file, local audio was working again.
 
[Trip Report] Flawless artifact free 1080p streaming on WiiU Moonlight on a Bottlenecked Mac Host (SWIM's Observations)
SWIM wanted to share a recent breakthrough in the homebrew space. The goal was to achieve 1080p artifact-free streaming to a wired Wii U running Moonlight using a heavily resource-constrained Mac laptop as the host.
Despite hitting every bottleneck in the macOS architecture, SWIM managed to lock in a flawless 8Mbps stream that held together For his Youtube Viewing 1080p pleasure. For testing the absolute bitrate limit SWIM ripped the audio out of the stream and routed through bluetooth speakers ....

The Setup & Constraints
  • The Client: Wii U wired with a LAN cable. (Essential).
  • The Host: A Mac laptop with limited RAM, limited CPU, and no dedicated GPU.
  • The Gauntlet: Severe thermal throttling, aggressive macOS RAM management, and AppNap trying to kill the process.

SWIM's Observations & Breakthroughs
  • Overriding the OS Matrix: To stop macOS from choking the stream, SWIM gave the encoder top CPU priority. This completely bypassed the native RAM compression and scheduling limits.

    sudo purge && sudo renice -n -20 -p $(pgrep -x lumen)

  • Defeating AppNap: SWIM blocked the OS from throttling the streaming app when focus shifted, keeping the frame delivery perfectly fluid.
defaults write NSGlobalDomain NSAppSleepDisabled -bool YES
  • The Stress Test: While the Wii U was pulling the 1080p stream, SWIM fired up 1080p YouTube on the Mac host, Enjoying his favourite Kool Keith ("Plastic World" and "Living Astro") videos **artifact free....


    The real sunshine DIFFERENCE MAKing encoder keys :

  • * changing to vt_coder = cavlc. *(Really Good for WiiU hardware)
    * cutting the video into 4 vt_slices = 4 ( WiiU hardware Likes this,)

    making these TWO changes.... allowed me(***** I mean SWIM) to push the bitrate WAY up .... *with no affect on input LAG
  • also removing I-frames and b-0frames from the stream (to limit data spikes) was key.
    cmd_options = -bf 0 -refs 2 -b_strategy 0

    Then adding instead of those heavy I frames and b- frames ---
    intra_refresh = enabled

    Adding more lookahead helped ( but laptop starts throwing heat). So somebody else might have more success.

    h264_profile = high (Wiiu accepts by default ). ...YOu could also change this to baseline .... to make it even easier MATH for the Wiiu CPU ....


    Upping the minimum CPU threads to 4. Would be good ideally, but swim's laptop turns into a toaster....
    min_threads = 2
And potentially setting the bitratecontrol to rate_control = cbr. --- Could also squeezes more out of the stream .... Also dropping down to 7, 6, or 5 (which is the recommended 1080p Netflix setting....COuld ALL help ....

*****But a PC with a dedicated GPU and more ram COUld Really do some damage here .....or even a Mac desktop .....but thats not SWIMs concern, 1080p YouTube is still 1080p YouTube . (SWIm could not be happier )


The Final Result
SWIM reports that the system held together beautifully. No artifacts. No stuttering. Just crystal-clear, low-latency imagery on the Wii U GamePad while Kool Keith provided the soundtrack in the background ALSo The stream never drops out.
For other homebrewers out there: if SWIM can do this on a choked, integrated-graphics Mac, anyone with a modern setup can take this framework and push it to absolute hyperspace.



SWIMs Sunshine.conf : (tailered specifically to Mac Laptop environment , definitely need to change the encoder on other setups ) :


cmd_options = -bf 0 -refs 2 -b_strategy 0
intra_refresh = enabled
lookahead = 0
max_bitrate = 25000
fec_percentage = 10
vt_slices = 4
min_threads = 2
vt_coder = cavlc
controller = disabled
encoder = videotoolbox
h264_profile = high
high_resolution_scrolling = disabled
output_name = 1
rate_control = vbr
stream_audio = disabled
sw_preset = ultrafast
virtual_display = enabled



SWIMs moonlight.conf:

## Moonlight Wii U Configuration
## Lines starting with '#' are comments, to edit an option uncomment it by removing the '#'

## Hostname or IP-address of host to connect to
address =

## Video streaming configuration
width = 1920
height = 1080
fps = 30

## Disables the gamepad so the other controllers are mapped to players 1 to 4
disable_gamepad = true

## Swaps the buttons so they match the xbox controller layout
swap_buttons = false

## Automatically connect to the host on startup and start the stream
autostream = true

## Use the absolute touch position for mouse emulation
#absolute_positioning = true

## Output rotation (independent of xrandr or framebuffer settings!)
## Allowed values: 0, 90, 180, 270
#rotate = 0

## Bitrate depends by default on resolution and fps
## Set to -1 to enable default
## 20Mbps (20000) for 1080p (60 fps)
## 10Mbps (10000) for 1080p or 60 fps
## 5Mbps (5000) for lower resolution or fps
bitrate = 8000

## Size of network packets should be lower than MTU
## If streaming with WAN optimizations, this will be capped at 1024.
packetsize = 1392

## Default started application on host
app = Desktop

## Play audio on host instead of streaming to client
localaudio = false

## Send quit app request to remote after quitting session
#quitappafter = false

## Disable all input processing (view-only mode)
#viewonly = false

## Enable QOS settings to optimize for internet or local network
## yes - optimize for WAN streaming
yes - optimize for LAN streaming
## auto (default) - decide automatically based on target IP address
#remote = auto

## Enable 5.1/7.1 surround sound
#surround = 5.1
 
Last edited by Botorama_Bama,

Site & Scene News

New Hot Discussed User Submitted