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, .wud or .wumad 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 and .wumad), 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`).
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` (default `~/.wiiu/titleKeys`).
It's possible to have to mount multiple versions of an installable title. In this case, all `.app` files are expected in the root, and a `tmd.[VERSION]` for each tmd of a version.
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` (default `~/.wiiu/titleKeys`).
## NUS installable format (tmd/h3/app) with multiple versions.
It's possible to have to mount multiple versions of an installable title. In this case, all content files are expected to have no extension in the root directory. A `tmd.[VERSION]` for each tmd of a version is expected.
Expected file layout:
```
- tmd.0
- tmd.16
- tmd.48
- 0000000X
- 0000000X.h3
- (cetk)
```
The `cetk` 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` (default `~/.wiiu/titleKeys`).