ifuse
Mount iOS device filesystems
SYNOPSIS
ifuse [OPTIONS] MOUNTPOINT
PARAMETERS
-h, --help
Print help information.
-V, --version
Print version (libimobiledevice + ifuse).
-l, --list
List connected iOS devices.
-u UDID, --udid UDID
Mount specific device by UDID.
--documents
Mount Documents directory only.
--media
Mount Media (Photos/Music) directory.
--afc2
Use AFC2 service (newer iOS devices).
--afc-client-pid PID
Specify AFC client process ID.
--root-prefix PREFIX
Prefix all paths with PREFIX.
-o opt,[opt...]
FUSE mount options (e.g., -o allow_other).
DESCRIPTION
ifuse is a FUSE-based tool for mounting iOS device filesystems (iPhone, iPad, iPod Touch) on Linux, providing seamless access to files and directories.
It utilizes the Apple File Conduit (AFC or AFC2) protocol through libimobiledevice and usbmuxd, allowing users to browse, read, and write files as if they were on a local drive.
Usage workflow: Connect USB, unlock device, trust computer, create mountpoint (e.g., mkdir ~/iPhone), run ifuse ~/iPhone. Access via file managers or shell.
Supports targeted mounts like Documents or Media folders. iOS restrictions sandbox access; no root filesystem without jailbreak. Read/write varies by app sandbox.
Requirements: libimobiledevice-utils, libfuse3/2, usbmuxd running, device unlocked/trusted.
Ideal for backups, media transfer, app data extraction on desktop Linux. Handles multiple devices via UDID.
CAVEATS
Requires fuse group or sudo for non-root mounts.
iOS sandbox limits access; no full root FS.
Device must unlock/trust host.
Newer iOS (17+) has reduced AFC.
Unmount with fusermount -u or umount.
Debug via FUSE -o -d.
EXAMPLE
mkdir ~/iPhone
ifuse ~/iPhone
Browse files, then fusermount -u ~/iPhone.
TROUBLESHOOTING
List devices: idevice_id -l.
Trust: iOS Settings > General > VPN & Device Mgmt.
Restart usbmuxd if no detection.
HISTORY
Part of libimobiledevice project (started 2007 for open-source iOS support). ifuse added ~2011, evolved for AFC2/iOS 10+ compatibility.
SEE ALSO
idevice_id(1), usbmuxd(8), fusermount(1), mount.fuse(8)


