Unofficial homebrew for Nintendo Wii U

Spotify Connect
on Wii U

Stream from any Spotify app directly to your console — album art, real-time controls, Miiverse posts and all.

Requires Spotify Premium · Runs under Aroma homebrew

Features

🎵

Spotify Connect

Select "Wii U" as a playback device from any Spotify app. Control music from your phone, PC, or directly on the console.

📋

Full Playlist Context

Skip and auto-advance across entire playlists and albums — not just the visible window.

🔀

Shuffle & Repeat

Toggle on the console or from any connected Spotify app. State syncs both ways.

🖼️

Album Art & Track Info

Full-screen album art and track metadata fetched automatically for every track.

Audio Crystalizer

Harmonic-enhancement effect with adjustable strength for richer sound.

📊

Spectrum Visualizer

Real-time frequency visualizer displayed alongside the album art.

🎮

Multi-Controller

GamePad, Wii Remote, and Pro Controller all supported out of the box.

👆

Touchscreen

Tap album art to play/pause, swipe left or right to skip, drag the progress bar to seek.

🌸

Roséverse Integration

Browse Miiverse-style posts for the current track via Roséverse (nn_olv).

📱

QR Login

Scan a QR code on screen with your phone to log in — no computer required. Credentials are saved automatically so future launches connect instantly.

🔄

Auto-Reconnect

Recovers silently from network drops and AP blips. Playback resumes automatically from where it left off.

🧹

Cache-Sweep Plugin

Optional Aroma plugin that cleans up stale audio cache at boot and on a configurable interval — keeps your SD card tidy automatically.

Setup

1

Download the bundle

Grab the archive for your platform from the latest bundle release:

Windowsspotify-wiiu-setup-windows-x64.zip
Linuxspotify-wiiu-setup-linux-x64.tar.gz
macOS (Apple Silicon)spotify-wiiu-setup-macos-arm64.tar.gz
2

Run the setup tool

Extract the archive and run:

# Linux / macOS
chmod +x librespot spotify-wiiu-setup
./spotify-wiiu-setup

# Windows
spotify-wiiu-setup.exe

The tool authenticates with Spotify, converts credentials, and asks whether to download the app and the cache-sweep plugin. All files are saved to an sd-files/ folder next to the setup tool — if your SD card is mounted and Aroma is installed on it, the tool copies everything automatically. If Aroma is not detected it skips the copy and prints the manual paths instead.

3

Copy to SD card

The setup tool handles this automatically. If you skipped it, copy from sd-files/ manually:

sd-files/spotify_saved_creds.binSD:/spotify_saved_creds.bin
sd-files/spotify-wiiu.wuhbSD:/wiiu/apps/spotify-wiiu/spotify-wiiu.wuhb
sd-files/spotify-cache-sweep.wpsSD:/wiiu/environments/<env>/plugins/spotify-cache-sweep.wps
4

Install the cache-sweep plugin (optional)

The setup tool installs this automatically. To install manually, copy spotify-cache-sweep.wps to:

SD:/wiiu/environments/<aroma-env>/plugins/

Once installed, configure the sweep interval from the Aroma Config Menu (L + + SELECT).

5

Launch

Insert the SD card, power on the Wii U, open the Aroma Homebrew Launcher, and select Spotify Wii U. If credentials are on the SD card the app connects automatically — otherwise a QR code appears to log in (credentials are saved for next time).

1

Copy the app to your SD card

Download spotify-wiiu.wuhb from the latest release and copy it to:

SD:/wiiu/apps/spotify-wiiu/spotify-wiiu.wuhb

Skip this step if the app is already installed.

2

Launch the app

Insert the SD card, power on the Wii U, open the Aroma Homebrew Launcher, and select Spotify Wii U. A QR code appears on screen.

3

Scan & approve

Scan the QR code with your phone's camera or Spotify app (Settings → Devices → Scan to connect), then approve the login on your phone.

4

Done — credentials saved automatically

The app connects and writes credentials to SD:/spotify_saved_creds.bin. Future launches skip the QR code entirely and connect straight away.

1

Get librespot

Download a prebuilt binary from the librespot-tools release, or install it yourself:

# Arch Linux
sudo pacman -S librespot

# Debian / Ubuntu
sudo apt install librespot

# Any platform via Cargo
cargo install librespot
2

Authenticate once

# Windows
librespot.exe --name "wii-u-setup" --cache %TEMP%\librespot-cache

# Linux / macOS
librespot --name "wii-u-setup" --cache /tmp/librespot-cache

Open any Spotify app, select "wii-u-setup" as your playback device. Wait for Authenticated as ... then press Ctrl+C.

3

Convert credentials

# Windows
python tools\make_creds.py %TEMP%\librespot-cache\credentials.json

# Linux / macOS
python3 tools/make_creds.py /tmp/librespot-cache/credentials.json

This writes spotify_saved_creds.bin in the current directory.

4

Copy to SD card & launch

Copy spotify_saved_creds.bin to the root of your Wii U SD card, then launch from the Aroma Homebrew Launcher.

Troubleshooting / Reporting a Bug

Every run creates a fresh log at SD:/spotify_log.txt. The file is overwritten on each launch and flushed after every line, so it captures everything up to a crash.

To collect it: leave the SD card in the Wii U until the app exits or crashes, then copy spotify_log.txt from the root of the SD card to your PC and paste it into the bug report.

Open a GitHub issue — the bug report template will guide you through the rest.

Controls

GamePad

+ / Volume +5 / −5
R / LNext / Previous track
ZR / ZLSeek +5 s / −5 s
APlay / Pause
XToggle shuffle
YToggle repeat
/ Crystalizer on / off
/ Crystalizer strength
BToggle controls overlay
Stick ROpen post in Roséverse
Stick LPost to Roséverse

GamePad Touchscreen

Tap album artPlay / Pause
Swipe left / rightNext / Previous track
Drag progress barSeek

Pro Controller

+ / Volume +5 / −5
R / LNext / Previous track
ZR / ZLSeek +5 s / −5 s
APlay / Pause
XToggle shuffle
YToggle repeat
/ Crystalizer on / off
/ Crystalizer strength
BToggle controls overlay
Stick ROpen post in Roséverse
Stick LPost to Roséverse

Wii Remote

+ / Volume +5 / −5
/ Next / Previous track
/ Seek +5 s / −5 s
APlay / Pause
1Toggle shuffle
2Toggle repeat
BToggle controls overlay

Power User Docs

Building from source

Prerequisites:

git clone https://github.com/Happynico7504/spotify-wiiu
cd spotify-wiiu
make                         # spotify-wiiu.wuhb
make -C plugins/cache-sweep  # spotify-cache-sweep.wps

Project layout

src/
  connect/   AP handshake, Spirc, audio, player
  discovery/ Zeroconf / mDNS
  ui/        SDL2 display, visualiser, font
  spotify/   Shared utilities
  olv/       Roséverse (nn_olv) integration
plugins/
  cache-sweep/  Aroma WUPS cache GC plugin
vendor/      cJSON, stb_image
tools/
  setup/     Native setup tool (Rust)
  setup.py   Python equivalent
  make_creds.py  Credential converter
meta/        Wii U app metadata
content/     Bundled assets (font)
.github/
  Dockerfile      Builder image (devkitPPC + WUPS + Rust)
  workflows/      CI pipelines

CI / Docker

A pre-baked builder image is published to GHCR and used by all Linux CI jobs:

ghcr.io/happynico7504/spotify-wiiu-builder:latest

Contains devkitPPC, WUT, all Wii U portlibs, and a native Rust toolchain with the x86_64-unknown-linux-musl target for static setup-tool builds.

Rebuild the image manually via Actions → Build builder image → Run workflow.

Credential format

The binary format read by the homebrew:

[1 byte]  auth_type
           0 = user/pass
           1 = stored credentials ← normal
           3 = Spotify token
[N bytes] raw auth blob (base64-decoded)

Both the Rust setup tool and tools/make_creds.py handle old and new librespot JSON formats.

Roséverse (Miiverse)

Uses Nintendo's nn_olv.rpl loaded via OSDynLoad. Posts are scoped to community ID 157 with a track-ID search key so each song shows its own posts.

Posts are always visible and auto-advance based on track timestamps (or every 5 s for untagged posts). Press Stick R to open the current post in the Roséverse overlay. Post with Stick L — pre-filled with the current track name and artist.

Releases

latest (v*)Wii U .wuhb package
bundle-latestSetup tool + librespot bundles
librespot-toolsStandalone librespot binaries