Difference between revisions of "Wiifuse"

From WiiBrew
Jump to: navigation, search
(added a WIP version. say hi to wiifuse_server)
(Undo revision 100662 by Anzorik (talk))
 
(26 intermediate revisions by 16 users not shown)
Line 1: Line 1:
wiifuse - coded by dhewg, [irc://irc.efnet.org/wiidev #wiidev efnet]
+
{{Infobox homebrew
 +
| title      = Wiifuse
 +
| type        = pc utility
 +
| author      = dhewg
 +
| version    = 0.2.0
 +
| download    = Media:Wiifuse-0.2.0.tgz
 +
| source      = included
 +
}}
  
:based on [http://multimedia.cx/gcfuse/ gcfuse] code by:
+
'''wiifuse''' allows you to mount a Gamecube or Wii DVD disc image as a read-only part of the file system on you computer. This allows users to browse the directory structure and read the files within.
:Copyright (C) 2006 Mike Melanson (mike at multimedia.cx)
 
:Copyright (C) 2005 Janusz Dziemidowicz (rraptorr at nails.eu.org)
 
  
*'''latest stable version: [[#v0.1.2|v0.1.2]]'''
+
In contrast to the Gamecube, Wii images have multiple partitions. These are encrypted and wiifuse supports on-the-fly decryption - provided you have the required 128bit AES key.
*'''current version: [[#v0.2.0-wip1|v0.2.0-wip1]]'''
 
  
==readme==
+
Further, wiifuse provides access to special data found on these discs. Among others, this includes the main executable and informational things like the game's name.
  
===about===
+
Starting with version v0.2.0, you can also remotely mount your Wii nand filesystem with [[Wiifuse server|wiifuse_server]] and a usbgecko adapter.
:wiifuse is a program that allows you to mount a gamecube or wii dvd disc image as a read-only part of the file system. this allows users to browse the directory structure and read the files within.
 
  
:in contrast to the gamecube, wii images do have multiple partitions. these are encrypted, and wiifuse supports on the fly decryption - provided you have the required 128bit AES key.
+
== Requirements ==
 +
*An operating system which is supported by [http://fuse.sourceforge.net/ FUSE],
 +
*FUSE 2.6.x (or higher) and
 +
*[http://openssl.org/ OpenSSL]
  
:further, wiifuse provides access to special data found on these disc's. among others, this includes the main executable and informational things like the game name.
+
== Build ==
 +
To build wiifuse, you will need a working compiler and the development packages for the required libraries; have a look at the [[#OS-Specific Notes|OS-specific notes]].
  
===requirements===
+
The archive includes a <tt>Makefile</tt>, so just run
:*an operating system which
+
<code>'''make'''</code>
:**is supported by [http://fuse.sourceforge.net/ FUSE]
 
:**supports POSIX compatible threads
 
:*FUSE 2.6.x or higher
 
:*[http://openssl.org/ openssl]
 
  
===build===
+
== Usage ==
:to build wiifuse, you will need a working compiler and the development packages for the required libraries, have a look at the [[#os specific notes|os specific notes]].
+
wiifuse v0.2.0
:the archive includes a <tt>Makefile</tt>, so just run
+
coded by dhewg, #wiidev efnet/blitzed
:<code>make</code>
+
 +
usage: ./wiifuse [-v] <image file> <mount point> [<FUSE options>]
 +
  or
 +
        ./wiifuse [-v] -i <identity> <tty device> <mount_point> [<FUSE options>]
  
===usage===
+
Hints:
:<code>./wiifuse <image_file> <mount_point> [<FUSE library options>]</code>
+
*Increase the verbose level with multiple '''-v''' arguments (up to three)
 +
*Append <code>-f</code> for debug messages (process won't daemonize).
 +
*Append <code>-o allow_other</code> to let other users access the mount point.
 +
*Append <code>-h</code> for common FUSE library options.
 +
*Use '''fusermount -u <mount_point>''' to unmount a previously mounted image.
  
:hints:
+
== Example ==
:*append <code>-f</code> for debug messages (process won't deamonize).
+
$ '''./wiifuse ~/zelda_tp.iso ~/wii_image -o allow_other'''
:*append <code>-o allow_other</code> to let other users access the mount point.
+
$ '''ls -l ~/wii_image'''
:*append <code>-h</code> for common FUSE library options.
+
total 0
:*use <code>fusermount -u <mount_point></code> to unmount a previously mounted image.
+
lrwxrwxrwx 1 dhewg 1 Mar 15  2007 data -> partition2
 +
dr-xr-xr-x 4 dhewg 0 Mar 15  2007 partition0
 +
dr-xr-xr-x 6 dhewg 0 Mar 15  2007 partition1
 +
dr-xr-xr-x 6 dhewg 0 Mar 15  2007 partition2
 +
lrwxrwxrwx 1 dhewg 1 Mar 15  2007 update -> partition1
 +
$ '''cat ~/wii_image/data/header/name'''
 +
The Legend of Zelda Twilight Princess
 +
$ '''mplayer ~/wii_image/data/fs/Movie/demo_movie98_00.thp'''
 +
$ '''fusermount -u ~/wii_image'''
  
===example===
+
== Troubleshooting ==
<code>
+
*Check if the FUSE kernel module is loaded:
:$ ./wiifuse ~/zelda_tp.iso ~/wii_image -o allow_other
+
**linux: <tt>lsmod | grep fuse</tt>
:$ ls -l ~/wii_image
+
**freebsd: <tt>kldstat | grep fuse</tt>
</code>
+
**OS X: <tt>kextstat | grep fuse</tt>
<tt>
+
*Verify your key file, the MD5-sum of the 16 byte file (without line feed) currently is <tt>8d1a2ebcd82a3469b77facf15d9c8e50</tt>.
:total 0
 
:lrwxrwxrwx 1 dhewg 1 Mar 15  2007 data -> partition2
 
:dr-xr-xr-x 4 dhewg 0 Mar 15  2007 partition0
 
:dr-xr-xr-x 6 dhewg 0 Mar 15  2007 partition1
 
:dr-xr-xr-x 6 dhewg 0 Mar 15  2007 partition2
 
:lrwxrwxrwx 1 dhewg 1 Mar 15  2007 update -> partition1
 
</tt>
 
<code>
 
:$ cat ~/wii_image/data/header/name
 
</code>
 
<tt>
 
:The Legend of Zelda Twilight Princess
 
</tt>
 
<code>
 
:$ mplayer ~/wii_image/data/fs/Movie/demo_movie98_00.thp
 
:$ fusermount -u ~/wii_image
 
</code>
 
  
===troubleshooting===
+
== OS-Specific Notes ==
:*check if the FUSE kernel module is loaded
 
:**linux: <code>lsmod | grep fuse</code>
 
:**freebsd: <code>kldstat | grep fuse</code>
 
:**os x: <code>kextstat | grep fuse</code>
 
:*verify your key file, the '''md5sum''' of the 16 byte file (without line feed) currently is <tt>8d1a2ebcd82a3469b77facf15d9c8e50</tt>.
 
:*append <code>-d 2>&1 | tee ~/wiifuse.log</code> to the wiifuse cmdline. this will create a logfile called <tt>wiifuse.log</tt> in your home directory, open it in your favorite text editor to get an idea of whats going wrong.
 
:if you still can't get it working, copy and paste the content of that logfile to something like [http://rafb.net/paste/ rafb] and /msg me the resulting link.
 
  
==os specific notes==
+
=== Debian / Ubuntu ===
 +
To install the binaries provided below, do the following:
  
===debian / ubuntu===
+
<tt>dpkg -i wiifuse_0.2.0-wip1-1_i386.deb</tt>
:to install the required packages:
 
:<code>apt-get install build-essential fuse-utils libfuse-dev libssl-dev</code>
 
  
:to mount an image without root privileges, add the user to the <code>fuse</code> group:
+
To build wiifuse you need to fetch these required packages:
:<code>adduser dhewg fuse</code>
 
  
===gentoo===
+
<tt>apt-get install build-essential fuse-utils libfuse-dev libssl-dev</tt>
:*<code>emerge sys-fs/fuse</code>
 
  
===freebsd===
+
To mount an image without root privileges, add the user to the <code>fuse</code> group:
:install the required ports:
 
:*sysutils/fusefs-kmod
 
:*sysutils/fusefs-libs
 
  
:[http://fuse4bsd.creo.hu/ further doc's]
+
<tt>adduser dhewg fuse</tt>
  
===os x===
+
=== Gentoo ===
:required software:
+
<tt>emerge sys-fs/fuse</tt>
:*[http://code.google.com/p/macfuse/ macfuse]
 
:*[http://developer.apple.com/tools/xcode/ Xcode]
 
  
==download==
+
=== Arch Linux ===
 +
[http://aur.archlinux.org/packages.php?ID=28747 @aur]
  
===v0.2.0-wip1===
+
=== FreeBSD ===
:[[media:Wiifuse-0.2.0-wip1|wiifuse-0.2.0-wip1]]
+
Install the required ports:
 +
*sysutils/fusefs-kmod
 +
*sysutils/fusefs-libs
  
===v0.1.2===
+
Further docs can be found [http://fuse4bsd.creo.hu/ here].
:[[media:Wiifuse-0.1.2.tgz|wiifuse-0.1.2.tgz]]
 
  
===v0.1.1===
+
=== OS X ===
:[[media:Wiifuse-0.1.1.tgz|wiifuse-0.1.1.tgz]]
+
Required software:
 +
*[http://code.google.com/p/macfuse/ macfuse]
 +
*[http://developer.apple.com/tools/xcode/ Xcode]
  
==changelog==
+
*[http://mackeeper.zeobit.com/uninstall-macfuse Uninstall Macfuse]
  
:*v0.2.0-wip1
+
== Download ==
::*new client/server mode. requires an usb gecko and [[Wiifuse_server|wiifuse server]] running on a gamecube or wii in gc mode - for now ;)
 
::*new metadata: title id symlinks, tmd infos
 
  
:*v0.1.2
+
=== v0.2.0 ===
::*added more [[Wiidisc_IDs|disc id's]]
+
[[Media:Wiifuse-0.2.0.tgz|wiifuse-0.2.0.tgz]]
::*support for virtual console partitions (found 14 vc games on brawl)
 
::*stat compliant - `du` works now
 
::*statvfs compliant - `df` works now
 
::*minor cleanups and fixes
 
  
:*v0.1.1
+
=== v0.2.0-wip1 ===
::*fixed some serious u64 offset bugs
+
[[Media:Wiifuse-0.2.0-wip1.tgz|wiifuse-0.2.0-wip1.tgz]]
::*corrected the main.dol size calculation
+
 
::*some easy partition validation
+
Binary for Debian unstable (and probably latest Ubuntu as well):
::*support for symlinks
+
:[[Media:Wiifuse_0.2.0-wip1-1_i386.tgz|wiifuse_0.2.0-wip1-1_i386.tgz]]
::*cleaned up and extended the available metadata
+
 
 +
=== v0.1.2 ===
 +
[[Media:Wiifuse-0.1.2.tgz|wiifuse-0.1.2.tgz]]
 +
 
 +
=== v0.1.1 ===
 +
[[Media:Wiifuse-0.1.1.tgz|wiifuse-0.1.1.tgz]]
 +
 
 +
 
 +
== Changelog ==
 +
 
 +
*v0.2.0
 +
:*completely revamped wiifuse_server, check [[Wiifuse server|its page]] for details
 +
 
 +
*v0.2.0-wip1
 +
:*new client/server mode. requires an usb gecko and [[wiifuse server]] running on a gamecube or wii in gc mode - for now ;)
 +
:*new metadata: title id symlinks, tmd infos
 +
 
 +
*v0.1.2
 +
:*added more [[Wiidisc IDs|disc id's]]
 +
:*support for virtual console partitions (found 14 vc games on brawl)
 +
:*stat compliant - `du` works now
 +
:*statvfs compliant - `df` works now
 +
:*minor cleanups and fixes
 +
 
 +
*v0.1.1
 +
:*fixed some serious u64 offset bugs
 +
:*corrected the main.dol size calculation
 +
:*some easy partition validation
 +
:*support for symlinks
 +
:*cleaned up and extended the available metadata
 +
 
 +
== Credits ==
 +
 
 +
* Based on [http://multimedia.cx/gcfuse/ gcfuse] code
 +
* Copyright (C) 2006 Mike Melanson (mike at multimedia.cx)
 +
* Copyright (C) 2005 Janusz Dziemidowicz (rraptorr at nails.eu.org)

Latest revision as of 12:37, 28 August 2012

Wiifuse
General
Author(s)dhewg
TypePC utility
Version0.2.0
Links
Download
Source Included


wiifuse allows you to mount a Gamecube or Wii DVD disc image as a read-only part of the file system on you computer. This allows users to browse the directory structure and read the files within.

In contrast to the Gamecube, Wii images have multiple partitions. These are encrypted and wiifuse supports on-the-fly decryption - provided you have the required 128bit AES key.

Further, wiifuse provides access to special data found on these discs. Among others, this includes the main executable and informational things like the game's name.

Starting with version v0.2.0, you can also remotely mount your Wii nand filesystem with wiifuse_server and a usbgecko adapter.

Requirements

  • An operating system which is supported by FUSE,
  • FUSE 2.6.x (or higher) and
  • OpenSSL

Build

To build wiifuse, you will need a working compiler and the development packages for the required libraries; have a look at the OS-specific notes.

The archive includes a Makefile, so just run make

Usage

wiifuse v0.2.0
coded by dhewg, #wiidev efnet/blitzed

usage: ./wiifuse [-v] <image file> <mount point> [<FUSE options>]
  or
       ./wiifuse [-v] -i <identity> <tty device> <mount_point> [<FUSE options>]

Hints:

  • Increase the verbose level with multiple -v arguments (up to three)
  • Append -f for debug messages (process won't daemonize).
  • Append -o allow_other to let other users access the mount point.
  • Append -h for common FUSE library options.
  • Use fusermount -u <mount_point> to unmount a previously mounted image.

Example

$ ./wiifuse ~/zelda_tp.iso ~/wii_image -o allow_other
$ ls -l ~/wii_image
total 0
lrwxrwxrwx 1 dhewg 1 Mar 15  2007 data -> partition2
dr-xr-xr-x 4 dhewg 0 Mar 15  2007 partition0
dr-xr-xr-x 6 dhewg 0 Mar 15  2007 partition1
dr-xr-xr-x 6 dhewg 0 Mar 15  2007 partition2
lrwxrwxrwx 1 dhewg 1 Mar 15  2007 update -> partition1
$ cat ~/wii_image/data/header/name
The Legend of Zelda Twilight Princess
$ mplayer ~/wii_image/data/fs/Movie/demo_movie98_00.thp
$ fusermount -u ~/wii_image

Troubleshooting

  • Check if the FUSE kernel module is loaded:
    • linux: lsmod | grep fuse
    • freebsd: kldstat | grep fuse
    • OS X: kextstat | grep fuse
  • Verify your key file, the MD5-sum of the 16 byte file (without line feed) currently is 8d1a2ebcd82a3469b77facf15d9c8e50.

OS-Specific Notes

Debian / Ubuntu

To install the binaries provided below, do the following:

dpkg -i wiifuse_0.2.0-wip1-1_i386.deb

To build wiifuse you need to fetch these required packages:

apt-get install build-essential fuse-utils libfuse-dev libssl-dev

To mount an image without root privileges, add the user to the fuse group:

adduser dhewg fuse

Gentoo

emerge sys-fs/fuse

Arch Linux

@aur

FreeBSD

Install the required ports:

  • sysutils/fusefs-kmod
  • sysutils/fusefs-libs

Further docs can be found here.

OS X

Required software:

Download

v0.2.0

wiifuse-0.2.0.tgz

v0.2.0-wip1

wiifuse-0.2.0-wip1.tgz

Binary for Debian unstable (and probably latest Ubuntu as well):

wiifuse_0.2.0-wip1-1_i386.tgz

v0.1.2

wiifuse-0.1.2.tgz

v0.1.1

wiifuse-0.1.1.tgz


Changelog

  • v0.2.0
  • completely revamped wiifuse_server, check its page for details
  • v0.2.0-wip1
  • new client/server mode. requires an usb gecko and wiifuse server running on a gamecube or wii in gc mode - for now ;)
  • new metadata: title id symlinks, tmd infos
  • v0.1.2
  • added more disc id's
  • support for virtual console partitions (found 14 vc games on brawl)
  • stat compliant - `du` works now
  • statvfs compliant - `df` works now
  • minor cleanups and fixes
  • v0.1.1
  • fixed some serious u64 offset bugs
  • corrected the main.dol size calculation
  • some easy partition validation
  • support for symlinks
  • cleaned up and extended the available metadata

Credits

  • Based on gcfuse code
  • Copyright (C) 2006 Mike Melanson (mike at multimedia.cx)
  • Copyright (C) 2005 Janusz Dziemidowicz (rraptorr at nails.eu.org)