Picture Transfer Protocol (PTP) and Media Transfer Protocol (MTP) on Linux

This topic was published by and viewed 3363 times since "". The last page revision was "".

Viewing 1 post (of 1 total)
  • Author

  • DevynCJohnson
    • Topics - 437
    • @devyncjohnson

    Media Transfer Protocol (MTP) is a commonly used method for transferring files between computers and many portable devices. Learning the basics of MTP may help users understand MTP-devices more clearly. Also, it may help some people to know a little about a similar protocol called Picture Transfer Protocol (PTP).


    Media Transfer Protocol (MTP) is an extension of Picture Transfer Protocol (PTP). PTP is used to download pictures from digital cameras. With additional features, the protocol becomes MTP which can transfer any kind of file to and from many portable devices such as iPods, Android phones, MP3 players, PDAs (Personal Digital Assistants), etc. MTP works on USB, which is a commonly used connection method between computers and Android phones.

    Android MTP Notification
    Android MTP Notification

    MTP is not a parallel protocol, unlike standard USB. This means only one operation/task can be performed at a time (such as read or write). This means MTP is slower than the standard file-transfer on USB.

    Linux support MTP via the libmtp library (http://libmtp.sourceforge.net/). GVFS supports MTP and this allows various GNOME-based applications (like Nautilus) to access MTP volumes. The KDE environment has MTP support via "MTP KIO Slave". "gMTP" is a GUI-based application that provides MTP support (http://gmtp.sourceforge.net/). Many music libraries and players offer MTP support for transferring music to and from iPods and other media devices (usually via libmtp).

    MTP (Synaptic Search)
    MTP (Synaptic Search)

    If your distro lacks MTP support, then try to install the needed libraries and drivers. Remember that Root privileges are needed for installing libraries and drivers.

    • Debian-based (DEB) - apt-get install mtp-tools mtpfs libmtp9 libmtp-common libmtp-runtime gvfs-backends
    • RedHat-based (RPM) - yum install gvfs-mtp libmtp fuse-devel libmtp-devel

    Alternately, open a GUI-based package manager (like Synaptic) and search for "mtp".

    "jmtpfs" is an MTP FUSE filesystem that works well with Android 4.x devices and newer (http://research.jacquette.com/jmtpfs-exchanging-files-between-android-devices-and-linux/).

    "mtpfs" is an alternative to jmtpfs. MTPFS is also a FUSE filesystem (http://www.adebenham.com/mtpfs/).

    "Go-MTP" is yet another MTP FUSE filesystem (https://github.com/hanwen/go-mtpfs).

    "simple-mtpfs" is an additional alternative MTP FUSE filesystem (https://github.com/phatina/simple-mtpfs/).


    Linux still supports Picture Transfer Protocol (PTP). PTP is a very simple image transferring protocol used to download images from cameras. MTP offers many more abilities and features than PTP.

    The "gvfs-gphoto2" package provides PTP support, and "kio-mtp" now includes PTP. "libptp2" is a library that provides PTP support (http://libptp.sourceforge.net/). "MMPTP" is a command-line utility for using PTP (http://michaelminn.com/linux/mmptp/).

    USB Mass Storage (UMS)

    Many people are familiar with the idea of plugging in a memory card and having direct and full access to everything. This idea is known as USB Mass Storage (UMS). The reason this is not used in many new Android devices is because UMS causes many files to become unaccessible to the Android system. The concept of MTP fixes this problem. There is also another reason. MTP is not filesystem-specific. Therefore, Android can use EXT3/4 while allowing Windows users to still access the storage on the Android device. In other words, MTP makes accessing Android storage more cross-platform.

    Further Reading

    1. Android MTP Notification
    2. MTP (Synaptic Search)
Viewing 1 post (of 1 total)