GitHub - fabienmillet/WiiFin: Jellyfin Client for Wii

3 min read Original article ↗

WiiFin logo
Jellyfin client for the Nintendo Wii

English   Français   Deutsch   Español   Italiano


WiiFin is an experimental homebrew client for Jellyfin, built specifically for the Nintendo Wii. It provides a lightweight, console-friendly media browsing and playback experience, written in C++ using GRRLIB and MPlayer CE.


⚠️ Project Status

🚧 Experimental – functional but still under active development. Expect rough edges on real hardware.

✅ What works:

  • Authentication: login with username/password or via QuickConnect (approve on another device)
  • Saved profiles: multiple accounts stored securely (access token only, no password stored)
  • Library browsing: movies, TV shows, music libraries with cover art loaded from the server
  • Detail view: synopsis, rating, genres, cast, director, audio/subtitle track selection
  • Continue Watching and Next Up rows
  • TV shows: season and episode navigation
  • Video playback: server-side transcoding streamed through the integrated MPlayer CE engine
  • Music playback: audio libraries, album/track navigation
  • Player overlay: seek bar, volume control, next/prev episode, audio & subtitle track switching, intro skip
  • Playback reporting: progress sent back to the Jellyfin server (resume where you left off)
  • HTTPS: TLS connections via mbedTLS (self-signed certificates supported)
  • Wiimote IR pointer and virtual on-screen keyboard
  • Background music on menus
  • Ships as a ready-to-use .dol and installable .wad (Wii / vWii)

⚠️ Known limitations:

  • Direct-play is not supported; all video is transcoded by the server
  • No 5.1 multi-channel audio (stereo only via transcoding)
  • Subtitle rendering relies on the server embedding them into the video stream

🔧 Build Instructions

Requirements:

  • devkitPro with devkitPPC, libogc, and wii-dev portlibs
  • Graphics: GRRLIB, libpngu, freetype, libjpeg
  • mbedTLS (bundled under libs/, cross-compiled automatically by the CI)
  • Optional: MPlayer CE compiled as libmplayer.a — required for video playback. See MPLAYER_CE_BUILD.md for instructions. Without it, WiiFin still compiles but video playback is unavailable.

Building:

Running:

On Dolphin Emulator:

dolphin-emu -e WiiFin.dol

On real Wii hardware: copy WiiFin.dol to SD:/apps/WiiFin/boot.dol, or install WiiFin.wad using a WAD manager (works on vWii too).


📁 Project Structure

WiiFin/
├── source/
│   ├── core/        # App lifecycle, background music, utilities
│   ├── input/       # Wiimote + USB keyboard input
│   ├── jellyfin/    # Jellyfin HTTP API client (HTTPS via mbedTLS)
│   ├── player/      # MPlayer CE integration, player overlay HUD
│   └── ui/          # All views: Connect, Library, Profile, Settings
├── data/            # PNG/TTF graphical assets
├── libs/            # Bundled mbedTLS
├── tools/           # WAD packager, banner generator
├── Makefile         # devkitPro-compatible build script
└── apps/WiiFin/     # Homebrew Channel metadata

🚀 Roadmap

  • Sort/filter items (by year, genre, rating)
  • Mark items as favorites from the Wii
  • Multiple UI color themes

📸 Screenshots

WiiFin Menu Screenshot
WiiFin running in Dolphin Emulator


🤝 Contributing

WiiFin is open to pull requests, bug reports, and suggestions.

Discord Badge

📜 License

This project is licensed under the GPLv3. See the LICENSE file for more details.