Linux and macOS

SimpleXisoDrive mounts Xbox ISO/XISO/CISO/CHD images and ZArchive files as read-only directories on Linux and macOS using FUSE 3 through the LibFuseSharp mount library.


Prerequisites

Platform Requirement
Both .NET 10.0 Runtime (the base runtime).
Linux FUSE 3: the libfuse3 library and the fuse3 tools (fusermount3).
macOS macFUSE. macOS 15.4+ can use its FSKit backend, which needs no kernel extension.

Install FUSE 3 with your distribution’s package manager:

# Debian / Ubuntu
sudo apt install libfuse3-3 fuse3

# Fedora
sudo dnf install fuse3 fuse3-libs

# Arch
sudo pacman -S fuse3

Verify that the kernel device exists:

ls -l /dev/fuse

If it is missing, load the module with sudo modprobe fuse.

The application searches for the FUSE library in the standard locations. Set LIBFUSESHARP_LIBRARY to an explicit path if it lives somewhere else (the old SIMPLEXISODRIVE_FUSE_LIBRARY name is still accepted).


Usage

SimpleXisoDrive <image-file> [mount-path] [options]

Example:

mkdir -p ~/mnt/halo
SimpleXisoDrive ~/Games/Halo.iso ~/mnt/halo
ls ~/mnt/halo

To mount an Xbox ISO stored as CHD and expose the decompressed disc image for an emulator:

SimpleXisoDrive ~/Games/Halo.chd ~/mnt/halo --image-iso
# The emulator can open ~/mnt/halo/image.iso

To mount a ZArchive and expose the synthesized disc image for an emulator:

SimpleXisoDrive ~/Games/Halo.zar ~/mnt/halo --image-iso
# The emulator can open ~/mnt/halo/image.iso

Unmounting

Use any of the following:

SIGTERM and SIGHUP also trigger a clean unmount.


Platform notes


Troubleshooting

Symptom Cause / fix
libfuse3 was not found Install the FUSE 3 package for your distribution (see above).
/dev/fuse was not found Load the FUSE kernel module: sudo modprobe fuse.
fusermount3 was not found on PATH Install the fuse3 tools package.
macFUSE (libfuse3) was not found Install macFUSE from https://macfuse.io and allow the system extension.
Mount succeeds but the directory is empty The image may be invalid; check the console/log output.
fuse: mountpoint is not empty Use an empty directory as the mount point.

See also Troubleshooting.