Skip to content

fabienmillet/WiiFin

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:

./build.sh

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.

About

Jellyfin Client for Wii

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Languages