fuse-wiiu is an easy way to extract data from Wii U titles in various formats.
It's compatible to:
- Title in the installable format (.tmd, .app, .h3 etc.)
- Multiple versions of a title in the installable format (.tmd, .app, .h3 etc.)
- Wii U disc images (WUD and WUX), including kiosk discs
fuse-wiiu requires Java 8 and fuse implementation thats compatible to you OS and CPU architecture.
# Setup
Before fuse-wiiu can be used the following steps are required.
## Fuse
### Linux
[`libfuse`](https://github.com/libfuse/libfuse) needs to be installed.
**Ubuntu**
```bash
sudo apt-get install libfuse-dev
```
### MacOS
[`osxfuse`](https://osxfuse.github.io) needs to be installed.
```bash
brew cask install osxfuse
```
### Windows
[`winfsp`](https://github.com/billziss-gh/winfsp) needs to be installed.
```batch
choco install winfsp
```
## Keys (optional)
To decrypt the titles, some keys are required.
The retail common key is expected in either `~/.wiiu/common.key` or `./common.key` in binary. It's also possible to provide it via an command line argument `-commonkey` with the key as hex-string.
The dev common key optional for most titles but is expected in either `~/.wiiu/devcommon.key` or `./devcommon.key` in binary. It's also possible to provide it via an command line argument `-devcommonkey` with the key as hex-string.
It's possible to provide the disc keys (for decrypting WUD/WUX) or titles keys (to decrypt tmd+app) in a seperate folder. This step is optional
Disc keys are expected in `~/.wiiu/discKeys`, and should have the same basename as the WUD/WUX. Example: If a `mygame.wux` is found, a `mygame.key` will be searched in folder next the `.wux`. If it doesn't exist, it'll try to load `~/.wiiu/discKeys/mygame.key`. The `.key` is expected to contain the disc key in binary.
If a installable title doesn't provide a `title.tik`, it's possible to provide the needed title key in the folder `~/.wiiu/titleKeys`. Corresponding to the title id, a `TITLEID.key` is expected which contains the key in binary. Example: if the title `000500101004B100` doesn't have a `title.tik`, wiiu-fuse will try to load a `000500101004B100.key` from `~/.wiiu/titleKeys`.
More information can be found in "Supported formats".
# Usage
fuse-wiiu will be started from the command line and requires Java 8 and a fuse implementation (see Setup).
## Input path
The most imported argument in the `-in` argument which defines the input path. In most cases this will be a folder, but it's also possible to choose a WUD/WUX directly. If a folder was chosen as input, it will be mirrored to the mounpath, but normal files be hidden. Directories will still be as expected, and whenever a support titles can be mounted, it will be emulated as directory with the prefix `[EMULATED] `. More information about the behavious on different fileformats can be found on "Supported formats".
-`-commonkey [KEY AS HEX STRING]` The Wii U retail common key. If not provided, the key will be tried to be read from ~/.wiiu/common.key` or `./common.key`. The argument has priority.
-`-devcommonkey [KEY AS HEX STRING]` The Wii U dev common key. If not provided, the key will be tried to be read from ~/.wiiu/devcommon.key` or `./devcommon.key`. The argument has priority.
-`-disckeypath [path]` Override the path where disc keys will be tried to be loaded from.
-`-titlekeypath [path]` Override the path where titles keys will be tried to be loaded from.
## Forcing the UTF-8 charset to the JVM
`java "-Dfile.encoding=UTF-8" -jar wiiu-fuse.jar` or java -Dfile.encoding=UTF-8 -jar wiiu-fuse.jar`.
# Supported formats
It's possible to use any directory as input, `fuse-wiiu` will scan will useable formats and mount them on request. If a directory wasn't used for ~5 minutes, it will be unmounted, but automatically remounted on the next access.
If a supported format is found and successfully mounted, a support starting with `[EMULATED] ` will be emulated, which will give you access to the files. The actual content and file layout may differ from format to format.
Images of Wii U discs are saved `.wud` (or `.wux` if compressed, or `game_partX.wud` when dumped on FAT32). Every .wux or .wud will be emulated as up to three different directories (for image names `game.wux`).
- This directory is the "normal" representation of a Wii U disc image. It'll have one subfolder for each partition. The `GM`-Partitions will be mounted and decrypted directly in the common `code, content and meta` format. The `SI` contain the ticket and tmd for `GM` partitions. All other partitions give you files in the "installable" format (tmd,app,tik).
- [EMULATED] [EXTRA] game.wux
- In this directory you can find some extra data (or data in a different presentation) of the disc. This includes:
- The `GM` partitions in the "installable" format. (Folders with the prefix `[ENCRYPTED] `)
- Mounted and decrypted titles from all partitions. (Folder with the prefix `[DECRYPTED] [PARTITIONNAME]`)
- This includes titles from the non-`GM` partitions (like updates), and installable titles from the decrypted `GM` partitions (titles from kiosk discs).
For all discs (except kiosk discs), a file containing the disc key is required. This has be either in a `.key` in the same folder as the wux/wud or in `~/.wiiu/disckeypath` (with the same basename e.g `game.wux` -> `game.key`).
Multiple WUD/WUX in the same directory are possible, they won't be mounted until you open them.
## Installable format (tmd/h3/app)
Supports the
Expected file layout:
```
- title.tmd
- 0000000X.app
- 0000000X.h3
- (title.tik)
```
The `title.tik` is optional. If no ticket was found, a file `[titleID].key` (where `[titleID]` is the titleID of the .tmd)containing the key in binary (16 bytes) is expected in `~/.wiiu/titlekeypath`.
## Extended installable format (tmd/h3/app) with multiple versions.
It's possible to have to mount multiple versions of a installble title. In this case, all `.app` files are expected in the root, and a `title.tmd` for each version inside a folder `v[version]` where `[version]` is the version number.
Expected file layout:
```
v0
- title.tmd
v16
- title.tmd
v48
- title.tmd
- 0000000X.app
- 0000000X.h3
- (title.tik)
```
The `title.tik` is optional. If no ticket was found, a file `[titleID].key` (where `[titleID]` is the titleID of the .tmd)containing the key in binary (16 bytes) is expected in `~/.wiiu/titlekeypath`.