jmtpfs
Mount Android devices using MTP
TLDR
Mount an MTP device to a directory
Set mount options
List available MTP devices
If multiple devices are present, mount a specific device
Unmount MTP device
SYNOPSIS
jmtpfs [options] <mountpoint>
jmtpfs --list
jmtpfs --help
jmtpfs --version
PARAMETERS
--list, -l
Lists all available MTP devices and their respective USB bus and device numbers.
--device <busnum>,<devnum>, -d <busnum>,<devnum>
Specifies a particular MTP device to mount using its USB bus and device numbers. These can be found via --list.
--help, -h
Displays help information about the command and its options, then exits.
--version, -V
Prints the version information of jmtpfs and exits.
--verbose, -v
Enables verbose output, which can be helpful for debugging connection or transfer issues.
--single, -s
Mounts only the first detected storage unit on the MTP device, useful for devices with multiple internal or external storage options.
-o <fuse_option>
Passes specific options directly to the FUSE mount command (e.g., allow_other to permit other users to access the mount, ro for read-only mount, uid, gid).
DESCRIPTION
jmtpfs is a FUSE (Filesystem in Userspace) driver designed to mount Media Transfer Protocol (MTP) devices as standard Linux filesystems. MTP is a common protocol for data transfer on devices like Android smartphones, tablets, and digital cameras.
This command simplifies accessing and managing files on these devices by allowing them to be treated as regular directories. Once mounted, users can leverage standard command-line utilities such as ls, cp, mv, rm, and rsync to interact with files directly on the MTP device. It uses the libmtp library for robust device communication, offering a lightweight and flexible alternative to other MTP access methods, especially for command-line users or scripting.
CAVEATS
Unmounting Safely: Always use umount on the jmtpfs mount point before disconnecting the device to prevent data corruption.
Permissions: Depending on your system and USB device access rules, jmtpfs might require sudo or appropriate udev rules for full access.
MTP Quirks: The MTP protocol can be finicky. Some devices or specific operations (like direct file renaming/moving between directories) might exhibit unexpected behavior or be slower than expected.
Performance: MTP transfer speeds can be slower compared to direct USB mass storage access.
No Linux-specific features: MTP does not support symbolic links, hard links, or granular file permissions (all files will appear executable).
DEPENDENCIES
jmtpfs relies on the libmtp library for MTP protocol communication and libfuse for integrating with the Linux kernel's FUSE framework. Ensure these libraries are installed on your system for jmtpfs to function correctly.
MOUNT POINT
The directory specified as the <mountpoint> must be an existing and empty directory that the user executing jmtpfs has write permissions to.
TROUBLESHOOTING
If your MTP device isn't detected or isn't mounting, ensure it's set to 'File Transfer' or 'MTP' mode on the device itself. Use jmtpfs --list to check for device detection. Review dmesg or lsusb output for any underlying USB connection issues.
HISTORY
jmtpfs was developed as a more robust and user-friendly alternative to earlier MTP FUSE filesystems, notably mtpfs. It leverages the underlying libmtp library for communication with devices, which provides a consistent and widely supported interface. Being open-source, it's widely adopted and available in most Linux distribution repositories, offering a stable solution for MTP device access from the command line.
SEE ALSO
mount(8), umount(8), fusermount(1), mtp-connect(1), adb(1)